Commit 2de23071 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fix from Thomas Gleixner:
 "A single fix for the fallout from the conversion of MIPS GIC to irq
  domains"

* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  irqchip/mips-gic: Fix IRQs in gic_dev_domain
parents 2f6e9747 4b2312bd
...@@ -746,6 +746,12 @@ static int gic_irq_domain_alloc(struct irq_domain *d, unsigned int virq, ...@@ -746,6 +746,12 @@ static int gic_irq_domain_alloc(struct irq_domain *d, unsigned int virq,
/* verify that it doesn't conflict with an IPI irq */ /* verify that it doesn't conflict with an IPI irq */
if (test_bit(spec->hwirq, ipi_resrv)) if (test_bit(spec->hwirq, ipi_resrv))
return -EBUSY; return -EBUSY;
hwirq = GIC_SHARED_TO_HWIRQ(spec->hwirq);
return irq_domain_set_hwirq_and_chip(d, virq, hwirq,
&gic_level_irq_controller,
NULL);
} else { } else {
base_hwirq = find_first_bit(ipi_resrv, gic_shared_intrs); base_hwirq = find_first_bit(ipi_resrv, gic_shared_intrs);
if (base_hwirq == gic_shared_intrs) { if (base_hwirq == gic_shared_intrs) {
...@@ -867,10 +873,14 @@ static int gic_dev_domain_alloc(struct irq_domain *d, unsigned int virq, ...@@ -867,10 +873,14 @@ static int gic_dev_domain_alloc(struct irq_domain *d, unsigned int virq,
&gic_level_irq_controller, &gic_level_irq_controller,
NULL); NULL);
if (ret) if (ret)
return ret; goto error;
} }
return 0; return 0;
error:
irq_domain_free_irqs_parent(d, virq, nr_irqs);
return ret;
} }
void gic_dev_domain_free(struct irq_domain *d, unsigned int virq, void gic_dev_domain_free(struct irq_domain *d, unsigned int virq,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment