Thanks for your email. interrupt handler correctly returns IRQ_HANDLED
and IRQ_NONE. I was checking the conditions for which IRQ gets disabled
in spurios.c and the condition says if (desc->irqs_unhandled > 99900)
disable and kill irq and that is precisely what is happening. So, from
my understanding my card generates a lot of interrupts upon opening up
the device and the kernel disables it.
I may be wrong in my understanding of the code. Perhaps, a kernel guy
may be able to answer my questions.
Regards,
Dinesh
black hole wrote:
Hello,
On 11/1/06, *Dinesh* <dbhat@xxxxxxxxx <mailto:dbhat@xxxxxxxxx>> wrote:
Thanks for your reply. Yes, our driver is programmed to share irqs.
SA_SHIRQ is used.
Dinesh
Ok, I hope this helps a little bit more :) . Did you try a possibility
when your interrupt handling function always returned IRQ_HANDLED? Also,
did you have a look at the source code of these kernel functions (
http://lxr.linux.no) - __do_IRQ(), handle_IRQ_event(), note_interrupt(),
__report_bad_irq and misrouted_irq() ?
I think that the __report_bad_irq() function is what produces the
"nobody cared" message and the note_interrupt() function is what
prints the "Disabling IRQ" message.
Just in case you would be looking for the term "spurious interrupt" -
http://en.wikipedia.org/wiki/Interrupt
<http://en.wikipedia.org/wiki/Interrupt>.
BlackHole
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/