Patch "PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     pci-qcom-enable-msi-interrupts-together-with-link-up.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit bff8e125cb6dfaac9991b08dadec355b0f72e91a
Author: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
Date:   Mon Oct 7 10:42:55 2024 +0530

    PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported
    
    [ Upstream commit ba4a2e2317b9faeca9193ed6d3193ddc3cf2aba3 ]
    
    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")
    Closes: https://lore.kernel.org/linux-pci/9a692c98-eb0a-4d86-b642-ea655981ff53@xxxxxxxxxx/
    Link: https://lore.kernel.org/r/20241007051255.4378-1-manivannan.sadhasivam@xxxxxxxxxx
    Reported-by: Konrad Dybcio <konradybcio@xxxxxxxxxx>
    Tested-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx> # SL7
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@xxxxxxxxxx>
    Reviewed-by: Qiang Yu <quic_qianyu@xxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index ef44a82be058b..2b33d03ed0541 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);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux