mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08:00
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: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Fixes:b1e3177bd1
("drm/i915: Coordinate i915_active with its own mutex") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200110110402.1231745-2-chris@chris-wilson.co.uk (cherry picked from commit1b8bfc5726
) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
This commit is contained in:
parent
c3866f5410
commit
e2c56d8973
@ -123,6 +123,10 @@ static int __context_pin_state(struct i915_vma *vma)
|
||||
if (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
|
||||
* it cannot reclaim the object until we release it.
|
||||
@ -131,11 +135,16 @@ static int __context_pin_state(struct i915_vma *vma)
|
||||
vma->obj->mm.dirty = true;
|
||||
|
||||
return 0;
|
||||
|
||||
err_unpin:
|
||||
i915_vma_unpin(vma);
|
||||
return err;
|
||||
}
|
||||
|
||||
static void __context_unpin_state(struct i915_vma *vma)
|
||||
{
|
||||
i915_vma_make_shrinkable(vma);
|
||||
i915_active_release(&vma->active);
|
||||
__i915_vma_unpin(vma);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user