All of lore.kernel.org
 help / color / mirror / Atom feed
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 8/8] ARM: stop: execute platform callback from cpu_stop code
Date: Tue, 23 Aug 2011 22:46:52 +0100	[thread overview]
Message-ID: <1314136012-20533-9-git-send-email-will.deacon@arm.com> (raw)
In-Reply-To: <1314136012-20533-1-git-send-email-will.deacon@arm.com>

Sending IPI_CPU_STOP to a CPU causes it to execute a busy cpu_relax
loop forever. This makes it impossible to kexec successfully on an SMP
system since the secondary CPUs do not reset.

This patch adds a callback to platform_cpu_kill, defined when
CONFIG_HOTPLUG_CPU=y, from the ipi_cpu_stop handling code. This function
currently just returns 1 on all platforms that define it but allows them
to do something more sophisticated in the future.

Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 arch/arm/Kconfig      |    2 +-
 arch/arm/kernel/smp.c |    4 ++++
 2 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5ebc5d9..d2e9d42 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1849,7 +1849,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 96a7956..3f6e8d1 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -559,6 +559,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();
 }
-- 
1.7.0.4

  parent reply	other threads:[~2011-08-23 21:46 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-23 21:46 [PATCH v4 0/8] MMU disabling code and kexec fixes Will Deacon
2011-08-23 21:46 ` [PATCH v4 1/8] ARM: proc-v7: disable SCTLR.TE when disabling MMU Will Deacon
2011-08-24 10:15   ` Dave Martin
2011-08-24 11:01     ` Will Deacon
2011-08-25 11:19       ` Dave Martin
2011-08-23 21:46 ` [PATCH v4 2/8] ARM: kexec: ensure new kernel is entered in ARM state Will Deacon
2011-08-24  1:28   ` Nicolas Pitre
2011-08-24 10:17     ` Dave Martin
2011-08-24 11:13     ` Will Deacon
2011-08-24 10:16   ` Dave Martin
2011-08-23 21:46 ` [PATCH v4 3/8] ARM: lib: add switch_stack function for safely changing stack Will Deacon
2011-08-24  1:07   ` Nicolas Pitre
2011-08-24 10:19     ` Dave Martin
2011-08-24 11:14     ` Will Deacon
2011-08-23 21:46 ` [PATCH v4 4/8] ARM: idmap: add header file for identity mapping functions Will Deacon
2011-08-23 21:46 ` [PATCH v4 5/8] ARM: reset: allow kernelspace mappings to be flat mapped during reset Will Deacon
2011-08-23 21:46 ` [PATCH v4 6/8] ARM: reset: add reset functionality for jumping to a physical address Will Deacon
2011-08-23 21:46 ` [PATCH v4 7/8] ARM: kexec: use arm_machine_reset for branching to the reboot buffer Will Deacon
2011-08-23 21:46 ` Will Deacon [this message]
2011-08-24  1:25 ` [PATCH v4 0/8] MMU disabling code and kexec fixes Nicolas Pitre
2011-08-24 10:58   ` Will Deacon
2011-08-24 14:53     ` Nicolas Pitre
2011-08-24 16:59       ` Will Deacon
2011-08-24 17:30         ` Nicolas Pitre
2011-08-24 17:45           ` Will Deacon
2011-08-25 13:16             ` Will Deacon
2011-08-24 12:34 ` Jamie Iles
2011-08-24 12:42   ` Will Deacon
2011-08-24 12:54     ` Jamie Iles

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1314136012-20533-9-git-send-email-will.deacon@arm.com \
    --to=will.deacon@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.