[PATCH 1/2] powerpc: ipic: use set_irq_chip to ensure irq_chip defaults are applied

Esben Haabendal eha at doredevelopment.dk
Mon Jun 7 15:06:15 EST 2010


On Mon, 2010-06-07 at 01:45 +0200, Thomas Gleixner wrote:

> This patch has never been tested with spinlock debugging enabled and
> will break SMP as it causes a deadlock on irq_desc->lock.
> 
> Again: See Documentation/Submit*

Ok, will do so.

But do you see the problem?  In __setup_irq(), irq_chip_set_defaults()
is called first, and then __irq_set_trigger(), which calls
chip->set_type(). When you request an edge irq with ipic, you get the
defaults applied to ipic_level_irq_chip, and then it sets
ipic_edge_irq_chip, which now is missing startup(), enable(), and so
on.

Would it be better to change the call order in __setup_irq(), and
call irq_chip_set_defaults after __irq_set_trigger() ?   Or perhaps
even calling it twice (again after __irq_set_trigger()) ?

/Esben



More information about the Linuxppc-dev mailing list