On Thu, 8 Mar 2007, Oliver Neukum wrote:

> Hi,
> 
> I am seeing khubd hanging on 2.6.21-rc3 blocking device enumeration.
...
> Mar  8 09:54:45 valisk kernel: usb usb1: usb auto-resume
> Mar  8 09:54:45 valisk kernel: usb usb1: finish resume
> Mar  8 09:54:45 valisk kernel: hub 1-0:1.0: hub_resume
> Mar  8 09:54:45 valisk kernel: ehci_hcd 0000:00:13.2: resume root hub
> Mar  8 09:54:45 valisk kernel: hub 1-0:1.0: state 7 ports 8 chg 0000 evt 0000
> Mar  8 09:54:45 valisk kernel: ehci_hcd 0000:00:13.2: GetStatus port 8 status 
> 001403 POWER sig=k CSC CONNECT
> Mar  8 09:54:45 valisk kernel: hub 1-0:1.0: port 8, status 0501, change 0001, 
> 480 Mb/s
> Mar  8 09:54:45 valisk kernel: hub 1-0:1.0: debounce: port 8: total 100ms 
> stable 100ms status 0x501
> Mar  8 09:54:45 valisk kernel: ehci_hcd 0000:00:13.2: port 8 low speed --> 
> companion
> Mar  8 09:54:45 valisk kernel: ehci_hcd 0000:00:13.2: GetStatus port 8 status 
> 003002 POWER OWNER sig=se0 CSC

Okay, you plugged in a low-speed device.  ehci-hcd handed it off to one of 
the OHCI controllers.

> Mar  8 09:54:45 valisk kernel: usb usb2: usb auto-resume
> Mar  8 09:54:45 valisk kernel: usb usb2: finish resume
> Mar  8 09:54:45 valisk kernel: hub 2-0:1.0: hub_resume
> Mar  8 09:54:45 valisk kernel: ohci_hcd 0000:00:13.0: resume root hub
> Mar  8 09:54:45 valisk kernel: hub 2-0:1.0: state 7 ports 4 chg 0000 evt 0000
> Mar  8 09:54:45 valisk kernel: usb usb3: usb auto-resume
> Mar  8 09:54:45 valisk kernel: usb usb3: finish resume
> Mar  8 09:54:45 valisk kernel: hub 3-0:1.0: hub_resume

I don't understand this.  Why did _both_ OHCI controllers wake up?

> Mar  8 09:54:45 valisk kernel: ohci_hcd 0000:00:13.1: wakeup root hub

This is what you would expect; the new connection causes a wakeup on usb3.  
But usb2 (00:13.0) got a plain resume, not a wakeup.  Why?

> Mar  8 09:54:46 valisk kernel: hub 3-0:1.0: state 7 ports 4 chg 0000 evt 0000
> Mar  8 09:54:46 valisk kernel: ohci_hcd 0000:00:13.1: GetStatus 
> roothub.portstatus [3] = 0x00010301 CSC LSDA PPS CCS
> Mar  8 09:54:46 valisk kernel: hub 3-0:1.0: port 4, status 0301, change 0001, 
> 1.5 Mb/s
> Mar  8 09:54:46 valisk kernel: hub 3-0:1.0: debounce: port 4: total 100ms 
> stable 100ms status 0x301
> Mar  8 09:54:46 valisk kernel: ohci_hcd 0000:00:13.1: GetStatus 
> roothub.portstatus [3] = 0x00100303 PRSC LSDA PPS PES CCS
> Mar  8 09:54:46 valisk kernel: usb 3-4: new low speed USB device using 
> ohci_hcd and address 2
> Mar  8 09:54:46 valisk kernel: ohci_hcd 0000:00:13.0: auto-stop root hub
> Mar  8 09:54:47 valisk kernel: usb 3-4: khubd timed out on ep0in len=0/64

Now it looks like the auto-stop on usb2 caused a failure on usb3.

> Mar  8 09:54:47 valisk kernel: hub 1-0:1.0: hub_suspend
> Mar  8 09:54:47 valisk kernel: ehci_hcd 0000:00:13.2: suspend root hub
> Mar  8 09:54:47 valisk kernel: usb usb1: usb auto-suspend
> Mar  8 09:54:47 valisk kernel: hub 2-0:1.0: hub_suspend
> Mar  8 09:54:47 valisk kernel: ohci_hcd 0000:00:13.0: suspend root hub
> Mar  8 09:54:47 valisk kernel: usb usb2: usb auto-suspend

> Mar  8 09:58:05 valisk kernel: khubd         D ffff81003dedc080     0   155   
>    7           157   152 (L-TLB)
> Mar  8 09:58:05 valisk kernel:  ffff810037c7bc20 0000000000000046 
> 0000000000000001 0000000000000002
> Mar  8 09:58:05 valisk kernel:  00000001803ea002 0000000000000002 
> 000000000000000a ffff8100027ec180
> Mar  8 09:58:05 valisk kernel:  ffff810037e08100 0000000000000416 
> ffff8100027ec380 0000000080240d18
> Mar  8 09:58:06 valisk kernel: Call Trace:
> Mar  8 09:58:06 valisk kernel:  [<ffffffff804863f4>] 
> _spin_unlock_irqrestore+0x3e/0x44
> Mar  8 09:58:06 valisk kernel:  [<ffffffff80240ef6>] 
> trace_hardirqs_on+0x11c/0x140
> Mar  8 09:58:06 valisk kernel:  [<ffffffff803d5b34>] usb_kill_urb+0xbe/0xeb
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8023addc>] 
> autoremove_wake_function+0x0/0x2e
> Mar  8 09:58:06 valisk kernel:  [<ffffffff803d67a6>] 
> usb_start_wait_urb+0x105/0x142
> Mar  8 09:58:06 valisk kernel:  [<ffffffff803d6a3a>] 
> usb_control_msg+0xe1/0x106
> Mar  8 09:58:06 valisk kernel:  [<ffffffff80240ef6>] 
> trace_hardirqs_on+0x11c/0x140
> Mar  8 09:58:06 valisk kernel:  [<ffffffff803d06e1>] hub_port_init+0x2a0/0x5da
> Mar  8 09:58:06 valisk kernel:  [<ffffffff803d3341>] hub_thread+0x929/0xfcf
> Mar  8 09:58:06 valisk kernel:  [<ffffffff80240ef6>] 
> trace_hardirqs_on+0x11c/0x140
> Mar  8 09:58:06 valisk kernel:  [<ffffffff80483874>] thread_return+0x88/0x12b
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8023addc>] 
> autoremove_wake_function+0x0/0x2e
> Mar  8 09:58:06 valisk kernel:  [<ffffffff803d2a18>] hub_thread+0x0/0xfcf
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8023aa56>] 
> keventd_create_kthread+0x0/0x6d
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8023acc6>] kthread+0xd1/0x103
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8020a158>] child_rip+0xa/0x12
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8048638c>] 
> _spin_unlock_irq+0x24/0x27
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8020986c>] restore_args+0x0/0x30
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8023abf5>] kthread+0x0/0x103
> Mar  8 09:58:06 valisk kernel:  [<ffffffff8020a14e>] child_rip+0x0/0x12

Evidently khubd is waiting for an unlink of an URB on usb3 to complete.  
Somehow the fact that usb2 is stopped is causing a problem.

It looks as though there's some weird connection between the two OHCI
controllers' hardware.  A wakeup request on one caused the other to resume
also.  When the other then stopped, the first no longer worked.

Could it be a memory-mapping error?  Both sets of registers got mapped to 
the same address?  See what dmesg says when you modprobe ohci-hcd, and do 
a detailed comparison between 2.6.21-rc3 and a working kernel.

Alan Stern


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to