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

Reply via email to