Bug 109372 - [CI][SHARDS] igt@gem_userptr_blits@map-fixed-invalidate-* - incomplete - possible circular locking dependency detected
Summary: [CI][SHARDS] igt@gem_userptr_blits@map-fixed-invalidate-* - incomplete - poss...
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: XOrg git
Hardware: Other All
: medium normal
Assignee: Intel GFX Bugs mailing list
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard: ReadyForDev
Keywords:
: 109386 (view as bug list)
Depends on:
Blocks:
 
Reported: 2019-01-16 08:57 UTC by Martin Peres
Modified: 2019-01-18 20:27 UTC (History)
1 user (show)

See Also:
i915 platform: ICL, SKL
i915 features: GEM/Other


Attachments

Description Martin Peres 2019-01-16 08:57:18 UTC
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-iclb7/igt@gem_userptr_blits@map-fixed-invalidate-overlap-gup.html

<6> [1143.902698] [IGT] gem_userptr_blits: executing
<6> [1143.916727] [IGT] gem_userptr_blits: starting subtest map-fixed-invalidate-overlap-gup
<6> [1144.126951] userptr_mn_invalidate_range_start+0x0/0x270 [i915] callback failed with -4 in blockable context.
<4> [1144.127444] 
<4> [1144.127448] ======================================================
<4> [1144.127451] WARNING: possible circular locking dependency detected
<4> [1144.127454] 5.0.0-rc2-CI-CI_DRM_5430+ #1 Tainted: G     U           
<4> [1144.127457] ------------------------------------------------------
<4> [1144.127459] gem_userptr_bli/2573 is trying to acquire lock:
<4> [1144.127463] 00000000eafecd85 (fs_reclaim){+.+.}, at: fs_reclaim_acquire.part.25+0x0/0x30
<4> [1144.127471] 
but task is already holding lock:
<4> [1144.127473] 000000007d5940b7 (&dev->struct_mutex/1){+.+.}, at: userptr_mn_invalidate_range_start+0x173/0x270 [i915]
<4> [1144.127513] 
which lock already depends on the new lock.

<4> [1144.127516] 
the existing dependency chain (in reverse order) is:
<4> [1144.127519] 
-> #1 (&dev->struct_mutex/1){+.+.}:
<4> [1144.127551]        i915_address_space_init+0x53/0x130 [i915]
<4> [1144.127580]        i915_ggtt_init_hw+0x50/0x140 [i915]
<4> [1144.127605]        i915_driver_load+0xe2e/0x1590 [i915]
<4> [1144.127632]        i915_pci_probe+0x29/0xa0 [i915]
<4> [1144.127637]        pci_device_probe+0xa1/0x130
<4> [1144.127642]        really_probe+0xf3/0x3e0
<4> [1144.127645]        driver_probe_device+0x10a/0x120
<4> [1144.127649]        __driver_attach+0xdb/0x100
<4> [1144.127653]        bus_for_each_dev+0x74/0xc0
<4> [1144.127656]        bus_add_driver+0x15f/0x250
<4> [1144.127660]        driver_register+0x56/0xe0
<4> [1144.127664]        do_one_initcall+0x58/0x2e0
<4> [1144.127667]        do_init_module+0x56/0x1ea
<4> [1144.127672]        load_module+0x2718/0x29f0
<4> [1144.127675]        __se_sys_finit_module+0xd3/0xf0
<4> [1144.127678]        do_syscall_64+0x55/0x190
<4> [1144.127682]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
<4> [1144.127685] 
-> #0 (fs_reclaim){+.+.}:
<4> [1144.127690]        fs_reclaim_acquire.part.25+0x24/0x30
<4> [1144.127695]        kmem_cache_alloc+0x27/0x280
<4> [1144.127699]        vm_area_alloc+0x15/0x50
<4> [1144.127702]        mmap_region+0x2f4/0x620
<4> [1144.127706]        do_mmap+0x3d1/0x570
<4> [1144.127710]        vm_mmap_pgoff+0x98/0xf0
<4> [1144.127713]        ksys_mmap_pgoff+0x191/0x1f0
<4> [1144.127716]        do_syscall_64+0x55/0x190
<4> [1144.127720]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
<4> [1144.127722] 
other info that might help us debug this:

<4> [1144.127726]  Possible unsafe locking scenario:

<4> [1144.127729]        CPU0                    CPU1
<4> [1144.127732]        ----                    ----
<4> [1144.127734]   lock(&dev->struct_mutex/1);
<4> [1144.127737]                                lock(fs_reclaim);
<4> [1144.127740]                                lock(&dev->struct_mutex/1);
<4> [1144.127744]   lock(fs_reclaim);
<4> [1144.127746] 
 *** DEADLOCK ***

<4> [1144.127750] 2 locks held by gem_userptr_bli/2573:
<4> [1144.127753]  #0: 000000001619b874 (&mm->mmap_sem){++++}, at: vm_mmap_pgoff+0x6a/0xf0
<4> [1144.127759]  #1: 000000007d5940b7 (&dev->struct_mutex/1){+.+.}, at: userptr_mn_invalidate_range_start+0x173/0x270 [i915]
<4> [1144.127796] 
stack backtrace:
<4> [1144.127800] CPU: 3 PID: 2573 Comm: gem_userptr_bli Tainted: G     U            5.0.0-rc2-CI-CI_DRM_5430+ #1
<4> [1144.127805] Hardware name: Intel Corporation Ice Lake Client Platform/IceLake U DDR4 SODIMM PD RVP, BIOS ICLSFWR1.R00.2402.AD3.1810170014 10/17/2018
<4> [1144.127810] Call Trace:
<4> [1144.127838]  dump_stack+0x67/0x9b
<4> [1144.127843]  print_circular_bug.isra.16+0x1c8/0x2b0
<4> [1144.127848]  __lock_acquire+0x183a/0x1b00
<4> [1144.127852]  ? mark_held_locks+0x50/0x80
<4> [1144.127856]  ? _raw_spin_unlock_irqrestore+0x39/0x60
<4> [1144.127861]  ? lock_acquire+0xa6/0x1c0
<4> [1144.127864]  lock_acquire+0xa6/0x1c0
<4> [1144.127868]  ? free_unref_page_commit.isra.20+0xd0/0xd0
<4> [1144.127872]  ? vm_area_alloc+0x15/0x50
<4> [1144.127875]  fs_reclaim_acquire.part.25+0x24/0x30
<4> [1144.127879]  ? free_unref_page_commit.isra.20+0xd0/0xd0
<4> [1144.127883]  kmem_cache_alloc+0x27/0x280
<4> [1144.127887]  vm_area_alloc+0x15/0x50
<4> [1144.127891]  mmap_region+0x2f4/0x620
<4> [1144.127895]  do_mmap+0x3d1/0x570
<4> [1144.127899]  vm_mmap_pgoff+0x98/0xf0
<4> [1144.127904]  ksys_mmap_pgoff+0x191/0x1f0
<4> [1144.127908]  ? lockdep_hardirqs_off+0x79/0xd0
<4> [1144.127912]  do_syscall_64+0x55/0x190
<4> [1144.127915]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
<4> [1144.127920] RIP: 0033:0x7fd9cf55ca13
<4> [1144.127924] Code: 89 f5 41 54 41 89 d4 55 48 89 fd 53 4c 89 cb 74 56 49 89 d9 45 89 f8 45 89 f2 44 89 e2 4c 89 ee 48 89 ef b8 09 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 7d 5b 5d 41 5c 41 5d 41 5e 41 5f c3 66 2e 0f
<4> [1144.127931] RSP: 002b:00007ffdf977ec98 EFLAGS: 00000206 ORIG_RAX: 0000000000000009
<4> [1144.127945] RAX: ffffffffffffffda RBX: 0000000100008000 RCX: 00007fd9cf55ca13
<4> [1144.127949] RDX: 0000000000000003 RSI: 0000000000002000 RDI: 00007fd9d067a000
<4> [1144.127952] RBP: 00007fd9d067a000 R08: 0000000000000005 R09: 0000000100008000
<4> [1144.127956] R10: 0000000000000011 R11: 0000000000000206 R12: 0000000000000003
<4> [1144.127960] R13: 0000000000002000 R14: 0000000000000011 R15: 0000000000000005
<7> [1146.739078] [drm:edp_panel_vdd_off_sync [i915]] Turning eDP port A VDD off
<7> [1146.739395] [drm:edp_panel_vdd_off_sync [i915]] PP_STATUS: 0x80000008 PP_CONTROL: 0x00000067
<7> [1146.739539] [drm:intel_power_well_disable [i915]] disabling DC off
<7> [1146.739684] [drm:skl_enable_dc6 [i915]] Enabling DC6
<7> [1146.739870] [drm:gen9_set_dc_state [i915]] Setting DC state from 00 to 02
Comment 1 CI Bug Log 2019-01-16 08:57:58 UTC
The CI Bug Log issue associated to this bug has been updated.

### New filters associated

* SKL ICL: igt@gem_userptr_blits@map-fixed-invalidate-* - incomplete - possible circular locking dependency detected
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5429/shard-iclb5/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5429/shard-iclb5/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5429/shard-iclb7/igt@gem_userptr_blits@map-fixed-invalidate-overlap-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5429/shard-iclb7/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5429/shard-skl3/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5429/shard-skl5/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5429/shard-skl9/igt@gem_userptr_blits@map-fixed-invalidate-overlap-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11301/shard-iclb3/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11301/shard-iclb4/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11301/shard-iclb5/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11301/shard-iclb7/igt@gem_userptr_blits@map-fixed-invalidate-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11301/shard-skl10/igt@gem_userptr_blits@map-fixed-invalidate-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11301/shard-skl5/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11301/shard-skl9/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-iclb3/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-iclb4/igt@gem_userptr_blits@map-fixed-invalidate-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-iclb4/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-iclb7/igt@gem_userptr_blits@map-fixed-invalidate-overlap-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-iclb7/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-skl10/igt@gem_userptr_blits@map-fixed-invalidate-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-skl2/igt@gem_userptr_blits@map-fixed-invalidate-overlap-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5430/shard-skl7/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-iclb3/igt@gem_userptr_blits@map-fixed-invalidate-overlap-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-iclb5/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-iclb6/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-iclb6/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-iclb7/igt@gem_userptr_blits@map-fixed-invalidate-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-skl10/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-skl3/igt@gem_userptr_blits@map-fixed-invalidate-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-skl8/igt@gem_userptr_blits@map-fixed-invalidate-overlap-gup.html
  - https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11302/shard-skl8/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html
Comment 3 Chris Wilson 2019-01-16 09:05:49 UTC
commit 9e267d286af5c5a67995128df40ca3d1f93277a6 (HEAD -> drm-intel-next-queued, drm-intel/for-linux-next, drm-intel/drm-intel-next-queued)
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Jan 15 22:11:18 2019 +0000

    drm/i915/userptr: Fix error handling of mutex_lock_killable()
    
    mutex_lock_killable() returns -EINTR on failure, not the anticipate bool
    return like trylock. (Oh no, not again.)
    
    Fixes: 484d9a844d0d ("drm/i915/userptr: Avoid struct_mutex recursion for mmu_invalidate_range_start")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190115221118.13304-1-chris@chris-wilson.co.uk
    Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Comment 4 Martin Peres 2019-01-18 15:30:26 UTC
(In reply to Chris Wilson from comment #3)
> commit 9e267d286af5c5a67995128df40ca3d1f93277a6 (HEAD ->
> drm-intel-next-queued, drm-intel/for-linux-next,
> drm-intel/drm-intel-next-queued)
> Author: Chris Wilson <chris@chris-wilson.co.uk>
> Date:   Tue Jan 15 22:11:18 2019 +0000
> 
>     drm/i915/userptr: Fix error handling of mutex_lock_killable()
>     
>     mutex_lock_killable() returns -EINTR on failure, not the anticipate bool
>     return like trylock. (Oh no, not again.)
>     
>     Fixes: 484d9a844d0d ("drm/i915/userptr: Avoid struct_mutex recursion for
> mmu_invalidate_range_start")
>     Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
>     Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>     Link:
> https://patchwork.freedesktop.org/patch/msgid/20190115221118.13304-1-
> chris@chris-wilson.co.uk
>     Reviewed-by: Matthew Auld <matthew.auld@intel.com>

Thanks, it definitely did the trick :) Closing!
Comment 5 Chris Wilson 2019-01-18 20:27:20 UTC
*** Bug 109386 has been marked as a duplicate of this bug. ***


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.