From: Sebastian Andrzej Siewior <bige...@linutronix.de>

intel_cqm_init() holds get_online_cpus() while registerring the hotplug
callbacks.

cpuhp_setup_state() invokes get_online_cpus() as well. This is correct, but
prevents the conversion of the hotplug locking to a percpu rwsem.

Use cpuhp_setup_state_cpuslocked() to avoid the nested call.

Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de>
Signed-off-by: Thomas Gleixner <t...@linutronix.de>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: x...@kernel.org
Cc: Fenghua Yu <fenghua...@intel.com>

---
 arch/x86/events/intel/cqm.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

--- a/arch/x86/events/intel/cqm.c
+++ b/arch/x86/events/intel/cqm.c
@@ -1746,12 +1746,12 @@ static int __init intel_cqm_init(void)
         * Setup the hot cpu notifier once we are sure cqm
         * is enabled to avoid notifier leak.
         */
-       cpuhp_setup_state(CPUHP_AP_PERF_X86_CQM_STARTING,
-                         "perf/x86/cqm:starting",
-                         intel_cqm_cpu_starting, NULL);
-       cpuhp_setup_state(CPUHP_AP_PERF_X86_CQM_ONLINE, "perf/x86/cqm:online",
-                         NULL, intel_cqm_cpu_exit);
-
+       cpuhp_setup_state_cpuslocked(CPUHP_AP_PERF_X86_CQM_STARTING,
+                                    "perf/x86/cqm:starting",
+                                    intel_cqm_cpu_starting, NULL);
+       cpuhp_setup_state_cpuslocked(CPUHP_AP_PERF_X86_CQM_ONLINE,
+                                    "perf/x86/cqm:online",
+                                    NULL, intel_cqm_cpu_exit);
 out:
        put_online_cpus();
 


Reply via email to