Re: [PATCH] leds: trigger: cpu: use cpuhp_setup_state_nocalls() for large CPU counts
[email protected] Mon, 27 Jul 2026 22:25:18 +0000
| Newsgroups | org.kernel.vger.linux-leds |
|---|---|
| Message-ID | <[email protected]> |
Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [High] Skipping hotplug startup callbacks during initialization leaves th= e CPU LED triggers in an incorrect inactive state for all already-online CP= Us. - [Low] The commit message description is not capitalized, violating LED su= bsystem conventions. -- --- Patch [1]: [PATCH] leds: trigger: cpu: use cpuhp_setup_state_nocalls() = for large CPU counts --- commit 2aa3e021f1cce38c0cc7487063d486ab550d6162 Author: Paul Sherman <[email protected]> leds: trigger: cpu: use cpuhp_setup_state_nocalls() for large CPU counts This commit changes ledtrig_cpu_init() to use cpuhp_setup_state_nocalls() instead of cpuhp_setup_state(). This avoids invoking the hotplug callbacks = for already-online CPUs at registration time to prevent boot delays on systems with large CPU counts. > leds: trigger: cpu: use cpuhp_setup_state_nocalls() for large CPU counts [Severity: Low] This isn't a bug, but the commit message description starts with a lowercase letter. The LED subsystem guidelines mandate: "Always capitalize the descri= ption after the subsystem prefix for MFD, LED, and Backlight subsystems." > diff --git a/drivers/leds/trigger/ledtrig-cpu.c b/drivers/leds/trigger/le= dtrig-cpu.c > index 679323c2ccda0..ce75d5f54684c 100644 > --- a/drivers/leds/trigger/ledtrig-cpu.c > +++ b/drivers/leds/trigger/ledtrig-cpu.c > @@ -163,7 +163,15 @@ static int __init ledtrig_cpu_init(void) > =20 > register_syscore(&ledtrig_cpu_syscore); > =20 > - ret =3D cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "leds/trigger:starting", > + /* > + * Use cpuhp_setup_state_nocalls() to avoid invoking ledtrig_online_cpu= () > + * on every already-online CPU at registration time. On systems with la= rge > + * CPU counts (e.g. 64-hart RISC-V) cpuhp_setup_state() would serialize > + * callbacks across all online CPUs, causing multi-hundred-second delays > + * during boot. The trigger operates correctly for future hotplug events > + * regardless. > + */ > + ret =3D cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "leds/trigger:st= arting", > + ledtrig_online_cpu, ledtrig_prepare_down_cpu); [Severity: High] Does skipping the hotplug startup callbacks during initialization leave the= CPU LED triggers in an incorrect inactive state for all already-online CPUs? By replacing cpuhp_setup_state() with cpuhp_setup_state_nocalls(), the driv= er skips invoking ledtrig_online_cpu() for already-online CPUs during registra= tion. Because the cpu_trig per-CPU variables and num_active_cpus are zero-initial= ized, they remain in the inactive state. On architectures that do not emit ledtrig_cpu events during idle transition= s, these CPUs will never call ledtrig_cpu(CPU_LED_START), so their LEDs will n= ever turn on unless they undergo a hotplug offline/online cycle. --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260727221607.5216= [email protected]?part=3D1