ARM: disable preemption in machine_shutdown

file:e5cfa6ac44a0f1b72b5e44082737607a40abba0e -> file:c132e8145754c3b9a8ea8d5e1a82a2467f707795
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -272,6 +272,15 @@ __setup("reboot=", reboot_setup);
void machine_shutdown(void)
{
#ifdef CONFIG_SMP
+ /*
+ * Disable preemption so we're guaranteed to
+ * run to power off or reboot and prevent
+ * the possibility of switching to another
+ * thread that might wind up blocking on
+ * one of the stopped CPUs.
+ */
+ preempt_disable();
+
smp_send_stop();
#endif
}