summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-03-22 17:08:15 +0100
committerThomas Gleixner <tglx@linutronix.de>2011-03-23 20:22:06 +0100
commitd3e17deb1790ee2123e9d11420be6411d1768b47 (patch)
treeecbfd39ef20da51fc7d5bd8a8b590f45823818f1 /include
parent3b9038912828384e38d82409c281124631c8533b (diff)
downloadlinux-d3e17deb1790ee2123e9d11420be6411d1768b47.tar.gz
linux-d3e17deb1790ee2123e9d11420be6411d1768b47.tar.bz2
linux-d3e17deb1790ee2123e9d11420be6411d1768b47.zip
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>
Diffstat (limited to 'include')
-rw-r--r--include/linux/irqdesc.h9
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,
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)