diff options
author | Bo Yan <byan@nvidia.com> | 2011-04-14 11:38:17 -0700 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-05-04 10:55:58 -0700 |
commit | 91dfac4c979393dd857a299d809000eb0a3b7115 (patch) | |
tree | 20c006d375445db426f572dc2797c377bd439e12 /arch | |
parent | 2625b09d0e176c6ae1c4cd779ec1bb9f23c57e0b (diff) |
ARM: SMP: disable local IRQ and FIQ before restart
Disabling IRQ and FIQ before we stop other processor cores and start reboot
process will make sure the restart procedure is not preempted. This is to
prevent the potential lockup caused by the loss of synchronisation among
different processor cores due to IPI_STOP.
Should help bug 770426
Reviewed-on: http://git-master/r/27780
(cherry picked from commit 3d63b7709f3614783ebbf97568132458e5198c29)
Change-Id: I513a1f7394478b16f6c0204af7b31b18244ac819
Reviewed-on: http://git-master/r/30172
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/kernel/process.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 3161faf3d2e8..6d7f3ea8ec2a 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -92,10 +92,6 @@ __setup("hlt", hlt_setup); void arm_machine_restart(char mode, const char *cmd) { - /* Disable interrupts first */ - local_irq_disable(); - local_fiq_disable(); - /* * Tell the mm system that we are going to reboot - * we may need it to insert some 1:1 mappings so that @@ -241,6 +237,10 @@ void machine_power_off(void) void machine_restart(char *cmd) { + /* Disable interrupts first */ + local_irq_disable(); + local_fiq_disable(); + machine_shutdown(); arm_pm_restart(reboot_mode, cmd); } |