This is a discussion on [Fwd: Re: -tip hangs my G5 during boot] -- Bug in "genirq: record trigger type" - Kernel ; -------- Original Message -------- Subject: Re: -tip hangs my G5 during boot Date: Fri, 10 Oct 2008 11:13:34 -0600 From: Chris Friesen To: David Brownell CC: Ingo Molnar , Thomas Gleixner , Yinghai Lu , "H. Peter Anvin" References: David ...
-------- Original Message --------
Subject: Re: -tip hangs my G5 during boot
Date: Fri, 10 Oct 2008 11:13:34 -0600
From: Chris Friesen
To: David Brownell
CC: Ingo Molnar
, Thomas Gleixner , Yinghai Lu , "H. Peter Anvin"
References: <48ECDFE2.email@example.com> <firstname.lastname@example.org> <20081010153737.GC28977@elte.hu> <email@example.com>
David Brownell wrote:
> On Friday 10 October 2008, Ingo Molnar wrote:
>>>>> bisection gave the following as the culprit.
>>>>>Author: David Brownell
>>>>> genirq: record trigger type
>>a quick review of the patch shows that it's about much more than just
>>recording the trigger type, it also changes the semantics of
> This is *exactly* what I meant when I wrote:
>>>>Other than that, I suspect something (new or old) depending on
>>>>either set_irq_type(irq, IRQ_TYPE_NONE) getting to an irq_chip
>>>>which doesn't treat it as a NOP, or ...
> As noted in my patch comments: as part of recording those flags,
> it made their semantics in set_irq_type() paths be identical to
> their semantics in request_irq() paths.
> There do seem to be some irq_chip implementations in the
> arch/powerpc/sysdev (and some Cell support) that treat
> IRQ_TYPE_NONE as other-than-NOP.
At least in my case, it was nothing so complicated. David's original
patch was passing "flags" rather than "type" down to __irq_set_trigger().
If I change it to pass "type" then everything works.
The following patch applies on top of -tip with David's original patch
From: Chris Friesen
Subject: [PATCH] fix set_irq_type() when recording trigger type
In set_irq_type() we want to pass the type rather than the current
Signed-off-by: Chris Friesen
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 570d1ea..1c178ae 100644
@@ -132,7 +132,7 @@ int set_irq_type(unsigned int irq, unsigned int type)
- ret = __irq_set_trigger(desc, irq, flags);
+ ret = __irq_set_trigger(desc, irq, type);
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/