On Wed, Feb 15, 2012 at 10:32:43PM -0700, Grant Likely wrote:
...
That's a bug then. The implementation should work without patch 24. Does
this patch fix it?
Yes, it fixes the problem for me.
Regards,
Shawn
quoted hunk ↗ jump to hunk
---
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index 2c1d6f8..2d3dfff 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -516,8 +516,8 @@ unsigned int irq_find_mapping(struct irq_domain *domain,
return irq_domain_legacy_revmap(domain, hwirq);
/* Slow path does a linear search of the map */
- if (hint < NUM_ISA_INTERRUPTS)
- hint = NUM_ISA_INTERRUPTS;
+ if (hint == 0)
+ hint = 1;
i = hint;
do {
struct irq_data *data = irq_get_irq_data(i);@@ -525,7 +525,7 @@ unsigned int irq_find_mapping(struct irq_domain *domain,
return i;
i++;
if (i >= irq_virq_count)
- i = NUM_ISA_INTERRUPTS;
+ i = 1
} while(i != hint);
return 0;
}