diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2016-07-20 11:24:55 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-07-22 15:53:18 -0400 |
commit | cd894f149732a06ba4b2ccdc4cb86edf7ff68620 (patch) | |
tree | 6c670d6434de49a1d0e535f001a9ff5650ea3bf0 | |
parent | bdab88e006504cd83fac98705814485cbe3ef5b4 (diff) |
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 <bigeasy@linutronix.de>
Acked-by: Jacek Anaszewski <j.anaszewski@samsung.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Cc: rt@linutronix.de
Cc: Linus Torvalds <torvalds@linux-foundation.org>
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 <tglx@linutronix.de>
-rw-r--r-- | drivers/leds/trigger/ledtrig-cpu.c | 16 | ||||
-rw-r--r-- | include/linux/cpuhotplug.h | 1 |
2 files changed, 8 insertions, 9 deletions
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 = { | |||
92 | .resume = ledtrig_cpu_syscore_resume, | 92 | .resume = ledtrig_cpu_syscore_resume, |
93 | }; | 93 | }; |
94 | 94 | ||
95 | static int ledtrig_starting_cpu(unsigned int cpu) | 95 | static int ledtrig_online_cpu(unsigned int cpu) |
96 | { | 96 | { |
97 | ledtrig_cpu(CPU_LED_START); | 97 | ledtrig_cpu(CPU_LED_START); |
98 | return 0; | 98 | return 0; |
99 | } | 99 | } |
100 | 100 | ||
101 | static int ledtrig_dying_cpu(unsigned int cpu) | 101 | static int ledtrig_prepare_down_cpu(unsigned int cpu) |
102 | { | 102 | { |
103 | ledtrig_cpu(CPU_LED_STOP); | 103 | ledtrig_cpu(CPU_LED_STOP); |
104 | return 0; | 104 | return 0; |
@@ -107,6 +107,7 @@ static int ledtrig_dying_cpu(unsigned int cpu) | |||
107 | static int __init ledtrig_cpu_init(void) | 107 | static int __init ledtrig_cpu_init(void) |
108 | { | 108 | { |
109 | int cpu; | 109 | int cpu; |
110 | int ret; | ||
110 | 111 | ||
111 | /* Supports up to 9999 cpu cores */ | 112 | /* Supports up to 9999 cpu cores */ |
112 | BUILD_BUG_ON(CONFIG_NR_CPUS > 9999); | 113 | BUILD_BUG_ON(CONFIG_NR_CPUS > 9999); |
@@ -126,12 +127,11 @@ static int __init ledtrig_cpu_init(void) | |||
126 | 127 | ||
127 | register_syscore_ops(&ledtrig_cpu_syscore_ops); | 128 | register_syscore_ops(&ledtrig_cpu_syscore_ops); |
128 | 129 | ||
129 | /* | 130 | ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "AP_LEDTRIG_STARTING", |
130 | * FIXME: Why needs this to happen in the interrupt disabled | 131 | ledtrig_online_cpu, ledtrig_prepare_down_cpu); |
131 | * low level bringup phase of a cpu? | 132 | if (ret < 0) |
132 | */ | 133 | pr_err("CPU hotplug notifier for ledtrig-cpu could not be registered: %d\n", |
133 | cpuhp_setup_state(CPUHP_AP_LEDTRIG_STARTING, "AP_LEDTRIG_STARTING", | 134 | ret); |
134 | ledtrig_starting_cpu, ledtrig_dying_cpu); | ||
135 | 135 | ||
136 | pr_info("ledtrig-cpu: registered to indicate activity on CPUs\n"); | 136 | pr_info("ledtrig-cpu: registered to indicate activity on CPUs\n"); |
137 | 137 | ||
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h index 5015f463d314..6d405db6fb12 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h | |||
@@ -66,7 +66,6 @@ enum cpuhp_state { | |||
66 | CPUHP_AP_ARM_CORESIGHT_STARTING, | 66 | CPUHP_AP_ARM_CORESIGHT_STARTING, |
67 | CPUHP_AP_ARM_CORESIGHT4_STARTING, | 67 | CPUHP_AP_ARM_CORESIGHT4_STARTING, |
68 | CPUHP_AP_ARM64_ISNDEP_STARTING, | 68 | CPUHP_AP_ARM64_ISNDEP_STARTING, |
69 | CPUHP_AP_LEDTRIG_STARTING, | ||
70 | CPUHP_AP_SMPCFD_DYING, | 69 | CPUHP_AP_SMPCFD_DYING, |
71 | CPUHP_AP_X86_TBOOT_DYING, | 70 | CPUHP_AP_X86_TBOOT_DYING, |
72 | CPUHP_AP_NOTIFY_STARTING, | 71 | CPUHP_AP_NOTIFY_STARTING, |