On Thu, Oct 30, 2014 at 4:09 AM, Sergei Shtylyov wrote: >> diff --git a/drivers/irqchip/irq-bcm7120-l2.c >> b/drivers/irqchip/irq-bcm7120-l2.c >> index b9f4fb8..49d8f3d 100644 >> --- a/drivers/irqchip/irq-bcm7120-l2.c >> +++ b/drivers/irqchip/irq-bcm7120-l2.c > > [...] >> >> @@ -51,19 +49,12 @@ static void bcm7120_l2_intc_irq_handle(unsigned int >> irq, struct irq_desc *desc) >> chained_irq_enter(chip, desc); >> >> status = __raw_readl(b->base + IRQSTAT); >> - >> - if (status == 0) { >> - do_bad_IRQ(irq, desc); >> - goto out; >> - } >> - >> do { > > > I think this needs to now become: > > while (status) { > >> irq = ffs(status) - 1; >> status &= ~(1 << irq); > > > In case 'status' is 0, 'irq' will be equal to -1. How does the shift by > negative value work? > >> generic_handle_irq(irq_find_mapping(b->domain, irq)); >> } while (status); That's a good point. We need to check for 0 somehow. This code gets replaced in patch 13/15 anyway, but I'll fix it in the next round. Thanks! -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html