Commit 7d1ea609 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Give the invalid priority a magic name

We use INT_MIN to denote the priority of a request that has not been
submitted to the scheduler; we treat INT_MIN as an invalid priority and
initialise the request to it. Give the value a name so it stands out.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170928193910.17988-3-chris@chris-wilson.co.ukReviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com
parent 7e4992ac
...@@ -186,7 +186,7 @@ i915_priotree_init(struct i915_priotree *pt) ...@@ -186,7 +186,7 @@ i915_priotree_init(struct i915_priotree *pt)
INIT_LIST_HEAD(&pt->signalers_list); INIT_LIST_HEAD(&pt->signalers_list);
INIT_LIST_HEAD(&pt->waiters_list); INIT_LIST_HEAD(&pt->waiters_list);
INIT_LIST_HEAD(&pt->link); INIT_LIST_HEAD(&pt->link);
pt->priority = INT_MIN; pt->priority = I915_PRIORITY_INVALID;
} }
static int reset_all_global_seqno(struct drm_i915_private *i915, u32 seqno) static int reset_all_global_seqno(struct drm_i915_private *i915, u32 seqno)
......
...@@ -72,6 +72,7 @@ struct i915_priotree { ...@@ -72,6 +72,7 @@ struct i915_priotree {
#define I915_PRIORITY_MAX 1024 #define I915_PRIORITY_MAX 1024
#define I915_PRIORITY_NORMAL 0 #define I915_PRIORITY_NORMAL 0
#define I915_PRIORITY_MIN (-I915_PRIORITY_MAX) #define I915_PRIORITY_MIN (-I915_PRIORITY_MAX)
#define I915_PRIORITY_INVALID INT_MIN
}; };
struct i915_gem_capture_list { struct i915_gem_capture_list {
......
...@@ -863,6 +863,8 @@ static void execlists_schedule(struct drm_i915_gem_request *request, int prio) ...@@ -863,6 +863,8 @@ static void execlists_schedule(struct drm_i915_gem_request *request, int prio)
struct i915_dependency stack; struct i915_dependency stack;
LIST_HEAD(dfs); LIST_HEAD(dfs);
GEM_BUG_ON(prio == I915_PRIORITY_INVALID);
if (prio <= READ_ONCE(request->priotree.priority)) if (prio <= READ_ONCE(request->priotree.priority))
return; return;
...@@ -911,7 +913,7 @@ static void execlists_schedule(struct drm_i915_gem_request *request, int prio) ...@@ -911,7 +913,7 @@ static void execlists_schedule(struct drm_i915_gem_request *request, int prio)
* execlists_submit_request()), we can set our own priority and skip * execlists_submit_request()), we can set our own priority and skip
* acquiring the engine locks. * acquiring the engine locks.
*/ */
if (request->priotree.priority == INT_MIN) { if (request->priotree.priority == I915_PRIORITY_INVALID) {
GEM_BUG_ON(!list_empty(&request->priotree.link)); GEM_BUG_ON(!list_empty(&request->priotree.link));
request->priotree.priority = prio; request->priotree.priority = prio;
if (stack.dfs_link.next == stack.dfs_link.prev) if (stack.dfs_link.next == stack.dfs_link.prev)
......
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