| From 1852c176c4879e6c2a0fa7f291377cd6046633ea Mon Sep 17 00:00:00 2001 |
| From: Kai-Heng Feng <kai.heng.feng@canonical.com> |
| Date: Sun, 3 Feb 2019 01:40:16 +0800 |
| Subject: e1000e: Disable runtime PM on CNP+ |
| |
| [ Upstream commit 459d69c407f9ba122f12216555c3012284dc9fd7 ] |
| |
| There are some new e1000e devices can only be woken up from D3 one time, |
| by plugging Ethernet cable. Subsequent cable plugging does set PME bit |
| correctly, but it still doesn't get woken up. |
| |
| Since e1000e connects to the root complex directly, we rely on ACPI to |
| wake it up. In this case, the GPE from _PRW only works once and stops |
| working after that. Though it appears to be a platform bug, e1000e |
| maintainers confirmed that I219 does not support D3. |
| |
| So disable runtime PM on CNP+ chips. We may need to disable earlier |
| generations if this bug also hit older platforms. |
| |
| Bugzilla: https://bugzilla.kernel.org/attachment.cgi?id=280819 |
| Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> |
| Tested-by: Aaron Brown <aaron.f.brown@intel.com> |
| Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/intel/e1000e/netdev.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c |
| index 7acc61e4f6456..c10c9d7eadaac 100644 |
| --- a/drivers/net/ethernet/intel/e1000e/netdev.c |
| +++ b/drivers/net/ethernet/intel/e1000e/netdev.c |
| @@ -7350,7 +7350,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
| |
| dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NEVER_SKIP); |
| |
| - if (pci_dev_run_wake(pdev)) |
| + if (pci_dev_run_wake(pdev) && hw->mac.type < e1000_pch_cnp) |
| pm_runtime_put_noidle(&pdev->dev); |
| |
| return 0; |
| -- |
| 2.20.1 |
| |