Patch "PCI: vmd: Disable MSI remapping after suspend" has been added to the 5.15-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: vmd: Disable MSI remapping after suspend

to the 5.15-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-vmd-disable-msi-remapping-after-suspend.patch
and it can be found in the queue-5.15 subdirectory.

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



commit cff5cc2279a1dd6122c47b415850660cbae86eb8
Author: Nirmal Patel <nirmal.patel@xxxxxxxxxxxxxxx>
Date:   Wed Nov 9 07:26:52 2022 -0700

    PCI: vmd: Disable MSI remapping after suspend
    
    [ Upstream commit d899aa668498c07ff217b666ae9712990306e682 ]
    
    MSI remapping is disabled by VMD driver for Intel's Icelake and
    newer systems in order to improve performance by setting
    VMCONFIG_MSI_REMAP. By design VMCONFIG_MSI_REMAP register is cleared
    by firmware during boot. The same register gets cleared when system
    is put in S3 power state. VMD driver needs to set this register again
    in order to avoid interrupt issues with devices behind VMD if MSI
    remapping was disabled before.
    
    Link: https://lore.kernel.org/r/20221109142652.450998-1-nirmal.patel@xxxxxxxxxxxxxxx
    Fixes: ee81ee84f873 ("PCI: vmd: Disable MSI-X remapping when possible")
    Signed-off-by: Nirmal Patel <nirmal.patel@xxxxxxxxxxxxxxx>
    Signed-off-by: Lorenzo Pieralisi <lpieralisi@xxxxxxxxxx>
    Reviewed-by: Francisco Munoz <francisco.munoz.ruiz@xxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c
index a5987e52700e..8dce71142e10 100644
--- a/drivers/pci/controller/vmd.c
+++ b/drivers/pci/controller/vmd.c
@@ -900,6 +900,11 @@ static int vmd_resume(struct device *dev)
 	struct vmd_dev *vmd = pci_get_drvdata(pdev);
 	int err, i;
 
+       if (vmd->irq_domain)
+               vmd_set_msi_remapping(vmd, true);
+       else
+               vmd_set_msi_remapping(vmd, false);
+
 	for (i = 0; i < vmd->msix_count; i++) {
 		err = devm_request_irq(dev, pci_irq_vector(pdev, i),
 				       vmd_irq, IRQF_NO_THREAD,



[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