mirror of https://gitee.com/openkylin/linux.git
drm/i915: Wait on vma activity before taking the mutex
Optimistically wait for the prior vma activity before taking the mutex to minimise the mutex hold time while unbinding. We will then verify the vma is idle with a second wait under the mutex to ensure it is safe to unbind. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200123224459.38128-2-chris@chris-wilson.co.uk
This commit is contained in:
parent
60e94557ff
commit
d62f416f92
|
@ -1279,16 +1279,21 @@ int i915_vma_unbind(struct i915_vma *vma)
|
|||
/* XXX not always required: nop_clear_range */
|
||||
wakeref = intel_runtime_pm_get(&vm->i915->runtime_pm);
|
||||
|
||||
/* Optimistic wait before taking the mutex */
|
||||
err = i915_vma_sync(vma);
|
||||
if (err)
|
||||
goto out_rpm;
|
||||
|
||||
err = mutex_lock_interruptible(&vm->mutex);
|
||||
if (err)
|
||||
return err;
|
||||
goto out_rpm;
|
||||
|
||||
err = __i915_vma_unbind(vma);
|
||||
mutex_unlock(&vm->mutex);
|
||||
|
||||
out_rpm:
|
||||
if (wakeref)
|
||||
intel_runtime_pm_put(&vm->i915->runtime_pm, wakeref);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue