• Padmanabha Srinivasaiah's avatar
    drm/vc4: Fix deadlock on DSI device attach error · 0a3d12ab
    Padmanabha Srinivasaiah authored
    DSI device attach to DSI host will be done with host device's lock
    held.
    
    Un-registering host in "device attach" error path (ex: probe retry)
    will result in deadlock with below call trace and non operational
    DSI display.
    
    Startup Call trace:
    [   35.043036]  rt_mutex_slowlock.constprop.21+0x184/0x1b8
    [   35.043048]  mutex_lock_nested+0x7c/0xc8
    [   35.043060]  device_del+0x4c/0x3e8
    [   35.043075]  device_unregister+0x20/0x40
    [   35.043082]  mipi_dsi_remove_device_fn+0x18/0x28
    [   35.043093]  device_for_each_child+0x68/0xb0
    [   35.043105]  mipi_dsi_host_unregister+0x40/0x90
    [   35.043115]  vc4_dsi_host_attach+0xf0/0x120 [vc4]
    [   35.043199]  mipi_dsi_attach+0x30/0x48
    [   35.043209]  tc358762_probe+0x128/0x164 [tc358762]
    [   35.043225]  mipi_dsi_drv_probe+0x28/0x38
    [   35.043234]  really_probe+0xc0/0x318
    [   35.043244]  __driver_probe_device+0x80/0xe8
    [   35.043254]  driver_probe_device+0xb8/0x118
    [   35.043263]  __device_attach_driver+0x98/0xe8
    [   35.043273]  bus_for_each_drv+0x84/0xd8
    [   35.043281]  __device_attach+0xf0/0x150
    [   35.043290]  device_initial_probe+0x1c/0x28
    [   35.043300]  bus_probe_device+0xa4/0xb0
    [   35.043308]  deferred_probe_work_func+0xa0/0xe0
    [   35.043318]  process_one_work+0x254/0x700
    [   35.043330]  worker_thread+0x4c/0x448
    [   35.043339]  kthread+0x19c/0x1a8
    [   35.043348]  ret_from_fork+0x10/0x20
    
    Shutdown Call trace:
    [  365.565417] Call trace:
    [  365.565423]  __switch_to+0x148/0x200
    [  365.565452]  __schedule+0x340/0x9c8
    [  365.565467]  schedule+0x48/0x110
    [  365.565479]  schedule_timeout+0x3b0/0x448
    [  365.565496]  wait_for_completion+0xac/0x138
    [  365.565509]  __flush_work+0x218/0x4e0
    [  365.565523]  flush_work+0x1c/0x28
    [  365.565536]  wait_for_device_probe+0x68/0x158
    [  365.565550]  device_shutdown+0x24/0x348
    [  365.565561]  kernel_restart_prepare+0x40/0x50
    [  365.565578]  kernel_restart+0x20/0x70
    [  365.565591]  __do_sys_reboot+0x10c/0x220
    [  365.565605]  __arm64_sys_reboot+0x2c/0x38
    [  365.565619]  invoke_syscall+0x4c/0x110
    [  365.565634]  el0_svc_common.constprop.3+0xfc/0x120
    [  365.565648]  do_el0_svc+0x2c/0x90
    [  365.565661]  el0_svc+0x4c/0xf0
    [  365.565671]  el0t_64_sync_handler+0x90/0xb8
    [  365.565682]  el0t_64_sync+0x180/0x184
    Signed-off-by: default avatarPadmanabha Srinivasaiah <treasure4paddy@gmail.com>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220118005127.29015-1-treasure4paddy@gmail.com
    0a3d12ab
vc4_dsi.c 50 KB