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