diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_request.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_request.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index a492385b2089..56140ca054e8 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c | |||
@@ -1127,8 +1127,20 @@ void i915_request_add(struct i915_request *request) | |||
1127 | */ | 1127 | */ |
1128 | local_bh_disable(); | 1128 | local_bh_disable(); |
1129 | rcu_read_lock(); /* RCU serialisation for set-wedged protection */ | 1129 | rcu_read_lock(); /* RCU serialisation for set-wedged protection */ |
1130 | if (engine->schedule) | 1130 | if (engine->schedule) { |
1131 | engine->schedule(request, &request->gem_context->sched); | 1131 | struct i915_sched_attr attr = request->gem_context->sched; |
1132 | |||
1133 | /* | ||
1134 | * Boost priorities to new clients (new request flows). | ||
1135 | * | ||
1136 | * Allow interactive/synchronous clients to jump ahead of | ||
1137 | * the bulk clients. (FQ_CODEL) | ||
1138 | */ | ||
1139 | if (!prev || i915_request_completed(prev)) | ||
1140 | attr.priority |= I915_PRIORITY_NEWCLIENT; | ||
1141 | |||
1142 | engine->schedule(request, &attr); | ||
1143 | } | ||
1132 | rcu_read_unlock(); | 1144 | rcu_read_unlock(); |
1133 | i915_sw_fence_commit(&request->submit); | 1145 | i915_sw_fence_commit(&request->submit); |
1134 | local_bh_enable(); /* Kick the execlists tasklet if just scheduled */ | 1146 | local_bh_enable(); /* Kick the execlists tasklet if just scheduled */ |