[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <27240C0AC20F114CBF8149A2696CBE4A1820D5@SHSMSX101.ccr.corp.intel.com>
Date: Tue, 18 Sep 2012 07:21:03 +0000
From: "Liu, Chuansheng" <chuansheng.liu@...el.com>
To: anish singh <anish198519851985@...il.com>
CC: "'linux-kernel@...r.kernel.org' (linux-kernel@...r.kernel.org)"
<linux-kernel@...r.kernel.org>,
"tglx@...utronix.de" <tglx@...utronix.de>
Subject: RE: [PATCH] genirq: Add the IRQS_ONESHOT support for edge interrupt
> This comment might help.
> kernel/irq/manage.c
>
> } else if (new->handler == irq_default_primary_handler) {
>
> /*
> * The interrupt was requested with handler = NULL, so
> * we use the default primary handler for it. But it
> * does not have the oneshot flag set. In combination
> * with level interrupts this is deadly, because the
> * default primary handler just wakes the thread, then
> * the irq lines is reenabled, but the device still
> * has the level irq asserted. Rinse and repeat....
> *
> * While this works for edge type interrupts, we play
> * it safe and reject unconditionally because we can't
> * say for sure which type this interrupt really
> * has. The type flags are unreliable as the
> * underlying chip implementation can override them.
> */
This is not my case. My request_irq is as below:
request_threaded_irq(drv_data->irq,
func1,
func2,
IRQF_SHARED|IRQS_ONESHOT ,
"AAAA",
drv_data);
Powered by blists - more mailing lists