drm/i915/execlists: Shortcircuit queue_prio() for no internal levels
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 25 May 2020 07:53:39 +0000 (08:53 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 26 May 2020 11:23:30 +0000 (12:23 +0100)
If there are no internal levels and the user priority-shift is zero, we
can help the compiler eliminate some dead code:

Function                                     old     new   delta
start_timeslice                              169     154     -15
__execlists_submission_tasklet              4696    4659     -37

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200525075347.582-4-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c

index de5be57ed6d22dec362d7da07e4d9dd4e489ad11..3214a4ecc31a8377cd8473cd30bafe7da83881c9 100644 (file)
@@ -446,6 +446,9 @@ static int queue_prio(const struct intel_engine_execlists *execlists)
         * we have to flip the index value to become priority.
         */
        p = to_priolist(rb);
+       if (!I915_USER_PRIORITY_SHIFT)
+               return p->priority;
+
        return ((p->priority + 1) << I915_USER_PRIORITY_SHIFT) - ffs(p->used);
 }