xen/arm: gic_disable_cpu must be called with interrupts disabled
authorJulien Grall <julien.grall@citrix.com>
Tue, 16 Apr 2013 13:38:27 +0000 (14:38 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 10 May 2013 13:54:07 +0000 (14:54 +0100)
gic_disable_cpu is only called with interrupt disabled.
Use spin_lock instead of spin_lock_irq and check the function is
called with interrupts disabled.

Signed-off-by: Julien Grall <julien.grall@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/gic.c

index dd902d293cad7aba392455b4fb93fea3c7cd2fe6..1e2d493e140c6a5540dc48eb0181399250e30ba5 100644 (file)
@@ -421,10 +421,12 @@ void __cpuinit gic_init_secondary_cpu(void)
 /* Shut down the per-CPU GIC interface */
 void gic_disable_cpu(void)
 {
-    spin_lock_irq(&gic.lock);
+    ASSERT(!local_irq_is_enabled());
+
+    spin_lock(&gic.lock);
     gic_cpu_disable();
     gic_hyp_disable();
-    spin_unlock_irq(&gic.lock);
+    spin_unlock(&gic.lock);
 }
 
 void gic_route_ppis(void)