From cd894f149732a06ba4b2ccdc4cb86edf7ff68620 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 20 Jul 2016 17:24:55 +0200 Subject: leds/trigger/cpu: Move from CPU_STARTING to ONLINE level There is no need the ledtriger to be called *that* early in the hotplug process (+ with disabled interrupts). As explained by Jacek Anaszewski [0] there is no need for it. Therefore this patch moves it to the ONLINE/PREPARE_DOWN level using the dynamic registration for the id. [0] https://lkml.kernel.org/r/578C92BC.2070603@samsung.com Signed-off-by: Sebastian Andrzej Siewior Acked-by: Jacek Anaszewski Acked-by: Linus Walleij Cc: Peter Zijlstra Cc: Paul Gortmaker Cc: Richard Purdie Cc: rt@linutronix.de Cc: Linus Torvalds Cc: linux-leds@vger.kernel.org Link: http://lkml.kernel.org/r/1469028295-14702-1-git-send-email-bigeasy@linutronix.de Signed-off-by: Thomas Gleixner --- drivers/leds/trigger/ledtrig-cpu.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'drivers/leds') diff --git a/drivers/leds/trigger/ledtrig-cpu.c b/drivers/leds/trigger/ledtrig-cpu.c index 4a6a182d0a88..22f0634dd3fa 100644 --- a/drivers/leds/trigger/ledtrig-cpu.c +++ b/drivers/leds/trigger/ledtrig-cpu.c @@ -92,13 +92,13 @@ static struct syscore_ops ledtrig_cpu_syscore_ops = { .resume = ledtrig_cpu_syscore_resume, }; -static int ledtrig_starting_cpu(unsigned int cpu) +static int ledtrig_online_cpu(unsigned int cpu) { ledtrig_cpu(CPU_LED_START); return 0; } -static int ledtrig_dying_cpu(unsigned int cpu) +static int ledtrig_prepare_down_cpu(unsigned int cpu) { ledtrig_cpu(CPU_LED_STOP); return 0; @@ -107,6 +107,7 @@ static int ledtrig_dying_cpu(unsigned int cpu) static int __init ledtrig_cpu_init(void) { int cpu; + int ret; /* Supports up to 9999 cpu cores */ BUILD_BUG_ON(CONFIG_NR_CPUS > 9999); @@ -126,12 +127,11 @@ static int __init ledtrig_cpu_init(void) register_syscore_ops(&ledtrig_cpu_syscore_ops); - /* - * FIXME: Why needs this to happen in the interrupt disabled - * low level bringup phase of a cpu? - */ - cpuhp_setup_state(CPUHP_AP_LEDTRIG_STARTING, "AP_LEDTRIG_STARTING", - ledtrig_starting_cpu, ledtrig_dying_cpu); + ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "AP_LEDTRIG_STARTING", + ledtrig_online_cpu, ledtrig_prepare_down_cpu); + if (ret < 0) + pr_err("CPU hotplug notifier for ledtrig-cpu could not be registered: %d\n", + ret); pr_info("ledtrig-cpu: registered to indicate activity on CPUs\n"); -- cgit v1.2.3