lkml.org 
[lkml]   [1999]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectShared interrupt (lack of) handling
Date
When a device driver calls request_irq() with the SA_SHIRQ flag set,
it is responsible for determining whether its device generated the
interrupt, which the kernel dispatches to every driver registerd for
that interrupt. I've just been running the maestro 2e driver in
2.3.16 and noticed that the USB UHCI driver is attempting to
process every interrupt without determining whether it really is
a USB one or not. In an attempt to fix it I searched many other
drivers and couldn't find many that do.

The fix for uhci.c appears to be to modify
drivers/usb/uhci.c:uhci_interrupt()


/*
* Read the interrupt status, and write it back to clear the
* interrupt cause
*/
status = inw(io_addr + USBSTS);
+ if (!status) /* interrupt not from UHCI, other shared device */
+ return;
outw(status, io_addr + USBSTS);

rest of processing

As, according to the UHCI specs, USBSTS is non-zero if any interrupt
was generated.

How come I can find so little evidence of this type of interrupt
handling for shared interrupts?

Paul


-
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:1.339 / U:0.016 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site