Hi Shimoda-san, On Thu, Aug 27, 2020 at 11:15 AM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > On Mon, Aug 17, 2020 at 2:00 PM Yoshihiro Shimoda > <yoshihiro.shimoda.uh@xxxxxxxxxxx> wrote: > > > From: Geert Uytterhoeven, Sent: Tuesday, August 11, 2020 10:50 PM > > > On Mon, Jul 6, 2020 at 1:14 PM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > > > I moved the E1000E card to an R-Car Gen2 board (r8a7791/koelsch), and > > > s2idle crashes in a similar way: > > > > > > Unhandled fault: asynchronous external abort (0x1211) at 0x00000000 > > > pgd = ceadf1f8 > > > [00000000] *pgd=80000040004003, *pmd=00000000 > > > Internal error: : 1211 [#1] SMP ARM > > > Modules linked in: > > > CPU: 0 PID: 124 Comm: kworker/u4:6 Not tainted > > > 5.8.0-koelsch-00539-gce07c9ba6e9f601c #867 > > > Hardware name: Generic R-Car Gen2 (Flattened Device Tree) > > > Workqueue: events_unbound async_run_entry_fn > > > PC is at rcar_pcie_config_access+0x10c/0x13c > > > LR is at rcar_pcie_config_access+0x10c/0x13c > > > pc : [<c04a4ab4>] lr : [<c04a4ab4>] psr: 60000093 > > > sp : e67b3e00 ip : 00000000 fp : 00000000 > > > r10: 00000000 r9 : 00000000 r8 : e7369800 > > > r7 : 00000000 r6 : e67b3e40 r5 : e7369640 r4 : 000000cc > > > r3 : f0900000 r2 : f0900018 r1 : f0900020 r0 : 00000000 > > > Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user > > > Control: 30c5387d Table: 648fe480 DAC: fffffffd > > > Process kworker/u4:6 (pid: 124, stack limit = 0x0dcce627) > > > Stack: (0xe67b3e00 to 0xe67b4000) > > > ... > > > [<c04a4ab4>] (rcar_pcie_config_access) from [<c04a4be0>] > > > (rcar_pcie_read_conf+0x28/0x80) > > > [<c04a4be0>] (rcar_pcie_read_conf) from [<c048a4e0>] > > > (pci_bus_read_config_word+0x68/0xa8) > > > [<c048a4e0>] (pci_bus_read_config_word) from [<c0490030>] > > > (pci_raw_set_power_state+0x18c/0x270) > > > [<c0490030>] (pci_raw_set_power_state) from [<c0492e20>] > > > (pci_set_power_state+0x98/0xcc) > > > [<c0492e20>] (pci_set_power_state) from [<c0492ea0>] > > > (pci_prepare_to_sleep+0x4c/0x6c) > > > [<c0492ea0>] (pci_prepare_to_sleep) from [<c0496c84>] > > > (pci_pm_suspend_noirq+0x228/0x244) > > > [<c0496c84>] (pci_pm_suspend_noirq) from [<c0509d88>] > > > (dpm_run_callback.part.5+0x44/0xac) > > > [<c0509d88>] (dpm_run_callback.part.5) from [<c050b38c>] > > > (__device_suspend_noirq+0x74/0x1a4) > > > > > > > Why haven't we seen this before? > > > > I can reproduce the issue on v5.5 (first version that supported M3-W+, > > > > but needs backported DTS for PCIe support) and later. > > > > > > On Koelsch, I could easily reproduce this on v4.10 and later[1]. > > > > > > As this time no firmware is involved, I guess Linux itself needs to > > > become aware of this issue, and handle it in a similar way like ATF > > > on arm64[2]? > > > > I agree. But, I'm not sure how to implement a similar way on arm32 though... > > Maybe, we should unbind a PCI device before R-Car Gen2 is suspended? > > Unbinding PCI devices before suspending the system means that e.g. > Wake-on-LAN will no longer work. Unless WoL-enabled devices are > not unbound. > > However, it seems Wake-on-LAN is enabled by default on E1000E. > Hence even if WoL is enabled, the PCIe device will send an L1_Enter_PM DLLP > request, triggering the issue. Perhaps we can hook something into PCI error handling (EEH)? But that seems to be used on PPC only. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds