]> www.infradead.org Git - users/hch/misc.git/commitdiff
PCI/AER: Fix missing uevent on recovery when a reset is requested
authorNiklas Schnelle <schnelle@linux.ibm.com>
Thu, 7 Aug 2025 13:55:38 +0000 (15:55 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 14 Aug 2025 20:55:58 +0000 (15:55 -0500)
Since commit 7b42d97e99d3 ("PCI/ERR: Always report current recovery
status for udev") AER uses the result of error_detected() as parameter
to pci_uevent_ers(). As pci_uevent_ers() however does not handle
PCI_ERS_RESULT_NEED_RESET this results in a missing uevent for the
beginning of recovery if drivers request a reset. Fix this by treating
PCI_ERS_RESULT_NEED_RESET as beginning recovery.

Fixes: 7b42d97e99d3 ("PCI/ERR: Always report current recovery status for udev")
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20250807-add_err_uevents-v5-1-adf85b0620b0@linux.ibm.com
drivers/pci/pci-driver.c

index 63665240ae87f4a04108b375b128f8aa3c89e177..6405acdb5d0f38ad599e5743c0da59a822272899 100644 (file)
@@ -1596,6 +1596,7 @@ void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type)
        switch (err_type) {
        case PCI_ERS_RESULT_NONE:
        case PCI_ERS_RESULT_CAN_RECOVER:
+       case PCI_ERS_RESULT_NEED_RESET:
                envp[idx++] = "ERROR_EVENT=BEGIN_RECOVERY";
                envp[idx++] = "DEVICE_ONLINE=0";
                break;