diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-03-22 12:08:15 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-03-23 15:22:06 -0400 |
commit | d3e17deb1790ee2123e9d11420be6411d1768b47 (patch) | |
tree | ecbfd39ef20da51fc7d5bd8a8b590f45823818f1 | |
parent | 3b9038912828384e38d82409c281124631c8533b (diff) |
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>
-rw-r--r-- | include/linux/irqdesc.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index 0b30662bc36c..1595f9176b43 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h | |||
@@ -191,6 +191,15 @@ static inline void __set_irq_handler_unlocked(int irq, | |||
191 | desc->handle_irq = handler; | 191 | desc->handle_irq = handler; |
192 | } | 192 | } |
193 | 193 | ||
194 | static inline void | ||
195 | irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class) | ||
196 | { | ||
197 | struct irq_desc *desc = irq_to_desc(irq); | ||
198 | |||
199 | if (desc) | ||
200 | lockdep_set_class(&desc->lock, class); | ||
201 | } | ||
202 | |||
194 | #ifdef CONFIG_IRQ_PREFLOW_FASTEOI | 203 | #ifdef CONFIG_IRQ_PREFLOW_FASTEOI |
195 | static inline void | 204 | static inline void |
196 | __irq_set_preflow_handler(unsigned int irq, irq_preflow_handler_t handler) | 205 | __irq_set_preflow_handler(unsigned int irq, irq_preflow_handler_t handler) |