Ver Fonte

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>
Thomas Gleixner há 14 anos atrás
pai
commit
d3e17deb17
1 ficheiros alterados com 9 adições e 0 exclusões
  1. 9 0
      include/linux/irqdesc.h

+ 9 - 0
include/linux/irqdesc.h

@@ -191,6 +191,15 @@ static inline void __set_irq_handler_unlocked(int irq,
 	desc->handle_irq = handler;
 	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
 #ifdef CONFIG_IRQ_PREFLOW_FASTEOI
 static inline void
 static inline void
 __irq_set_preflow_handler(unsigned int irq, irq_preflow_handler_t handler)
 __irq_set_preflow_handler(unsigned int irq, irq_preflow_handler_t handler)