From testing on a Orion O6 board, a bus level reset for a RTL8126 may not recover: root@radxa-kernel:/sys/devices/pci0000:00/0000:00:00.0/0000:01:00.0# more reset_method bus root@radxa-kernel:/sys/devices/pci0000:00/0000:00:00.0/0000:01:00.0# echo 1 > reset r8169 0000:01:00.0: resetting r8169 0000:01:00.0: not ready 1023ms after bus reset; waiting r8169 0000:01:00.0: not ready 2047ms after bus reset; waiting r8169 0000:01:00.0: not ready 4095ms after bus reset; waiting r8169 0000:01:00.0: not ready 8191ms after bus reset; waiting r8169 0000:01:00.0: not ready 16383ms after bus reset; waiting r8169 0000:01:00.0: not ready 32767ms after bus reset; waiting SError Interrupt on CPU6, code 0x00000000be000011 -- SError Add a quirk to avoid this reset method. Signed-off-by: John Garry --- I'm sending as an RFC as I am not sure that this is an issue with the development board and not the controller. diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 7f1f47ea2ee4..69eef714838a 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3850,6 +3850,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ASMEDIA, 0x1164, quirk_no_bus_reset); /* Intel DG1 0x4905 may not recover from bus reset */ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4905, quirk_no_bus_reset); +/* Realtek RTL8126 may not recover from a bus reset */ +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REALTEK, 0x8126, quirk_no_bus_reset); + static void quirk_no_pm_reset(struct pci_dev *dev) { /* -- 2.47.3