[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