>-----Original Message-----
>From: Kai-Heng Feng <[email protected]>
>Sent: 30 March 2026 10:42
>To: [email protected]
>Cc: Jonathan Cameron <[email protected]>;
>[email protected]; Guohanjun (Hanjun Guo) <[email protected]>;
>[email protected]; [email protected]; linux-
>[email protected]; [email protected]; linux-
>[email protected]; Kai-Heng Feng <[email protected]>; Shiju Jose
><[email protected]>; Tony Luck <[email protected]>; Borislav Petkov
><[email protected]>; Mauro Carvalho Chehab <[email protected]>; Shuai Xue
><[email protected]>; Len Brown <[email protected]>; Robert Moore
><[email protected]>; Fabio M. De Francesco
><[email protected]>; Breno Leitao <[email protected]>;
>Jason Tian <[email protected]>
>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 <[email protected]>
>Cc: Jonathan Cameron <[email protected]>
>Signed-off-by: Kai-Heng Feng <[email protected]>

Reviewed-by: Shiju Jose <[email protected]>
>---
>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)
>


Reply via email to