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

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



commit a52a2f3d5001ef8a3c37145acc46a7ac97ec4434
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 e06e9f4fc50f..98e0746e681c 100644
--- a/drivers/pci/controller/vmd.c
+++ b/drivers/pci/controller/vmd.c
@@ -980,6 +980,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, vmd->irqs[i].virq,
 				       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