Hi, On Mon, Apr 10, 2023 at 9:59 AM Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> wrote: > > Move GMU mutex initialization earlier to make sure that it is always > initialized. a6xx_destroy can be called from ther failure path before > GMU initialization. > > This fixes the following backtrace: > > ------------[ cut here ]------------ > DEBUG_LOCKS_WARN_ON(lock->magic != lock) > WARNING: CPU: 0 PID: 58 at kernel/locking/mutex.c:582 __mutex_lock+0x1ec/0x3d0 > Modules linked in: > CPU: 0 PID: 58 Comm: kworker/u16:1 Not tainted 6.3.0-rc5-00155-g187c06436519 #565 > Hardware name: Qualcomm Technologies, Inc. SM8350 HDK (DT) > Workqueue: events_unbound deferred_probe_work_func > pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) > pc : __mutex_lock+0x1ec/0x3d0 > lr : __mutex_lock+0x1ec/0x3d0 > sp : ffff800008993620 > x29: ffff800008993620 x28: 0000000000000002 x27: ffff47b253c52800 > x26: 0000000001000606 x25: ffff47b240bb2810 x24: fffffffffffffff4 > x23: 0000000000000000 x22: ffffc38bba15ac14 x21: 0000000000000002 > x20: ffff800008993690 x19: ffff47b2430cc668 x18: fffffffffffe98f0 > x17: 6f74616c75676572 x16: 20796d6d75642067 x15: 0000000000000038 > x14: 0000000000000000 x13: ffffc38bbba050b8 x12: 0000000000000666 > x11: 0000000000000222 x10: ffffc38bbba603e8 x9 : ffffc38bbba050b8 > x8 : 00000000ffffefff x7 : ffffc38bbba5d0b8 x6 : 0000000000000222 > x5 : 000000000000bff4 x4 : 40000000fffff222 x3 : 0000000000000000 > x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff47b240cb1880 > Call trace: > __mutex_lock+0x1ec/0x3d0 > mutex_lock_nested+0x2c/0x38 > a6xx_destroy+0xa0/0x138 > a6xx_gpu_init+0x41c/0x618 > adreno_bind+0x188/0x290 > component_bind_all+0x118/0x248 > msm_drm_bind+0x1c0/0x670 > try_to_bring_up_aggregate_device+0x164/0x1d0 > __component_add+0xa8/0x16c > component_add+0x14/0x20 > dsi_dev_attach+0x20/0x2c > dsi_host_attach+0x9c/0x144 > devm_mipi_dsi_attach+0x34/0xac > lt9611uxc_attach_dsi.isra.0+0x84/0xfc > lt9611uxc_probe+0x5b8/0x67c > i2c_device_probe+0x1ac/0x358 > really_probe+0x148/0x2ac > __driver_probe_device+0x78/0xe0 > driver_probe_device+0x3c/0x160 > __device_attach_driver+0xb8/0x138 > bus_for_each_drv+0x84/0xe0 > __device_attach+0x9c/0x188 > device_initial_probe+0x14/0x20 > bus_probe_device+0xac/0xb0 > deferred_probe_work_func+0x8c/0xc8 > process_one_work+0x2bc/0x594 > worker_thread+0x228/0x438 > kthread+0x108/0x10c > ret_from_fork+0x10/0x20 > irq event stamp: 299345 > hardirqs last enabled at (299345): [<ffffc38bb9ba61e4>] put_cpu_partial+0x1c8/0x22c > hardirqs last disabled at (299344): [<ffffc38bb9ba61dc>] put_cpu_partial+0x1c0/0x22c > softirqs last enabled at (296752): [<ffffc38bb9890434>] _stext+0x434/0x4e8 > softirqs last disabled at (296741): [<ffffc38bb989669c>] ____do_softirq+0x10/0x1c > ---[ end trace 0000000000000000 ]--- > > Fixes: 4cd15a3e8b36 ("drm/msm/a6xx: Make GPU destroy a bit safer") > Cc: Douglas Anderson <dianders@xxxxxxxxxxxx> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > --- > drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 2 -- > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 ++ > 2 files changed, 2 insertions(+), 2 deletions(-) Sorry for the breakage and thanks for the fix! Reviewed-by: Douglas Anderson <dianders@xxxxxxxxxxxx>