lkml.org 
[lkml]   [1999]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Shared interrupt (lack of) handling
On Thu, Sep 02, 1999 at 06:18:01PM +0100, Paul Ashton wrote:
>
> Wouldn't it be clearer if request_irq() took a function pointer
> to be used to determine whether the interrupt belongs to the
> driver or not? i.e.:
>
> if (request_irq(irq, intr, SA_SHIRQ, "foo", foodev, isfoointr) { ... }
>
> static int isfoointr(int irq, void *foodev, struct pt_regs *regs) {
> if (foodev && inw(FOOIO))
> return 1; /* foo device generated this interrupt */
> else
> return 0; /* not my interrupt */
> }
>
> At least it would force driver writers to address the shared interrupt
> issue, and if the kernel determines that nobody claims the interrupt
> it could do something about it, like complain, which it can't do at
> the moment. Something that has caused me endless problems on a laptop
> with some unidentifiable PCI device generating unhandled interrupts.
>
> Paul
>

I'd vote for changing the return value of the interrupt handlers to
(int), and return a I_DID_SOME_STUFF flag. That way, if none of the
interrupt handlers for an IRQ return this flag, the kernel belches out
"Nobody handled interrupt X", which would quickly grab people's attention.
Unfortunately, it would also grab your attention if there really are
spurious interrupts that you don't care about.

At the same time, it would be nice to have a RUN_MY_BOTTOM_HALF_PLEASE
flag. This would be another way to grab driver writer's attention, since
the bottom halves would break.




dave...



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:53    [W:0.065 / U:0.908 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site