[PATCH v3 1/3] ACPI: APEI: GHES: Add devm_ghes_register_vendor_record_notifier()

Kai-Heng Feng posted 3 patches 2 days, 23 hours ago
[PATCH v3 1/3] ACPI: APEI: GHES: Add devm_ghes_register_vendor_record_notifier()
Posted by Kai-Heng Feng 2 days, 23 hours ago
Add a device-managed wrapper around ghes_register_vendor_record_notifier()
so drivers can avoid manual cleanup on device removal or probe failure.

Cc: Shiju Jose <shiju.jose@huawei.com>
Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Kai-Heng Feng <kaihengf@nvidia.com>
---
v3:
 - Change patch title
 - Move documentation to header file.
v2:
 - New patch.

 drivers/acpi/apei/ghes.c | 18 ++++++++++++++++++
 include/acpi/ghes.h      | 11 +++++++++++
 2 files changed, 29 insertions(+)

diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 8acd2742bb27..3236a3ce79d6 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -689,6 +689,24 @@ void ghes_unregister_vendor_record_notifier(struct notifier_block *nb)
 }
 EXPORT_SYMBOL_GPL(ghes_unregister_vendor_record_notifier);
 
+static void ghes_vendor_record_notifier_destroy(void *nb)
+{
+	ghes_unregister_vendor_record_notifier(nb);
+}
+
+int devm_ghes_register_vendor_record_notifier(struct device *dev,
+					      struct notifier_block *nb)
+{
+	int ret;
+
+	ret = ghes_register_vendor_record_notifier(nb);
+	if (ret)
+		return ret;
+
+	return devm_add_action_or_reset(dev, ghes_vendor_record_notifier_destroy, nb);
+}
+EXPORT_SYMBOL_GPL(devm_ghes_register_vendor_record_notifier);
+
 static void ghes_vendor_record_work_func(struct work_struct *work)
 {
 	struct ghes_vendor_record_entry *entry;
diff --git a/include/acpi/ghes.h b/include/acpi/ghes.h
index 7bea522c0657..8d7e5caef3f1 100644
--- a/include/acpi/ghes.h
+++ b/include/acpi/ghes.h
@@ -71,6 +71,17 @@ int ghes_register_vendor_record_notifier(struct notifier_block *nb);
  */
 void ghes_unregister_vendor_record_notifier(struct notifier_block *nb);
 
+/**
+ * devm_ghes_register_vendor_record_notifier - device-managed vendor
+ * record notifier registration.
+ * @dev: device that owns the notifier lifetime
+ * @nb: pointer to the notifier_block structure of the vendor record handler
+ *
+ * Return: 0 on success, negative errno on failure.
+ */
+int devm_ghes_register_vendor_record_notifier(struct device *dev,
+					      struct notifier_block *nb);
+
 struct list_head *ghes_get_devices(void);
 
 void ghes_estatus_pool_region_free(unsigned long addr, u32 size);
-- 
2.50.1 (Apple Git-155)
Re: [PATCH v3 1/3] ACPI: APEI: GHES: Add devm_ghes_register_vendor_record_notifier()
Posted by Shuai Xue 1 day, 7 hours ago

On 3/30/26 5:41 PM, Kai-Heng Feng wrote:
> Add a device-managed wrapper around ghes_register_vendor_record_notifier()
> so drivers can avoid manual cleanup on device removal or probe failure.
> 
> Cc: Shiju Jose <shiju.jose@huawei.com>
> Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
> Signed-off-by: Kai-Heng Feng <kaihengf@nvidia.com>

LGTM.

Reviewed-by: Shuai Xue <xueshuai@linux.alibaba.com>

Thanks.
Shuai
RE: [PATCH v3 1/3] ACPI: APEI: GHES: Add 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>; Tony Luck <tony.luck@intel.com>; Borislav Petkov
><bp@alien8.de>; Mauro Carvalho Chehab <mchehab@kernel.org>; Shuai Xue
><xueshuai@linux.alibaba.com>; Len Brown <lenb@kernel.org>; Robert Moore
><robert.moore@intel.com>; Fabio M. De Francesco
><fabio.m.de.francesco@linux.intel.com>; Breno Leitao <leitao@debian.org>;
>Jason Tian <jason@os.amperecomputing.com>
>Subject: [PATCH v3 1/3] ACPI: APEI: GHES: Add
>devm_ghes_register_vendor_record_notifier()
>
>Add a device-managed wrapper around
>ghes_register_vendor_record_notifier()
>so drivers can avoid manual cleanup on device removal or probe failure.
>
>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:
> - Change patch title
> - Move documentation to header file.
>v2:
> - New patch.
>
> drivers/acpi/apei/ghes.c | 18 ++++++++++++++++++
> include/acpi/ghes.h      | 11 +++++++++++
> 2 files changed, 29 insertions(+)
>
>diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index
>8acd2742bb27..3236a3ce79d6 100644
>--- a/drivers/acpi/apei/ghes.c
>+++ b/drivers/acpi/apei/ghes.c
>@@ -689,6 +689,24 @@ void ghes_unregister_vendor_record_notifier(struct
>notifier_block *nb)  }
>EXPORT_SYMBOL_GPL(ghes_unregister_vendor_record_notifier);
>
>+static void ghes_vendor_record_notifier_destroy(void *nb) {
>+	ghes_unregister_vendor_record_notifier(nb);
>+}
>+
>+int devm_ghes_register_vendor_record_notifier(struct device *dev,
>+					      struct notifier_block *nb)
>+{
>+	int ret;
>+
>+	ret = ghes_register_vendor_record_notifier(nb);
>+	if (ret)
>+		return ret;
>+
>+	return devm_add_action_or_reset(dev,
>+ghes_vendor_record_notifier_destroy, nb); }
>+EXPORT_SYMBOL_GPL(devm_ghes_register_vendor_record_notifier);
>+
> static void ghes_vendor_record_work_func(struct work_struct *work)  {
> 	struct ghes_vendor_record_entry *entry; diff --git
>a/include/acpi/ghes.h b/include/acpi/ghes.h index
>7bea522c0657..8d7e5caef3f1 100644
>--- a/include/acpi/ghes.h
>+++ b/include/acpi/ghes.h
>@@ -71,6 +71,17 @@ int ghes_register_vendor_record_notifier(struct
>notifier_block *nb);
>  */
> void ghes_unregister_vendor_record_notifier(struct notifier_block *nb);
>
>+/**
>+ * devm_ghes_register_vendor_record_notifier - device-managed vendor
>+ * record notifier registration.
>+ * @dev: device that owns the notifier lifetime
>+ * @nb: pointer to the notifier_block structure of the vendor record
>+handler
>+ *
>+ * Return: 0 on success, negative errno on failure.
>+ */
>+int devm_ghes_register_vendor_record_notifier(struct device *dev,
>+					      struct notifier_block *nb);
>+
> struct list_head *ghes_get_devices(void);
>
> void ghes_estatus_pool_region_free(unsigned long addr, u32 size);
>--
>2.50.1 (Apple Git-155)
>
Re: [PATCH v3 1/3] ACPI: APEI: GHES: Add devm_ghes_register_vendor_record_notifier()
Posted by Breno Leitao 2 days, 20 hours ago
On Mon, Mar 30, 2026 at 05:41:55PM +0800, Kai-Heng Feng wrote:
> Add a device-managed wrapper around ghes_register_vendor_record_notifier()
> so drivers can avoid manual cleanup on device removal or probe failure.
> 
> 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: Breno Leitao <leitao@debian.org>