Commit 4cc7543e authored by Gregory CLEMENT's avatar Gregory CLEMENT Committed by Thomas Bogendoerfer
Browse files

MIPS: SMP: Move the AP sync point before the non-parallel aware functions



When CONFIG_HOTPLUG_PARALLEL is enabled, the code executing before
cpuhp_ap_sync_alive() is executed in parallel, while after it is
serialized. The functions set_cpu_sibling_map() and set_cpu_core_map()
were not designed to be executed in parallel, so by moving the
cpuhp_ap_sync_alive() before cpuhp_ap_sync_alive(), we then ensure
they will be called serialized.

The measurement done on EyeQ5 did not show any relevant boot time
increase after applying this patch.

Fixes: 76c43eb5 ("MIPS: SMP: Implement parallel CPU bring up for EyeQ")
Reported-by: default avatarHuacai Chen <chenhuacai@kernel.org>
Signed-off-by: default avatarGregory CLEMENT <gregory.clement@bootlin.com>
Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
parent 3b370426
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -374,13 +374,13 @@ asmlinkage void start_secondary(void)
	calibrate_delay();
	cpu_data[cpu].udelay_val = loops_per_jiffy;

#ifdef CONFIG_HOTPLUG_PARALLEL
	cpuhp_ap_sync_alive();
#endif
	set_cpu_sibling_map(cpu);
	set_cpu_core_map(cpu);

	cpumask_set_cpu(cpu, &cpu_coherent_mask);
#ifdef CONFIG_HOTPLUG_PARALLEL
	cpuhp_ap_sync_alive();
#endif
	notify_cpu_starting(cpu);

#ifndef CONFIG_HOTPLUG_PARALLEL