Commit 9f792eba authored by Chris Wilson's avatar Chris Wilson

drm/i915: Store the execution priority on the context

In order to support userspace defining different levels of importance to
different contexts, and in particular the preferred order of execution,
store a priority value on each context. By default, the kernel's
context, which is used for idling and other background tasks, is given
minimum priority (i.e. all user contexts will execute before the kernel).
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161114204105.29171-9-chris@chris-wilson.co.uk
parent 20311bd3
...@@ -936,6 +936,7 @@ struct i915_gem_context { ...@@ -936,6 +936,7 @@ struct i915_gem_context {
/* Unique identifier for this context, used by the hw for tracking */ /* Unique identifier for this context, used by the hw for tracking */
unsigned int hw_id; unsigned int hw_id;
u32 user_handle; u32 user_handle;
int priority; /* greater priorities are serviced first */
u32 ggtt_alignment; u32 ggtt_alignment;
......
...@@ -476,6 +476,7 @@ int i915_gem_context_init(struct drm_device *dev) ...@@ -476,6 +476,7 @@ int i915_gem_context_init(struct drm_device *dev)
return PTR_ERR(ctx); return PTR_ERR(ctx);
} }
ctx->priority = I915_PRIORITY_MIN; /* lowest priority; idle task */
dev_priv->kernel_context = ctx; dev_priv->kernel_context = ctx;
DRM_DEBUG_DRIVER("%s context support initialized\n", DRM_DEBUG_DRIVER("%s context support initialized\n",
......
...@@ -867,7 +867,7 @@ void __i915_add_request(struct drm_i915_gem_request *request, bool flush_caches) ...@@ -867,7 +867,7 @@ void __i915_add_request(struct drm_i915_gem_request *request, bool flush_caches)
* run at the earliest possible convenience. * run at the earliest possible convenience.
*/ */
if (engine->schedule) if (engine->schedule)
engine->schedule(request, 0); engine->schedule(request, request->ctx->priority);
local_bh_disable(); local_bh_disable();
i915_sw_fence_commit(&request->submit); i915_sw_fence_commit(&request->submit);
......
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