linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported
@ 2024-10-07  5:12 Manivannan Sadhasivam
  2024-11-03 20:37 ` Krzysztof Wilczyński
  0 siblings, 1 reply; 2+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-07  5:12 UTC (permalink / raw)
  To: lpieralisi, kw
  Cc: robh, bhelgaas, linux-pci, linux-arm-msm, linux-kernel,
	quic_qianyu, Manivannan Sadhasivam, Konrad Dybcio, Konrad Dybcio

Currently, if 'Global IRQ' is supported by the platform, only the Link up
interrupt is enabled in the PARF_INT_ALL_MASK register. This masks MSIs
on some platforms. The MSI bits in PARF_INT_ALL_MASK register are enabled
by default in the hardware, but commit 4581403f6792 ("PCI: qcom: Enumerate
endpoints based on Link up event in 'global_irq' interrupt") disabled them
and enabled only the Link up interrupt. While MSI continued to work on the
SM8450 platform that was used to test the offending commit, on other
platforms like SM8250, X1E80100, MSIs are getting masked. And they require
enabling the MSI interrupt bits in the register to unmask (enable) the
MSIs.

Even though the MSI interrupt enable bits in PARF_INT_ALL_MASK are
described as 'diagnostic' interrupts in the internal documentation,
disabling them masks MSI on these platforms. Due to this, MSIs were not
reported to be received these platforms while supporting 'Global IRQ'.

So enable the MSI interrupts along with the Link up interrupt in the
PARF_INT_ALL_MASK register if 'Global IRQ' is supported. This ensures that
the MSIs continue to work and also the driver is able to catch the Link
up interrupt for enumerating endpoint devices.

Fixes: 4581403f6792 ("PCI: qcom: Enumerate endpoints based on Link up event in 'global_irq' interrupt")
Reported-by: Konrad Dybcio <konradybcio@kernel.org>
Closes: https://lore.kernel.org/linux-pci/9a692c98-eb0a-4d86-b642-ea655981ff53@kernel.org/
Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # SL7
Reviewed-by: Qiang Yu <quic_qianyu@quicinc.com>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---

Changes in v2:

* Reworded the commit message
* Collected tags

 drivers/pci/controller/dwc/pcie-qcom.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index ef44a82be058..2b33d03ed054 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -133,6 +133,7 @@
 
 /* PARF_INT_ALL_{STATUS/CLEAR/MASK} register fields */
 #define PARF_INT_ALL_LINK_UP			BIT(13)
+#define PARF_INT_MSI_DEV_0_7			GENMASK(30, 23)
 
 /* PARF_NO_SNOOP_OVERIDE register fields */
 #define WR_NO_SNOOP_OVERIDE_EN			BIT(1)
@@ -1716,7 +1717,8 @@ static int qcom_pcie_probe(struct platform_device *pdev)
 			goto err_host_deinit;
 		}
 
-		writel_relaxed(PARF_INT_ALL_LINK_UP, pcie->parf + PARF_INT_ALL_MASK);
+		writel_relaxed(PARF_INT_ALL_LINK_UP | PARF_INT_MSI_DEV_0_7,
+			       pcie->parf + PARF_INT_ALL_MASK);
 	}
 
 	qcom_pcie_icc_opp_update(pcie);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported
  2024-10-07  5:12 [PATCH v2] PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported Manivannan Sadhasivam
@ 2024-11-03 20:37 ` Krzysztof Wilczyński
  0 siblings, 0 replies; 2+ messages in thread
From: Krzysztof Wilczyński @ 2024-11-03 20:37 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: lpieralisi, robh, bhelgaas, linux-pci, linux-arm-msm,
	linux-kernel, quic_qianyu, Konrad Dybcio, Konrad Dybcio

Hello,

> Currently, if 'Global IRQ' is supported by the platform, only the Link up
> interrupt is enabled in the PARF_INT_ALL_MASK register. This masks MSIs
> on some platforms. The MSI bits in PARF_INT_ALL_MASK register are enabled
> by default in the hardware, but commit 4581403f6792 ("PCI: qcom: Enumerate
> endpoints based on Link up event in 'global_irq' interrupt") disabled them
> and enabled only the Link up interrupt. While MSI continued to work on the
> SM8450 platform that was used to test the offending commit, on other
> platforms like SM8250, X1E80100, MSIs are getting masked. And they require
> enabling the MSI interrupt bits in the register to unmask (enable) the
> MSIs.
> 
> Even though the MSI interrupt enable bits in PARF_INT_ALL_MASK are
> described as 'diagnostic' interrupts in the internal documentation,
> disabling them masks MSI on these platforms. Due to this, MSIs were not
> reported to be received these platforms while supporting 'Global IRQ'.
> 
> So enable the MSI interrupts along with the Link up interrupt in the
> PARF_INT_ALL_MASK register if 'Global IRQ' is supported. This ensures that
> the MSIs continue to work and also the driver is able to catch the Link
> up interrupt for enumerating endpoint devices.

Applied to controller/qcom, thank you!

[01/01] PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported
        https://git.kernel.org/pci/pci/c/ba4a2e2317b9

	Krzysztof

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-11-03 20:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-07  5:12 [PATCH v2] PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported Manivannan Sadhasivam
2024-11-03 20:37 ` Krzysztof Wilczyński

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).