* [PATCH] ARM: socfpga: add smp_ops.cpu_kill to make kexec/kdump available
@ 2015-05-29 5:38 Hiraku Toyooka
2015-05-29 8:33 ` Russell King - ARM Linux
0 siblings, 1 reply; 5+ messages in thread
From: Hiraku Toyooka @ 2015-05-29 5:38 UTC (permalink / raw)
To: dinguyen, linux; +Cc: linux-kernel, linux-arm-kernel
Kexec_load syscall in ARM checks that machine-specific code
has the smp_ops.cpu_kill() before loading kernel image.
This patch adds the cpu_kill(), as a result, kexec reboot and
kernel crash dump become available in mach-socfpga.
Signed-off-by: Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
arch/arm/mach-socfpga/platsmp.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c
index c64d89b..a8f0f84 100644
--- a/arch/arm/mach-socfpga/platsmp.c
+++ b/arch/arm/mach-socfpga/platsmp.c
@@ -95,11 +95,22 @@ static void socfpga_cpu_die(unsigned int cpu)
cpu_do_idle();
}
+/*
+ * We need a dummy function so that platform_can_cpu_hotplug() knows
+ * we support CPU hotplug. However, the function does not need to do
+ * anything, because CPUs going offline just do WFI.
+ */
+static int socfpga_cpu_kill(unsigned int cpu)
+{
+ return 1;
+}
+
struct smp_operations socfpga_smp_ops __initdata = {
.smp_init_cpus = socfpga_smp_init_cpus,
.smp_prepare_cpus = socfpga_smp_prepare_cpus,
.smp_boot_secondary = socfpga_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU
.cpu_die = socfpga_cpu_die,
+ .cpu_kill = socfpga_cpu_kill,
#endif
};
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] ARM: socfpga: add smp_ops.cpu_kill to make kexec/kdump available
2015-05-29 5:38 [PATCH] ARM: socfpga: add smp_ops.cpu_kill to make kexec/kdump available Hiraku Toyooka
@ 2015-05-29 8:33 ` Russell King - ARM Linux
[not found] ` <XNM1$3$0$0$$3$3$3$A$0000051U556d3fe3@hitachi.com>
0 siblings, 1 reply; 5+ messages in thread
From: Russell King - ARM Linux @ 2015-05-29 8:33 UTC (permalink / raw)
To: Hiraku Toyooka; +Cc: dinguyen, linux-kernel, linux-arm-kernel
On Fri, May 29, 2015 at 02:38:44PM +0900, Hiraku Toyooka wrote:
> Kexec_load syscall in ARM checks that machine-specific code
> has the smp_ops.cpu_kill() before loading kernel image.
> This patch adds the cpu_kill(), as a result, kexec reboot and
> kernel crash dump become available in mach-socfpga.
Please look at the kexec'd kernel's boot messages. You will probably
notice that the kexec'd kernel is unable to start the secondary CPUs,
and probably causes them to crash.
As socfpga does not appear to be able to do anything with the secondary
CPUs other than park them in a WFI loop in the _existing_ kernel, when
that existing kernel gets overwritten by the kexec kernel and an interrupt
sent to the CPU, that secondary CPU could very well start executing code
it's not meant to.
So no, this is a bad idea.
Unless secondary CPUs can actually be taken offline, features like kexec
can't be supported on the platform.
--
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-06-02 23:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-29 5:38 [PATCH] ARM: socfpga: add smp_ops.cpu_kill to make kexec/kdump available Hiraku Toyooka
2015-05-29 8:33 ` Russell King - ARM Linux
[not found] ` <XNM1$3$0$0$$3$3$3$A$0000051U556d3fe3@hitachi.com>
2015-06-02 8:38 ` Russell King - ARM Linux
2015-06-02 23:40 ` Hiraku Toyooka
2015-06-02 23:52 ` Russell King - ARM Linux
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®