Linux PCI subsystem development
 help / color / mirror / Atom feed
* [PATCH] PCI/portdrv: Avoid enabling AER on Thunderbolt devices
@ 2022-12-26 15:30 Kai-Heng Feng
  2022-12-26 15:46 ` Pali Rohár
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Kai-Heng Feng @ 2022-12-26 15:30 UTC (permalink / raw)
  To: bhelgaas
  Cc: Kai-Heng Feng, Mario Limonciello, Mika Westerberg, Keith Busch,
	Kuppuswamy Sathyanarayanan, Pali Rohár, Stefan Roese,
	linux-pci, linux-kernel

We are seeing igc ethernet device on Thunderbolt dock stops working
after S3 resume because of AER error, or even make S3 resume freeze:
pcieport 0000:00:1d.0: AER: Multiple Corrected error received: 0000:00:1d.0
pcieport 0000:00:1d.0: PCIe Bus Error: severity=Corrected, type=Transaction Layer, (Receiver ID)
pcieport 0000:00:1d.0:   device [8086:7ab0] error status/mask=00008000/00002000
pcieport 0000:00:1d.0:    [15] HeaderOF
pcieport 0000:00:1d.0: AER: Multiple Uncorrected (Non-Fatal) error received: 0000:00:1d.0
pcieport 0000:00:1d.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Requester ID)
pcieport 0000:00:1d.0:   device [8086:7ab0] error status/mask=00100000/00004000
pcieport 0000:00:1d.0:    [20] UnsupReq               (First)
pcieport 0000:00:1d.0: AER:   TLP Header: 34000000 0a000052 00000000 00000000
pcieport 0000:00:1d.0: AER:   Error of this Agent is reported first
pcieport 0000:04:01.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Requester ID)
pcieport 0000:04:01.0:   device [8086:1136] error status/mask=00300000/00000000
pcieport 0000:04:01.0:    [20] UnsupReq               (First)
pcieport 0000:04:01.0:    [21] ACSViol
pcieport 0000:04:01.0: AER:   TLP Header: 34000000 04000052 00000000 00000000
thunderbolt 0000:05:00.0: AER: can't recover (no error_detected callback)

This supposedly should be fixed by commit c01163dbd1b8 ("PCI/PM: Always disable
PTM for all devices during suspend"), but somehow it doesn't work for
this case.

By dumping the PCI_PTM_CTRL register on resume, it turns out PTM is
already flipped on by either the Thunderbolt dock firmware or the host
BIOS. Writing 0 to PCI_PTM_CTRL yields the same result.

Windows is however not affected by this issue, by using WinDbg's !pci
command, it shows that AER is not enabled for devices connected via
Thunderbolt port, and that's the reason why Windows doesn't exhibit the
issue.

So turn a blind eye on external Thunderbolt devices like Windows does by
disabling AER.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=216850
Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/pci/pcie/portdrv.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/pcie/portdrv.c b/drivers/pci/pcie/portdrv.c
index 2cc2e60bcb396..59d00e20e57bf 100644
--- a/drivers/pci/pcie/portdrv.c
+++ b/drivers/pci/pcie/portdrv.c
@@ -237,7 +237,8 @@ static int get_port_device_capability(struct pci_dev *dev)
 	if ((pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
              pci_pcie_type(dev) == PCI_EXP_TYPE_RC_EC) &&
 	    dev->aer_cap && pci_aer_available() &&
-	    (pcie_ports_native || host->native_aer))
+	    (pcie_ports_native || host->native_aer) &&
+	    !dev_is_removable(&dev->dev))
 		services |= PCIE_PORT_SERVICE_AER;
 #endif
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-05-16 14:15 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-26 15:30 [PATCH] PCI/portdrv: Avoid enabling AER on Thunderbolt devices Kai-Heng Feng
2022-12-26 15:46 ` Pali Rohár
2022-12-29  3:45   ` Kai-Heng Feng
2022-12-29 12:02     ` Pali Rohár
2022-12-29 16:51     ` Bjorn Helgaas
2022-12-26 22:50 ` Bjorn Helgaas
2022-12-29  4:26   ` Kai-Heng Feng
2023-01-17 23:14 ` Bjorn Helgaas
2023-02-08 13:33   ` Kai-Heng Feng
2023-02-14  0:10     ` Bjorn Helgaas
2023-05-16 14:14 ` Bagas Sanjaya

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox