diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 4b01d71bdbd1a1aea1ec4fc1024cb88da9a9e1d4..abba5b8c9d74cde9eff567d12ba1d7701ea3e8a2 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -2001,7 +2001,7 @@ config XIP_PHYS_ADDR config KEXEC bool "Kexec system call (EXPERIMENTAL)" - depends on EXPERIMENTAL + depends on EXPERIMENTAL && (!SMP || HOTPLUG_CPU) help kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 76ff28d87bf3f229b5cb9028bba1ad311abcd655..57db122a4f629bb53247fde4f2b15076838661c0 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -522,6 +522,10 @@ static void ipi_cpu_stop(unsigned int cpu) local_fiq_disable(); local_irq_disable(); +#ifdef CONFIG_HOTPLUG_CPU + platform_cpu_kill(cpu); +#endif + while (1) cpu_relax(); }