On Thu, 12 Aug 2004, Norbert Preining wrote: > BIngo, you are a genius! I found what is causing me the problems: Only > when a specific device is plugged in, the hangs occur (in kernels after > 2.6.7-mm5). > > It is a Benq radio mouse with emtpy device descriptor: > T: Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0 > D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 > P: Vendor=0d62 ProdID=1000 Rev= 2.00 > C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA > I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid > E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms > > > In all cases, with 2.6.7-mm5 and any later I get the following syslog > messages when I plug in the mouse or it is plugged when usb sys is > starting: > vmunix: drivers/usb/input/hid-core.c: ctrl urb status -2 received > vmunix: drivers/usb/input/hid-core.c: timeout initializing reports > vmunix: > kernel: input: USB HID v1.10 Mouse [0d62:1000] on usb-0000:02:09.0-1
Do you mean with 2.6.7-mm5 and any _earlier_? With kernels after that your trace below shows khubd hanging in hid_init_reports before the last two messages are written. > For the newer kernels the process khubd in fact is in D state: > khubd D 00000000 0 1199 1 1477 348 (L-TLB) > df965d04 00000046 c0c5f400 00000000 1d800000 00800000 df5501fc df55020c > 00001726 9ea049b3 000000f4 df8ee7d0 df8ee978 0008de11 df965d18 00002710 > df965d64 c02da922 c0d2fc00 e08d38fd 00000282 c0388ea4 c040d398 0008de11 > Call Trace: > [<c02da922>] schedule_timeout+0x60/0xb3 > [<e08d38fd>] unlink1+0x11/0x18 [usbcore] > [<c01232a1>] process_timeout+0x0/0x5 > [<e08c8b28>] hid_wait_io+0x88/0xcc [usbhid] > [<c0118fd7>] default_wake_function+0x0/0xc > [<c0118fd7>] default_wake_function+0x0/0xc > [<e08c8d08>] hid_init_reports+0xd5/0x17c [usbhid] > I hope this helps you ... > > Bottom line for this, I would like to use this mouse, but with the > new kernels it isn't possible. > > ANother interesting point is the following, but I think this is just > a consequence of the above: When I do NOT have plugged in the mouse > while booting, the Synaptics TOuchpad is recognized, while when it is plugged > in during boot, it is not recognized ... strange, at least to me! This probably _is_ a consequence of the problem with the mouse. Once khubd hangs, no new devices will be recognized. Below is a test patch for you to try. It will provide a lot of extra information in you system log, which may help to pin down where the problem occurs. Alan Stern ===== drivers/usb/core/hcd.c 1.152 vs edited ===== --- 1.152/drivers/usb/core/hcd.c Tue Aug 3 10:17:59 2004 +++ edited/drivers/usb/core/hcd.c Thu Aug 12 12:17:05 2004 @@ -1146,6 +1146,7 @@ wake_up (&usb_kill_urb_queue); usb_put_urb (urb); } + printk(KERN_INFO "%s: urb=%p\n", __FUNCTION__, urb); return status; } @@ -1185,6 +1186,7 @@ if (value != 0) dev_dbg (hcd->self.controller, "dequeue %p --> %d\n", urb, value); + printk(KERN_INFO "%s: urb=%p\n", __FUNCTION__, urb); return value; } @@ -1506,6 +1508,7 @@ } /* pass ownership to the completion handler */ + printk(KERN_INFO "%s: urb=%p\n", __FUNCTION__, urb); urb->complete (urb, regs); atomic_dec (&urb->use_count); if (unlikely (urb->reject)) ===== drivers/usb/input/hid-core.c 1.119 vs edited ===== --- 1.119/drivers/usb/input/hid-core.c Fri Jul 23 09:29:18 2004 +++ edited/drivers/usb/input/hid-core.c Thu Aug 12 12:13:02 2004 @@ -25,7 +25,7 @@ #include <asm/byteorder.h> #include <linux/input.h> -#undef DEBUG +#define DEBUG #undef DEBUG_DATA #include <linux/usb.h> @@ -1070,7 +1070,7 @@ hid->urbout->transfer_buffer_length = ((report->size - 1) >> 3) + 1 + (report->id > 0); hid->urbout->dev = hid->dev; - dbg("submitting out urb"); + dbg("submitting out urb=%p", hid->urbout); if (usb_submit_urb(hid->urbout, GFP_ATOMIC)) { err("usb_submit_urb(out) failed"); @@ -1116,7 +1116,7 @@ hid->cr->wIndex = cpu_to_le16(hid->ifnum); hid->cr->wLength = cpu_to_le16(len); - dbg("submitting ctrl urb: %s wValue=0x%04x wIndex=0x%04x wLength=%u", + dbg("submitting ctrl urb=%p: %s wValue=0x%04x wIndex=0x%04x wLength=%u", hid->urbctrl, hid->cr->bRequest == HID_REQ_SET_REPORT ? "Set_Report" : "Get_Report", hid->cr->wValue, hid->cr->wIndex, hid->cr->wLength); @@ -1137,6 +1137,7 @@ struct hid_device *hid = urb->context; unsigned long flags; + dbg("complete output urb=%p\n", urb); if (urb->status) warn("output irq status %d received", urb->status); @@ -1166,6 +1167,7 @@ struct hid_device *hid = urb->context; unsigned long flags; + dbg("complete ctrl urb=%p\n", urb); if (urb->status) warn("ctrl urb status %d received", urb->status); @@ -1334,9 +1336,13 @@ while (ret) { err |= ret; if (test_bit(HID_CTRL_RUNNING, &hid->iofl)) +{dbg("unlink ctrl urb=%p\n", hid->urbctrl); usb_unlink_urb(hid->urbctrl); +} if (test_bit(HID_OUT_RUNNING, &hid->iofl)) +{dbg("unlink out urb=%p\n", hid->urbout); usb_unlink_urb(hid->urbout); +} ret = hid_wait_io(hid); } ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel