Re: [PATCH] PCI: imx6: Keep Root Port MSI capability also for i.MX6Q
From: Soeren Moch
Date: Sun Jul 05 2026 - 05:11:00 EST
On 28.04.26 04:19, Hongxing Zhu wrote:
-----Original Message-----Acked-by: Richard Zhu <hongxing.zhu@xxxxxxx>
From: Soeren Moch <smoch@xxxxxx>
Sent: Monday, April 27, 2026 7:58 PM
To: Hongxing Zhu <hongxing.zhu@xxxxxxx>
Cc: Soeren Moch <smoch@xxxxxx>; stable@xxxxxxxxxxxxxxx; Manivannan
Sadhasivam <mani@xxxxxxxxxx>; Lucas Stach <l.stach@xxxxxxxxxxxxxx>; Bjorn
Helgaas <bhelgaas@xxxxxxxxxx>; Frank Li <frank.li@xxxxxxx>; Fabio Estevam
<festevam@xxxxxxxxx>; linux-pci@xxxxxxxxxxxxxxx; linux-arm-
kernel@xxxxxxxxxxxxxxxxxxx; imx@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH] PCI: imx6: Keep Root Port MSI capability also for i.MX6Q
[You don't often get email from smoch@xxxxxx. Learn why this is important at
https://aka.ms/LearnAboutSenderIdentification ]
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 patch is a regression fix for linux-7.0.
It is still not part of linux-7.2-rc1 .
Can I do something to get this merged, is something still missing from my side?
Thanks,
Soeren
Best Regards
Richard Zhu
---
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