Re: [PATCH] Support IRQ_NOAUTOEN flag in set_irq_chained_handler()
From: Esben Haabendal
Date: Tue Mar 22 2011 - 08:38:15 EST
Thomas Gleixner <tglx@xxxxxxxxxxxxx> writes:
> On Tue, 22 Mar 2011, Esben Haabendal wrote:
>> Thomas Gleixner <tglx@xxxxxxxxxxxxx> writes:
>> > On Fri, 18 Mar 2011, eha@xxxxxxxxxxxxxxxxxx wrote:
>> >> From: Esben Haabendal <eha@xxxxxxxxxxxxxxxxxx>
>> >> Handle IRQ_NOAUTOEN in __set_irq_handler() (ie. for
>> >> set_irq_chained_handler()) instead of just silently ignoring it, and in
>> >> the same way as is done in __setup_irq() (ie. request_irq()).
>> >> This give a more consistent interface, and also adheres better to
>> >> the rule of least surprise.
>> > Well, that might be less surprising for you, but you will be surprised
>> > that such a change would be a real big surprise for all users of
>> > chained handlers in arch/arm. They simply would not work anymore.
>> How is that? I don't see any use of IRQ_NOAUTOEN flag in arch/arm at
>> all. Is there some other way that IRQ_NOAUTOEN get's enabled in
>> arch/arm? Or is my patch broken in some way that it does change irq
>> handler setup when IRQ_NOAUTOEN is not set?
> Ooops, sorry. I had it somewhere in the back of my memory that ARM
> marked all interrupts IRQ_NOAUTOEN by default. Confused that with
>> The idea of the patch is that it will do exactly the same as
>> before, unless you specifically set IRQ_NOAUTOEN before calling
> I understand the patch :)
>> > So we _cannot_ change the semantics here. All we can do is document
>> > it.
>> With the current semantics, how are one supposed to be able use
>> set_irq_chained_handler without having the handler enabled immediately?
> Not at all. Why do you want to do that ?
I have a system where
I setup the chained interrupt handler (together with a lot of other
stuff related to the CPLD firmware the interrupt controller lives in) in
of_platform_driver.probe(). The CPLD may be (re)programmed from
user-space, so all driver functionality is disabled until user-space
either programs the CPLD or gives a signal that this will not happen.
I thought it would be the cleanest solution to keep driver
initialization in the probe() function, and just enable it later on.
And I cannot just set the mask early, as I am not guaranteed how the irq
line is behaving and if there actually is a mask register before it is
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/