lkml.org 
[lkml]   [2012]   [Sep]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH] genirq: Add the IRQS_ONESHOT support for edge interrupt
From
On Tue, Sep 18, 2012 at 12:51 PM, Liu, Chuansheng
<chuansheng.liu@intel.com> wrote:
>> 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);

I hope you are disabling the interrupt in your primary handler and returning
IRQ_WAKE_THREAD.
If yes then someone with experience in this interrupt handling code
can help you.


\
 
 \ /
  Last update: 2012-09-18 11:41    [W:0.290 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site