genirq: Provide a lockdep helper
Some irq chips need to call genirq functions for nested chips from
their callbacks. That upsets lockdep. So they need to set a different
lock class for those nested chips. Provide a helper function to avoid
open access to irq_desc.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 0b30662..1595f91 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -191,6 +191,15 @@
desc->handle_irq = handler;
}
+static inline void
+irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)
+{
+ struct irq_desc *desc = irq_to_desc(irq);
+
+ if (desc)
+ lockdep_set_class(&desc->lock, class);
+}
+
#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
static inline void
__irq_set_preflow_handler(unsigned int irq, irq_preflow_handler_t handler)