[PATCH 0/2] PCI: Allow disabling port services on broken root ports
Lukas Wunner
lukas at wunner.de
Tue Mar 31 11:58:03 PDT 2026
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
More information about the linux-riscv
mailing list