Bug 1240
Summary: | USB HCD reports an unhandled IRQ and throws a call trace | ||
---|---|---|---|
Product: | Drivers | Reporter: | Marek Habersack (grendel) |
Component: | USB | Assignee: | Andrew Morton (akpm) |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | acpi-bugzilla, greg |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.0-test5-{mm1,mm2} | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
output of acpidmp
dmesg output dmidecode output a copy of /proc/interrupts the kernel config |
Description
Marek Habersack
2003-09-15 15:01:44 UTC
Created attachment 892 [details]
output of acpidmp
Created attachment 893 [details]
dmesg output
Created attachment 894 [details]
dmidecode output
Created attachment 895 [details]
a copy of /proc/interrupts
Created attachment 896 [details]
the kernel config
Would you please have patch at bug 1186 a try? thanks a lot. alas, the only difference is that now it is reporting IRQ 10 (that made the NIC work, however) Same problem observed (with or without the patch in bug-1186) only when uhci-hcd is compiled as a module Somebody has made a patch for such problem, please try:
On Fri, Sep 19, 2003 at 09:36:49AM -0400, jtholmes wrote:
> I don't take the Distribution, and don't need email copy of
> answer, just answer in LKML and I will see it.
>
> If I knew how to turn on more debugging I would gladly do so
> as I need to figure out the Kernel debugging scheme.
>
> Problem Description
>
> After loading Module uhci-hcd
>
> USB Optical Mouse light shuts off and irq 11: is disabled.
Hm, can you apply this patch with -R and see if it fixes your problem?
thanks,
greg k-h
diff -Nru a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
--- a/drivers/usb/host/uhci-hcd.c Fri Sep 19 12:13:36 2003
+++ b/drivers/usb/host/uhci-hcd.c Fri Sep 19 12:13:36 2003
@@ -2143,6 +2143,20 @@
#endif
}
+static int uhci_reset(struct usb_hcd *hcd)
+{
+ struct uhci_hcd *uhci = hcd_to_uhci(hcd);
+
+ uhci->io_addr = (unsigned long) hcd->regs;
+
+ /* Maybe kick BIOS off this hardware. Then reset, so we won't get
+ * interrupts from any previous setup.
+ */
+ pci_write_config_word(hcd->pdev, USBLEGSUP, USBLEGSUP_DEFAULT);
+ reset_hc(uhci);
+ return 0;
+}
+
/*
* Allocate a frame list, and then setup the skeleton
*
@@ -2159,7 +2173,7 @@
* - The fourth queue is the bandwidth reclamation queue, which loops back
* to the high speed control queue.
*/
-static int __devinit uhci_start(struct usb_hcd *hcd)
+static int uhci_start(struct usb_hcd *hcd)
{
struct uhci_hcd *uhci = hcd_to_uhci(hcd);
int retval = -EBUSY;
@@ -2171,7 +2185,6 @@
struct proc_dir_entry *ent;
#endif
- uhci->io_addr = (unsigned long) hcd->regs;
io_size = pci_resource_len(hcd->pdev, hcd->region);
#ifdef CONFIG_PROC_FS
@@ -2188,10 +2201,6 @@
uhci->proc_entry = ent;
#endif
- /* Reset here so we don't get any interrupts from an old setup */
- /* or broken setup */
- reset_hc(uhci);
-
uhci->fsbr = 0;
uhci->fsbrtimeout = 0;
@@ -2343,9 +2352,6 @@
init_stall_timer(hcd);
- /* disable legacy emulation */
- pci_write_config_word(hcd->pdev, USBLEGSUP, USBLEGSUP_DEFAULT);
-
udev->speed = USB_SPEED_FULL;
if (usb_register_root_hub(udev, &hcd->pdev->dev) != 0) {
@@ -2484,6 +2490,7 @@
.flags = HCD_USB11,
/* Basic lifecycle operations */
+ .reset = uhci_reset,
.start = uhci_start,
#ifdef CONFIG_PM
.suspend = uhci_suspend,
the last patch does the trick for test5-mm4 The uhci_reset() fix here has been in 2.6 since 28th of August. Unknown if 2.4 has this same problem. Another kernel parameter that can improve behavior here is "usb-handoff" to kick BIOS earlier. Guys, is this problem now fixed in Linus's current tree? Or does Greg intend to mrege up that fix prior to 2.6.10? Thanks. This should be fixed in the latest kernel tree. If not, please reopen it. |