summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBo Yan <byan@nvidia.com>2011-04-14 11:38:17 -0700
committerVarun Colbert <vcolbert@nvidia.com>2011-05-04 10:55:58 -0700
commit91dfac4c979393dd857a299d809000eb0a3b7115 (patch)
tree20c006d375445db426f572dc2797c377bd439e12
parent2625b09d0e176c6ae1c4cd779ec1bb9f23c57e0b (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>
-rw-r--r--arch/arm/kernel/process.c8
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);
}