linux-next: manual merge of the akpm tree with the arm-current tree

From: Stephen Rothwell
Date: Wed Jun 19 2013 - 03:38:43 EST


Hi Andrew,

Today's linux-next merge of the akpm tree got a conflict in
arch/arm/kernel/process.c between commit 19ab428f4b79 ("ARM: 7759/1:
decouple CPU offlining from reboot/shutdown") from the tree and commit
("reboot: move arch/x86 reboot= handling to generic kernel") from the
akpm tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc arch/arm/kernel/process.c
index 4f569dc,5cbd139..0000000
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@@ -175,39 -176,16 +175,29 @@@ void arch_cpu_idle(void
default_idle();
}

- enum reboot_mode reboot_mode = REBOOT_HARD;
-
- static int __init reboot_setup(char *str)
- {
- if ('s' == str[0])
- reboot_mode = REBOOT_SOFT;
- return 1;
- }
- __setup("reboot=", reboot_setup);
-
+/*
+ * Called by kexec, immediately prior to machine_kexec().
+ *
+ * This must completely disable all secondary CPUs; simply causing those CPUs
+ * to execute e.g. a RAM-based pin loop is not sufficient. This allows the
+ * kexec'd kernel to use any and all RAM as it sees fit, without having to
+ * avoid any code or data used by any SW CPU pin loop. The CPU hotplug
+ * functionality embodied in disable_nonboot_cpus() to achieve this.
+ */
void machine_shutdown(void)
{
-#ifdef CONFIG_SMP
- smp_send_stop();
-#endif
+ disable_nonboot_cpus();
}

+/*
+ * Halting simply requires that the secondary CPUs stop performing any
+ * activity (executing tasks, handling interrupts). smp_send_stop()
+ * achieves this.
+ */
void machine_halt(void)
{
- machine_shutdown();
+ smp_send_stop();
+
local_irq_disable();
while (1);
}

Attachment: pgp00000.pgp
Description: PGP signature