diff options
author | Varun Wadekar <vwadekar@nvidia.com> | 2012-05-15 12:26:39 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2013-09-14 12:52:02 -0700 |
commit | f207c657eabbc231bddfe3fa72a98de16eb2d2b0 (patch) | |
tree | c5692bf9f0fe4a2fa7b31002942728c8f172d0b0 /arch/arm/kernel | |
parent | 969b0de555f14b8993c2008ed692362a23ea67d3 (diff) |
HACK Revert "ARM: 7405/1: kexec: call platform_cpu_kill on the killer rather than the victim"
This reverts commit be174eb14346d61c9308ee95fb456dd32a1dc682 as this breaks cpu reboot.
Change-Id: Id42b4831bcdf1b35110a1b84426247da8f65abf0
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Rebase-Id: Ra159b2f76dcfebbcfeb9ebadf93554cf4a79fe0b
Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/smp.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index f9304a47e8a5..c3e6593119ca 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -592,6 +592,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(); } @@ -718,12 +722,13 @@ void smp_send_reschedule(int cpu) void smp_send_stop(void) { unsigned long timeout; - struct cpumask mask; - cpumask_copy(&mask, cpu_online_mask); - cpumask_clear_cpu(smp_processor_id(), &mask); - if (!cpumask_empty(&mask)) + if (num_online_cpus() > 1) { + struct cpumask mask; + cpumask_copy(&mask, cpu_online_mask); + cpumask_clear_cpu(smp_processor_id(), &mask); smp_cross_call(&mask, IPI_CPU_STOP); + } /* Wait up to one second for other CPUs to stop */ timeout = USEC_PER_SEC; |