[PATCH 0/2] PCI: Allow disabling port services on broken root ports
Han Gao
rabenda.cn at gmail.com
Tue Mar 31 12:07:53 PDT 2026
On Wed, Apr 1, 2026 at 2:58 AM Lukas Wunner <lukas at wunner.de> wrote:
>
> 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().
Unfortunately, the SG2042 has no INTx interrupts.
>
> > 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.
6.18 has merged PCIe drivers, so a stable tag is required.
>
> Thanks,
>
> Lukas
Han
More information about the linux-riscv
mailing list