On Sun, Mar 03, 2002 at 09:47:50PM +0000, Chris Rankin wrote:
> > If you can, could
> > you try out the 2.4.18-rc2-gregkh-1 patch that will apply cleanly on top
> > of 2.4.18 and let us know if that fixes your problem?
> >
>http://www.kernel.org/pub/linux/kernel/people/gregkh/usb/linux-2.4.18-rc2-gregkh-1.patch.gz
>
>
> Hi,
>
> I have just tried the rc2-gregkh-1 patch on my 2.4.18 (SMP, devfs,
> 1.3GB) machine and I must report *disaster* with a USB mouse.
>
> My machine has some interesting USB hardware:
> - 2 UHCI 1.1 ports (motherboard)
> - 4 OHCI/EHCI ports (OrangeMicro USB/Firewire combo card)
>
> This means that the hotplug script loaded the uhci.o, usb-ohci.o and
> ehci-hcd.o modules.
>
> When I plugged the mouse into one of the UHCI ports, the box loaded
> the input drivers and then locked up solid:
>
> Mar 3 19:37:40 twopit kernel: hub.c: USB new device connect on bus4/1, assigned
>device number 2
> Mar 3 19:37:40 twopit kernel: usb.c: USB device 2 (vend/prod 0x45e/0x9) is not
>claimed by any active driver.
> Mar 3 19:37:40 twopit kernel: usb.c: registered new driver hiddev
> Mar 3 19:37:40 twopit kernel: usb.c: registered new driver hid
> Mar 3 19:37:40 twopit kernel: input0: USB HID v1.10 Mouse [Microsoft Microsoft USB
>Mouse] on usb4:2.0
> Mar 3 19:37:40 twopit kernel: hid-core.c: v1.8 Andreas Gal, Vojtech Pavlik
><[EMAIL PROTECTED]>
> Mar 3 19:37:40 twopit kernel: hid-core.c: USB HID support drivers
>
> And that was all she wrote. Not even SysRQ worked. I might have had to
> move the mouse first before firework-time; I'm not sure.
You need one more patch. Attached. Greg? I think we need both.
>
> For reference, the same USB mouse works fine on basic 2.4.18 with the
> following patch:
>
> --- linux-2.4.18/drivers/usb/uhci.c.orig Tue Feb 26 00:42:17 2002
> +++ linux-2.4.18/drivers/usb/uhci.c Wed Feb 27 00:53:33 2002
> @@ -1685,9 +1685,9 @@
>
> /* Control and Isochronous ignore the toggle, so this */
> /* is safe for all types */
> - if ((!(td->status & TD_CTRL_ACTIVE) &&
> - (uhci_actual_length(td->status) < uhci_expected_length(td->info))
>||
> - tmp == head)) {
> + if (!(td->status & TD_CTRL_ACTIVE) &&
> + ((uhci_actual_length(td->status) < uhci_expected_length(td->info))
>||
> + (tmp == head))) {
> usb_settoggle(urb->dev, uhci_endpoint(td->info),
> uhci_packetout(td->info),
> uhci_toggle(td->info) ^ 1);
>
> This patch just fixes a UHCI regression between 2.4.17 and 2.4.18, so
> it's not controversial.
>
> I've noticed that this USB 2.0 patch might be going into
> 2.4.19... ooerr!
--
Vojtech Pavlik
SuSE Labs
diff -u -r1.45 -r1.46
--- hid-core.c 21 Feb 2002 09:27:10 -0000 1.45
+++ hid-core.c 27 Feb 2002 22:26:58 -0000 1.46
@@ -1,5 +1,5 @@
/*
- * $Id: hid-core.c,v 1.45 2002/02/21 09:27:10 vojtech Exp $
+ * $Id: hid-core.c,v 1.46 2002/02/27 22:26:58 jdeneux Exp $
*
* Copyright (c) 1999 Andreas Gal
* Copyright (c) 2000-2001 Vojtech Pavlik
@@ -1047,6 +1048,7 @@
if (hid->outhead != hid->outtail) {
hid_submit_out(hid);
+ spin_unlock_irqrestore(&hid->outlock, flags);
return;
}
@@ -1078,6 +1080,7 @@
if (hid->ctrlhead != hid->ctrltail) {
hid_submit_ctrl(hid);
+ spin_unlock_irqrestore(&hid->ctrllock, flags);
return;
}