Re: [PATCH 0/2] PCI: Allow disabling port services on broken root ports
Lukas Wunner <[email protected]> Tue, 31 Mar 2026 20:58:03 +0200
| Newsgroups | dev.linux.lists.sophgo,org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Apr 01, 2026 at 01:56:56AM +0800, Han Gao wrote: > SG2042's PCIe root ports only support MSI, not MSI-X. The MSI > controller provides only 32 vectors shared across all devices behind > each root port. When native port services claim vectors from this > limited pool, downstream devices are starved of interrupts, resulting > in zero interrupts delivered and driver timeouts (e.g. amdgpu fence > fallback timer expired on all rings). Have you considered setting the pci_dev::no_msi flag on the Root Ports to force them to use INTx interrupts instead of MSI? That would seem like a cleaner solution. There are already several devices for which the flag is set in drivers/pci/quirks.c, see quirk_no_msi(). > Some PCIe root ports break MSI delivery to downstream devices when > native port services (AER, PME, bwctrl, etc.) are active. The existing > pcie_ports=compat kernel parameter works around this globally, but > affects all ports on the system. > > This series adds a per-device mechanism to skip port service probing: > 1. Introduce PCI_DEV_FLAGS_NO_PORT_SERVICES flag and wire it into > the PCIe port driver > 2. Apply it via quirk to Sophgo SG2042 root ports [1f1c:2042], which > fail to deliver MSI interrupts when port services are enabled I think we should try to minimize such workarounds or at least make them as non-intrusive as possible, so please try the no_msi approach instead. I also don't see why the stable designation is needed TBH. Thanks, Lukas