Regression in 5.15-rc6 - WARNING: possible circular locking dependency detected
Francesco Dolcini
francesco.dolcini at toradex.com
Fri Oct 22 09:31:28 PDT 2021
Hello all,
I just had a kernel WARNING doing a quick boot test with 5.15-rc6, the issue
seems reproducible at every boot. NXP i.MX6 CPU, Apalis iMX6D 1GB board,
arch/arm/boot/dts/imx6q-apalis-eval.dts, imx_v6_v7_defconfig.
# cat /proc/version
Linux version 5.15.0-rc6 (francesco at francesco-nb) (arm-linux-gnueabihf-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #5 SMP Fri Oct 22 18:05:46 CEST 2021
Linux 5.14.14 boots without any warning, no idea on any previous 5.15 rc. I was
not able to bisect when this issue was introduced (and I'm not sure when I'll
have the time to do it).
Any idea?
[ 6.294686] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops ipu_crtc_ops)
[ 6.303115] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops ipu_crtc_ops)
[ 6.311727] imx-drm display-subsystem: bound imx-ipuv3-crtc.6 (ops ipu_crtc_ops)
[ 6.320037] imx-drm display-subsystem: bound imx-ipuv3-crtc.7 (ops ipu_crtc_ops)
[ 6.329265] imx-drm display-subsystem: bound 120000.hdmi (ops dw_hdmi_imx_ops)
[ 6.337159] imx-drm display-subsystem: bound disp0 (ops imx_pd_ops)
[ 6.348908] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
[ 6.381584]
[ 6.381602] WARNING: possible circular locking dependency detected
[ 6.381608] 5.15.0-rc6 #5 Not tainted
[ 6.381616] ------------------------------------------------------
[ 6.381622] kworker/u4:0/7 is trying to acquire lock:
[ 6.381630] c1752428 (regulator_list_mutex){+.+.}-{3:3}, at: regulator_lock_dependent+0x40/0x294
[ 6.381672]
[ 6.381672] but task is already holding lock:
[ 6.381678] c176e548 (dma_fence_map){++++}-{0:0}, at: imx_drm_atomic_commit_tail+0x10/0x160
[ 6.381717]
[ 6.381717] which lock already depends on the new lock.
[ 6.381717]
[ 6.381722]
[ 6.381722] the existing dependency chain (in reverse order) is:
[ 6.381727]
[ 6.381727] -> #3 (dma_fence_map){++++}-{0:0}:
[ 6.381749] dma_resv_lockdep+0x1c4/0x2b8
[ 6.381763] do_one_initcall+0x78/0x388
[ 6.381780] kernel_init_freeable+0x198/0x22c
[ 6.381798] kernel_init+0x10/0x128
[ 6.381813] ret_from_fork+0x14/0x38
[ 6.381824] 0x0
[ 6.381833]
[ 6.381833] -> #2 (fs_reclaim){+.+.}-{0:0}:
[ 6.381856] kmem_cache_alloc+0x28/0x384
[ 6.381867] __d_alloc+0x20/0x224
[ 6.381883] d_alloc+0x10/0x60
[ 6.381894] d_alloc_parallel+0x48/0xa60
[ 6.381908] __lookup_slow+0x8c/0x178
[ 6.381926] lookup_one_len+0xa0/0xe8
[ 6.381937] start_creating+0x94/0x14c
[ 6.381955] debugfs_create_dir+0x10/0x114
[ 6.381967] pinctrl_init+0x1c/0xd4
[ 6.381979] do_one_initcall+0x78/0x388
[ 6.381990] kernel_init_freeable+0x198/0x22c
[ 6.382005] kernel_init+0x10/0x128
[ 6.382016] ret_from_fork+0x14/0x38
[ 6.382026] 0x0
[ 6.382033]
[ 6.382033] -> #1 (&sb->s_type->i_mutex_key#2){+.+.}-{3:3}:
[ 6.382064] simple_recursive_removal+0x54/0x35c
[ 6.382081] debugfs_remove+0x30/0x4c
[ 6.382093] _regulator_put.part.0+0x30/0x1d8
[ 6.382105] regulator_put+0x2c/0x3c
[ 6.382113] sgtl5000_i2c_probe+0x70/0x644
[ 6.382129] i2c_device_probe+0x288/0x2bc
[ 6.382151] really_probe+0x14c/0x320
[ 6.382169] __driver_probe_device+0x80/0xe4
[ 6.382181] driver_probe_device+0x30/0xd4
[ 6.382193] __driver_attach+0x70/0xf4
[ 6.382204] bus_for_each_dev+0x74/0xc0
[ 6.382217] bus_add_driver+0x150/0x1dc
[ 6.382229] driver_register+0x74/0x108
[ 6.382240] i2c_register_driver+0x38/0x8c
[ 6.382254] do_one_initcall+0x78/0x388
[ 6.382266] kernel_init_freeable+0x198/0x22c
[ 6.382281] kernel_init+0x10/0x128
[ 6.382291] ret_from_fork+0x14/0x38
[ 6.382300] 0x0
[ 6.382306]
[ 6.382306] -> #0 (regulator_list_mutex){+.+.}-{3:3}:
[ 6.382326] lock_acquire+0x130/0x400
[ 6.382339] __mutex_lock+0x94/0xa40
[ 6.382353] mutex_lock_nested+0x1c/0x24
[ 6.382365] regulator_lock_dependent+0x40/0x294
[ 6.382375] regulator_enable+0x2c/0xec
[ 6.382387] panel_simple_resume+0x38/0x1f4
[ 6.382404] __rpm_callback+0x3c/0x108
[ 6.382422] rpm_callback+0x68/0x70
[ 6.382432] rpm_resume+0x5ec/0x7dc
[ 6.382441] __pm_runtime_resume+0x64/0x90
[ 6.382453] panel_simple_prepare+0x2c/0x50
[ 6.382465] imx_pd_bridge_enable+0x10/0x1c
[ 6.382477] drm_atomic_bridge_chain_enable+0x80/0xa4
[ 6.382492] drm_atomic_helper_commit_modeset_enables+0x12c/0x26c
[ 6.382515] imx_drm_atomic_commit_tail+0x3c/0x160
[ 6.382525] commit_tail+0x9c/0x190
[ 6.382538] drm_atomic_helper_commit+0x158/0x18c
[ 6.382550] drm_client_modeset_commit_atomic+0x238/0x284
[ 6.382568] drm_client_modeset_commit_locked+0x60/0x1cc
[ 6.382579] drm_client_modeset_commit+0x24/0x40
[ 6.382589] __drm_fb_helper_restore_fbdev_mode_unlocked+0x9c/0xc8
[ 6.382608] drm_fb_helper_set_par+0x38/0x68
[ 6.382620] fbcon_init+0x2bc/0x550
[ 6.382640] visual_init+0xbc/0x104
[ 6.382657] do_bind_con_driver+0x1c8/0x3b0
[ 6.382670] do_take_over_console+0x134/0x1f0
[ 6.382680] do_fbcon_takeover+0x60/0xc0
[ 6.382692] register_framebuffer+0x1c8/0x2e8
[ 6.382704] __drm_fb_helper_initial_config_and_unlock+0x3f8/0x644
[ 6.382718] drm_fbdev_client_hotplug+0xf8/0x194
[ 6.382730] drm_fbdev_generic_setup+0x9c/0x198
[ 6.382740] imx_drm_bind+0xdc/0x120
[ 6.382750] try_to_bring_up_master+0x15c/0x1a8
[ 6.382770] __component_add+0x94/0x140
[ 6.382781] imx_pd_probe+0x130/0x18c
[ 6.382791] platform_probe+0x58/0xb8
[ 6.382802] really_probe+0x14c/0x320
[ 6.382817] __driver_probe_device+0x80/0xe4
[ 6.382828] driver_probe_device+0x30/0xd4
[ 6.382839] __device_attach_driver+0x8c/0xb4
[ 6.382850] bus_for_each_drv+0x80/0xd0
[ 6.382861] __device_attach+0xec/0x160
[ 6.382873] bus_probe_device+0x88/0x90
[ 6.382883] deferred_probe_work_func+0x7c/0xac
[ 6.382894] process_one_work+0x298/0x7cc
[ 6.382913] worker_thread+0x30/0x50c
[ 6.382923] kthread+0x154/0x17c
[ 6.382935] ret_from_fork+0x14/0x38
[ 6.382944] 0x0
[ 6.382951]
[ 6.382951] other info that might help us debug this:
[ 6.382951]
[ 6.382956] Chain exists of:
[ 6.382956] regulator_list_mutex --> fs_reclaim --> dma_fence_map
[ 6.382956]
[ 6.382987] Possible unsafe locking scenario:
[ 6.382987]
[ 6.382992] CPU0 CPU1
[ 6.382996] ---- ----
[ 6.382999] lock(dma_fence_map);
[ 6.383009] lock(fs_reclaim);
[ 6.383021] lock(dma_fence_map);
[ 6.383032] lock(regulator_list_mutex);
[ 6.383042]
[ 6.383042] *** DEADLOCK ***
[ 6.383042]
[ 6.383045] 13 locks held by kworker/u4:0/7:
[ 6.383053] #0: c2006ca8 ((wq_completion)events_unbound){+.+.}-{0:0}, at: process_one_work+0x1ec/0x7cc
[ 6.383088] #1: c20c7f28 (deferred_probe_work){+.+.}-{0:0}, at: process_one_work+0x1ec/0x7cc
[ 6.383120] #2: c22cf0d8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x30/0x160
[ 6.383154] #3: c176a1a4 (component_mutex){+.+.}-{3:3}, at: __component_add+0x44/0x140
[ 6.383189] #4: c174cc3c (registration_lock){+.+.}-{3:3}, at: register_framebuffer+0x28/0x2e8
[ 6.383220] #5: c1618544 (console_lock){+.+.}-{0:0}, at: register_framebuffer+0x248/0x2e8
[ 6.383251] #6: c2bdfc48 (&fb_info->lock){+.+.}-{3:3}, at: register_framebuffer+0x1c0/0x2e8
[ 6.383282] #7: c292fb6c (&helper->lock){+.+.}-{3:3}, at: __drm_fb_helper_restore_fbdev_mode_unlocked+0x4c/0xc8
[ 6.383319] #8: c2ad00e8 (&dev->master_mutex){+.+.}-{3:3}, at: drm_master_internal_acquire+0x18/0x3c
[ 6.383356] #9: c292fa50 (&client->modeset_mutex){+.+.}-{3:3}, at: drm_client_modeset_commit_locked+0x20/0x1cc
[ 6.383394] #10: c20c7b18 (crtc_ww_class_acquire){+.+.}-{0:0}, at: drm_client_modeset_commit_atomic+0x34/0x284
[ 6.383429] #11: c2ad34a0 (crtc_ww_class_mutex){+.+.}-{3:3}, at: drm_modeset_backoff+0x90/0x228
[ 6.383464] #12: c176e548 (dma_fence_map){++++}-{0:0}, at: imx_drm_atomic_commit_tail+0x10/0x160
[ 6.383500]
[ 6.383500] stack backtrace:
[ 6.383506] CPU: 0 PID: 7 Comm: kworker/u4:0 Not tainted 5.15.0-rc6 #5
[ 6.383521] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[ 6.383530] Workqueue: events_unbound deferred_probe_work_func
[ 6.383553] [<c01118f8>] (unwind_backtrace) from [<c010bde0>] (show_stack+0x10/0x14)
[ 6.383580] [<c010bde0>] (show_stack) from [<c0e86d9c>] (dump_stack_lvl+0x58/0x70)
[ 6.383600] [<c0e86d9c>] (dump_stack_lvl) from [<c0188f44>] (check_noncircular+0xf4/0x168)
[ 6.383616] [<c0188f44>] (check_noncircular) from [<c018cdfc>] (__lock_acquire+0x169c/0x3210)
[ 6.383632] [<c018cdfc>] (__lock_acquire) from [<c018f3dc>] (lock_acquire+0x130/0x400)
[ 6.383646] [<c018f3dc>] (lock_acquire) from [<c0e98cc8>] (__mutex_lock+0x94/0xa40)
[ 6.383669] [<c0e98cc8>] (__mutex_lock) from [<c0e99690>] (mutex_lock_nested+0x1c/0x24)
[ 6.383688] [<c0e99690>] (mutex_lock_nested) from [<c06afa2c>] (regulator_lock_dependent+0x40/0x294)
[ 6.383710] [<c06afa2c>] (regulator_lock_dependent) from [<c06b33bc>] (regulator_enable+0x2c/0xec)
[ 6.383727] [<c06b33bc>] (regulator_enable) from [<c07d3238>] (panel_simple_resume+0x38/0x1f4)
[ 6.383748] [<c07d3238>] (panel_simple_resume) from [<c080b424>] (__rpm_callback+0x3c/0x108)
[ 6.383772] [<c080b424>] (__rpm_callback) from [<c080b558>] (rpm_callback+0x68/0x70)
[ 6.383789] [<c080b558>] (rpm_callback) from [<c080b07c>] (rpm_resume+0x5ec/0x7dc)
[ 6.383806] [<c080b07c>] (rpm_resume) from [<c080b2d0>] (__pm_runtime_resume+0x64/0x90)
[ 6.383824] [<c080b2d0>] (__pm_runtime_resume) from [<c07d30c8>] (panel_simple_prepare+0x2c/0x50)
[ 6.383843] [<c07d30c8>] (panel_simple_prepare) from [<c07cfd0c>] (imx_pd_bridge_enable+0x10/0x1c)
[ 6.383862] [<c07cfd0c>] (imx_pd_bridge_enable) from [<c0727fb8>] (drm_atomic_bridge_chain_enable+0x80/0xa4)
[ 6.383883] [<c0727fb8>] (drm_atomic_bridge_chain_enable) from [<c070690c>] (drm_atomic_helper_commit_modeset_enables+0x12c/0x26c)
[ 6.383908] [<c070690c>] (drm_atomic_helper_commit_modeset_enables) from [<c07cd4cc>] (imx_drm_atomic_commit_tail+0x3c/0x160)
[ 6.383928] [<c07cd4cc>] (imx_drm_atomic_commit_tail) from [<c070869c>] (commit_tail+0x9c/0x190)
[ 6.383948] [<c070869c>] (commit_tail) from [<c07088f0>] (drm_atomic_helper_commit+0x158/0x18c)
[ 6.383968] [<c07088f0>] (drm_atomic_helper_commit) from [<c073dcb8>] (drm_client_modeset_commit_atomic+0x238/0x284)
[ 6.383992] [<c073dcb8>] (drm_client_modeset_commit_atomic) from [<c073ddd4>] (drm_client_modeset_commit_locked+0x60/0x1cc)
[ 6.384012] [<c073ddd4>] (drm_client_modeset_commit_locked) from [<c073df64>] (drm_client_modeset_commit+0x24/0x40)
[ 6.384031] [<c073df64>] (drm_client_modeset_commit) from [<c070ed5c>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0x9c/0xc8)
[ 6.384055] [<c070ed5c>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<c070edf0>] (drm_fb_helper_set_par+0x38/0x68)
[ 6.384074] [<c070edf0>] (drm_fb_helper_set_par) from [<c06786f0>] (fbcon_init+0x2bc/0x550)
[ 6.384097] [<c06786f0>] (fbcon_init) from [<c06d8610>] (visual_init+0xbc/0x104)
[ 6.384122] [<c06d8610>] (visual_init) from [<c06d9a3c>] (do_bind_con_driver+0x1c8/0x3b0)
[ 6.384142] [<c06d9a3c>] (do_bind_con_driver) from [<c06d9f80>] (do_take_over_console+0x134/0x1f0)
[ 6.384160] [<c06d9f80>] (do_take_over_console) from [<c0676334>] (do_fbcon_takeover+0x60/0xc0)
[ 6.384179] [<c0676334>] (do_fbcon_takeover) from [<c066e7e0>] (register_framebuffer+0x1c8/0x2e8)
[ 6.384198] [<c066e7e0>] (register_framebuffer) from [<c070e6f4>] (__drm_fb_helper_initial_config_and_unlock+0x3f8/0x644)
[ 6.384216] [<c070e6f4>] (__drm_fb_helper_initial_config_and_unlock) from [<c070f02c>] (drm_fbdev_client_hotplug+0xf8/0x194)
[ 6.384236] [<c070f02c>] (drm_fbdev_client_hotplug) from [<c070f164>] (drm_fbdev_generic_setup+0x9c/0x198)
[ 6.384254] [<c070f164>] (drm_fbdev_generic_setup) from [<c07cd44c>] (imx_drm_bind+0xdc/0x120)
[ 6.384275] [<c07cd44c>] (imx_drm_bind) from [<c07f57c4>] (try_to_bring_up_master+0x15c/0x1a8)
[ 6.384301] [<c07f57c4>] (try_to_bring_up_master) from [<c07f58a4>] (__component_add+0x94/0x140)
[ 6.384323] [<c07f58a4>] (__component_add) from [<c07cfe64>] (imx_pd_probe+0x130/0x18c)
[ 6.384344] [<c07cfe64>] (imx_pd_probe) from [<c07ff918>] (platform_probe+0x58/0xb8)
[ 6.384361] [<c07ff918>] (platform_probe) from [<c07fd220>] (really_probe+0x14c/0x320)
[ 6.384382] [<c07fd220>] (really_probe) from [<c07fd474>] (__driver_probe_device+0x80/0xe4)
[ 6.384402] [<c07fd474>] (__driver_probe_device) from [<c07fd508>] (driver_probe_device+0x30/0xd4)
[ 6.384422] [<c07fd508>] (driver_probe_device) from [<c07fd824>] (__device_attach_driver+0x8c/0xb4)
[ 6.384442] [<c07fd824>] (__device_attach_driver) from [<c07fb5e4>] (bus_for_each_drv+0x80/0xd0)
[ 6.384464] [<c07fb5e4>] (bus_for_each_drv) from [<c07fd058>] (__device_attach+0xec/0x160)
[ 6.384482] [<c07fd058>] (__device_attach) from [<c07fc2b8>] (bus_probe_device+0x88/0x90)
[ 6.384500] [<c07fc2b8>] (bus_probe_device) from [<c07fc774>] (deferred_probe_work_func+0x7c/0xac)
[ 6.384518] [<c07fc774>] (deferred_probe_work_func) from [<c0147ec0>] (process_one_work+0x298/0x7cc)
[ 6.384542] [<c0147ec0>] (process_one_work) from [<c0148424>] (worker_thread+0x30/0x50c)
[ 6.384560] [<c0148424>] (worker_thread) from [<c01512e4>] (kthread+0x154/0x17c)
[ 6.384579] [<c01512e4>] (kthread) from [<c010011c>] (ret_from_fork+0x14/0x38)
[ 6.384596] Exception stack(0xc20c7fb0 to 0xc20c7ff8)
[ 6.384605] 7fa0: ???????? ???????? ???????? ????????
[ 6.384612] 7fc0: ???????? ???????? ???????? ???????? ???????? ???????? ???????? ????????
[ 6.384619] 7fe0: ???????? ???????? ???????? ???????? ???????? ????????
Thanks,
Francesco
More information about the linux-arm-kernel
mailing list