drm/i915: Skip capturing errors from internal contexts
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 28 Jan 2020 11:34:26 +0000 (11:34 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 28 Jan 2020 12:28:21 +0000 (12:28 +0000)
We don't want to report errors on the internal contexts to userspace,
suppressing their own, so treat them as simulated errors. These mostly
arise inside selftests and so are simulated anyway. For the rest, we can
rely on the normal debug channels in CI.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200128113426.3711294-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/selftests/mock_context.c
drivers/gpu/drm/i915/i915_gpu_error.c

index 384143aa77769abe7513494b3b08c93b92c3f13a..7bad8fed42382a1ba346a0b3556a2ed1f559ceaf 100644 (file)
@@ -83,6 +83,8 @@ live_context(struct drm_i915_private *i915, struct file *file)
        if (IS_ERR(ctx))
                return ctx;
 
+       i915_gem_context_set_no_error_capture(ctx);
+
        err = gem_context_register(ctx, to_drm_file(file)->driver_priv, &id);
        if (err < 0)
                goto err_ctx;
index 594341e27a47d1ee82a89d5971ad3e9566f9f273..0f67bef8310681a7746cccc6cd6bd1826963ef86 100644 (file)
@@ -1228,7 +1228,7 @@ static bool record_context(struct i915_gem_context_coredump *e,
 {
        struct i915_gem_context *ctx;
        struct task_struct *task;
-       bool capture;
+       bool simulated;
 
        rcu_read_lock();
        ctx = rcu_dereference(rq->context->gem_context);
@@ -1236,7 +1236,7 @@ static bool record_context(struct i915_gem_context_coredump *e,
                ctx = NULL;
        rcu_read_unlock();
        if (!ctx)
-               return false;
+               return true;
 
        rcu_read_lock();
        task = pid_task(ctx->pid, PIDTYPE_PID);
@@ -1250,10 +1250,10 @@ static bool record_context(struct i915_gem_context_coredump *e,
        e->guilty = atomic_read(&ctx->guilty_count);
        e->active = atomic_read(&ctx->active_count);
 
-       capture = i915_gem_context_no_error_capture(ctx);
+       simulated = i915_gem_context_no_error_capture(ctx);
 
        i915_gem_context_put(ctx);
-       return capture;
+       return simulated;
 }
 
 struct intel_engine_capture_vma {