gic-vgic: skip irqs locking in gic_restore_pending_irqs()
authorAndrii Anisov <andrii_anisov@epam.com>
Fri, 21 Dec 2018 18:54:16 +0000 (20:54 +0200)
committerJulien Grall <julien.grall@arm.com>
Tue, 12 Mar 2019 16:49:33 +0000 (16:49 +0000)
This function is called under IRQs disabled already, so drop additional
flags save and restore.

Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
Reviewed-by: Julien Grall <julien.grall@arm.com>
xen/arch/arm/gic-vgic.c

index a3bba854dac1dd711eae05ba31ca2175c1cc3a58..98c021f1a8a445618fc0ff4281358e244dc98fa5 100644 (file)
@@ -279,11 +279,12 @@ static void gic_restore_pending_irqs(struct vcpu *v)
     int lr = 0;
     struct pending_irq *p, *t, *p_r;
     struct list_head *inflight_r;
-    unsigned long flags;
     unsigned int nr_lrs = gic_get_nr_lrs();
     int lrs = nr_lrs;
 
-    spin_lock_irqsave(&v->arch.vgic.lock, flags);
+    ASSERT(!local_irq_is_enabled());
+
+    spin_lock(&v->arch.vgic.lock);
 
     if ( list_empty(&v->arch.vgic.lr_pending) )
         goto out;
@@ -327,7 +328,7 @@ found:
     }
 
 out:
-    spin_unlock_irqrestore(&v->arch.vgic.lock, flags);
+    spin_unlock(&v->arch.vgic.lock);
 }
 
 void gic_clear_pending_irqs(struct vcpu *v)