TGL ICL: igt@gem_exec_schedule@u-fairslice@.* - dmesg-warn - WARNING: possible circular locking dependency detected, is trying to acquire lock at: rcu_barrier but task is already holding lock at: unmap_vmas
<4> [65.250878] ======================================================
<4> [65.250882] WARNING: possible circular locking dependency detected
<4> [65.250887] 5.10.0-CI-CI_DRM_9483+ #1 Tainted: G U
<4> [65.250892] ------------------------------------------------------
<4> [65.250896] gem_exec_schedu/1046 is trying to acquire lock:
<4> [65.250902] ffffffff82731ef0 (rcu_state.barrier_mutex){+.+.}-{3:3}, at: rcu_barrier+0x27/0x210
<4> [65.250923]
but task is already holding lock:
<4> [65.250929] ffffffff827539c0 (mmu_notifier_invalidate_range_start){+.+.}-{0:0}, at: unmap_vmas+0x0/0x130
<4> [65.250944]
which lock already depends on the new lock.
<4> [65.250950]
the existing dependency chain (in reverse order) is:
<4> [65.250955]
-> #3 (mmu_notifier_invalidate_range_start){+.+.}-{0:0}:
<4> [65.250985] dma_resv_lockdep+0x1dc/0x28c
<4> [65.250991] do_one_initcall+0x56/0x2e0
<4> [65.250999] kernel_init_freeable+0x169/0x1b2
<4> [65.251007] kernel_init+0x5/0xff
<4> [65.251011] ret_from_fork+0x1f/0x30
<4> [65.251014]
-> #2 (fs_reclaim){+.+.}-{0:0}:
<4> [65.251026] fs_reclaim_acquire.part.129+0x24/0x30
<4> [65.251033] kmem_cache_alloc_trace+0x2f/0x850
<4> [65.251039] intel_cpuc_prepare+0x3b/0x1b0
<4> [65.251045] cpuhp_invoke_callback+0x9e/0x890
<4> [65.251050] _cpu_up+0xa4/0x130
<4> [65.251053] cpu_up+0x82/0x90
<4> [65.251057] bringup_nonboot_cpus+0x4a/0x60
<4> [65.251063] smp_init+0x21/0x5c
<4> [65.251067] kernel_init_freeable+0x85/0x1b2
<4> [65.251072] kernel_init+0x5/0xff
<4> [65.251076] ret_from_fork+0x1f/0x30
<4> [65.251079]
-> #1 (cpu_hotplug_lock){++++}-{0:0}:
<4> [65.251087] cpus_read_lock+0x34/0xc0
<4> [65.251091] rcu_barrier+0xac/0x210
<4> [65.251095] kernel_init+0x22/0xff
<4> [65.251098] ret_from_fork+0x1f/0x30
<4> [65.251101]
-> #0 (rcu_state.barrier_mutex){+.+.}-{3:3}:
<4> [65.251112] __lock_acquire+0x1523/0x25a0
<4> [65.251117] lock_acquire+0xdc/0x3c0
<4> [65.251122] __mutex_lock+0xa6/0x980
<4> [65.251125] rcu_barrier+0x27/0x210
<4> [65.251212] i915_gem_object_unbind+0x2f1/0x3e0 [i915]
<4> [65.251294] userptr_mn_invalidate_range_start+0x82/0x180 [i915]
<4> [65.251300] __mmu_notifier_invalidate_range_start+0xbd/0x1f0
<4> [65.251305] unmap_vmas+0x95/0x130
<4> [65.251310] unmap_region+0xa3/0x100
<4> [65.251314] __do_munmap+0x29d/0x4d0
<4> [65.251318] __vm_munmap+0x66/0xc0
<4> [65.251322] __x64_sys_munmap+0x12/0x20
<4> [65.251328] do_syscall_64+0x33/0x80
<4> [65.251333] entry_SYSCALL_64_after_hwframe+0x44/0xa9
<4> [65.251338]
other info that might help us debug this:
<4> [65.251343] Chain exists of:
rcu_state.barrier_mutex --> fs_reclaim --> mmu_notifier_invalidate_range_start
<4> [65.251355] Possible unsafe locking scenario:
<4> [65.251359] CPU0 CPU1
<4> [65.251363] ---- ----
<4> [65.251367] lock(mmu_notifier_invalidate_range_start);
<4> [65.251372] lock(fs_reclaim);
<4> [65.251377] lock(mmu_notifier_invalidate_range_start);
<4> [65.251384] lock(rcu_state.barrier_mutex);
<4> [65.251388]
*** DEADLOCK ***