Linux GPIO subsystem development
 help / color / mirror / Atom feed
* [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration
@ 2026-11-13 10:42 Eliav Farber
  2026-11-13 10:42 ` [PATCH v6 2/7] Input: adp5585: use devm_blocking_notifier_chain_register() Eliav Farber
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Eliav Farber @ 2026-11-13 10:42 UTC (permalink / raw)
  To: Rafael J. Wysocki, Dmitry Torokhov, Laurent Pinchart,
	Hans de Goede, Ilpo Järvinen, Armin Wolf, Sebastian Reichel,
	Andrew Morton
  Cc: Eliav Farber, linux-acpi, acpica-devel, linux-input, linux-gpio,
	linux-pwm, platform-driver-x86, linux-pm, linux-kernel,
	Jonathan Cameron, Andy Shevchenko, Uwe Kleine-König

The devm_atomic_notifier_chain_register() and
devm_blocking_notifier_chain_register() helpers this series added in v5
are now in mainline, together with 6 of the 11 driver conversions. This
revision carries the 6 conversions that were never picked up, plus one
new conversion for a driver that grew the old pattern after v5 was
posted.

Background, unchanged from v5. Many drivers repeat the same boilerplate
when registering notifiers with device lifetime:

  1. Register the notifier with *_notifier_chain_register()
  2. Check for error
  3. Register a devm action to unregister on teardown
  4. Implement a per-driver static unregister callback

The devm_*_notifier_chain_register() helpers reduce that to a single
call with one error path, eliminating the per-driver unregister
callback. Each conversion drops ~15 lines; this revision removes 117
lines and adds 18.

Already in mainline, so dropped from this revision:

  v5       commit        subject
  1/13     e38b9eda475f  notifier: add device-managed registration APIs
  2/13     6b0c6ff76795  pwm: iqs620a
  3/13     8c77589a7274  iio: light: iqs621-als
  4/13     c9f54ead5793  iio: position: iqs624
  5/13     870f46a42afd  gpio: adp5585
  11/13    323906906101  gpio: eic-sprd
  12/13    df6501bf6fc4  gpio: gpiolib-kunit

What is left, with the v5 numbering for anyone who reviewed it then:

  v6   v5      subject
  1/7  6/13    platform/x86: bitland-mifs-wmi
  2/7  7/13    Input: adp5585
  3/7  8/13    ACPI: APEI: GHES: remove unused ghes_{,un}register_...
  4/7  9/13    ACPI: APEI: GHES: use devm_...
  5/7  10/13   platform/x86: uniwill-wmi
  6/7  13/13   reboot
  7/7  -       power: supply: cros_pchg (new in v6)

The patches are independent and can go through their own trees. The only
ordering constraint is that patch 3 must precede patch 4: patch 3 removes
the unused exports, patch 4 converts what is left. The devm helpers are
already upstream, so unlike v5 this revision needs no base commit or
pull request to build.

Suggested routing, since the series now spans five trees:

  1/7, 5/7  platform-drivers-x86
  2/7       input
  3/7, 4/7  acpi, in this order
  6/7       kernel/reboot.c has no MAINTAINERS entry, so it falls to
            THE REST
  7/7       power-supply

Each patch is Cc'd to its own subsystem lists only, so no list receives
patches it does not own. linux-kernel receives all of them.

v5: https://lore.kernel.org/all/20260816060648.4030-1-farbere@amazon.com/

Changes in v6:
- Dropped the 7 patches now in mainline, listed above.
- Rebased onto v7.4-rc1. No conflicts; the 6 carried patches are
  functionally unchanged from v5.
- Patch 3: replaced an em dash in the commit message with an ASCII
  hyphen. No change to the code.
- Patch 6: the commit message now records that the removed callback's
  WARN_ON() on a failed unregister goes away, because
  devm_blocking_notifier_chain_register() ignores the unregister return
  value. No in-tree caller can trigger it. No change to the code.
- Patch 7: new. cros_pchg grew the
  blocking_notifier_chain_register() + devm_add_action_or_reset()
  pattern in 631adfa03595 ("power: supply: cros_pchg: unregister EC
  notifier"), which reached mainline in v7.3-rc1, five days after v5
  was posted.
- Carried forward the Acked-by and Reviewed-by tags given on v1 and v4.
  Each was checked against the patch it was given for: all four are
  byte-identical to the version here.

Changes in v5:
- Patch 1: rename notifier_block parameter from 'n' to 'nb' to match
  the devres struct field name (Uwe Kleine-König)
- Patch 2: remove extra blank line left after deleting the unregister
  callback (Uwe Kleine-König)

Changes in v4:
- Patch 8: split the removal of unused
  ghes_register_vendor_record_notifier() and
  ghes_unregister_vendor_record_notifier() into a separate preceding
  patch (Andy Shevchenko)

Changes in v3:
- Patch 1: drop devm_raw_notifier_chain_register() since raw notifiers
  require caller-provided locking which is incompatible with the devres
  teardown callback (Sashiko)
- Patch 12: fix commit message to accurately describe the old code as
  using devres_alloc() + register_reboot_notifier() (Sashiko)

Changes in v2:
- Patch 1: drop 'extern' from new function prototypes (Bart Van Assche)
- Patch 1: fix kerneldoc to use 'Return:' format (Bart Van Assche)
- Patch 1: use <linux/device/devres.h> instead of <linux/device.h>
  (Andy Shevchenko)
- Patch 8: also remove unused ghes_register_vendor_record_notifier() and
  ghes_unregister_vendor_record_notifier() along with their exports and
  ghes.h declarations (Jonathan Cameron)

Eliav Farber (7):
  platform/x86: bitland-mifs-wmi: use
    devm_blocking_notifier_chain_register()
  Input: adp5585: use devm_blocking_notifier_chain_register()
  ACPI: APEI: GHES: remove unused
    ghes_{,un}register_vendor_record_notifier()
  ACPI: APEI: GHES: use devm_blocking_notifier_chain_register()
  platform/x86: uniwill-wmi: use devm_blocking_notifier_chain_register()
  reboot: use devm_blocking_notifier_chain_register()
  power: supply: cros_pchg: use devm_blocking_notifier_chain_register()

 drivers/acpi/apei/ghes.c                      | 27 +++----------------
 drivers/input/keyboard/adp5585-keys.c         | 18 +++----------
 drivers/platform/x86/bitland-mifs-wmi.c       | 17 +++---------
 drivers/platform/x86/uniwill/uniwill-wmi.c    | 17 +++---------
 .../power/supply/cros_peripheral_charger.c    | 16 +++--------
 include/acpi/ghes.h                           | 16 -----------
 kernel/reboot.c                               | 24 ++---------------
 7 files changed, 18 insertions(+), 117 deletions(-)


base-commit: 067c5c24cef23d913b67eaaf71ae67e7169a6620
-- 
2.47.3


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v6 2/7] Input: adp5585: use devm_blocking_notifier_chain_register()
  2026-11-13 10:42 [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration Eliav Farber
@ 2026-11-13 10:42 ` Eliav Farber
  2026-11-13 15:48   ` Dmitry Torokhov
  2026-11-13 11:03 ` [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration Eliav Farber
  2026-11-13 11:46 ` Ilpo Järvinen
  2 siblings, 1 reply; 5+ messages in thread
From: Eliav Farber @ 2026-11-13 10:42 UTC (permalink / raw)
  To: Rafael J. Wysocki, Dmitry Torokhov, Laurent Pinchart,
	Hans de Goede, Ilpo Järvinen, Armin Wolf, Sebastian Reichel,
	Andrew Morton
  Cc: Eliav Farber, linux-gpio, linux-pwm, linux-input, linux-kernel

Replace the blocking_notifier_chain_register() +
devm_add_action_or_reset() pattern with a single call to
devm_blocking_notifier_chain_register(), removing the
adp5585_keys_unreg_notifier() callback.

Signed-off-by: Eliav Farber <farbere@amazon.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
Changes in v6:
- Rebased onto v7.4-rc1. No functional change since v5.
- Dmitry Torokhov's Acked-by retained; the patch is unchanged since v1,
  when it was given.

 drivers/input/keyboard/adp5585-keys.c | 18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)

diff --git a/drivers/input/keyboard/adp5585-keys.c b/drivers/input/keyboard/adp5585-keys.c
index ee2c3cb0445f..b27390d0e706 100644
--- a/drivers/input/keyboard/adp5585-keys.c
+++ b/drivers/input/keyboard/adp5585-keys.c
@@ -254,15 +254,6 @@ static int adp5585_keys_ev_handle(struct notifier_block *nb, unsigned long key,
 	return NOTIFY_STOP;
 }
 
-static void adp5585_keys_unreg_notifier(void *data)
-{
-	struct adp5585_kpad *kpad = data;
-	struct adp5585_dev *adp5585 = dev_get_drvdata(kpad->dev->parent);
-
-	blocking_notifier_chain_unregister(&adp5585->event_notifier,
-					   &kpad->nb);
-}
-
 static int adp5585_keys_probe(struct platform_device *pdev)
 {
 	const struct platform_device_id *id = platform_get_device_id(pdev);
@@ -318,12 +309,9 @@ static int adp5585_keys_probe(struct platform_device *pdev)
 		return error;
 
 	kpad->nb.notifier_call = adp5585_keys_ev_handle;
-	error = blocking_notifier_chain_register(&adp5585->event_notifier,
-						 &kpad->nb);
-	if (error)
-		return error;
-
-	error = devm_add_action_or_reset(dev, adp5585_keys_unreg_notifier, kpad);
+	error = devm_blocking_notifier_chain_register(dev,
+						      &adp5585->event_notifier,
+						      &kpad->nb);
 	if (error)
 		return error;
 
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration
  2026-11-13 10:42 [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration Eliav Farber
  2026-11-13 10:42 ` [PATCH v6 2/7] Input: adp5585: use devm_blocking_notifier_chain_register() Eliav Farber
@ 2026-11-13 11:03 ` Eliav Farber
  2026-11-13 11:46 ` Ilpo Järvinen
  2 siblings, 0 replies; 5+ messages in thread
From: Eliav Farber @ 2026-11-13 11:03 UTC (permalink / raw)
  To: Rafael J. Wysocki, Dmitry Torokhov, Laurent Pinchart,
	Hans de Goede, Ilpo Järvinen, Armin Wolf, Sebastian Reichel,
	Andrew Morton
  Cc: linux-acpi, acpica-devel, linux-input, linux-gpio, linux-pwm,
	platform-driver-x86, linux-pm, linux-kernel, Eliav Farber

Patches 5/7, 6/7 and 7/7 are not in this thread. My mail server refused the
second half of the series with a submission rate limit, and the resend went
out as a separate thread:

  5/7 https://lore.kernel.org/all/20261113104459.35839-1-farbere@amazon.com/
  6/7 https://lore.kernel.org/all/20261113104459.35839-2-farbere@amazon.com/
  7/7 https://lore.kernel.org/all/20261113104459.35839-3-farbere@amazon.com/

All seven patches were delivered, so I am not resending them. Sorry for the
split thread.

--
Thanks, Eliav

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration
  2026-11-13 10:42 [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration Eliav Farber
  2026-11-13 10:42 ` [PATCH v6 2/7] Input: adp5585: use devm_blocking_notifier_chain_register() Eliav Farber
  2026-11-13 11:03 ` [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration Eliav Farber
@ 2026-11-13 11:46 ` Ilpo Järvinen
  2 siblings, 0 replies; 5+ messages in thread
From: Ilpo Järvinen @ 2026-11-13 11:46 UTC (permalink / raw)
  To: Rafael J. Wysocki, Dmitry Torokhov, Laurent Pinchart,
	Hans de Goede, Armin Wolf, Sebastian Reichel, Andrew Morton,
	Eliav Farber
  Cc: linux-acpi, acpica-devel, linux-input, linux-gpio, linux-pwm,
	platform-driver-x86, linux-pm, linux-kernel, Jonathan Cameron,
	Andy Shevchenko, Uwe Kleine-König

On Fri, 13 Nov 2026 10:42:02 +0000, Eliav Farber wrote:

> The devm_atomic_notifier_chain_register() and
> devm_blocking_notifier_chain_register() helpers this series added in v5
> are now in mainline, together with 6 of the 11 driver conversions. This
> revision carries the 6 conversions that were never picked up, plus one
> new conversion for a driver that grew the old pattern after v5 was
> posted.
> 
> [...]

Thank you for your contribution, it has been applied to my local
review-ilpo-next branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-next branch only once I've pushed my
local branch there, which might take a while.

FYI [if applicable to your patch], as per Linus' policy change, also
fixes are mostly routed through for-next unless the fix is for a
commit introduced in the most recent cycle or is clearly a regression
fix.

The list of commits applied:
[1/7] platform/x86: bitland-mifs-wmi: use devm_blocking_notifier_chain_register()
      commit: a362539b42193dcdb17f8fba40031a515c53885c
[2/7] Input: adp5585: use devm_blocking_notifier_chain_register()
      (no commit info)
[3/7] ACPI: APEI: GHES: remove unused ghes_{,un}register_vendor_record_notifier()
      (no commit info)
[4/7] ACPI: APEI: GHES: use devm_blocking_notifier_chain_register()
      (no commit info)

--
 i.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v6 2/7] Input: adp5585: use devm_blocking_notifier_chain_register()
  2026-11-13 10:42 ` [PATCH v6 2/7] Input: adp5585: use devm_blocking_notifier_chain_register() Eliav Farber
@ 2026-11-13 15:48   ` Dmitry Torokhov
  0 siblings, 0 replies; 5+ messages in thread
From: Dmitry Torokhov @ 2026-11-13 15:48 UTC (permalink / raw)
  To: Eliav Farber
  Cc: Rafael J. Wysocki, Laurent Pinchart, Hans de Goede,
	Ilpo Järvinen, Armin Wolf, Sebastian Reichel, Andrew Morton,
	linux-gpio, linux-pwm, linux-input, linux-kernel

On Fri, Nov 13, 2026 at 10:42:04AM +0000, Eliav Farber wrote:
> Replace the blocking_notifier_chain_register() +
> devm_add_action_or_reset() pattern with a single call to
> devm_blocking_notifier_chain_register(), removing the
> adp5585_keys_unreg_notifier() callback.
> 
> Signed-off-by: Eliav Farber <farbere@amazon.com>
> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-11-13 15:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-13 10:42 [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration Eliav Farber
2026-11-13 10:42 ` [PATCH v6 2/7] Input: adp5585: use devm_blocking_notifier_chain_register() Eliav Farber
2026-11-13 15:48   ` Dmitry Torokhov
2026-11-13 11:03 ` [PATCH v6 0/7] notifier: convert remaining drivers to device-managed registration Eliav Farber
2026-11-13 11:46 ` Ilpo Järvinen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox