x86/smp: Don't send INIT to boot CPU
authorThomas Gleixner <tglx@linutronix.de>
Wed, 5 Jul 2023 08:59:23 +0000 (10:59 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 7 Jul 2023 13:42:31 +0000 (15:42 +0200)
commitb1472a60a584694875a05cf8bcba8bdf0dc1cd3a
tree84d472908a177e5bf5e5e4d972e30a7e3fb5a00f
parent45e34c8af58f23db4474e2bfe79183efec09a18b
x86/smp: Don't send INIT to boot CPU

Parking CPUs in INIT works well, except for the crash case when the CPU
which invokes smp_park_other_cpus_in_init() is not the boot CPU. Sending
INIT to the boot CPU resets the whole machine.

Prevent this by validating that this runs on the boot CPU. If not fall back
and let CPUs hang in HLT.

Fixes: 45e34c8af58f ("x86/smp: Put CPUs into INIT on shutdown if possible")
Reported-by: Baokun Li <libaokun1@huawei.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Baokun Li <libaokun1@huawei.com>
Link: https://lore.kernel.org/r/87ttui91jo.ffs@tglx
arch/x86/kernel/smpboot.c