summaryrefslogtreecommitdiff
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorVarun Wadekar <vwadekar@nvidia.com>2012-05-15 12:26:39 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 12:52:02 -0700
commitf207c657eabbc231bddfe3fa72a98de16eb2d2b0 (patch)
treec5692bf9f0fe4a2fa7b31002942728c8f172d0b0 /arch/arm/kernel
parent969b0de555f14b8993c2008ed692362a23ea67d3 (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.c13
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;