]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
PCI: imx6: Keep Root Port MSI capability with iMSI-RX to work around hardware bug
authorRichard Zhu <hongxing.zhu@nxp.com>
Tue, 31 Mar 2026 08:52:52 +0000 (16:52 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 3 Apr 2026 21:51:27 +0000 (16:51 -0500)
commit3a4e8302e72f83fd5cc8a916fc6f5c8fe5c8690e
tree51772ee2a4c4fe3d55b58ee0ffdac7be4bbdba64
parent180ea823bb45eb71dd5ed0dc0b78633accd21096
PCI: imx6: Keep Root Port MSI capability with iMSI-RX to work around hardware bug

On NXP i.MX7D, i.MX8MM, and i.MX8MQ chipsets, MSIs from the endpoints won't
be received by the iMSI-RX MSI controller if the Root Port MSI capability
is disabled.

Even though the Root Port MSIs won't be received by the iMSI-RX controller
due to design, these chipsets have some weird hardware bug that prevents
the endpoint MSIs from reaching when the Root Port MSI capability is
disabled.

Hence, introduce a new flag, 'dw_pcie_rp::keep_rp_msi_en', set it for the
above mentioned SoCs, and always keep the Root Port MSI capability when
this flag is set.

Note that by keeping Root Port MSI capability, Root Port MSIs such as AER,
PME and others won't be received by default. So users need to use
workarounds such as passing 'pcie_pme=nomsi' cmdline param.

Fixes: f5cd8a929c825 ("PCI: dwc: Remove MSI/MSIX capability for Root Port if iMSI-RX is used as MSI controller")
Suggested-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
[mani: commit log]
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
[bhelgaas: fix typos]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260331085252.1243108-1-hongxing.zhu@nxp.com
drivers/pci/controller/dwc/pci-imx6.c
drivers/pci/controller/dwc/pcie-designware-host.c
drivers/pci/controller/dwc/pcie-designware.h