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 <[email protected]>
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev