drm/i915: Simplify vcs/bsd engine selection
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Thu, 16 Mar 2023 14:27:28 +0000 (14:27 +0000)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Fri, 17 Mar 2023 08:56:26 +0000 (08:56 +0000)
No need to look at the mask of present engines when we already have a
count stored ever since e2d0ff3525b9 ("drm/i915: Count engine instances
per uabi class").

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Jonathan Cavitt <jonathan.cavitt@intel.com>
Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230316142728.1335239-1-tvrtko.ursulin@linux.intel.com
[tursulin: fixup typo in patch title]

drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c

index 9dce295..3aeede6 100644 (file)
@@ -2449,11 +2449,6 @@ static int eb_submit(struct i915_execbuffer *eb)
        return err;
 }
 
-static int num_vcs_engines(struct drm_i915_private *i915)
-{
-       return hweight_long(VDBOX_MASK(to_gt(i915)));
-}
-
 /*
  * Find one BSD ring to dispatch the corresponding BSD command.
  * The engine index is returned.
@@ -2467,7 +2462,7 @@ gen8_dispatch_bsd_engine(struct drm_i915_private *dev_priv,
        /* Check whether the file_priv has already selected one ring. */
        if ((int)file_priv->bsd_engine < 0)
                file_priv->bsd_engine =
-                       get_random_u32_below(num_vcs_engines(dev_priv));
+                       get_random_u32_below(dev_priv->engine_uabi_class_count[I915_ENGINE_CLASS_VIDEO]);
 
        return file_priv->bsd_engine;
 }
@@ -2655,7 +2650,8 @@ eb_select_legacy_ring(struct i915_execbuffer *eb)
                return -1;
        }
 
-       if (user_ring_id == I915_EXEC_BSD && num_vcs_engines(i915) > 1) {
+       if (user_ring_id == I915_EXEC_BSD &&
+           i915->engine_uabi_class_count[I915_ENGINE_CLASS_VIDEO] > 1) {
                unsigned int bsd_idx = args->flags & I915_EXEC_BSD_MASK;
 
                if (bsd_idx == I915_EXEC_BSD_DEFAULT) {