Subject: Re: [PATCH 1/2] Add MPC52xx Interrupt controller support for ARCH=powerpc

From: Nicolas DET <[email-masked]>
Date: Tue, 31 Oct 2006 08:09:04 +0100 (MET)

Benjamin Herrenschmidt wrote:
> On Mon, 2006-10-30 at 00:10 +0100, Nicolas DET wrote:
> 
>> +/*
>> + * void call to be used for .ack in the irq_chip_ops
>> + * indeed, some of our irq does noy need ack
>> + * but the kernel call .ack if it's valid or not
>> +*/
>> +
>> +static void mpc52xx_voidfunc(unsigned int virq)
>> +{
>> +#ifdef DEBUG
>> +       int irq;
>> +       int l2irq;
>> +
>> +       irq = irq_map[virq].hwirq;
>> +       l2irq = (irq & MPC52xx_IRQ_L2_MASK) >> MPC52xx_IRQ_L2_OFFSET;
>> +
>> +       pr_debug("%s: irq=%x, l2=%d\n", __func__, irq, l2irq);
>> +#endif
>> +}
> 
> As I said on IRC, we might be able to get away without that one, but
> that's not urgent.

Already done.

> 
>> +       irq = irq_map[virq].hwirq;
>> +       l2irq = (irq & MPC52xx_IRQ_L2_MASK) >> MPC52xx_IRQ_L2_OFFSET;
>> +
>> +       pr_debug("%s: irq=%x, l2=%d\n", __func__, irq, l2irq);
>> +
>> +       if (l2irq != 0)
>> +               BUG();
> 
> Use BUG_ON(l2irq != 0); instead, generates better code (though I don't
> think you really need to keep those checks once you've verified things
> work fine).
> 

Ok.

>> +       set_irq_chip_and_handler(virq, good_irqchip, good_handle);
>> +       set_irq_type(virq, type);
> 
> set_irq_type() does nothing if you haven't hooked a set_type callback to
> your irq_chip and none of yours does so just drop it for now and look at
> how this is done in mpic or ipic. If you actually want to implement
> proper set_type (which you might need to do if you want that code to
> work without having the firmware pre-initialize interrupts with the
> right type at boot), you probably want to set the handler in
> set_irq_type().
> 

Our Firmware wil lalways preinit correctly the hw. Moreover, chaning the 
setting would propably rpevent PCI IRQ (as PCI are IRQ[0-3].

So I should just remove the set_irq_type() call?

Regards