• 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
i915_gem_gtt.c 101 KB