aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/sysdev/xics/xics-common.c3
-rw-r--r--kernel/irq/irqdomain.c12
2 files changed, 12 insertions, 3 deletions
diff --git a/arch/powerpc/sysdev/xics/xics-common.c b/arch/powerpc/sysdev/xics/xics-common.c
index cd1d18db92c6..9049d9f44485 100644
--- a/arch/powerpc/sysdev/xics/xics-common.c
+++ b/arch/powerpc/sysdev/xics/xics-common.c
@@ -329,9 +329,6 @@ static int xics_host_map(struct irq_domain *h, unsigned int virq,
329 329
330 pr_devel("xics: map virq %d, hwirq 0x%lx\n", virq, hw); 330 pr_devel("xics: map virq %d, hwirq 0x%lx\n", virq, hw);
331 331
332 /* Insert the interrupt mapping into the radix tree for fast lookup */
333 irq_radix_revmap_insert(xics_host, virq, hw);
334
335 /* They aren't all level sensitive but we just don't really know */ 332 /* They aren't all level sensitive but we just don't really know */
336 irq_set_status_flags(virq, IRQ_LEVEL); 333 irq_set_status_flags(virq, IRQ_LEVEL);
337 334
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index 17634f2c9f6c..091732c9dbdc 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -424,6 +424,18 @@ static int irq_setup_virq(struct irq_domain *domain, unsigned int virq,
424 return -1; 424 return -1;
425 } 425 }
426 426
427 switch (domain->revmap_type) {
428 case IRQ_DOMAIN_MAP_LINEAR:
429 if (hwirq < domain->revmap_data.linear.size)
430 domain->revmap_data.linear.revmap[hwirq] = virq;
431 break;
432 case IRQ_DOMAIN_MAP_TREE:
433 mutex_lock(&revmap_trees_mutex);
434 irq_radix_revmap_insert(domain, virq, hwirq);
435 mutex_unlock(&revmap_trees_mutex);
436 break;
437 }
438
427 irq_clear_status_flags(virq, IRQ_NOREQUEST); 439 irq_clear_status_flags(virq, IRQ_NOREQUEST);
428 440
429 return 0; 441 return 0;