From: Thomas Gleixner Date: Tue, 28 Mar 2023 15:49:11 +0000 (+0200) Subject: x86/smpboot: Remove wait for cpu_online() X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=75f27e268de1f75b95e1cd8294092bdb78b25437;p=users%2Fdwmw2%2Flinux.git x86/smpboot: Remove wait for cpu_online() Now that the core code drops sparse_irq_lock after the idle thread synchronized, it's pointless to wait for the AP to mark itself online. Signed-off-by: Thomas Gleixner --- diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 925ca71fe19df..7a00092c8ba75 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -1099,20 +1099,6 @@ static int wait_cpu_initialized(unsigned int cpu) return 0; } -/* - * Bringup step three: Wait for the target AP to reach set_cpu_online() in - * start_secondary(). - */ -static void wait_cpu_online(unsigned int cpu) -{ - /* - * Wait for the AP to mark itself online, so the core caller - * can drop sparse_irq_lock. - */ - while (!cpu_online(cpu)) - schedule(); -} - static int native_kick_ap(unsigned int cpu, struct task_struct *tidle) { int apicid = apic->cpu_present_to_apicid(cpu); @@ -1159,16 +1145,9 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle) int ret; ret = native_kick_ap(cpu, tidle); - if (ret) - goto out; - - ret = wait_cpu_initialized(cpu); - if (ret) - goto out; - - wait_cpu_online(cpu); + if (!ret) + ret = wait_cpu_initialized(cpu); -out: /* Cleanup possible dangling ends... */ if (x86_platform.legacy.warm_reset) smpboot_restore_warm_reset_vector();