]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/pci: Do not try re-enabling load/store if device is disabled
authorNiklas Schnelle <schnelle@linux.ibm.com>
Wed, 25 Jun 2025 09:28:29 +0000 (11:28 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Jul 2025 14:03:04 +0000 (16:03 +0200)
commit b97a7972b1f4f81417840b9a2ab0c19722b577d5 upstream.

If a device is disabled unblocking load/store on its own is not useful
as a full re-enable of the function is necessary anyway. Note that SCLP
Write Event Data Action Qualifier 0 (Reset) leaves the device disabled
and triggers this case unless the driver already requests a reset.

Cc: stable@vger.kernel.org
Fixes: 4cdf2f4e24ff ("s390/pci: implement minimal PCI error recovery")
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/s390/pci/pci_event.c

index b3961f1016ea0b764cee29809dd760460b92296a..d969f36bf186f295898249ec36f1b22d51a946eb 100644 (file)
@@ -98,6 +98,10 @@ static pci_ers_result_t zpci_event_do_error_state_clear(struct pci_dev *pdev,
        struct zpci_dev *zdev = to_zpci(pdev);
        int rc;
 
+       /* The underlying device may have been disabled by the event */
+       if (!zdev_enabled(zdev))
+               return PCI_ERS_RESULT_NEED_RESET;
+
        pr_info("%s: Unblocking device access for examination\n", pci_name(pdev));
        rc = zpci_reset_load_store_blocked(zdev);
        if (rc) {