OSDN Git Service

drm/i915/sseu: Don't try to store EU mask internally in UAPI format
authorMatt Roper <matthew.d.roper@intel.com>
Wed, 1 Jun 2022 15:07:23 +0000 (08:07 -0700)
committerMatt Roper <matthew.d.roper@intel.com>
Thu, 2 Jun 2022 14:19:20 +0000 (07:19 -0700)
commitbc3c5e0809ae9faa039baf75547e8ee46ec124ef
tree86b14d87a8c2451cf1ba9428dd215ac702f280ed
parent4cfd16659641067f618cdd3589eda42eb2943399
drm/i915/sseu: Don't try to store EU mask internally in UAPI format

Storing the EU mask internally in the same format the I915_QUERY
topology queries use makes the final copy_to_user() a bit simpler, but
makes the rest of the driver's SSEU more complicated and harder to
follow.  Let's switch to an internal representation that's more natural:
Xe_HP platforms will be a simple array of u16 masks, whereas pre-Xe_HP
platforms will be a two-dimensional array, indexed by [slice][subslice].
We'll convert to the uapi format only when the query uapi is called.

v2:
 - Drop has_common_ss_eumask.  We waste some space repeating identical
   EU masks for every single DSS, but the code is simpler without it.
   (Tvrtko)

v3:
 - Mask down EUs passed to sseu_set_eus at the callsite rather than
   inside the function.  (Tvrtko)
 - Eliminate sseu->eu_stride and calculate it when needed.  (Tvrtko)

Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220601150725.521468-5-matthew.d.roper@intel.com
drivers/gpu/drm/i915/gt/intel_sseu.c
drivers/gpu/drm/i915/gt/intel_sseu.h
drivers/gpu/drm/i915/i915_query.c