[igt-dev] [PATCH i-g-t v3] gem_ctx_isolation.c - Gen11 enabling for context isolation test

Robert M. Fosha robert.m.fosha at intel.com
Sat Feb 23 02:13:04 UTC 2019


On Thu, Feb 21, 2019 at 09:07:52AM -0800, Dale B Stimson wrote:
> This patch is a change to igt file tests/i915/gem_ctx_isolation.c to add
> Gen11 support.
> 
> This patch enables Gen11 support.
> 
> This patch accounts for whitelisted registers appropriately for the
> different Gen levels.
> 
> This patch accounts for the changed MMIO offsets of Gen11.
> 
> This patch redefines MAX_REG from 0x40000 to 0x200000 due to the
> larger total register space for Gen11 mmio offsets.  The resulting
> big sparse array allocations present a good candidate for future
> optimization of memory usage.
> 
> The current Gen11 SKU has two video engines (with indexes 0 and 2,
> for VCS0 and VCS2), with VCS1 not being used.
> 
> Current kernel and igt limitations only allow for VCS0 and VCS1.
> Those limitations are in the process of being removed.  See for
> example the RFC/PATCH series on igt-dev from Andy Shyti:
>     [igt-dev] [RFC PATCH v9 0/5] new engine discovery interface
> which depends on in-process kernel "media scalability" patches.
> 
> Lacking the above infrastructure at the moment:
> 
> The array of registers to be tested includes VCS2 and VCS3 registers.
> They are present as a provision for the future, but they will
> not actually be tested as those engines are not yet known to the
> underlying infrastructure.
> 
> When run on Gen11 this patch skips the sub-tests for the non-existent VCS1
> with these warnings:
>   Test requirement not met in function gem_require_engine, file ../lib/igt_gt.h:114:
>   Test requirement: gem_has_engine(gem_fd, class, instance)
> 
> Signed-off-by: Dale B Stimson <dale.b.stimson at intel.com>
> ---
>  tests/i915/gem_ctx_isolation.c | 47 +++++++++++++++++++++++++---------
>  1 file changed, 35 insertions(+), 12 deletions(-)
> 
> diff --git a/tests/i915/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c
> index 839d49ad..3bda93cc 100644
> --- a/tests/i915/gem_ctx_isolation.c
> +++ b/tests/i915/gem_ctx_isolation.c
> @@ -24,7 +24,7 @@
>  #include "igt.h"
>  #include "igt_dummyload.h"
>  
> -#define MAX_REG 0x40000
> +#define MAX_REG 0x200000
>  #define NUM_REGS (MAX_REG / sizeof(uint32_t))
>  
>  #define PAGE_ALIGN(x) ALIGN(x, 4096)
> @@ -41,6 +41,8 @@ enum {
>  	BCS0 = ENGINE(I915_ENGINE_CLASS_COPY, 0),
>  	VCS0 = ENGINE(I915_ENGINE_CLASS_VIDEO, 0),
>  	VCS1 = ENGINE(I915_ENGINE_CLASS_VIDEO, 1),
> +	VCS2 = ENGINE(I915_ENGINE_CLASS_VIDEO, 2),
> +	VCS3 = ENGINE(I915_ENGINE_CLASS_VIDEO, 3),
>  	VECS0 = ENGINE(I915_ENGINE_CLASS_VIDEO_ENHANCE, 0),
>  };
>  
> @@ -52,10 +54,12 @@ enum {
>  #define GEN7 (ALL << 7)
>  #define GEN8 (ALL << 8)
>  #define GEN9 (ALL << 9)
> +#define GEN10 (ALL << 10)
> +#define GEN11 (ALL << 11)
>  
>  #define NOCTX 0
>  
> -#define LAST_KNOWN_GEN 10
> +#define LAST_KNOWN_GEN 11
>  
>  static const struct named_register {
>  	const char *name;
> @@ -125,30 +129,49 @@ static const struct named_register {
>  	{ "PERF_CNT_1", NOCTX, RCS0, 0x91b8, 2 },
>  	{ "PERF_CNT_2", NOCTX, RCS0, 0x91c0, 2 },
>  
> +	{ "CTX_PREEMPT", NOCTX /* GEN10 */, RCS0, 0x2248 },
> +	{ "CS_CHICKEN1", GEN11, RCS0, 0x2580 },
> +	{ "HDC_CHICKEN1", GEN_RANGE(10, 11), RCS0, 0x7304 },
> +	{ "L3SQREG1", GEN_RANGE(8, 10), RCS0, 0xb010 },
> +
>  	/* Privileged (enabled by w/a + FORCE_TO_NONPRIV) */
> -	{ "CTX_PREEMPT", NOCTX /* GEN_RANGE(9, 10) */, RCS0, 0x2248 },
> +	{ "CTX_PREEMPT", NOCTX /* GEN9 */, RCS0, 0x2248 },
>  	{ "CS_CHICKEN1", GEN_RANGE(9, 10), RCS0, 0x2580 },
> -	{ "HDC_CHICKEN1", GEN_RANGE(9, 10), RCS0, 0x7304 },
> -	{ "L3SQREG1", GEN8, RCS0, 0xb010 },
> +	{ "HDC_CHICKEN1", GEN_RANGE(9, 9), RCS0, 0x7304 },
> +	{ "HALF_SLICE_CHICKEN7", GEN_RANGE(11, 11), RCS0, 0xe194 },
> +	{ "SAMPLER_MODE", GEN_RANGE(11, 11), RCS0, 0xE18C },
>  
>  	{ "BCS_GPR", GEN9, BCS0, 0x22600, 32 },
>  	{ "BCS_SWCTRL", GEN8, BCS0, 0x22200 },
>  
> -	{ "VCS0_GPR", GEN9, VCS0, 0x12600, 32 },
>  	{ "MFC_VDBOX1", NOCTX, VCS0, 0x12800, 64 },
> -
> -	{ "VCS1_GPR", GEN9, VCS1, 0x1c600, 32 },
>  	{ "MFC_VDBOX2", NOCTX, VCS1, 0x1c800, 64 },
>  
> -	{ "VECS_GPR", GEN9, VECS0, 0x1a600, 32 },
> +	{ "VCS0_GPR", GEN_RANGE(9, 10), VCS0, 0x12600, 32 },
> +	{ "VCS1_GPR", GEN_RANGE(9, 10), VCS1, 0x1c600, 32 },
> +	{ "VECS_GPR", GEN_RANGE(9, 10), VECS0, 0x1a600, 32 },
> +
> +	{ "VCS0_GPR", GEN11, VCS0, 0x1c0600, 32 },
> +	{ "VCS1_GPR", GEN11, VCS1, 0x1c4600, 32 },
> +	{ "VCS2_GPR", GEN11, VCS2, 0x1d0600, 32 },
> +	{ "VCS3_GPR", GEN11, VCS3, 0x1d4600, 32 },
> +	{ "VECS_GPR", GEN11, VECS0, 0x1c8600, 32 },
>  
>  	{}
>  }, ignore_registers[] = {
>  	{ "RCS timestamp", GEN6, ~0u, 0x2358 },
> -	{ "VCS0 timestamp", GEN7, ~0u, 0x12358 },
> -	{ "VCS1 timestamp", GEN7, ~0u, 0x1c358 },
>  	{ "BCS timestamp", GEN7, ~0u, 0x22358 },
> -	{ "VECS timestamp", GEN8, ~0u, 0x1a358 },
> +
> +	{ "VCS0 timestamp", GEN_RANGE(7, 10), ~0u, 0x12358 },
> +	{ "VCS1 timestamp", GEN_RANGE(7, 10), ~0u, 0x1c358 },
> +	{ "VECS timestamp", GEN_RANGE(8, 10), ~0u, 0x1a358 },
> +
> +	{ "VCS0 timestamp", GEN11, ~0u, 0x1c0358 },
> +	{ "VCS1 timestamp", GEN11, ~0u, 0x1c4358 },
> +	{ "VCS2 timestamp", GEN11, ~0u, 0x1d0358 },
> +	{ "VCS3 timestamp", GEN11, ~0u, 0x1d4358 },
> +	{ "VECS timestamp", GEN11, ~0u, 0x1c8358 },
> +
>  	{}
>  };
>  
> -- 
> 2.20.1
> 
Tested By: Robert M. Fosha <robert.m.fosha at intel.com>

Tested on ICLU. No regressions. I did observe suspend/resume issues with the
baseline (i.e., without the change).



More information about the igt-dev mailing list