Re: [PATCH] PCI: imx6: Keep Root Port MSI capability also for i.MX6Q

From: Soeren Moch

Date: Tue Sep 29 2026 - 08:33:33 EST




On 19.09.26 01:00, Bjorn Helgaas wrote:
[+cc Thorsten, possible regzbot confusion?]

On Mon, Apr 27, 2026 at 01:58:04PM +0200, Soeren Moch wrote:
Also on the NXP i.MX6Q chipset 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, this chipset has some weird hardware bug that prevents
the endpoint MSIs from reaching when the Root Port MSI capability is
disabled.

Hence, always keep the Root Port MSI capability for this chipset.

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: 3a4e8302e72f ("PCI: imx6: Keep Root Port MSI capability with iMSI-RX to work around hardware bug")
Cc: <stable@xxxxxxxxxxxxxxx> # 7.0.x
Signed-off-by: Soeren Moch <smoch@xxxxxx>
This thread is still listed as a regression:
https://linux-regtracking.leemhuis.info/regzbot/regression/lore/20260427115804.134231-1-smoch@xxxxxx/

But I *think* it's been resolved by:

b4bee12ebecc ("PCI: imx6: Keep i.MX6 Root Port MSI/MSI-X Capabilities with iMSI-RX to work around hardware bug")

Can you confirm?

It was fixed for 7.2.0, in 7.2.5 I saw a similar (?) problem again, in 7.2.8 this is (finally?) fixed. I did not test the stable versions in between.

So I can confirm this is fixed, yes.

Thanks,
Soeren

Maybe regzbot is confused by the fact that the regression was first
attributed to 3a4e8302e72f, and then later attributed to
f5cd8a929c825?

---
Cc: Manivannan Sadhasivam <mani@xxxxxxxxxx>
Cc: Richard Zhu <hongxing.zhu@xxxxxxx>
Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
Cc: Frank Li <Frank.Li@xxxxxxx>
Cc: Fabio Estevam <festevam@xxxxxxxxx>
Cc: linux-pci@xxxxxxxxxxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Cc: imx@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx

Tested on a tbs2910 board [1]
[1] arch/arm/boot/dts/nxp/imx/imx6q-tbs2910.dts
---
drivers/pci/controller/dwc/pci-imx6.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index 6d6a1688e7eb..3d461bdef967 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -1865,7 +1865,8 @@ static const struct imx_pcie_drvdata drvdata[] = {
.flags = IMX_PCIE_FLAG_IMX_PHY |
IMX_PCIE_FLAG_SPEED_CHANGE_WORKAROUND |
IMX_PCIE_FLAG_BROKEN_SUSPEND |
- IMX_PCIE_FLAG_SUPPORTS_SUSPEND,
+ IMX_PCIE_FLAG_SUPPORTS_SUSPEND |
+ IMX_PCIE_FLAG_KEEP_MSI_CAP,
.dbi_length = 0x200,
.gpr = "fsl,imx6q-iomuxc-gpr",
.ltssm_off = IOMUXC_GPR12,
--
2.43.0