[PATCH 52/52] adj-prio

Chris Wilson chris at chris-wilson.co.uk
Thu Dec 17 02:14:33 UTC 2020


---
 drivers/gpu/drm/i915/i915_scheduler.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_scheduler.c b/drivers/gpu/drm/i915/i915_scheduler.c
index 10b17a879176..8078430ee9d6 100644
--- a/drivers/gpu/drm/i915/i915_scheduler.c
+++ b/drivers/gpu/drm/i915/i915_scheduler.c
@@ -519,10 +519,20 @@ static u64 signal_deadline(const struct i915_request *rq)
 	return last;
 }
 
+static int adj_prio(const struct i915_request *rq)
+{
+	int prio = rq_prio(rq);
+
+	if (rq->sched.semaphores && !i915_sw_fence_signaled(&rq->semaphore))
+		prio -= hweight32(rq->sched.semaphores);
+
+	return prio;
+}
+
 static u64 earliest_deadline(const struct i915_request *rq)
 {
 	return i915_scheduler_virtual_deadline(signal_deadline(rq),
-					       rq_prio(rq));
+					       adj_prio(rq));
 }
 
 static bool set_earliest_deadline(struct i915_request *rq, u64 old)
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list