Skip to contentSkip to conversation

New: Hotplug ethernet cable to runtime suspended Realtek NIC doesn't raise PCIe PME IRQ on Intel ADL

Bug 213873 Bjorn Helgaas 2 participants 2 messages Jul 27, 2021 – Jul 29, 2021 1 message not in the archive PCI

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive
Quoted 23 lines · On Tue, Jul 27, 2021 at 06:10:13AM +0000, [email protected]…

https://bugzilla.kernel.org/show_bug.cgi?id=213873

Bug ID: 213873
Summary: Hotplug ethernet cable to runtime suspended Realtek
NIC doesn't raise PCIe PME IRQ on Intel ADL
Product: Drivers
Version: 2.5
Kernel Version: mainline
Hardware: All
OS: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: PCI
Assignee: [email protected]
Reporter: [email protected]
Regression: No

Both PCIe bridge and Realtek NIC are runtime suspended. When ethernet cable is plugged, PMEStatus and PMEPending are marked:
RootSta: PME ReqID 0200, PMEStatus+ PMEPending+

Quoted 9 lines

But the IRQ isn't raised:

$ cat /proc/interrupts  | grep PME
 145:          0          0          0          0          0          0        
 0          0          0          0          0          0   VMD-MSI  126  PCIe
PME, aerdrv, pcie-dpc

So the hotplug event isn't detected.

From the lspci after cable hotplug (comment #3):

0000:00:1c.0 PCI bridge ...
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootSta: PME ReqID 0200, PMEStatus+ PMEPending+

So it looks like the root port is not enabled to generate a PME interrupt. pcie_pme_interrupt_enable() looks like it *could* enable that. From a quick look, my guess is that pme.c doesn't claim this root port because the platform says it doesn't support it:

acpi PNP0A08:00: _OSC: platform does not support [PCIeHotplug SHPCHotplug PME] acpi PNP0A08:00: _OSC: OS now controls [AER PCIeCapability LTR]

Does booting with "pcie_ports=native" make it work? That's not a very good solution, of course, because then both the firmware and Linux think they own this functionality.

Is there a BIOS update that would fix this?

Bjorn

#2 lore raw
Quoted 46 lines · Bjorn Helgaas
Quoted 24 lines · On Tue, Jul 27, 2021 at 06:10:13AM +0000, [email protected]…

https://bugzilla.kernel.org/show_bug.cgi?id=213873

Bug ID: 213873
Summary: Hotplug ethernet cable to runtime suspended Realtek
NIC doesn't raise PCIe PME IRQ on Intel ADL
Product: Drivers
Version: 2.5
Kernel Version: mainline
Hardware: All
OS: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: PCI
Assignee: [email protected]
Reporter: [email protected]
Regression: No

Both PCIe bridge and Realtek NIC are runtime suspended. When ethernet cable is plugged, PMEStatus and PMEPending are marked:
RootSta: PME ReqID 0200, PMEStatus+ PMEPending+

But the IRQ isn't raised:

Quoted 8 lines
$ cat /proc/interrupts  | grep PME
 145:          0          0          0          0          0          0
 0          0          0          0          0          0   VMD-MSI  126  PCIe
PME, aerdrv, pcie-dpc

So the hotplug event isn't detected.

--

From the lspci after cable hotplug (comment #3):

0000:00:1c.0 PCI bridge ...
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootSta: PME ReqID 0200, PMEStatus+ PMEPending+

So it looks like the root port is not enabled to generate a PME interrupt. pcie_pme_interrupt_enable() looks like it *could* enable that. From a quick look, my guess is that pme.c doesn't claim this root port because the platform says it doesn't support it:

Quoted 6 lines

acpi PNP0A08:00: _OSC: platform does not support [PCIeHotplug SHPCHotplug PME] acpi PNP0A08:00: _OSC: OS now controls [AER PCIeCapability LTR]

Does booting with "pcie_ports=native" make it work? That's not a very good solution, of course, because then both the firmware and Linux think they own this functionality.

Yes, thanks for spotting this.

Quoted 2 lines

Is there a BIOS update that would fix this?

This platform is still under enablement so we'll get a BIOS fix.

Kai-Heng

Quoted 2 lines

Bjorn