[PATCH i-g-t] tests/intel/gem_spin_batch: Skip compute engines on DG2 due to w/a
Nirmoy Das
nirmoy.das at linux.intel.com
Mon Aug 19 15:47:36 UTC 2024
On 8/16/2024 11:31 PM, Jonathan-Cavitt wrote:
> Much like MTL, there's a w/a on DG2 that prevent the execution of
> multiple non-preemptible processes on RCS and CCS. So, prevent the
> running of CCS engines in the 'spin-all-new' test, extending the MTL
> solution to DG2.
>
> Suggested-by: John Harrison <john.c.harrison at intel.com>
> Signed-off-by: Jonathan-Cavitt <jonathan.cavitt at intel.com>
> CC: Nirmoy Das <nirmoy.das at intel.com>
> CC: Chris Wilson <chris.p.wilson at linux.intel.com>
LGTM now that DG2 and MTL are handled in the same func
Reviewed-by: Nirmoy Das <nirmoy.das at intel.com>
> ---
> tests/intel/gem_spin_batch.c | 22 +++++++++++++++-------
> 1 file changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/tests/intel/gem_spin_batch.c b/tests/intel/gem_spin_batch.c
> index 682a062180..85408a4c0d 100644
> --- a/tests/intel/gem_spin_batch.c
> +++ b/tests/intel/gem_spin_batch.c
> @@ -161,16 +161,24 @@ spin_on_all_engines(int fd, const intel_ctx_t *ctx,
> }
>
> /*
> - * Wa_14019159160:
> - * An RCS/CCS workaround on MTL means that contexts from different address spaces
> - * cannot run in parallel, they must be timesliced. However, a non-preemptible
> - * spinner cannot be timesliced. Thus the PARALLEL_SPIN_NEW_CTX test cannot be run
> - * across both RCS and CCS engines, one or other must be skipped for the test to
> - * not hit a heartbeat timeout and be killed.
> + * Wa_14019159160:MTL
> + * Wa_114014494547:DG2
> + * An RCS/CCS workaround on some platforms means that contexts from different
> + * address spaces cannot run in parallel, they must be timesliced. However, a
> + * non-preemptible spinner cannot be timesliced. Thus the PARALLEL_SPIN_NEW_CTX
> + * test cannot be run across both RCS and CCS engines, one or other must be
> + * skipped for the test to not hit a heartbeat timeout and be killed.
> */
> static bool skip_bad_engine(int fd, const struct intel_execution_engine2 *e)
> {
> - return IS_METEORLAKE(intel_get_drm_devid(fd)) && (e->class == I915_ENGINE_CLASS_COMPUTE);
> + uint32_t devid = intel_get_drm_devid(fd);
> +
> + if (IS_METEORLAKE(devid) && (e->class == I915_ENGINE_CLASS_COMPUTE))
> + return true;
> + else if (IS_DG2(devid) && (e->class == I915_ENGINE_CLASS_COMPUTE))
> + return true;
> + else
> + return false;
> }
>
> static void spin_all(int i915, const intel_ctx_t *ctx, unsigned int flags)
More information about the igt-dev
mailing list