drm/i915/perf: Manually acquire engine-wakeref around use of kernel_context
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 27 Feb 2020 08:57:06 +0000 (08:57 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 28 Feb 2020 14:05:34 +0000 (14:05 +0000)
The engine->kernel_context is a special case for request emission. Since
it is used as the barrier within the engine's wakeref, we must acquire the
wakeref before submitting a request to the kernel_context.

Reported-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200227085723.1961649-3-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_perf.c

index 0838a12..2334c45 100644 (file)
@@ -2196,7 +2196,9 @@ static int gen8_modify_self(struct intel_context *ce,
        struct i915_request *rq;
        int err;
 
+       intel_engine_pm_get(ce->engine);
        rq = i915_request_create(ce);
+       intel_engine_pm_put(ce->engine);
        if (IS_ERR(rq))
                return PTR_ERR(rq);