On Thu, 2009-12-03 at 23:47 +0100, Albert Herranz wrote: > +static void hlwd_pic_irq_cascade(unsigned int cascade_virq, > + struct irq_desc *desc) > +{ > + struct irq_host *irq_host = get_irq_data(cascade_virq); > + unsigned int virq; > + > + spin_lock(&desc->lock); > + desc->chip->mask(cascade_virq); /* IRQ_LEVEL */ > + spin_unlock(&desc->lock); > + > + virq = __hlwd_pic_get_irq(irq_host); > + if (virq != NO_IRQ) > + generic_handle_irq(virq); > + else > + pr_err("spurious interrupt!\n"); > + > + spin_lock(&desc->lock); > + desc->chip->ack(cascade_virq); /* IRQ_LEVEL */ > + if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask) > + desc->chip->unmask(cascade_virq); > + spin_unlock(&desc->lock); > +}
The above would not be necessary if instead of using a chained handler you used a normal one, which is what I do for pmac-pic. No big deal for now, though. Acked-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev