1. 04 Jul, 2019 1 commit
    • Chris Wilson's avatar
      drm/i915/gtt: Defer the free for alloc error paths · 06861089
      Chris Wilson authored
      If we hit an error while allocating the page tables, we have to unwind
      the incomplete updates, and wish to free the unused pd. However, we are
      not allowed to be hoding the spinlock at that point, and so must use the
      later free to defer it until after we drop the lock.
      
      <3> [414.363795] BUG: sleeping function called from invalid context at drivers/gpu/drm/i915/i915_gem_gtt.c:472
      <3> [414.364167] in_atomic(): 1, irqs_disabled(): 0, pid: 3905, name: i915_selftest
      <4> [414.364406] 3 locks held by i915_selftest/3905:
      <4> [414.364408]  #0: 0000000034fe8aa8 (&dev->mutex){....}, at: device_driver_attach+0x18/0x50
      <4> [414.364415]  #1: 000000006bd8a560 (&dev->struct_mutex){+.+.}, at: igt_ctx_exec+0xb7/0x410 [i915]
      <4> [414.364476]  #2: 000000003dfdc766 (&(&pd->lock)->rlock){+.+.}, at: gen8_ppgtt_alloc_pdp+0x448/0x540 [i915]
      <3> [414.364529] Preemption disabled at:
      <4> [414.364530] [<0000000000000000>] 0x0
      <4> [414.364696] CPU: 0 PID: 3905 Comm: i915_selftest Tainted: G     U            5.2.0-rc7-CI-CI_DRM_6403+ #1
      <4> [414.364698] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.1-0-g8891697-prebuilt.qemu-project.org 04/01/2014
      <4> [414.364699] Call Trace:
      <4> [414.364704]  dump_stack+0x67/0x9b
      <4> [414.364708]  ___might_sleep+0x167/0x250
      <4> [414.364777]  vm_free_page+0x24/0xc0 [i915]
      <4> [414.364852]  free_pd+0xf/0x20 [i915]
      <4> [414.364897]  gen8_ppgtt_alloc_pdp+0x489/0x540 [i915]
      <4> [414.364946]  gen8_ppgtt_alloc_4lvl+0x8e/0x2e0 [i915]
      <4> [414.364992]  ppgtt_bind_vma+0x2e/0x60 [i915]
      <4> [414.365039]  i915_vma_bind+0xe8/0x2c0 [i915]
      <4> [414.365088]  __i915_vma_do_pin+0xa1/0xd20 [i915]
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111050
      Fixes: 1d1b5490 ("drm/i915/gtt: Replace struct_mutex serialisation for allocation")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190703171913.16585-3-chris@chris-wilson.co.uk
      06861089
  2. 03 Jul, 2019 11 commits
  3. 02 Jul, 2019 7 commits
  4. 01 Jul, 2019 21 commits