hang on ejecting pc-card with ohci

Oliver Neukum oliver at neukum.org
Mon Feb 2 08:10:11 EST 2009


Am Friday 30 January 2009 16:26:31 schrieb Alan Stern:
> > Taking an extra reference to the pci device doesn't help.
> > What is to be done?
> 
> Are you sure you really understand the nature of the problem?

You are right, I overlooked a very important detail. I was looking at
two controllers. Here the log of the ejection:

Feb  2 12:06:15 linux-daoy kernel: pcmcia_socket pcmcia_socket0: pccard: card ejected from slot 0
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: remove, state 4
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: roothub graceful disconnect
Feb  2 12:06:15 linux-daoy kernel: usb usb6: USB disconnect, address 1
Feb  2 12:06:15 linux-daoy kernel: usb usb6: unregistering device
Feb  2 12:06:15 linux-daoy kernel: usb usb6: usb_disable_device nuking all URBs
Feb  2 12:06:15 linux-daoy kernel: usb usb6: unregistering interface 6-0:1.0
Feb  2 12:06:15 linux-daoy kernel: usb 6-0:1.0: uevent
Feb  2 12:06:15 linux-daoy kernel: usb usb6: uevent
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: OHCI controller state
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: OHCI 3.15, NO legacy support registers
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: control 0xffffffff RWE RWC IR HCFS=suspend BLE CLE IE PLE CBSR=3
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: cmdstatus 0xffffffff SOC=3 OCR BLF CLF HCR
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: intrstatus 0xffffffff MIE OC RHSC FNO UE RD SF WDH SO
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: intrenable 0xffffffff MIE OC RHSC FNO UE RD SF WDH SO
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: ed_periodcurrent ffffffff
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: ed_controlhead ffffffff
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: ed_controlcurrent ffffffff
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: ed_bulkhead ffffffff
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: ed_bulkcurrent ffffffff
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: donehead ffffffff
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: hcca frame #044e
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: USB bus 6 deregistered

First controller gone.

Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.0: PCI INT A disabled

Interrupt shut down.

Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.1: remove, state 1
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.1: roothub graceful disconnect
Feb  2 12:06:15 linux-daoy kernel: usb usb7: USB disconnect, address 1
Feb  2 12:06:15 linux-daoy kernel: usb 7-1: USB disconnect, address 2
Feb  2 12:06:15 linux-daoy kernel: usb 7-1: unregistering device
Feb  2 12:06:15 linux-daoy kernel: usb 7-1: usb_disable_device nuking all URBs
Feb  2 12:06:15 linux-daoy kernel: ohci_hcd 0000:03:00.1: shutdown urb f61a0b40 ep1in-intr

The second controller is being shut down and hangs in usb_kill_urb(), as
the interrupt is never delivered. A sysrq-t trace confirms that:

Feb  2 10:50:13 linux-daoy kernel: pccardctl     D 0000002d     0  3494   3457
Feb  2 10:50:13 linux-daoy kernel:  ec0e3d40 00000082 4603a759 0000002d f6100580 ec0e3ca8 c0431078 c0508804
Feb  2 10:50:13 linux-daoy kernel:  c050b600 c050b600 c050b600 ec0e3cd8 f6002e90 f60030f0 c1806600 00000001
Feb  2 10:50:13 linux-daoy kernel:  461143c4 0000002d ec0e3cdc c0116ec9 ec0e3cec 00000286 f61b0cec f61b0c00
Feb  2 10:50:13 linux-daoy kernel: Call Trace:
Feb  2 10:50:13 linux-daoy kernel:  [<c0116ec9>] ? default_spin_lock_flags+0x8/0xb
Feb  2 10:50:13 linux-daoy kernel:  [<f8151749>] ? ohci_urb_dequeue+0xb3/0xbe [ohci_hcd]
Feb  2 10:50:13 linux-daoy kernel:  [<c01f5062>] ? kobject_put+0x37/0x3c
Feb  2 10:50:13 linux-daoy kernel:  [<c0116ec9>] ? default_spin_lock_flags+0x8/0xb
Feb  2 10:50:13 linux-daoy kernel:  [<f80393e0>] ? usb_put_dev+0xf/0x11 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<c01390fc>] ? prepare_to_wait+0x43/0x48
Feb  2 10:50:13 linux-daoy kernel:  [<f803fa74>] usb_kill_urb+0x86/0xa3 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<c0138fab>] ? autoremove_wake_function+0x0/0x33
Feb  2 10:50:13 linux-daoy kernel:  [<f803e5b0>] usb_hcd_flush_endpoint+0x170/0x18a [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<f804036c>] usb_disable_endpoint+0x3c/0x49 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<f80403da>] usb_disable_device+0x61/0x125 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<f803bd45>] usb_disconnect+0xa2/0x118 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<f803bd21>] usb_disconnect+0x7e/0x118 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<f803dc30>] usb_remove_hcd+0xaa/0x102 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<f80483bd>] usb_hcd_pci_remove+0x18/0x87 [usbcore]
Feb  2 10:50:13 linux-daoy kernel:  [<c0204c81>] pci_device_remove+0x19/0x39
Feb  2 10:50:13 linux-daoy kernel:  [<c02669c9>] __device_release_driver+0x61/0x7e
Feb  2 10:50:13 linux-daoy kernel:  [<c0266a97>] device_release_driver+0x1b/0x26
Feb  2 10:50:13 linux-daoy kernel:  [<c026625d>] bus_remove_device+0x75/0x8f
Feb  2 10:50:13 linux-daoy kernel:  [<c0264fe5>] device_del+0xf1/0x148
Feb  2 10:50:13 linux-daoy kernel:  [<c0265047>] device_unregister+0xb/0x15
Feb  2 10:50:13 linux-daoy kernel:  [<c02010e7>] pci_stop_dev+0x23/0x2d
Feb  2 10:50:13 linux-daoy kernel:  [<c02011ac>] pci_remove_bus_device+0x2b/0x93
Feb  2 10:50:13 linux-daoy kernel:  [<c0201230>] pci_remove_behind_bridge+0x1c/0x30
Feb  2 10:50:13 linux-daoy kernel:  [<f7f831f3>] cb_free+0x3b/0x3f [pcmcia_core]
Feb  2 10:50:13 linux-daoy kernel:  [<f7f80527>] socket_shutdown+0x77/0xd7 [pcmcia_core]
Feb  2 10:50:13 linux-daoy kernel:  [<f7f806d4>] socket_remove+0x32/0x3c [pcmcia_core]
Feb  2 10:50:13 linux-daoy kernel:  [<f7f80720>] pcmcia_eject_card+0x42/0x50 [pcmcia_core]
Feb  2 10:50:13 linux-daoy kernel:  [<f7f82dcd>] pccard_store_eject+0x1d/0x26 [pcmcia_core]
Feb  2 10:50:13 linux-daoy kernel:  [<f7f82db0>] ? pccard_store_eject+0x0/0x26 [pcmcia_core]
Feb  2 10:50:13 linux-daoy kernel:  [<c02644c5>] dev_attr_store+0x1b/0x23
Feb  2 10:50:13 linux-daoy kernel:  [<c01c6333>] sysfs_write_file+0xb0/0xdb
Feb  2 10:50:13 linux-daoy kernel:  [<c01c6283>] ? sysfs_write_file+0x0/0xdb
Feb  2 10:50:13 linux-daoy kernel:  [<c0189568>] vfs_write+0x8c/0x136
Feb  2 10:50:13 linux-daoy kernel:  [<c018772b>] ? do_sys_open+0xb3/0xbd
Feb  2 10:50:13 linux-daoy kernel:  [<c01896ab>] sys_write+0x3b/0x60
Feb  2 10:50:13 linux-daoy kernel:  [<c01031eb>] sysenter_do_call+0x12/0x2f

At this point it looks like a generic PCI, not a USB problem.

	Regards
		Oliver



More information about the linux-pcmcia mailing list