On Thu, 24 Mar 2011, Manuel Lauss wrote: > On Wed, Mar 23, 2011 at 10:08 PM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > > Fix the deadlock in set_type() while at it. > > > > Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > > --- > > arch/mips/alchemy/common/irq.c | 98 ++++++++++++++++++------------------- > > arch/mips/alchemy/devboards/bcsr.c | 18 +++--- > > 2 files changed, 59 insertions(+), 57 deletions(-) > > Tested on the db1200, works fine. > > I'm curious though: could you please elaborate on where the deadlock came from? > Is it not safe to call set_irq_type() at all times? The code called set_irq_chip_and_handler_name() resp. set_irq_chip() from the set_type() callback. That only works on UP and lock debugging disabled. Otherwise it would dead lock on desc->lock. __irq_set_chip_handler_name_locked() avoids that. Thanks, tglx