New issue
Advanced search Search tips

Issue 782876 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Deadlock between xhci_stop_device(), usb_add_hcd(), and usb_remove_hcd()

Project Member Reported by groeck@chromium.org, Nov 8 2017

Issue description

Test script:

abort=0

inthandler()
{
	echo "Aborting ..."
	abort=1
}

trap inthandler INT QUIT KILL TSTP TERM

ports=("usb@fe800000" "usb@fe900000")
usbdir="/sys/bus/platform/drivers/rockchip-dwc3"

while [ ${abort} -eq 0 ]
do
    for p in ${ports[@]}; do
        echo $p > ${usbdir}/unbind
	sleep 0.1
        echo $p > ${usbdir}/bind
    done
    to=$(echo "scale=2;$(($RANDOM % 50))/100" | bc -q)
    to=$(echo "scale=2;${to}+0.5" | bc -q)
    sleep ${to}
done

Running this script on kevin for 16+ hours resulted in the following hung task report and crash.

[58560.846669] INFO: task bash:3345 blocked for more than 120 seconds.
[58560.853039]       Not tainted 4.4.92 #663
[58560.857457] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[58560.865373] bash            D ffffffc000205c78     0  3345   3182 0x00400008
[58560.872723] Call trace:
[58560.875288] [<ffffffc000205c78>] __switch_to+0xf4/0x108
[58560.880897] [<ffffffc000c17964>] __schedule+0x788/0xa90
[58560.886207] [<ffffffc000c17d40>] schedule+0xd4/0x104
[58560.891327] [<ffffffc000789528>] __pm_runtime_barrier+0x13c/0x17c
[58560.897850] [<ffffffc00078ab4c>] pm_runtime_barrier+0x7c/0xe4
[58560.903920] [<ffffffc0008078b0>] usb_disconnect+0x74/0x294
[58560.909429] [<ffffffc000807910>] usb_disconnect+0xd4/0x294
[58560.914941] [<ffffffc00080d3a4>] usb_remove_hcd+0x10c/0x2a8
[58560.920538] [<ffffffc000865c34>] xhci_plat_remove+0xbc/0x104
[58560.926219] [<ffffffc00077d18c>] platform_drv_remove+0x48/0x6c
[58560.932192] [<ffffffc00077ab84>] __device_release_driver+0x10c/0x1a8
[58560.938699] [<ffffffc00077ac4c>] device_release_driver+0x2c/0x40
[58560.944721] [<ffffffc00077985c>] bus_remove_device+0x1d8/0x200
[58560.950593] [<ffffffc0007758b0>] device_del+0x218/0x2d0
[58560.955867] [<ffffffc00077d850>] platform_device_del+0x2c/0xd4
[58560.961731] [<ffffffc00077d918>] platform_device_unregister+0x20/0x34
[58560.968195] [<ffffffc00082b6d4>] dwc3_host_exit+0xbc/0xd0
[58560.973637] [<ffffffc000827530>] dwc3_remove+0x90/0xe4
[58560.978816] [<ffffffc00077d18c>] platform_drv_remove+0x48/0x6c
[58560.984663] [<ffffffc00077ab84>] __device_release_driver+0x10c/0x1a8
[58560.991021] [<ffffffc00077ac4c>] device_release_driver+0x2c/0x40
[58560.997044] [<ffffffc00077985c>] bus_remove_device+0x1d8/0x200
[58561.002882] [<ffffffc0007758b0>] device_del+0x218/0x2d0
[58561.008126] [<ffffffc00077d850>] platform_device_del+0x2c/0xd4
[58561.013970] [<ffffffc00077d918>] platform_device_unregister+0x20/0x34
[58561.020430] [<ffffffc0009a82f0>] of_platform_device_destroy+0x8c/0xf4
[58561.026875] [<ffffffc0007748b8>] device_for_each_child+0x88/0xbc
[58561.032911] [<ffffffc0009a823c>] of_platform_depopulate+0x54/0x7c
[58561.039030] [<ffffffc00082c7d8>] dwc3_rockchip_remove+0x7c/0x14c
[58561.045078] [<ffffffc00077d18c>] platform_drv_remove+0x48/0x6c
[58561.050924] [<ffffffc00077ab84>] __device_release_driver+0x10c/0x1a8
[58561.057310] [<ffffffc00077ac4c>] device_release_driver+0x2c/0x40
[58561.063342] [<ffffffc000778eac>] unbind_store+0x88/0xc4
[58561.068589] [<ffffffc0007778d0>] drv_attr_store+0x54/0x64
[58561.074002] [<ffffffc00046e710>] sysfs_kf_write+0x9c/0xb0
[58561.079421] [<ffffffc00046d18c>] kernfs_fop_write+0x184/0x1f8
[58561.085176] [<ffffffc0003d5040>] __vfs_write+0x6c/0x17c
[58561.090416] [<ffffffc0003d5cb0>] vfs_write+0xf0/0x1c4
[58561.095482] [<ffffffc0003d68ec>] SyS_write+0x78/0xd8
[58561.100471] [<ffffffc000204634>] el0_svc_naked+0x24/0x28
[58561.105787]   task                        PC stack   pid father
[58561.112020] bash            D ffffffc000205c78     0  3345   3182 0x00400008
[58561.119131] Call trace:
[58561.121604] [<ffffffc000205c78>] __switch_to+0xf4/0x108
[58561.126837] [<ffffffc000c17964>] __schedule+0x788/0xa90
[58561.132092] [<ffffffc000c17d40>] schedule+0xd4/0x104
[58561.137074] [<ffffffc000789528>] __pm_runtime_barrier+0x13c/0x17c
[58561.143184] [<ffffffc00078ab4c>] pm_runtime_barrier+0x7c/0xe4
[58561.148940] [<ffffffc0008078b0>] usb_disconnect+0x74/0x294
[58561.154445] [<ffffffc000807910>] usb_disconnect+0xd4/0x294
[58561.159938] [<ffffffc00080d3a4>] usb_remove_hcd+0x10c/0x2a8
[58561.165544] [<ffffffc000865c34>] xhci_plat_remove+0xbc/0x104
[58561.171229] [<ffffffc00077d18c>] platform_drv_remove+0x48/0x6c
[58561.177078] [<ffffffc00077ab84>] __device_release_driver+0x10c/0x1a8
[58561.183437] [<ffffffc00077ac4c>] device_release_driver+0x2c/0x40
[58561.189459] [<ffffffc00077985c>] bus_remove_device+0x1d8/0x200
[58561.195302] [<ffffffc0007758b0>] device_del+0x218/0x2d0
[58561.200552] [<ffffffc00077d850>] platform_device_del+0x2c/0xd4
[58561.206397] [<ffffffc00077d918>] platform_device_unregister+0x20/0x34
[58561.212856] [<ffffffc00082b6d4>] dwc3_host_exit+0xbc/0xd0
[58561.218265] [<ffffffc000827530>] dwc3_remove+0x90/0xe4
[58561.223417] [<ffffffc00077d18c>] platform_drv_remove+0x48/0x6c
[58561.229260] [<ffffffc00077ab84>] __device_release_driver+0x10c/0x1a8
[58561.235632] [<ffffffc00077ac4c>] device_release_driver+0x2c/0x40
[58561.241645] [<ffffffc00077985c>] bus_remove_device+0x1d8/0x200
[58561.247495] [<ffffffc0007758b0>] device_del+0x218/0x2d0
[58561.252735] [<ffffffc00077d850>] platform_device_del+0x2c/0xd4
[58561.258581] [<ffffffc00077d918>] platform_device_unregister+0x20/0x34
[58561.265040] [<ffffffc0009a82f0>] of_platform_device_destroy+0x8c/0xf4
[58561.271499] [<ffffffc0007748b8>] device_for_each_child+0x88/0xbc
[58561.277515] [<ffffffc0009a823c>] of_platform_depopulate+0x54/0x7c
[58561.283624] [<ffffffc00082c7d8>] dwc3_rockchip_remove+0x7c/0x14c
[58561.289638] [<ffffffc00077d18c>] platform_drv_remove+0x48/0x6c
[58561.295489] [<ffffffc00077ab84>] __device_release_driver+0x10c/0x1a8
[58561.301854] [<ffffffc00077ac4c>] device_release_driver+0x2c/0x40
[58561.307872] [<ffffffc000778eac>] unbind_store+0x88/0xc4
[58561.313106] [<ffffffc0007778d0>] drv_attr_store+0x54/0x64
[58561.318524] [<ffffffc00046e710>] sysfs_kf_write+0x9c/0xb0
[58561.323933] [<ffffffc00046d18c>] kernfs_fop_write+0x184/0x1f8
[58561.329698] [<ffffffc0003d5040>] __vfs_write+0x6c/0x17c
[58561.334935] [<ffffffc0003d5cb0>] vfs_write+0xf0/0x1c4
[58561.340005] [<ffffffc0003d68ec>] SyS_write+0x78/0xd8
[58561.344982] [<ffffffc000204634>] el0_svc_naked+0x24/0x28
[58561.350332] kworker/2:2     D ffffffc000205c78     0 13800      2 0x00000000
[58561.357443] Workqueue: events dwc3_rockchip_otg_extcon_evt_work
[58561.363387] Call trace:
[58561.365852] [<ffffffc000205c78>] __switch_to+0xf4/0x108
[58561.371100] [<ffffffc000c17964>] __schedule+0x788/0xa90
[58561.376333] [<ffffffc000c17d40>] schedule+0xd4/0x104
[58561.381317] [<ffffffc000c1821c>] schedule_preempt_disabled+0x34/0x5c
[58561.387679] [<ffffffc000c1b168>] __mutex_lock_slowpath+0x398/0x494
[58561.393876] [<ffffffc000c1b2d0>] mutex_lock+0x6c/0x78
[58561.398940] [<ffffffc00080d6cc>] usb_add_hcd+0x18c/0xad8
[58561.404274] [<ffffffc0008661e4>] xhci_plat_probe+0x568/0x738
[58561.409941] [<ffffffc00077d22c>] platform_drv_probe+0x7c/0xd0
[58561.415707] [<ffffffc00077a630>] driver_probe_device+0x180/0x3b4
[58561.421720] [<ffffffc00077aa4c>] __device_attach_driver+0xb4/0xe0
[58561.427825] [<ffffffc000777d7c>] bus_for_each_drv+0xb4/0xe4
[58561.433415] [<ffffffc00077a3f8>] __device_attach+0xd0/0x158
[58561.439005] [<ffffffc00077ac84>] device_initial_probe+0x24/0x30
[58561.444935] [<ffffffc0007795f0>] bus_probe_device+0x50/0xe4
[58561.450525] [<ffffffc00077677c>] device_add+0x414/0x738
[58561.455759] [<ffffffc00077d00c>] platform_device_add+0x234/0x2d8
[58561.461792] [<ffffffc00082b54c>] dwc3_host_init+0x294/0x360
[58561.467377] [<ffffffc000829780>] dwc3_probe+0x10a4/0x1150
[58561.472797] [<ffffffc00077d22c>] platform_drv_probe+0x7c/0xd0
[58561.478549] [<ffffffc00077a630>] driver_probe_device+0x180/0x3b4
[58561.484570] [<ffffffc00077aa4c>] __device_attach_driver+0xb4/0xe0
[58561.490673] [<ffffffc000777d7c>] bus_for_each_drv+0xb4/0xe4
[58561.496259] [<ffffffc00077a3f8>] __device_attach+0xd0/0x158
[58561.501835] [<ffffffc00077ac84>] device_initial_probe+0x24/0x30
[58561.507764] [<ffffffc0007795f0>] bus_probe_device+0x50/0xe4
[58561.513351] [<ffffffc00077677c>] device_add+0x414/0x738
[58561.518597] [<ffffffc0009a7ed0>] of_device_add+0x74/0x84
[58561.523922] [<ffffffc0009a873c>] of_platform_device_create_pdata+0xc0/0x100
[58561.530893] [<ffffffc0009a8a98>] of_platform_bus_create+0x2dc/0x388
[58561.537165] [<ffffffc0009a8c8c>] of_platform_populate+0x78/0xb4
[58561.543117] [<ffffffc00082c96c>] dwc3_rockchip_otg_extcon_evt_work+0xc4/0x1bc
[58561.550268] [<ffffffc000248c7c>] process_one_work+0x3dc/0x6b8
[58561.556032] [<ffffffc00024a194>] worker_thread+0x480/0x610
[58561.561537] [<ffffffc000251030>] kthread+0x18c/0x1a0
[58561.566523] [<ffffffc0002045d0>] ret_from_fork+0x10/0x40
[58561.571862] kworker/4:1     D ffffffc000205c78     0 29172      2 0x00000000
[58561.578997] Workqueue: pm pm_runtime_work
[58561.583030] Call trace:
[58561.585496] [<ffffffc000205c78>] __switch_to+0xf4/0x108
[58561.590740] [<ffffffc000c17964>] __schedule+0x788/0xa90
[58561.595973] [<ffffffc000c17d40>] schedule+0xd4/0x104
[58561.600954] [<ffffffc000c1cc78>] schedule_timeout+0x4c/0x32c
[58561.606624] [<ffffffc000c18d90>] wait_for_common+0x18c/0x250
[58561.612302] [<ffffffc000c18e7c>] wait_for_completion+0x28/0x34
[58561.618154] [<ffffffc0008614f0>] xhci_stop_device.constprop.12+0x140/0x1a8
[58561.625055] [<ffffffc0008629f8>] xhci_hub_control+0x1190/0x1860
[58561.630986] [<ffffffc00080f01c>] usb_hcd_submit_urb+0x7d8/0xab0
[58561.636922] [<ffffffc000810aa0>] usb_submit_urb+0x5e0/0x604
[58561.642503] [<ffffffc000811420>] usb_start_wait_urb+0x80/0x118
[58561.648350] [<ffffffc0008115f0>] usb_control_msg+0x138/0x188
[58561.654017] [<ffffffc000802890>] set_port_feature+0x64/0x7c
[58561.659609] [<ffffffc0008089ec>] usb_port_suspend+0x1d8/0x310
[58561.665365] [<ffffffc000822e28>] generic_suspend+0x60/0x74
[58561.670867] [<ffffffc000815dc0>] usb_suspend_both+0x270/0x2f0
[58561.676632] [<ffffffc000817190>] usb_runtime_suspend+0x3c/0x98
[58561.682489] [<ffffffc000788e54>] __rpm_callback+0x48/0x7c
[58561.687895] [<ffffffc000788f30>] rpm_callback+0xa8/0xd4
[58561.693142] [<ffffffc0007899c0>] rpm_suspend+0x3b4/0x688
[58561.698467] [<ffffffc00078affc>] __pm_runtime_suspend+0x8c/0xb0
[58561.704406] [<ffffffc00081724c>] usb_runtime_idle+0x30/0x40
[58561.709985] [<ffffffc000788e54>] __rpm_callback+0x48/0x7c
[58561.715399] [<ffffffc00078a094>] rpm_idle+0x32c/0x494
[58561.720485] [<ffffffc00078b14c>] pm_runtime_work+0x88/0xcc
[58561.725989] [<ffffffc000248c7c>] process_one_work+0x3dc/0x6b8
[58561.731747] [<ffffffc00024a194>] worker_thread+0x480/0x610
[58561.737257] [<ffffffc000251030>] kthread+0x18c/0x1a0
[58561.742237] [<ffffffc0002045d0>] ret_from_fork+0x10/0x40
[58561.747632] Kernel panic - not syncing: hung_task: blocked tasks
[58561.753641] CPU: 5 PID: 40 Comm: khungtaskd Not tainted 4.4.92 #663
[58561.759904] Hardware name: Google Kevin (DT)
[58561.764177] Call trace:
[58561.766633] [<ffffffc00020a584>] dump_backtrace+0x0/0x190
[58561.772031] [<ffffffc00020a854>] show_stack+0x20/0x28
[58561.777087] [<ffffffc0005d09a4>] dump_stack+0xa4/0xcc
[58561.782143] [<ffffffc000360514>] panic+0x11c/0x264
[58561.786939] [<ffffffc00030f670>] proc_dohung_task_timeout_secs+0x0/0x68
[58561.793550] [<ffffffc000251030>] kthread+0x18c/0x1a0
[58561.798518] [<ffffffc0002045d0>] ret_from_fork+0x10/0x40

 
console-ramoops
255 KB View Download
Above was with a v4.4.92 based kernel. Currently retesting with v4.4.96 based kernel. If we are lucky, the problem has been fixed with commit 3505478d6fec ("usb: xhci: Handle error condition in xhci_stop_device()"), which we just picked up from the merge of v4.4.96 into chromeos-4.4.

Comment 2 by groeck@chromium.org, Nov 13 2017

Status: WontFix (was: Assigned)
#1 is confirmed; a test run over the weekend shows that the problem is no longer seen. Marking as WontFix (can not reproduce).


Sign in to add a comment