irqchip/mips: Fix RCU violation when using irqdomain lookup on interrupt entry
[linux-2.6-microblaze.git] / arch / mips / kernel / irq.c
index 85b6c60..d20e002 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/kallsyms.h>
 #include <linux/kgdb.h>
 #include <linux/ftrace.h>
+#include <linux/irqdomain.h>
 
 #include <linux/atomic.h>
 #include <linux/uaccess.h>
@@ -107,3 +108,18 @@ void __irq_entry do_IRQ(unsigned int irq)
        irq_exit();
 }
 
+#ifdef CONFIG_IRQ_DOMAIN
+void __irq_entry do_domain_IRQ(struct irq_domain *domain, unsigned int hwirq)
+{
+       struct irq_desc *desc;
+
+       irq_enter();
+       check_stack_overflow();
+
+       desc = irq_resolve_mapping(domain, hwirq);
+       if (likely(desc))
+               handle_irq_desc(desc);
+
+       irq_exit();
+}
+#endif