]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: qat - handle sysfs-triggered reset callbacks
authorAhsan Atta <ahsan.atta@intel.com>
Wed, 13 May 2026 15:16:59 +0000 (17:16 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 22 May 2026 12:25:29 +0000 (20:25 +0800)
A reset requested through /sys/bus/pci/devices/.../reset invokes the
driver reset_prepare() and reset_done() callbacks. The QAT driver does
not implement those callbacks today, so the reset proceeds without
quiescing the device or bringing it back up afterward, which leaves
the device unusable.

Hook reset_prepare() and reset_done() into adf_err_handler so the
common shutdown and recovery flow also runs for reset. Skip device
quiesce if the device is already in a down state.

Cc: stable@vger.kernel.org
Signed-off-by: Ahsan Atta <ahsan.atta@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: Damian Muszynski <damian.muszynski@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/intel/qat/qat_common/adf_aer.c

index d29f70eb84b8ee4ccfeced083345a27a1235503c..af028488e66024e37f322764a710ce4023535825 100644 (file)
@@ -250,10 +250,22 @@ static void adf_resume(struct pci_dev *pdev)
        dev_info(&pdev->dev, "Device is up and running\n");
 }
 
+static void adf_reset_prepare(struct pci_dev *pdev)
+{
+       reset_prepare(pdev);
+}
+
+static void adf_reset_done(struct pci_dev *pdev)
+{
+       reset_done(pdev);
+}
+
 const struct pci_error_handlers adf_err_handler = {
        .error_detected = adf_error_detected,
        .slot_reset = adf_slot_reset,
        .resume = adf_resume,
+       .reset_prepare = adf_reset_prepare,
+       .reset_done = adf_reset_done,
 };
 EXPORT_SYMBOL_GPL(adf_err_handler);