[PATCH v3 2/3] PCI: hisi: Use devm_ghes_register_vendor_record_notifier()

Kai-Heng Feng posted 3 patches 2 days, 23 hours ago
[PATCH v3 2/3] PCI: hisi: Use devm_ghes_register_vendor_record_notifier()
Posted by Kai-Heng Feng 2 days, 23 hours ago
Switch to the device-managed variant so the notifier is automatically
unregistered on device removal, allowing the open-coded remove callback
to be dropped entirely.

Cc: Shiju Jose <shiju.jose@huawei.com>
Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Kai-Heng Feng <kaihengf@nvidia.com>
---
v3:
 - No change.
v2:
 - New patch.

 drivers/pci/controller/pcie-hisi-error.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/pci/controller/pcie-hisi-error.c b/drivers/pci/controller/pcie-hisi-error.c
index aaf1ed2b6e59..36be86d827a8 100644
--- a/drivers/pci/controller/pcie-hisi-error.c
+++ b/drivers/pci/controller/pcie-hisi-error.c
@@ -287,25 +287,16 @@ static int hisi_pcie_error_handler_probe(struct platform_device *pdev)
 
 	priv->nb.notifier_call = hisi_pcie_notify_error;
 	priv->dev = &pdev->dev;
-	ret = ghes_register_vendor_record_notifier(&priv->nb);
+	ret = devm_ghes_register_vendor_record_notifier(&pdev->dev, &priv->nb);
 	if (ret) {
 		dev_err(&pdev->dev,
 			"Failed to register hisi pcie controller error handler with apei\n");
 		return ret;
 	}
 
-	platform_set_drvdata(pdev, priv);
-
 	return 0;
 }
 
-static void hisi_pcie_error_handler_remove(struct platform_device *pdev)
-{
-	struct hisi_pcie_error_private *priv = platform_get_drvdata(pdev);
-
-	ghes_unregister_vendor_record_notifier(&priv->nb);
-}
-
 static const struct acpi_device_id hisi_pcie_acpi_match[] = {
 	{ "HISI0361", 0 },
 	{ }
@@ -317,7 +308,6 @@ static struct platform_driver hisi_pcie_error_handler_driver = {
 		.acpi_match_table = hisi_pcie_acpi_match,
 	},
 	.probe		= hisi_pcie_error_handler_probe,
-	.remove		= hisi_pcie_error_handler_remove,
 };
 module_platform_driver(hisi_pcie_error_handler_driver);
 
-- 
2.50.1 (Apple Git-155)
RE: [PATCH v3 2/3] PCI: hisi: Use devm_ghes_register_vendor_record_notifier()
Posted by Shiju Jose 1 day, 18 hours ago
>-----Original Message-----
>From: Kai-Heng Feng <kaihengf@nvidia.com>
>Sent: 30 March 2026 10:42
>To: rafael@kernel.org
>Cc: Jonathan Cameron <jonathan.cameron@huawei.com>;
>helgaas@kernel.org; Guohanjun (Hanjun Guo) <guohanjun@huawei.com>;
>linux-kernel@vger.kernel.org; linux-acpi@vger.kernel.org; linux-
>pci@vger.kernel.org; acpica-devel@lists.linux.dev; linux-
>hardening@vger.kernel.org; Kai-Heng Feng <kaihengf@nvidia.com>; Shiju Jose
><shiju.jose@huawei.com>; Lorenzo Pieralisi <lpieralisi@kernel.org>; Krzysztof
>Wilczyński <kwilczynski@kernel.org>; Manivannan Sadhasivam
><mani@kernel.org>; Rob Herring <robh@kernel.org>; Bjorn Helgaas
><bhelgaas@google.com>
>Subject: [PATCH v3 2/3] PCI: hisi: Use
>devm_ghes_register_vendor_record_notifier()
>
>Switch to the device-managed variant so the notifier is automatically
>unregistered on device removal, allowing the open-coded remove callback to
>be dropped entirely.
>
>Cc: Shiju Jose <shiju.jose@huawei.com>
>Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
>Signed-off-by: Kai-Heng Feng <kaihengf@nvidia.com>

Reviewed-by: Shiju Jose <shiju.jose@huawei.com>
>---
>v3:
> - No change.
>v2:
> - New patch.
>
> drivers/pci/controller/pcie-hisi-error.c | 12 +-----------
> 1 file changed, 1 insertion(+), 11 deletions(-)
>
>diff --git a/drivers/pci/controller/pcie-hisi-error.c b/drivers/pci/controller/pcie-
>hisi-error.c
>index aaf1ed2b6e59..36be86d827a8 100644
>--- a/drivers/pci/controller/pcie-hisi-error.c
>+++ b/drivers/pci/controller/pcie-hisi-error.c
>@@ -287,25 +287,16 @@ static int hisi_pcie_error_handler_probe(struct
>platform_device *pdev)
>
> 	priv->nb.notifier_call = hisi_pcie_notify_error;
> 	priv->dev = &pdev->dev;
>-	ret = ghes_register_vendor_record_notifier(&priv->nb);
>+	ret = devm_ghes_register_vendor_record_notifier(&pdev->dev,
>+&priv->nb);
> 	if (ret) {
> 		dev_err(&pdev->dev,
> 			"Failed to register hisi pcie controller error handler
>with apei\n");
> 		return ret;
> 	}
>
>-	platform_set_drvdata(pdev, priv);
>-
> 	return 0;
> }
>
>-static void hisi_pcie_error_handler_remove(struct platform_device *pdev) -{
>-	struct hisi_pcie_error_private *priv = platform_get_drvdata(pdev);
>-
>-	ghes_unregister_vendor_record_notifier(&priv->nb);
>-}
>-
> static const struct acpi_device_id hisi_pcie_acpi_match[] = {
> 	{ "HISI0361", 0 },
> 	{ }
>@@ -317,7 +308,6 @@ static struct platform_driver
>hisi_pcie_error_handler_driver = {
> 		.acpi_match_table = hisi_pcie_acpi_match,
> 	},
> 	.probe		= hisi_pcie_error_handler_probe,
>-	.remove		= hisi_pcie_error_handler_remove,
> };
> module_platform_driver(hisi_pcie_error_handler_driver);
>
>--
>2.50.1 (Apple Git-155)
>
Re: [PATCH v3 2/3] PCI: hisi: Use devm_ghes_register_vendor_record_notifier()
Posted by Manivannan Sadhasivam 2 days, 3 hours ago
On Mon, Mar 30, 2026 at 05:41:56PM +0800, Kai-Heng Feng wrote:
> Switch to the device-managed variant so the notifier is automatically
> unregistered on device removal, allowing the open-coded remove callback
> to be dropped entirely.
> 
> Cc: Shiju Jose <shiju.jose@huawei.com>
> Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
> Signed-off-by: Kai-Heng Feng <kaihengf@nvidia.com>

Acked-by: Manivannan Sadhasivam <mani@kernel.org>

Since there is an API dependency, feel free to take it through ACPI tree.

- Mani

> ---
> v3:
>  - No change.
> v2:
>  - New patch.
> 
>  drivers/pci/controller/pcie-hisi-error.c | 12 +-----------
>  1 file changed, 1 insertion(+), 11 deletions(-)
> 
> diff --git a/drivers/pci/controller/pcie-hisi-error.c b/drivers/pci/controller/pcie-hisi-error.c
> index aaf1ed2b6e59..36be86d827a8 100644
> --- a/drivers/pci/controller/pcie-hisi-error.c
> +++ b/drivers/pci/controller/pcie-hisi-error.c
> @@ -287,25 +287,16 @@ static int hisi_pcie_error_handler_probe(struct platform_device *pdev)
>  
>  	priv->nb.notifier_call = hisi_pcie_notify_error;
>  	priv->dev = &pdev->dev;
> -	ret = ghes_register_vendor_record_notifier(&priv->nb);
> +	ret = devm_ghes_register_vendor_record_notifier(&pdev->dev, &priv->nb);
>  	if (ret) {
>  		dev_err(&pdev->dev,
>  			"Failed to register hisi pcie controller error handler with apei\n");
>  		return ret;
>  	}
>  
> -	platform_set_drvdata(pdev, priv);
> -
>  	return 0;
>  }
>  
> -static void hisi_pcie_error_handler_remove(struct platform_device *pdev)
> -{
> -	struct hisi_pcie_error_private *priv = platform_get_drvdata(pdev);
> -
> -	ghes_unregister_vendor_record_notifier(&priv->nb);
> -}
> -
>  static const struct acpi_device_id hisi_pcie_acpi_match[] = {
>  	{ "HISI0361", 0 },
>  	{ }
> @@ -317,7 +308,6 @@ static struct platform_driver hisi_pcie_error_handler_driver = {
>  		.acpi_match_table = hisi_pcie_acpi_match,
>  	},
>  	.probe		= hisi_pcie_error_handler_probe,
> -	.remove		= hisi_pcie_error_handler_remove,
>  };
>  module_platform_driver(hisi_pcie_error_handler_driver);
>  
> -- 
> 2.50.1 (Apple Git-155)
> 

-- 
மணிவண்ணன் சதாசிவம்