Changing the value of Int_config is UNPREDICTABLE when the corresponding
interrupt is not disabled.
The driver is assuming the interrupt will be disabled by the caller of
gic_set_irq_type. Add an ASSERT to ensure it.
Signed-off-by: Julien Grall <julien.grall@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
gic_restore_pending_irqs(v);
}
+/* desc->irq needs to be disabled before calling this function */
static void gic_set_irq_type(struct irq_desc *desc, unsigned int type)
{
+ /*
+ * IRQ must be disabled before configuring it (see 4.3.13 in ARM IHI
+ * 0048B.b). We rely on the caller to do it.
+ */
+ ASSERT(test_bit(_IRQ_DISABLED, &desc->status));
ASSERT(spin_is_locked(&desc->lock));
ASSERT(type != IRQ_TYPE_INVALID);