mirror of
https://github.com/torvalds/linux.git
synced 2026-09-19 00:58:02 +02:00
PCI: imx6: Keep i.MX6 Root Port MSI/MSI-X Capabilities with iMSI-RX to work around hardware bug
On some NXP chipsets, disabling Root Port MSI/MSI-X Capabilities blocks MSIs originating from Endpoints from reaching the iMSI-RX controller. To address this hardware bug, commit3a4e8302e7("PCI: imx6: Keep Root Port MSI capability with iMSI-RX to work around hardware bug") preserves Root Port MSI and MSI-X Capabilities on i.MX7D, i.MX8MM, and i.MX8MQ when iMSI-RX is in use. The same applies to i.MX6Q, i.MX6QP, and i.MX6SX, so preserve Root Port MSI/MSI-X Capabilities there as well. Note that preserving these Capabilities means Root Port-originated MSIs such as AER and PME won't be received due to separate hardware limitations. Users may need to use workarounds such as passing the 'pcie_pme=nomsi' command-line parameter. Fixes:f5cd8a929c("PCI: dwc: Remove MSI/MSIX capability for Root Port if iMSI-RX is used as MSI controller") Signed-off-by: Soeren Moch <smoch@web.de> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> Acked-by: Richard Zhu <hongxing.zhu@nxp.com> Cc: stable@vger.kernel.org # 7.0+ Link: https://patch.msgid.link/20260717033203.2965045-1-hongxing.zhu@oss.nxp.com
This commit is contained in:
parent
34db321024
commit
b4bee12ebe
|
|
@ -1995,7 +1995,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,
|
||||
|
|
@ -2011,7 +2012,8 @@ static const struct imx_pcie_drvdata drvdata[] = {
|
|||
.flags = IMX_PCIE_FLAG_IMX_PHY |
|
||||
IMX_PCIE_FLAG_SPEED_CHANGE_WORKAROUND |
|
||||
IMX_PCIE_FLAG_SKIP_L23_READY |
|
||||
IMX_PCIE_FLAG_SUPPORTS_SUSPEND,
|
||||
IMX_PCIE_FLAG_SUPPORTS_SUSPEND |
|
||||
IMX_PCIE_FLAG_KEEP_MSI_CAP,
|
||||
.gpr = "fsl,imx6q-iomuxc-gpr",
|
||||
.ltssm_off = IOMUXC_GPR12,
|
||||
.ltssm_mask = IMX6Q_GPR12_PCIE_CTL_2,
|
||||
|
|
@ -2026,7 +2028,8 @@ static const struct imx_pcie_drvdata drvdata[] = {
|
|||
.flags = IMX_PCIE_FLAG_IMX_PHY |
|
||||
IMX_PCIE_FLAG_SPEED_CHANGE_WORKAROUND |
|
||||
IMX_PCIE_FLAG_SKIP_L23_READY |
|
||||
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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user