Commit ab84a110 authored by Chris Wilson's avatar Chris Wilson

drm/i915/selftests: Use a full emulation of a user ppgtt context

To test eviction from a ppgtt, we just want a ppgtt i.e. something other
than the Global GTT which is shared and used by the kernel for HW
features like fencing and scanout. However, we also need it to pass
!i915_is_ggtt() and the simplest way is to emulate a full user context
rather than the internal kernel context that is used for the GGTT.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180719194746.19111-1-chris@chris-wilson.co.uk
parent ec5b65a9
...@@ -1144,19 +1144,27 @@ static int igt_reset_evict_ppgtt(void *arg) ...@@ -1144,19 +1144,27 @@ static int igt_reset_evict_ppgtt(void *arg)
{ {
struct drm_i915_private *i915 = arg; struct drm_i915_private *i915 = arg;
struct i915_gem_context *ctx; struct i915_gem_context *ctx;
struct drm_file *file;
int err; int err;
file = mock_file(i915);
if (IS_ERR(file))
return PTR_ERR(file);
mutex_lock(&i915->drm.struct_mutex); mutex_lock(&i915->drm.struct_mutex);
ctx = kernel_context(i915); ctx = live_context(i915, file);
mutex_unlock(&i915->drm.struct_mutex); mutex_unlock(&i915->drm.struct_mutex);
if (IS_ERR(ctx)) if (IS_ERR(ctx)) {
return PTR_ERR(ctx); err = PTR_ERR(ctx);
goto out;
}
err = 0; err = 0;
if (ctx->ppgtt) /* aliasing == global gtt locking, covered above */ if (ctx->ppgtt) /* aliasing == global gtt locking, covered above */
err = __igt_reset_evict_vma(i915, &ctx->ppgtt->vm); err = __igt_reset_evict_vma(i915, &ctx->ppgtt->vm);
kernel_context_close(ctx); out:
mock_file_free(i915, file);
return err; return err;
} }
......
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