[PATCH] PCI: qcom: Skip DWC MSI host initialization when msi-map is present

Ayiluri Naga Rashmi posted 1 patch 1 week ago
drivers/pci/controller/dwc/pcie-qcom.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
[PATCH] PCI: qcom: Skip DWC MSI host initialization when msi-map is present
Posted by Ayiluri Naga Rashmi 1 week ago
qcom_pcie_ecam_host_init() unconditionally initializes the DesignWare
internal MSI controller and sets use_imsi_rx, irrespective of whether an
external MSI controller is described for the host bridge. When an msi-map
property is present, MSI interrupts are handled by the mapped external
MSI controller. Initializing the internal iMSI-RX domain in this case is
unnecessary.

Set use_imsi_rx based on the presence of msi-map and initialize the
DesignWare MSI host only when iMSI-RX is required.

Signed-off-by: Ayiluri Naga Rashmi <ayiluri.rashmi@oss.qualcomm.com>
---
 drivers/pci/controller/dwc/pcie-qcom.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index ee63a6ec99de..b65852c32a55 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -1981,11 +1981,13 @@ static int qcom_pcie_ecam_host_init(struct pci_config_window *cfg)
 	 */
 	raw_spin_lock_init(&pp->lock);
 
-	ret = dw_pcie_msi_host_init(pp);
-	if (ret)
-		return ret;
+	pp->use_imsi_rx = !pci_host_of_has_msi_map(dev);
+	if (pp->use_imsi_rx) {
+		ret = dw_pcie_msi_host_init(pp);
+		if (ret)
+			return ret;
+	}
 
-	pp->use_imsi_rx = true;
 	dw_pcie_msi_init(pp);
 
 	return devm_add_action_or_reset(dev, qcom_pci_free_msi, pp);

---
base-commit: 0d9d0dbf2fddcff5859d623e90ca73c4054276e1
change-id: 20260917-skipmsi_forlpi-d9c486a1a04c

Best regards,
-- 
Ayiluri Naga Rashmi <ayiluri.rashmi@oss.qualcomm.com>