Commit 1b8bfc57 authored by Chris Wilson's avatar Chris Wilson

drm/i915/gt: Mark context->state vma as active while pinned

As we use the active state to keep the vma alive while we are reading
its contents during GPU error capture, we need to mark the
context->state vma as active during execution if we want to include it
in the error state.
Reported-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: b1e3177b ("drm/i915: Coordinate i915_active with its own mutex")
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200110110402.1231745-2-chris@chris-wilson.co.uk
parent 80e5351d
...@@ -160,6 +160,10 @@ static int __context_pin_state(struct i915_vma *vma) ...@@ -160,6 +160,10 @@ static int __context_pin_state(struct i915_vma *vma)
if (err) if (err)
return err; return err;
err = i915_active_acquire(&vma->active);
if (err)
goto err_unpin;
/* /*
* And mark it as a globally pinned object to let the shrinker know * And mark it as a globally pinned object to let the shrinker know
* it cannot reclaim the object until we release it. * it cannot reclaim the object until we release it.
...@@ -168,11 +172,16 @@ static int __context_pin_state(struct i915_vma *vma) ...@@ -168,11 +172,16 @@ static int __context_pin_state(struct i915_vma *vma)
vma->obj->mm.dirty = true; vma->obj->mm.dirty = true;
return 0; return 0;
err_unpin:
i915_vma_unpin(vma);
return err;
} }
static void __context_unpin_state(struct i915_vma *vma) static void __context_unpin_state(struct i915_vma *vma)
{ {
i915_vma_make_shrinkable(vma); i915_vma_make_shrinkable(vma);
i915_active_release(&vma->active);
__i915_vma_unpin(vma); __i915_vma_unpin(vma);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment