Patch "PCI/AER: Disable AER service on suspend" has been added to the 5.4-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/AER: Disable AER service on suspend

to the 5.4-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-aer-disable-aer-service-on-suspend.patch
and it can be found in the queue-5.4 subdirectory.

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



commit 6073f86cb45d7ed3d54ba42aa57e38dcf6b92e4a
Author: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
Date:   Sun Jul 28 12:10:24 2024 -0400

    PCI/AER: Disable AER service on suspend
    
    [ Upstream commit 5afc2f763edc5daae4722ee46fea4e627d01fa90 ]
    
    If the link is powered off during suspend, electrical noise may cause
    errors that are logged via AER.  If the AER interrupt is enabled and shares
    an IRQ with PME, that causes a spurious wakeup during suspend.
    
    Disable the AER interrupt during suspend to prevent this.  Clear error
    status before re-enabling IRQ interrupts during resume so we don't get an
    interrupt for errors that occurred during the suspend/resume process.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=209149
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216295
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218090
    Link: https://lore.kernel.org/r/20240416043225.1462548-2-kai.heng.feng@xxxxxxxxxxxxx
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
    [bhelgaas: drop pci_ancestor_pr3_present() etc, commit log]
    Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index 6b5c9f7916fa..ee38ca162a7c 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -1407,6 +1407,22 @@ static int aer_probe(struct pcie_device *dev)
 	return 0;
 }
 
+static int aer_suspend(struct pcie_device *dev)
+{
+	struct aer_rpc *rpc = get_service_data(dev);
+
+	aer_disable_rootport(rpc);
+	return 0;
+}
+
+static int aer_resume(struct pcie_device *dev)
+{
+	struct aer_rpc *rpc = get_service_data(dev);
+
+	aer_enable_rootport(rpc);
+	return 0;
+}
+
 /**
  * aer_root_reset - reset link on Root Port
  * @dev: pointer to Root Port's pci_dev data structure
@@ -1447,6 +1463,8 @@ static struct pcie_port_service_driver aerdriver = {
 	.service	= PCIE_PORT_SERVICE_AER,
 
 	.probe		= aer_probe,
+	.suspend	= aer_suspend,
+	.resume		= aer_resume,
 	.remove		= aer_remove,
 	.reset_link	= aer_root_reset,
 };




[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