Skip to contentSkip to conversation

crypto: remove unnecessary PCI error handling

PATCH In review Bjorn Helgaas 4 participants 13 messages Mar 7, 2023 – Mar 17, 2023

Subsystems (5)
lore
Share & tools
lore
#0 lore raw

cover crypto: remove unnecessary PCI error handling

From: Bjorn Helgaas <[email protected]>

Since f26e58bf6f54 ("PCI/AER: Enable error reporting when AER is native"), which appeared in v6.0, the PCI core has enabled PCIe error reporting for all devices during enumeration.

Remove driver code to do this (qat_4xxx) and remove unnecessary includes of <linux/aer.h> from several other drivers.

Bjorn Helgaas (6):
crypto: qat - drop redundant adf_enable_aer()
crypto: cavium/nitrox - remove unnecessary aer.h include
crypto: hisilicon/hpre - remove unnecessary aer.h include
crypto: hisilicon/qm - remove unnecessary aer.h include
crypto: hisilicon/sec - remove unnecessary aer.h include
crypto: hisilicon/zip - remove unnecessary aer.h include

 drivers/crypto/cavium/nitrox/nitrox_main.c    |  1 -
 drivers/crypto/hisilicon/hpre/hpre_main.c     |  1 -
 drivers/crypto/hisilicon/qm.c                 |  1 -
 drivers/crypto/hisilicon/sec2/sec_main.c      |  1 -
 drivers/crypto/hisilicon/zip/zip_main.c       |  1 -
 drivers/crypto/qat/qat_4xxx/adf_drv.c         | 11 ++----
 drivers/crypto/qat/qat_c3xxx/adf_drv.c        |  9 ++---
 drivers/crypto/qat/qat_c62x/adf_drv.c         |  9 ++---
 drivers/crypto/qat/qat_common/adf_aer.c       | 35 -------------------
 .../crypto/qat/qat_common/adf_common_drv.h    |  2 --
 drivers/crypto/qat/qat_dh895xcc/adf_drv.c     |  9 ++---
 11 files changed, 9 insertions(+), 71 deletions(-)
Signature · 1 line
2.25.1
#1 lore raw

PATCH 1/6 crypto: qat - drop redundant adf_enable_aer()

From: Bjorn Helgaas <[email protected]>

pci_enable_pcie_error_reporting() enables the device to send ERR_* Messages. Since f26e58bf6f54 ("PCI/AER: Enable error reporting when AER is native"), the PCI core does this for all devices during enumeration, so the driver doesn't need to do it itself.

Remove the redundant pci_enable_pcie_error_reporting() call from the driver. Also remove the corresponding pci_disable_pcie_error_reporting() from the driver .remove() path.

Note that this only controls ERR_* Messages from the device. An ERR_* Message may cause the Root Port to generate an interrupt, depending on the AER Root Error Command register managed by the AER service driver.

---
 drivers/crypto/qat/qat_4xxx/adf_drv.c         | 11 ++----
 drivers/crypto/qat/qat_c3xxx/adf_drv.c        |  9 ++---
 drivers/crypto/qat/qat_c62x/adf_drv.c         |  9 ++---
 drivers/crypto/qat/qat_common/adf_aer.c       | 35 -------------------
 .../crypto/qat/qat_common/adf_common_drv.h    |  2 --
 drivers/crypto/qat/qat_dh895xcc/adf_drv.c     |  9 ++---
 6 files changed, 9 insertions(+), 66 deletions(-)
drivers/crypto/qat/qat_4xxx/adf_drv.c +3 -8
index b3a4c7b23864..025de43a572b 100644
@@ -403,21 +403,19 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	pci_set_master(pdev);
 
-	adf_enable_aer(accel_dev);
-
 	if (pci_save_state(pdev)) {
 		dev_err(&pdev->dev, "Failed to save pci state.\n");
 		ret = -ENOMEM;
-		goto out_err_disable_aer;
+		goto out_err;
 	}
 
 	ret = adf_sysfs_init(accel_dev);
 	if (ret)
-		goto out_err_disable_aer;
+		goto out_err;
 
 	ret = hw_data->dev_config(accel_dev);
 	if (ret)
-		goto out_err_disable_aer;
+		goto out_err;
 
 	ret = adf_dev_init(accel_dev);
 	if (ret)
@@ -433,8 +431,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adf_dev_stop(accel_dev);
 out_err_dev_shutdown:
 	adf_dev_shutdown(accel_dev);
-out_err_disable_aer:
-	adf_disable_aer(accel_dev);
 out_err:
 	adf_cleanup_accel(accel_dev);
 	return ret;
@@ -450,7 +446,6 @@ static void adf_remove(struct pci_dev *pdev)
 	}
 	adf_dev_stop(accel_dev);
 	adf_dev_shutdown(accel_dev);
-	adf_disable_aer(accel_dev);
 	adf_cleanup_accel(accel_dev);
 }
 
drivers/crypto/qat/qat_c3xxx/adf_drv.c +2 -7
index 1f4fbf4562b2..17a390718b10 100644
@@ -193,17 +193,15 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 	pci_set_master(pdev);
 
-	adf_enable_aer(accel_dev);
-
 	if (pci_save_state(pdev)) {
 		dev_err(&pdev->dev, "Failed to save pci state\n");
 		ret = -ENOMEM;
-		goto out_err_disable_aer;
+		goto out_err_free_reg;
 	}
 
 	ret = hw_data->dev_config(accel_dev);
 	if (ret)
-		goto out_err_disable_aer;
+		goto out_err_free_reg;
 
 	ret = adf_dev_init(accel_dev);
 	if (ret)
@@ -219,8 +217,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adf_dev_stop(accel_dev);
 out_err_dev_shutdown:
 	adf_dev_shutdown(accel_dev);
-out_err_disable_aer:
-	adf_disable_aer(accel_dev);
 out_err_free_reg:
 	pci_release_regions(accel_pci_dev->pci_dev);
 out_err_disable:
@@ -241,7 +237,6 @@ static void adf_remove(struct pci_dev *pdev)
 	}
 	adf_dev_stop(accel_dev);
 	adf_dev_shutdown(accel_dev);
-	adf_disable_aer(accel_dev);
 	adf_cleanup_accel(accel_dev);
 	adf_cleanup_pci_dev(accel_dev);
 	kfree(accel_dev);
drivers/crypto/qat/qat_c62x/adf_drv.c +2 -7
index 4ccaf298250c..fd799044cdd7 100644
@@ -193,17 +193,15 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 	pci_set_master(pdev);
 
-	adf_enable_aer(accel_dev);
-
 	if (pci_save_state(pdev)) {
 		dev_err(&pdev->dev, "Failed to save pci state\n");
 		ret = -ENOMEM;
-		goto out_err_disable_aer;
+		goto out_err_free_reg;
 	}
 
 	ret = hw_data->dev_config(accel_dev);
 	if (ret)
-		goto out_err_disable_aer;
+		goto out_err_free_reg;
 
 	ret = adf_dev_init(accel_dev);
 	if (ret)
@@ -219,8 +217,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adf_dev_stop(accel_dev);
 out_err_dev_shutdown:
 	adf_dev_shutdown(accel_dev);
-out_err_disable_aer:
-	adf_disable_aer(accel_dev);
 out_err_free_reg:
 	pci_release_regions(accel_pci_dev->pci_dev);
 out_err_disable:
@@ -241,7 +237,6 @@ static void adf_remove(struct pci_dev *pdev)
 	}
 	adf_dev_stop(accel_dev);
 	adf_dev_shutdown(accel_dev);
-	adf_disable_aer(accel_dev);
 	adf_cleanup_accel(accel_dev);
 	adf_cleanup_pci_dev(accel_dev);
 	kfree(accel_dev);
drivers/crypto/qat/qat_common/adf_aer.c +0 -35
index fe9bb2f3536a..bb7289032088 100644
@@ -2,7 +2,6 @@
 /* Copyright(c) 2014 - 2020 Intel Corporation */
 #include <linux/kernel.h>
 #include <linux/pci.h>
-#include <linux/aer.h>
 #include <linux/completion.h>
 #include <linux/workqueue.h>
 #include <linux/delay.h>
@@ -173,40 +172,6 @@ const struct pci_error_handlers adf_err_handler = {
 };
 EXPORT_SYMBOL_GPL(adf_err_handler);
 
-/**
- * adf_enable_aer() - Enable Advance Error Reporting for acceleration device
- * @accel_dev:  Pointer to acceleration device.
- *
- * Function enables PCI Advance Error Reporting for the
- * QAT acceleration device accel_dev.
- * To be used by QAT device specific drivers.
- */
-void adf_enable_aer(struct adf_accel_dev *accel_dev)
-{
-	struct pci_dev *pdev = accel_to_pci_dev(accel_dev);
-
-	pci_enable_pcie_error_reporting(pdev);
-}
-EXPORT_SYMBOL_GPL(adf_enable_aer);
-
-/**
- * adf_disable_aer() - Disable Advance Error Reporting for acceleration device
- * @accel_dev:  Pointer to acceleration device.
- *
- * Function disables PCI Advance Error Reporting for the
- * QAT acceleration device accel_dev.
- * To be used by QAT device specific drivers.
- *
- * Return: void
- */
-void adf_disable_aer(struct adf_accel_dev *accel_dev)
-{
-	struct pci_dev *pdev = accel_to_pci_dev(accel_dev);
-
-	pci_disable_pcie_error_reporting(pdev);
-}
-EXPORT_SYMBOL_GPL(adf_disable_aer);
-
 int adf_init_aer(void)
 {
 	device_reset_wq = alloc_workqueue("qat_device_reset_wq",
drivers/crypto/qat/qat_common/adf_common_drv.h +0 -2
index 7189265573c0..13f32c7b13fa 100644
@@ -88,8 +88,6 @@ int adf_ae_start(struct adf_accel_dev *accel_dev);
 int adf_ae_stop(struct adf_accel_dev *accel_dev);
 
 extern const struct pci_error_handlers adf_err_handler;
-void adf_enable_aer(struct adf_accel_dev *accel_dev);
-void adf_disable_aer(struct adf_accel_dev *accel_dev);
 void adf_reset_sbr(struct adf_accel_dev *accel_dev);
 void adf_reset_flr(struct adf_accel_dev *accel_dev);
 void adf_dev_restore(struct adf_accel_dev *accel_dev);
drivers/crypto/qat/qat_dh895xcc/adf_drv.c +2 -7
index ebeb17b67fcd..feb6e000cc6d 100644
@@ -193,17 +193,15 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 	pci_set_master(pdev);
 
-	adf_enable_aer(accel_dev);
-
 	if (pci_save_state(pdev)) {
 		dev_err(&pdev->dev, "Failed to save pci state\n");
 		ret = -ENOMEM;
-		goto out_err_disable_aer;
+		goto out_err_free_reg;
 	}
 
 	ret = hw_data->dev_config(accel_dev);
 	if (ret)
-		goto out_err_disable_aer;
+		goto out_err_free_reg;
 
 	ret = adf_dev_init(accel_dev);
 	if (ret)
@@ -219,8 +217,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adf_dev_stop(accel_dev);
 out_err_dev_shutdown:
 	adf_dev_shutdown(accel_dev);
-out_err_disable_aer:
-	adf_disable_aer(accel_dev);
 out_err_free_reg:
 	pci_release_regions(accel_pci_dev->pci_dev);
 out_err_disable:
@@ -241,7 +237,6 @@ static void adf_remove(struct pci_dev *pdev)
 	}
 	adf_dev_stop(accel_dev);
 	adf_dev_shutdown(accel_dev);
-	adf_disable_aer(accel_dev);
 	adf_cleanup_accel(accel_dev);
 	adf_cleanup_pci_dev(accel_dev);
 	kfree(accel_dev);
Signature · 1 line
2.25.1
Acked-by on v1 1/6
#2 lore raw

Re: [PATCH 1/6] crypto: qat - drop redundant adf_enable_aer()

Quoted 11 lines · Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

pci_enable_pcie_error_reporting() enables the device to send ERR_* Messages. Since f26e58bf6f54 ("PCI/AER: Enable error reporting when AER is native"), the PCI core does this for all devices during enumeration, so the driver doesn't need to do it itself.

Remove the redundant pci_enable_pcie_error_reporting() call from the driver. Also remove the corresponding pci_disable_pcie_error_reporting() from the driver .remove() path.

Quoted 7 lines

Note that this only controls ERR_* Messages from the device. An ERR_* Message may cause the Root Port to generate an interrupt, depending on the AER Root Error Command register managed by the AER service driver.

Reviewed and tried on c62x and 4xxx.
Just a note. This patch will not apply cleanly after [1] is applied.

[1] https://patchwork.kernel.org/project/linux-crypto/patch/[email protected]/

Regards,

Signature · 1 line
Giovanni
#3 lore raw

PATCH 2/6 crypto: cavium/nitrox - remove unnecessary aer.h include

In reply to Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

---
 drivers/crypto/cavium/nitrox/nitrox_main.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/cavium/nitrox/nitrox_main.c +0 -1
index 432a61aca0c5..65114f766e7d 100644
@@ -1,5 +1,4 @@
 // SPDX-License-Identifier: GPL-2.0-only
-#include <linux/aer.h>
 #include <linux/delay.h>
 #include <linux/firmware.h>
 #include <linux/list.h>
Signature · 1 line
2.25.1
#4 lore raw

PATCH 3/6 crypto: hisilicon/hpre - remove unnecessary aer.h include

In reply to Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

---
 drivers/crypto/hisilicon/hpre/hpre_main.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/hpre/hpre_main.c +0 -1
index 923f9c279265..5d0adfb54a34 100644
@@ -1,7 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Copyright (c) 2018-2019 HiSilicon Limited. */
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitops.h>
 #include <linux/debugfs.h>
 #include <linux/init.h>
Signature · 1 line
2.25.1
maintainer Acked-by on v1 3/6
#5 lore raw

Re: [PATCH 3/6] crypto: hisilicon/hpre - remove unnecessary aer.h include

Quoted 16 lines · Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

---
 drivers/crypto/hisilicon/hpre/hpre_main.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/hpre/hpre_main.c +0 -0
index 923f9c279265..5d0adfb54a34 100644

drivers/crypto/hisilicon/hpre/hpre_main.c line 6

Quoted 7 lines
drivers/crypto/hisilicon/hpre/hpre_main.c +0 -1
@@ -1,7 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Copyright (c) 2018-2019 HiSilicon Limited. */
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitops.h>
 #include <linux/debugfs.h>
 #include <linux/init.h>

Thanks.

#6 lore raw

PATCH 4/6 crypto: hisilicon/qm - remove unnecessary aer.h include

In reply to Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

---
 drivers/crypto/hisilicon/qm.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/qm.c +0 -1
index e4c84433a88a..8b563ab47484 100644
@@ -2,7 +2,6 @@
 /* Copyright (c) 2019 HiSilicon Limited. */
 #include <asm/page.h>
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitmap.h>
 #include <linux/dma-mapping.h>
 #include <linux/idr.h>
Signature · 1 line
2.25.1
maintainer Acked-by on v1 4/6
#7 lore raw

Re: [PATCH 4/6] crypto: hisilicon/qm - remove unnecessary aer.h include

Quoted 17 lines · Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

---
 drivers/crypto/hisilicon/qm.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/qm.c +0 -0
index e4c84433a88a..8b563ab47484 100644

drivers/crypto/hisilicon/qm.c line 7

Quoted 7 lines
drivers/crypto/hisilicon/qm.c +0 -1
@@ -2,7 +2,6 @@
 /* Copyright (c) 2019 HiSilicon Limited. */
 #include <asm/page.h>
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitmap.h>
 #include <linux/dma-mapping.h>
 #include <linux/idr.h>

Thanks.

#8 lore raw

PATCH 5/6 crypto: hisilicon/sec - remove unnecessary aer.h include

In reply to Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

---
 drivers/crypto/hisilicon/sec2/sec_main.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/sec2/sec_main.c +0 -1
index 93572c0d4faa..77f9f131b850 100644
@@ -2,7 +2,6 @@
 /* Copyright (c) 2019 HiSilicon Limited. */
 
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitops.h>
 #include <linux/debugfs.h>
 #include <linux/init.h>
Signature · 1 line
2.25.1
maintainer Acked-by on v1 5/6
#9 lore raw

Re: [PATCH 5/6] crypto: hisilicon/sec - remove unnecessary aer.h include

Quoted 17 lines · Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

---
 drivers/crypto/hisilicon/sec2/sec_main.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/sec2/sec_main.c +0 -0
index 93572c0d4faa..77f9f131b850 100644

drivers/crypto/hisilicon/sec2/sec_main.c line 7

Quoted 7 lines
drivers/crypto/hisilicon/sec2/sec_main.c +0 -1
@@ -2,7 +2,6 @@
 /* Copyright (c) 2019 HiSilicon Limited. */
 
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitops.h>
 #include <linux/debugfs.h>
 #include <linux/init.h>

Thanks.

#10 lore raw

PATCH 6/6 crypto: hisilicon/zip - remove unnecessary aer.h include

In reply to Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

Cc Yang Shen <[email protected]>
Cc Zhou Wang <[email protected]>
Cc Nick Terrell <[email protected]>
---
 drivers/crypto/hisilicon/zip/zip_main.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/zip/zip_main.c +0 -1
index 1549bec3aea5..f3ce34198775 100644
@@ -1,7 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Copyright (c) 2019 HiSilicon Limited. */
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitops.h>
 #include <linux/debugfs.h>
 #include <linux/init.h>
Signature · 1 line
2.25.1
maintainer Acked-by on v1 6/6
#11 lore raw

Re: [PATCH 6/6] crypto: hisilicon/zip - remove unnecessary aer.h include

Quoted 18 lines · Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

<linux/aer.h> is unused, so remove it.

Cc Yang Shen <[email protected]>
Cc Zhou Wang <[email protected]>
Cc Nick Terrell <[email protected]>
---
 drivers/crypto/hisilicon/zip/zip_main.c | 1 -
 1 file changed, 1 deletion(-)
drivers/crypto/hisilicon/zip/zip_main.c +0 -0
index 1549bec3aea5..f3ce34198775 100644

drivers/crypto/hisilicon/zip/zip_main.c line 6

Quoted 7 lines
drivers/crypto/hisilicon/zip/zip_main.c +0 -1
@@ -1,7 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Copyright (c) 2019 HiSilicon Limited. */
 #include <linux/acpi.h>
-#include <linux/aer.h>
 #include <linux/bitops.h>
 #include <linux/debugfs.h>
 #include <linux/init.h>

Thanks.

maintainer
#12 lore raw
In reply to Bjorn Helgaas
Quoted 17 lines · Bjorn Helgaas

From: Bjorn Helgaas <[email protected]>

Since f26e58bf6f54 ("PCI/AER: Enable error reporting when AER is native"), which appeared in v6.0, the PCI core has enabled PCIe error reporting for all devices during enumeration.

Remove driver code to do this (qat_4xxx) and remove unnecessary includes of <linux/aer.h> from several other drivers.

Bjorn Helgaas (6):
crypto: qat - drop redundant adf_enable_aer()
crypto: cavium/nitrox - remove unnecessary aer.h include
crypto: hisilicon/hpre - remove unnecessary aer.h include
crypto: hisilicon/qm - remove unnecessary aer.h include
crypto: hisilicon/sec - remove unnecessary aer.h include
crypto: hisilicon/zip - remove unnecessary aer.h include

Quoted 15 lines
 drivers/crypto/cavium/nitrox/nitrox_main.c    |  1 -
 drivers/crypto/hisilicon/hpre/hpre_main.c     |  1 -
 drivers/crypto/hisilicon/qm.c                 |  1 -
 drivers/crypto/hisilicon/sec2/sec_main.c      |  1 -
 drivers/crypto/hisilicon/zip/zip_main.c       |  1 -
 drivers/crypto/qat/qat_4xxx/adf_drv.c         | 11 ++----
 drivers/crypto/qat/qat_c3xxx/adf_drv.c        |  9 ++---
 drivers/crypto/qat/qat_c62x/adf_drv.c         |  9 ++---
 drivers/crypto/qat/qat_common/adf_aer.c       | 35 -------------------
 .../crypto/qat/qat_common/adf_common_drv.h    |  2 --
 drivers/crypto/qat/qat_dh895xcc/adf_drv.c     |  9 ++---
 11 files changed, 9 insertions(+), 71 deletions(-)
Signature · 1 line
2.25.1

All applied. Thanks.

Signature · 3 lines
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt