Comment 0 for bug 1061599

Paolo Pisati (p-pisati) wrote :

Since the 3.5 tree, usb ehci for omap3 has been plagued with problems up to the point that it was disabled upstream:

[flag@newluxor linux-2.6]$ git show 06b4ba5
commit 06b4ba529528fbf9c24ce37b7618f4b0264750e2
Author: Kevin Hilman <email address hidden>
Date: Fri Jul 6 11:20:28 2012 -0700

    ARM: OMAP2+: omap2plus_defconfig: EHCI driver is not stable, disable it

    The EHCI driver is not stable enough to be enabled by default. In v3.5,
    it has at least the following problems:

    - warning dump during bootup
    - hang during suspend
    - prevents CORE powerdomain from entering retention during idle (even
      when no USB devices connected.)

    This demonstrates that this driver has not been thoroughly tested and
    therfore should not be enabled in the default defconfig.

    In addition, the problems above cause new PM regressions which need be
    addressed before this driver should be enabled in the default
    defconfig.

    Signed-off-by: Kevin Hilman <email address hidden>
    Signed-off-by: Tony Lindgren <email address hidden>

and lately this situation has spiraled down to the point where enabling it at boot triggers an oops and a subsequent dead usb hub:

vanilla 3.5 omap2plus_defconfig + ehci:

...
[ 4.200103] omap_wdt: OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec
[ 4.208526] twl4030_wdt twl4030_wdt: Failed to register misc device
[ 4.215240] twl4030_wdt: probe of twl4030_wdt failed with error -16
[ 4.225860] omap_hsmmc omap_hsmmc.0: Failed to get debounce clk
[ 4.262084] hub 1-0:1.0: state 7 ports 3 chg 0004 evt 0000
[ 4.267913] hub 1-0:1.0: port 2, status 0501, change 0000, 480 Mb/s
[ 4.332305] platform ehci-omap.0: port 2 reset complete, port enabled
[ 4.339050] platform ehci-omap.0: GetStatus port:2 status 001005 0 ACK POWER sig=se0 PE CONNECT
[ 4.410400] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 4.418884] pgd = c0004000
[ 4.421722] [00000000] *pgd=00000000
[ 4.425476] Internal error: Oops: 5 [#1] SMP ARM
[ 4.430297] Modules linked in:
[ 4.433471] CPU: 0 Not tainted (3.5.0 #16)
[ 4.438110] PC is at hub_port_init+0x28c/0x968
[ 4.442749] LR is at hub_port_init+0xc4/0x968
[ 4.447296] pc : [<c030b2bc>] lr : [<c030b0f4>] psr: 60000013
[ 4.447296] sp : df905eb8 ip : c05a9eb4 fp : 00000000
[ 4.459259] r10: 00000000 r9 : df306400 r8 : 00000032
[ 4.464691] r7 : df30ac00 r6 : 00000002 r5 : 00000000 r4 : df2a7400
[ 4.471496] r3 : 00000000 r2 : c059e324 r1 : c059e348 r0 : df2a7468
[ 4.478302] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
[ 4.485900] Control: 10c5387d Table: 80004019 DAC: 00000017
[ 4.491912] Process khubd (pid: 236, stack limit = 0xdf9042f8)
[ 4.497985] Stack: (0xdf905eb8 to 0xdf906000)
[ 4.502532] 5ea0: 00000002 df306400
[ 4.511047] 5ec0: 00000002 00000000 00000004 c008a078 00000001 00000002 00000003 df300400
[ 4.519561] 5ee0: 00000000 c044acb0 00000001 df2a7400 df30ac00 df300400 df300418 df306400
[ 4.528106] 5f00: 00000002 00000000 00000002 c030eb30 00000501 00000000 c059f090 c0656600
[ 4.536621] 5f20: 107e9dd6 00000000 df306408 df30a820 df30ac9c df30a800 00000004 df306401
[ 4.545135] 5f40: df306470 df30ac00 df306468 df30ac00 df30a820 df300400 00000009 c0065144
[ 4.553680] 5f60: 00000000 df904000 00000000 df88c100 c005cff4 df905f74 df905f74 00000000
[ 4.562194] 5f80: 00000501 c008a078 df82ff20 df82fef8 00000000 c030e4c0 00000013 00000000
[ 4.570709] 5fa0: 00000000 00000000 00000000 c005c8f8 00000000 00000000 00000000 00000000
[ 4.579254] 5fc0: 00000000 dead4ead ffffffff ffffffff c0700330 00000000 00000000 c0561550
[ 4.587768] 5fe0: df905fe0 df905fe0 df82fef8 c005c874 c0014154 c0014154 00000000 00000000
[ 4.596313] [<c030b2bc>] (hub_port_init+0x28c/0x968) from [<c030eb30>] (hub_thread+0x670/0x13d8)
[ 4.605468] [<c030eb30>] (hub_thread+0x670/0x13d8) from [<c005c8f8>] (kthread+0x84/0x90)
[ 4.613922] [<c005c8f8>] (kthread+0x84/0x90) from [<c0014154>] (kernel_thread_exit+0x0/0x8)
[ 4.622619] Code: e59f2690 e5933080 e2840068 e59f1688 (e593e000)
[ 4.629089] ---[ end trace 6fcdeaed28ce1f31 ]---
[ 4.790161] usbcore: registered new interface driver usbhid
...

ATM there's no activity upstream to resolve this bug in a sound way so for Q we have two options:

1) we disable ehci - we get back the usb ports but loose the network card since it requires ehci

2) we apply a patch that was posted on the linux-omap ml but never entered upstream - (http://comments.gmane.org/gmane.linux.ports.arm.omap/81579)

the tentative patch doesn't touch anything outside the omap3 usb cloks so it can't harm any other flavour so i'm for giving it a chance and rip it off later if it causes problems or when a proper fix show up.