Merge tag 'selinux-pr-20210629' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / drivers / irqchip / irq-mips-gic.c
index 215885962bb0abd7e164152d55e2bdb5e80c32e7..b146e069bf5bab1580a4c38e2ae9753c1ac98a50 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/irqchip.h>
+#include <linux/irqdomain.h>
 #include <linux/of_address.h>
 #include <linux/percpu.h>
 #include <linux/sched.h>
@@ -147,7 +148,7 @@ int gic_get_c0_fdc_int(void)
 
 static void gic_handle_shared_int(bool chained)
 {
-       unsigned int intr, virq;
+       unsigned int intr;
        unsigned long *pcpu_mask;
        DECLARE_BITMAP(pending, GIC_MAX_INTRS);
 
@@ -164,12 +165,12 @@ static void gic_handle_shared_int(bool chained)
        bitmap_and(pending, pending, pcpu_mask, gic_shared_intrs);
 
        for_each_set_bit(intr, pending, gic_shared_intrs) {
-               virq = irq_linear_revmap(gic_irq_domain,
-                                        GIC_SHARED_TO_HWIRQ(intr));
                if (chained)
-                       generic_handle_irq(virq);
+                       generic_handle_domain_irq(gic_irq_domain,
+                                                 GIC_SHARED_TO_HWIRQ(intr));
                else
-                       do_IRQ(virq);
+                       do_IRQ(irq_find_mapping(gic_irq_domain,
+                                               GIC_SHARED_TO_HWIRQ(intr)));
        }
 }
 
@@ -307,7 +308,7 @@ static struct irq_chip gic_edge_irq_controller = {
 static void gic_handle_local_int(bool chained)
 {
        unsigned long pending, masked;
-       unsigned int intr, virq;
+       unsigned int intr;
 
        pending = read_gic_vl_pend();
        masked = read_gic_vl_mask();
@@ -315,12 +316,12 @@ static void gic_handle_local_int(bool chained)
        bitmap_and(&pending, &pending, &masked, GIC_NUM_LOCAL_INTRS);
 
        for_each_set_bit(intr, &pending, GIC_NUM_LOCAL_INTRS) {
-               virq = irq_linear_revmap(gic_irq_domain,
-                                        GIC_LOCAL_TO_HWIRQ(intr));
                if (chained)
-                       generic_handle_irq(virq);
+                       generic_handle_domain_irq(gic_irq_domain,
+                                                 GIC_LOCAL_TO_HWIRQ(intr));
                else
-                       do_IRQ(virq);
+                       do_IRQ(irq_find_mapping(gic_irq_domain,
+                                               GIC_LOCAL_TO_HWIRQ(intr)));
        }
 }