| From f98a71d44f4491e7bcfdfcf58ec7eea08618a800 Mon Sep 17 00:00:00 2001 |
| From: Heiner Kallweit <hkallweit1@gmail.com> |
| Date: Fri, 5 Apr 2019 20:46:46 +0200 |
| Subject: r8169: disable ASPM again |
| |
| [ Upstream commit b75bb8a5b755d0c7bf1ac071e4df2349a7644a1e ] |
| |
| There's a significant number of reports that re-enabling ASPM causes |
| different issues, ranging from decreased performance to system not |
| booting at all. This affects only a minority of users, but the number |
| of affected users is big enough that we better switch off ASPM again. |
| |
| This will hurt notebook users who are not affected by the issues, they |
| may see decreased battery runtime w/o ASPM. With the PCI core folks is |
| being discussed to add generic sysfs attributes to control ASPM. |
| Once this is in place brave enough users can re-enable ASPM on their |
| system. |
| |
| Fixes: a99790bf5c7f ("r8169: Reinstate ASPM Support") |
| Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/realtek/r8169.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c |
| index f55d177ae894..5adb00f521db 100644 |
| --- a/drivers/net/ethernet/realtek/r8169.c |
| +++ b/drivers/net/ethernet/realtek/r8169.c |
| @@ -28,6 +28,7 @@ |
| #include <linux/pm_runtime.h> |
| #include <linux/firmware.h> |
| #include <linux/prefetch.h> |
| +#include <linux/pci-aspm.h> |
| #include <linux/ipv6.h> |
| #include <net/ip6_checksum.h> |
| |
| @@ -7224,6 +7225,11 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) |
| return rc; |
| } |
| |
| + /* Disable ASPM completely as that cause random device stop working |
| + * problems as well as full system hangs for some PCIe devices users. |
| + */ |
| + pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1); |
| + |
| /* enable device (incl. PCI PM wakeup and hotplug setup) */ |
| rc = pcim_enable_device(pdev); |
| if (rc < 0) { |
| -- |
| 2.19.1 |
| |