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