All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests
@ 2022-03-14  5:14 Ramalingam C
  2022-03-14  6:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Ramalingam C @ 2022-03-14  5:14 UTC (permalink / raw)
  To: Zbigniew Kempczynski, igt-dev

Add subtests for covering the compressed object's eviction.

v2:
  gem_sync after the block_copy blit for init
v3:
  ahnd is passed in as a param [Zbigniew]
  cmd is bb [Zbigniew]
  blt src and dst sizes supposed to be same [Zbigniew]

Signed-off-by: Chris Wilson <chris.p.wilson@intel.com>
Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
 tests/i915/gem_lmem_swapping.c | 222 +++++++++++++++++++++++++++++++--
 1 file changed, 215 insertions(+), 7 deletions(-)

diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
index 582111dddeb9..97858219aa96 100644
--- a/tests/i915/gem_lmem_swapping.c
+++ b/tests/i915/gem_lmem_swapping.c
@@ -22,6 +22,7 @@
 #include <sys/time.h>
 #include <sys/wait.h>
 #include "drm.h"
+#include "i915/i915_blt.h"
 
 IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
 
@@ -30,6 +31,7 @@ IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
 
 #define PAGE_SIZE  (1ULL << 12)
 #define SZ_64K	   (16 * PAGE_SIZE)
+#define DG2_MOCS   (2 << 1)
 
 static const char *readable_unit(uint64_t size)
 {
@@ -60,6 +62,7 @@ struct params {
 #define TEST_RANDOM	(1 << 3)
 #define TEST_ENGINES	(1 << 4)
 #define TEST_MULTI	(1 << 5)
+#define TEST_CCS	(1 << 6)
 	unsigned int flags;
 	unsigned int seed;
 	bool oom_test;
@@ -69,8 +72,56 @@ struct object {
 	uint64_t size;
 	uint32_t seed;
 	uint32_t handle;
+	struct blt_copy_object *blt_obj;
 };
 
+static void set_object(struct blt_copy_object *obj,
+		       uint32_t handle, uint64_t size, uint32_t region,
+		       uint8_t mocs, enum blt_tiling tiling,
+		       enum blt_compression compression,
+		       enum blt_compression_type compression_type)
+{
+	obj->handle = handle;
+	obj->size = size;
+	obj->region = region;
+	obj->mocs = mocs;
+	obj->tiling = tiling;
+	obj->compression = compression;
+	obj->compression_type = compression_type;
+}
+
+static void set_geom(struct blt_copy_object *obj, uint32_t pitch,
+		     int16_t x1, int16_t y1, int16_t x2, int16_t y2,
+		     uint16_t x_offset, uint16_t y_offset)
+{
+	obj->pitch = pitch;
+	obj->x1 = x1;
+	obj->y1 = y1;
+	obj->x2 = x2;
+	obj->y2 = y2;
+	obj->x_offset = x_offset;
+	obj->y_offset = y_offset;
+}
+
+static void set_batch(struct blt_copy_batch *batch,
+		      uint32_t handle, uint64_t size, uint32_t region)
+{
+	batch->handle = handle;
+	batch->size = size;
+	batch->region = region;
+}
+
+static void set_object_ext(struct blt_block_copy_object_ext *obj,
+			   uint8_t compression_format,
+			   uint16_t surface_width, uint16_t surface_height,
+			   enum blt_surface_type surface_type)
+{
+	obj->compression_format = compression_format;
+	obj->surface_width = surface_width;
+	obj->surface_height = surface_height;
+	obj->surface_type = surface_type;
+}
+
 static uint32_t create_bo(int i915,
 			  uint64_t size,
 			  struct drm_i915_gem_memory_class_instance *region,
@@ -105,6 +156,46 @@ init_object(int i915, struct object *obj, unsigned long seed, unsigned int flags
 	munmap(buf, obj->size);
 }
 
+#define BATCH_SIZE		4096
+static void
+init_object_ccs(int i915, struct object *obj, struct blt_copy_object *tmp,
+		struct blt_copy_batch *cmd, unsigned long seed,
+		const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
+{
+	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
+	const struct intel_execution_engine2 *e;
+	struct blt_copy_data blt = {};
+	unsigned long *buf, j;
+
+	obj->seed = seed;
+	for_each_ctx_engine(i915, ctx, e) {
+		igt_assert_f(gem_engine_can_block_copy(i915, e),
+			     "Ctx dont have Blt engine");
+		break;
+	}
+
+	buf = gem_mmap__device_coherent(i915, tmp->handle, 0, obj->size, PROT_WRITE);
+	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, I915_GEM_DOMAIN_WC);
+
+	for (j = 0; j < obj->size / sizeof(*buf); j++)
+		buf[j] = seed++;
+	munmap(buf, obj->size);
+
+	memset(&blt, 0, sizeof(blt));
+	blt.color_depth = CD_32bit;
+
+	memcpy(&blt.src, tmp, sizeof(blt.src));
+	memcpy(&blt.dst, obj->blt_obj, sizeof(blt.dst));
+	memcpy(&blt.bb, cmd, sizeof(blt.bb));
+
+	set_object_ext(&ext.src, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
+	set_object_ext(&ext.dst, 0, obj->blt_obj->x2, obj->blt_obj->y2,
+		       SURFACE_TYPE_2D);
+
+	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
+	gem_sync(i915, obj->blt_obj->handle);
+}
+
 static void
 verify_object(int i915, const struct object *obj,  unsigned int flags)
 {
@@ -125,6 +216,53 @@ verify_object(int i915, const struct object *obj,  unsigned int flags)
 	munmap(buf, obj->size);
 }
 
+static void
+verify_object_ccs(int i915, const struct object *obj,
+		  struct blt_copy_object *tmp, struct blt_copy_batch *cmd,
+		  const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
+{
+	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
+	const struct intel_execution_engine2 *e;
+	struct blt_copy_data blt = {};
+	unsigned long j, val, *buf;
+
+	for_each_ctx_engine(i915, ctx, e) {
+		igt_assert_f(gem_engine_can_block_copy(i915, e),
+			     "ctx dont have Blt engine");
+		break;
+	}
+
+	memset(&blt, 0, sizeof(blt));
+	blt.color_depth = CD_32bit;
+
+	memcpy(&blt.src, obj->blt_obj, sizeof(blt.src));
+	memcpy(&blt.dst, tmp, sizeof(blt.dst));
+	memcpy(&blt.bb, cmd, sizeof(blt.bb));
+
+	blt.dst.x2 = min(obj->blt_obj->x2, tmp->x2);
+	blt.dst.y2 = min(obj->blt_obj->y2, tmp->y2);
+
+	set_object_ext(&ext.src, 0, obj->blt_obj->x2, obj->blt_obj->y2,
+		       SURFACE_TYPE_2D);
+	set_object_ext(&ext.dst, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
+	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
+
+	buf = gem_mmap__device_coherent(i915, tmp->handle, 0,
+					obj->size, PROT_READ);
+	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, 0);
+
+	for (j = 0; j < obj->size / PAGE_SIZE; j++) {
+		unsigned long x = (j * PAGE_SIZE + rand() % PAGE_SIZE) / sizeof(*buf);
+
+		val = obj->seed + x;
+		igt_assert_f(buf[x] == val,
+			     "Object mismatch at offset %lu - found %lx, expected %lx, difference:%lx!\n",
+			     x * sizeof(*buf), buf[x], val, buf[x] ^ val);
+	}
+
+	munmap(buf, obj->size);
+}
+
 static void move_to_lmem(int i915,
 			 struct object *list,
 			 unsigned int num,
@@ -160,31 +298,62 @@ static void __do_evict(int i915,
 		       struct params *params,
 		       unsigned int seed)
 {
+	uint32_t region_id = INTEL_MEMORY_REGION_ID(region->memory_class,
+						    region->memory_instance);
 	const unsigned int max_swap_in = params->count / 100 + 1;
 	const uint32_t bbe = MI_BATCH_BUFFER_END;
 	struct object *objects, *obj, *list;
-	uint32_t batch;
+	const uint32_t bpp = 32;
+	uint32_t batch, width, height, stride;
+	const intel_ctx_t *blt_ctx;
+	struct blt_copy_object *tmp;
+	struct blt_copy_batch *cmd;
 	unsigned int engine = 0;
 	unsigned int i, l;
-	uint64_t size;
+	uint64_t size, ahnd;
 	struct timespec t = {};
 	unsigned int num;
 
+	width = PAGE_SIZE / (bpp / 8);
+	height = params->size.max / (bpp / 8) /  width;
+	stride = width * 4;
+
+	tmp = calloc(1, sizeof(*tmp));
+	cmd = calloc(1, sizeof(*cmd));
+
 	__gem_context_set_persistence(i915, 0, false);
 	size = 4096;
 	batch = create_bo(i915, size, region, params->oom_test);
-
 	gem_write(i915, batch, 0, &bbe, sizeof(bbe));
 
+	if (params->flags & TEST_CCS)
+		blt_ctx = intel_ctx_create_for_engine(i915,
+						      I915_ENGINE_CLASS_COPY,
+						      0);
+
 	objects = calloc(params->count, sizeof(*objects));
 	igt_assert(objects);
 
 	list = calloc(max_swap_in, sizeof(*list));
 	igt_assert(list);
 
+	ahnd = intel_allocator_open_full(i915, blt_ctx->id, 0, 0,
+					 INTEL_ALLOCATOR_SIMPLE,
+					 ALLOC_STRATEGY_LOW_TO_HIGH, 0);
 	srand(seed);
 
 	/* Create the initial working set of objects. */
+	if (params->flags & TEST_CCS) {
+		tmp->handle = gem_create_in_memory_regions(i915, params->size.max,
+				   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0));
+		set_object(tmp, tmp->handle, params->size.max,
+			   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0), DG2_MOCS,
+			   T_LINEAR, COMPRESSION_DISABLED, COMPRESSION_TYPE_3D);
+		set_geom(tmp, stride, 0, 0, width, height, 0, 0);
+		cmd->handle = gem_create_in_memory_regions(i915, BATCH_SIZE, region_id);
+		set_batch(cmd, cmd->handle, BATCH_SIZE, region_id);
+	}
+
 	size = 0;
 	for (i = 0, obj = objects; i < params->count; i++, obj++) {
 		if (params->flags & TEST_RANDOM)
@@ -194,6 +363,7 @@ static void __do_evict(int i915,
 		else
 			obj->size = params->size.min;
 
+		obj->size = ALIGN(obj->size, 4096);
 		size += obj->size;
 		if ((size >> 20) > params->mem_limit) {
 			params->count = i;
@@ -201,10 +371,26 @@ static void __do_evict(int i915,
 		}
 		obj->handle = create_bo(i915, obj->size, region, params->oom_test);
 
-		move_to_lmem(i915, objects + i, 1, batch, engine,
-			     params->oom_test);
-		if (params->flags & TEST_VERIFY)
+		if (params->flags & TEST_CCS) {
+			width = PAGE_SIZE / (bpp / 8);
+			height = obj->size / (bpp / 8) /  width;
+			stride = width * 4;
+
+			obj->blt_obj = calloc(1, sizeof(*obj->blt_obj));
+			set_object(obj->blt_obj, obj->handle, obj->size, region_id,
+				   DG2_MOCS, T_LINEAR, COMPRESSION_ENABLED,
+				   COMPRESSION_TYPE_3D);
+			set_geom(obj->blt_obj, stride, 0, 0, width, height, 0, 0);
+			init_object_ccs(i915, obj, tmp, cmd, rand(), blt_ctx,
+					region_id, ahnd);
+		} else if (params->flags & TEST_VERIFY) {
 			init_object(i915, obj, rand(), params->flags);
+			move_to_lmem(i915, objects + i, 1, batch, engine,
+				     params->oom_test);
+		} else {
+			move_to_lmem(i915, objects + i, 1, batch, engine,
+				     params->oom_test);
+		}
 	}
 
 	igt_debug("obj size min/max=%lu %s/%lu %s, count=%u, seed: %u\n",
@@ -231,7 +417,15 @@ static void __do_evict(int i915,
 		if (params->flags & TEST_ENGINES)
 			engine = (engine + 1) % __num_engines__;
 
-		if (params->flags & TEST_VERIFY) {
+		if (params->flags & TEST_CCS) {
+			for (i = 0; i < num; i++)
+				verify_object_ccs(i915, &list[i], tmp, cmd,
+						  blt_ctx, region_id, ahnd);
+			/* Update random object - may swap it back in. */
+			i = rand() % params->count;
+			init_object_ccs(i915, &objects[i], tmp, cmd, rand(),
+					blt_ctx, region_id, ahnd);
+		} else if (params->flags & TEST_VERIFY) {
 			for (i = 0; i < num; i++)
 				verify_object(i915, &list[i], params->flags);
 
@@ -241,11 +435,17 @@ static void __do_evict(int i915,
 		}
 	}
 
+	put_ahnd(ahnd);
 	for (i = 0; i < params->count; i++)
 		gem_close(i915, objects[i].handle);
 
 	free(list);
 	free(objects);
+	if (params->flags & TEST_CCS) {
+		gem_close(i915, cmd->handle);
+		gem_close(i915, tmp->handle);
+		gem_context_destroy(i915, blt_ctx->id);
+	}
 
 	gem_close(i915, batch);
 }
@@ -348,6 +548,9 @@ static void test_evict(int i915,
 	const unsigned int nproc = sysconf(_SC_NPROCESSORS_ONLN) + 1;
 	struct params params;
 
+	if (flags & TEST_CCS)
+		igt_require(IS_DG2(intel_get_drm_devid(i915)));
+
 	fill_params(i915, &params, region, flags, nproc, false);
 
 	if (flags & TEST_PARALLEL) {
@@ -511,6 +714,11 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 		{ "parallel-random-engines", TEST_PARALLEL | TEST_RANDOM | TEST_ENGINES },
 		{ "parallel-random-verify", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY },
 		{ "parallel-multi", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY | TEST_ENGINES | TEST_MULTI },
+		{ "verify-ccs", TEST_CCS },
+		{ "verify-random-ccs", TEST_CCS | TEST_RANDOM },
+		{ "heavy-verify-random-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY },
+		{ "heavy-verify-multi-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY | TEST_ENGINES | TEST_MULTI },
+		{ "parallel-random-verify-ccs", TEST_PARALLEL | TEST_RANDOM | TEST_CCS },
 		{ }
 	};
 	int i915 = -1;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/i915/gem_lmem_swapping: Add ccs subtests
  2022-03-14  5:14 [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
@ 2022-03-14  6:08 ` Patchwork
  2022-03-14  7:12 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-03-14  6:08 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 4655 bytes --]

== Series Details ==

Series: tests/i915/gem_lmem_swapping: Add ccs subtests
URL   : https://patchwork.freedesktop.org/series/101324/
State : success

== Summary ==

CI Bug Log - changes from IGT_6379 -> IGTPW_6786
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/index.html

Participating hosts (41 -> 37)
------------------------------

  Missing    (4): fi-kbl-soraka fi-bsw-cyan fi-bdw-samus fi-pnv-d510 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_6786:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@gem_lmem_swapping@basic@lmem0:
    - {bat-dg2-9}:        [PASS][1] -> [CRASH][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/bat-dg2-9/igt@gem_lmem_swapping@basic@lmem0.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/bat-dg2-9/igt@gem_lmem_swapping@basic@lmem0.html

  * igt@gem_lmem_swapping@parallel-random-engines@lmem0:
    - {bat-dg2-9}:        [FAIL][3] ([i915#5192]) -> [CRASH][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/bat-dg2-9/igt@gem_lmem_swapping@parallel-random-engines@lmem0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/bat-dg2-9/igt@gem_lmem_swapping@parallel-random-engines@lmem0.html

  * igt@i915_selftest@live@gt_pm:
    - {bat-rpls-2}:       [PASS][5] -> [INCOMPLETE][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/bat-rpls-2/igt@i915_selftest@live@gt_pm.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/bat-rpls-2/igt@i915_selftest@live@gt_pm.html

  * igt@kms_frontbuffer_tracking@basic:
    - {bat-dg2-9}:        [FAIL][7] ([i915#5276]) -> [DMESG-FAIL][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/bat-dg2-9/igt@kms_frontbuffer_tracking@basic.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/bat-dg2-9/igt@kms_frontbuffer_tracking@basic.html

  
Known issues
------------

  Here are the changes found in IGTPW_6786 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_suspend@basic-s3@smem:
    - fi-bdw-5557u:       [PASS][9] -> [INCOMPLETE][10] ([i915#146])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/fi-bdw-5557u/igt@gem_exec_suspend@basic-s3@smem.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/fi-bdw-5557u/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@i915_selftest@live@hangcheck:
    - fi-hsw-4770:        [PASS][11] -> [INCOMPLETE][12] ([i915#3303])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/fi-hsw-4770/igt@i915_selftest@live@hangcheck.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/fi-hsw-4770/igt@i915_selftest@live@hangcheck.html

  * igt@runner@aborted:
    - fi-hsw-4770:        NOTRUN -> [FAIL][13] ([fdo#109271] / [i915#1436] / [i915#4312])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/fi-hsw-4770/igt@runner@aborted.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#146]: https://gitlab.freedesktop.org/drm/intel/issues/146
  [i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391
  [i915#5127]: https://gitlab.freedesktop.org/drm/intel/issues/5127
  [i915#5192]: https://gitlab.freedesktop.org/drm/intel/issues/5192
  [i915#5276]: https://gitlab.freedesktop.org/drm/intel/issues/5276


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_6379 -> IGTPW_6786

  CI-20190529: 20190529
  CI_DRM_11355: 16e4683c0a29f572cbc04ff619f6fdb703d8024e @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_6786: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/index.html
  IGT_6379: e6a29643dc4d7ae45efc3f25c30ef8ffac875f18 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git



== Testlist changes ==

+igt@gem_lmem_swapping@heavy-verify-multi-ccs
+igt@gem_lmem_swapping@heavy-verify-random-ccs
+igt@gem_lmem_swapping@parallel-random-verify-ccs
+igt@gem_lmem_swapping@verify-ccs
+igt@gem_lmem_swapping@verify-random-ccs

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/index.html

[-- Attachment #2: Type: text/html, Size: 5331 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for tests/i915/gem_lmem_swapping: Add ccs subtests
  2022-03-14  5:14 [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
  2022-03-14  6:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2022-03-14  7:12 ` Patchwork
  2022-03-15  9:29 ` [igt-dev] [PATCH i-g-t v3] " Zbigniew Kempczyński
  2022-03-29 12:41 ` [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/gem_lmem_swapping: Add ccs subtests (rev2) Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-03-14  7:12 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 30265 bytes --]

== Series Details ==

Series: tests/i915/gem_lmem_swapping: Add ccs subtests
URL   : https://patchwork.freedesktop.org/series/101324/
State : success

== Summary ==

CI Bug Log - changes from IGT_6379_full -> IGTPW_6786_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/index.html

Participating hosts (10 -> 9)
------------------------------

  Missing    (1): shard-dg1 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_6786_full:

### IGT changes ###

#### Possible regressions ####

  * {igt@gem_lmem_swapping@heavy-verify-multi-ccs} (NEW):
    - shard-iclb:         NOTRUN -> [SKIP][1] +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb3/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html
    - shard-tglb:         NOTRUN -> [SKIP][2]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb3/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html
    - {shard-tglu}:       NOTRUN -> [SKIP][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglu-6/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html

  * {igt@gem_lmem_swapping@heavy-verify-random-ccs} (NEW):
    - {shard-rkl}:        NOTRUN -> [SKIP][4] +2 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-random-ccs.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@gem_exec_schedule@smoketest@bcs0:
    - {shard-rkl}:        NOTRUN -> [INCOMPLETE][5]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-rkl-5/igt@gem_exec_schedule@smoketest@bcs0.html

  * igt@gem_workarounds@suspend-resume-context:
    - {shard-rkl}:        [PASS][6] -> [DMESG-WARN][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-rkl-5/igt@gem_workarounds@suspend-resume-context.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-rkl-5/igt@gem_workarounds@suspend-resume-context.html

  * igt@kms_plane_lowres@pipe-a-tiling-4:
    - {shard-rkl}:        NOTRUN -> [SKIP][8]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-rkl-6/igt@kms_plane_lowres@pipe-a-tiling-4.html

  
New tests
---------

  New tests have been introduced between IGT_6379_full and IGTPW_6786_full:

### New IGT tests (5) ###

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs:
    - Statuses : 8 skip(s)
    - Exec time: [0.0] s

  * igt@gem_lmem_swapping@heavy-verify-random-ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@gem_lmem_swapping@verify-ccs:
    - Statuses :
    - Exec time: [None] s

  * igt@gem_lmem_swapping@verify-random-ccs:
    - Statuses :
    - Exec time: [None] s

  

Known issues
------------

  Here are the changes found in IGTPW_6786_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@feature_discovery@chamelium:
    - shard-tglb:         NOTRUN -> [SKIP][9] ([fdo#111827])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@feature_discovery@chamelium.html
    - shard-iclb:         NOTRUN -> [SKIP][10] ([fdo#111827])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb4/igt@feature_discovery@chamelium.html

  * igt@gem_create@create-massive:
    - shard-iclb:         NOTRUN -> [DMESG-WARN][11] ([i915#4991])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb1/igt@gem_create@create-massive.html
    - shard-kbl:          NOTRUN -> [DMESG-WARN][12] ([i915#4991]) +1 similar issue
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl7/igt@gem_create@create-massive.html
    - shard-tglb:         NOTRUN -> [DMESG-WARN][13] ([i915#4991])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@gem_create@create-massive.html
    - shard-apl:          NOTRUN -> [DMESG-WARN][14] ([i915#4991])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl6/igt@gem_create@create-massive.html

  * igt@gem_ctx_param@set-priority-not-supported:
    - shard-tglb:         NOTRUN -> [SKIP][15] ([fdo#109314])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@gem_ctx_param@set-priority-not-supported.html
    - shard-iclb:         NOTRUN -> [SKIP][16] ([fdo#109314])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb4/igt@gem_ctx_param@set-priority-not-supported.html

  * igt@gem_ctx_persistence@legacy-engines-queued:
    - shard-snb:          NOTRUN -> [SKIP][17] ([fdo#109271] / [i915#1099]) +1 similar issue
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-snb4/igt@gem_ctx_persistence@legacy-engines-queued.html

  * igt@gem_eio@in-flight-contexts-1us:
    - shard-snb:          [PASS][18] -> [FAIL][19] ([i915#4409])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-snb5/igt@gem_eio@in-flight-contexts-1us.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-snb7/igt@gem_eio@in-flight-contexts-1us.html

  * igt@gem_eio@in-flight-immediate:
    - shard-tglb:         [PASS][20] -> [TIMEOUT][21] ([i915#3063])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-tglb2/igt@gem_eio@in-flight-immediate.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb2/igt@gem_eio@in-flight-immediate.html

  * igt@gem_exec_async@concurrent-writes@rcs0:
    - shard-iclb:         [PASS][22] -> [DMESG-WARN][23] ([i915#4391]) +1 similar issue
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-iclb2/igt@gem_exec_async@concurrent-writes@rcs0.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb7/igt@gem_exec_async@concurrent-writes@rcs0.html

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-tglb:         NOTRUN -> [DMESG-WARN][24] ([i915#5076])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@gem_exec_balancer@parallel-keep-in-fence.html
    - shard-kbl:          NOTRUN -> [DMESG-WARN][25] ([i915#5076])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl3/igt@gem_exec_balancer@parallel-keep-in-fence.html
    - shard-iclb:         NOTRUN -> [SKIP][26] ([i915#4525])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb8/igt@gem_exec_balancer@parallel-keep-in-fence.html

  * igt@gem_exec_capture@pi@vecs0:
    - shard-iclb:         NOTRUN -> [INCOMPLETE][27] ([i915#3371])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb8/igt@gem_exec_capture@pi@vecs0.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-kbl:          NOTRUN -> [FAIL][28] ([i915#2846])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl1/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-iclb:         NOTRUN -> [FAIL][29] ([i915#2842]) +4 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb5/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-iclb:         [PASS][30] -> [FAIL][31] ([i915#2842])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-iclb2/igt@gem_exec_fair@basic-none-share@rcs0.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb6/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][32] ([i915#2842])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk7/igt@gem_exec_fair@basic-none@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-tglb:         NOTRUN -> [FAIL][33] ([i915#2842]) +5 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb2/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_fair@basic-pace@vcs1:
    - shard-kbl:          [PASS][34] -> [FAIL][35] ([i915#2842])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-kbl1/igt@gem_exec_fair@basic-pace@vcs1.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl4/igt@gem_exec_fair@basic-pace@vcs1.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-iclb:         NOTRUN -> [FAIL][36] ([i915#2849])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb4/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_params@no-bsd:
    - shard-iclb:         NOTRUN -> [SKIP][37] ([fdo#109283])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb8/igt@gem_exec_params@no-bsd.html

  * igt@gem_exec_whisper@basic-normal:
    - shard-glk:          NOTRUN -> [DMESG-WARN][38] ([i915#118])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk4/igt@gem_exec_whisper@basic-normal.html

  * igt@gem_lmem_swapping@basic:
    - shard-glk:          NOTRUN -> [SKIP][39] ([fdo#109271] / [i915#4613]) +1 similar issue
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk6/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@heavy-random:
    - shard-iclb:         NOTRUN -> [SKIP][40] ([i915#4613]) +3 similar issues
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb8/igt@gem_lmem_swapping@heavy-random.html

  * igt@gem_lmem_swapping@parallel-random-verify:
    - shard-kbl:          NOTRUN -> [SKIP][41] ([fdo#109271] / [i915#4613]) +2 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl1/igt@gem_lmem_swapping@parallel-random-verify.html

  * igt@gem_lmem_swapping@random:
    - shard-apl:          NOTRUN -> [SKIP][42] ([fdo#109271] / [i915#4613]) +1 similar issue
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl2/igt@gem_lmem_swapping@random.html
    - shard-tglb:         NOTRUN -> [SKIP][43] ([i915#4613]) +2 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@gem_lmem_swapping@random.html

  * igt@gem_mmap_gtt@fault-concurrent-x:
    - shard-snb:          [PASS][44] -> [INCOMPLETE][45] ([i915#5161])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-snb4/igt@gem_mmap_gtt@fault-concurrent-x.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-snb7/igt@gem_mmap_gtt@fault-concurrent-x.html

  * igt@gem_pxp@regular-baseline-src-copy-readible:
    - shard-tglb:         NOTRUN -> [SKIP][46] ([i915#4270]) +4 similar issues
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@gem_pxp@regular-baseline-src-copy-readible.html
    - shard-iclb:         NOTRUN -> [SKIP][47] ([i915#4270]) +4 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb6/igt@gem_pxp@regular-baseline-src-copy-readible.html

  * igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-yf-tiled:
    - shard-iclb:         NOTRUN -> [SKIP][48] ([i915#768]) +2 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb7/igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-yf-tiled.html

  * igt@gem_softpin@evict-snoop:
    - shard-iclb:         NOTRUN -> [SKIP][49] ([fdo#109312])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb5/igt@gem_softpin@evict-snoop.html
    - shard-tglb:         NOTRUN -> [SKIP][50] ([fdo#109312])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb6/igt@gem_softpin@evict-snoop.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-tglb:         NOTRUN -> [SKIP][51] ([i915#3297]) +1 similar issue
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb5/igt@gem_userptr_blits@unsync-unmap-cycles.html
    - shard-iclb:         NOTRUN -> [SKIP][52] ([i915#3297]) +1 similar issue
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb3/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@gen7_exec_parse@cmd-crossing-page:
    - shard-tglb:         NOTRUN -> [SKIP][53] ([fdo#109289]) +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb5/igt@gen7_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@batch-invalid-length:
    - shard-snb:          NOTRUN -> [SKIP][54] ([fdo#109271]) +180 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-snb4/igt@gen9_exec_parse@batch-invalid-length.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-iclb:         NOTRUN -> [SKIP][55] ([i915#2856]) +5 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb3/igt@gen9_exec_parse@bb-chained.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-tglb:         NOTRUN -> [SKIP][56] ([i915#2527] / [i915#2856]) +5 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@gen9_exec_parse@shadow-peek.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-tglb:         NOTRUN -> [FAIL][57] ([i915#454])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb1/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_rpm@gem-execbuf-stress-pc8:
    - shard-iclb:         NOTRUN -> [SKIP][58] ([fdo#109293] / [fdo#109506])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb2/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html
    - shard-tglb:         NOTRUN -> [SKIP][59] ([fdo#109506] / [i915#2411])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb3/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - shard-iclb:         NOTRUN -> [SKIP][60] ([fdo#110892])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb7/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

  * igt@i915_selftest@live@gt_heartbeat:
    - shard-apl:          [PASS][61] -> [DMESG-FAIL][62] ([i915#541])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-apl4/igt@i915_selftest@live@gt_heartbeat.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl2/igt@i915_selftest@live@gt_heartbeat.html

  * igt@i915_selftest@live@gt_lrc:
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][63] ([i915#2373])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb3/igt@i915_selftest@live@gt_lrc.html

  * igt@i915_selftest@live@gt_pm:
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][64] ([i915#1759])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb3/igt@i915_selftest@live@gt_pm.html

  * igt@kms_atomic_transition@plane-all-modeset-transition:
    - shard-iclb:         NOTRUN -> [SKIP][65] ([i915#1769])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb8/igt@kms_atomic_transition@plane-all-modeset-transition.html
    - shard-tglb:         NOTRUN -> [SKIP][66] ([i915#1769])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@kms_atomic_transition@plane-all-modeset-transition.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-iclb:         NOTRUN -> [SKIP][67] ([i915#5286]) +7 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb7/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-tglb:         NOTRUN -> [SKIP][68] ([i915#5286]) +6 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-apl:          NOTRUN -> [SKIP][69] ([fdo#109271]) +201 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl8/igt@kms_big_fb@linear-16bpp-rotate-90.html
    - shard-iclb:         NOTRUN -> [SKIP][70] ([fdo#110725] / [fdo#111614]) +7 similar issues
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb7/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@linear-32bpp-rotate-180:
    - shard-glk:          [PASS][71] -> [DMESG-WARN][72] ([i915#118]) +2 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-glk3/igt@kms_big_fb@linear-32bpp-rotate-180.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk8/igt@kms_big_fb@linear-32bpp-rotate-180.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-90:
    - shard-tglb:         NOTRUN -> [SKIP][73] ([fdo#111614]) +6 similar issues
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-glk:          NOTRUN -> [SKIP][74] ([fdo#109271] / [i915#3777]) +4 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk4/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-apl:          NOTRUN -> [SKIP][75] ([fdo#109271] / [i915#3777]) +3 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][76] ([fdo#111615]) +6 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb5/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-kbl:          NOTRUN -> [SKIP][77] ([fdo#109271] / [i915#3777]) +6 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-iclb:         NOTRUN -> [SKIP][78] ([fdo#110723])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb1/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_big_joiner@basic:
    - shard-tglb:         NOTRUN -> [SKIP][79] ([i915#2705]) +1 similar issue
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@kms_big_joiner@basic.html
    - shard-iclb:         NOTRUN -> [SKIP][80] ([i915#2705]) +1 similar issue
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb5/igt@kms_big_joiner@basic.html

  * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][81] ([i915#3689] / [i915#3886]) +8 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb1/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc:
    - shard-kbl:          NOTRUN -> [SKIP][82] ([fdo#109271] / [i915#3886]) +16 similar issues
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl6/igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-a-random-ccs-data-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][83] ([fdo#111615] / [i915#3689]) +4 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb3/igt@kms_ccs@pipe-a-random-ccs-data-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-b-bad-pixel-format-y_tiled_gen12_mc_ccs:
    - shard-glk:          NOTRUN -> [SKIP][84] ([fdo#109271] / [i915#3886]) +8 similar issues
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk4/igt@kms_ccs@pipe-b-bad-pixel-format-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc:
    - shard-iclb:         NOTRUN -> [SKIP][85] ([fdo#109278] / [i915#3886]) +17 similar issues
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb7/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc.html
    - shard-apl:          NOTRUN -> [SKIP][86] ([fdo#109271] / [i915#3886]) +11 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl1/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-d-ccs-on-another-bo-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][87] ([i915#3689]) +6 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb5/igt@kms_ccs@pipe-d-ccs-on-another-bo-y_tiled_ccs.html

  * igt@kms_chamelium@dp-edid-change-during-suspend:
    - shard-apl:          NOTRUN -> [SKIP][88] ([fdo#109271] / [fdo#111827]) +16 similar issues
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl1/igt@kms_chamelium@dp-edid-change-during-suspend.html

  * igt@kms_chamelium@vga-hpd-after-suspend:
    - shard-tglb:         NOTRUN -> [SKIP][89] ([fdo#109284] / [fdo#111827]) +16 similar issues
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb1/igt@kms_chamelium@vga-hpd-after-suspend.html

  * igt@kms_chamelium@vga-hpd-for-each-pipe:
    - shard-kbl:          NOTRUN -> [SKIP][90] ([fdo#109271] / [fdo#111827]) +18 similar issues
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl6/igt@kms_chamelium@vga-hpd-for-each-pipe.html

  * igt@kms_chamelium@vga-hpd-without-ddc:
    - shard-snb:          NOTRUN -> [SKIP][91] ([fdo#109271] / [fdo#111827]) +9 similar issues
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-snb2/igt@kms_chamelium@vga-hpd-without-ddc.html

  * igt@kms_color@pipe-d-ctm-0-25:
    - shard-iclb:         NOTRUN -> [SKIP][92] ([fdo#109278] / [i915#1149]) +2 similar issues
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb3/igt@kms_color@pipe-d-ctm-0-25.html

  * igt@kms_color_chamelium@pipe-b-ctm-red-to-blue:
    - shard-iclb:         NOTRUN -> [SKIP][93] ([fdo#109284] / [fdo#111827]) +16 similar issues
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb5/igt@kms_color_chamelium@pipe-b-ctm-red-to-blue.html

  * igt@kms_color_chamelium@pipe-d-ctm-0-25:
    - shard-glk:          NOTRUN -> [SKIP][94] ([fdo#109271] / [fdo#111827]) +10 similar issues
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk5/igt@kms_color_chamelium@pipe-d-ctm-0-25.html
    - shard-iclb:         NOTRUN -> [SKIP][95] ([fdo#109278] / [fdo#109284] / [fdo#111827])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb5/igt@kms_color_chamelium@pipe-d-ctm-0-25.html

  * igt@kms_content_protection@atomic:
    - shard-kbl:          NOTRUN -> [TIMEOUT][96] ([i915#1319]) +2 similar issues
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl1/igt@kms_content_protection@atomic.html
    - shard-apl:          NOTRUN -> [TIMEOUT][97] ([i915#1319]) +1 similar issue
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl2/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-iclb:         NOTRUN -> [SKIP][98] ([i915#3116])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb8/igt@kms_content_protection@dp-mst-type-1.html
    - shard-tglb:         NOTRUN -> [SKIP][99] ([i915#3116] / [i915#3299])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@legacy:
    - shard-iclb:         NOTRUN -> [SKIP][100] ([fdo#109300] / [fdo#111066]) +2 similar issues
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb6/igt@kms_content_protection@legacy.html
    - shard-tglb:         NOTRUN -> [SKIP][101] ([i915#1063]) +2 similar issues
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@kms_content_protection@legacy.html

  * igt@kms_cursor_crc@pipe-a-cursor-512x170-random:
    - shard-tglb:         NOTRUN -> [SKIP][102] ([fdo#109279] / [i915#3359]) +7 similar issues
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb3/igt@kms_cursor_crc@pipe-a-cursor-512x170-random.html

  * igt@kms_cursor_crc@pipe-a-cursor-512x512-offscreen:
    - shard-iclb:         NOTRUN -> [SKIP][103] ([fdo#109278] / [fdo#109279]) +6 similar issues
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb8/igt@kms_cursor_crc@pipe-a-cursor-512x512-offscreen.html

  * igt@kms_cursor_crc@pipe-b-cursor-32x32-sliding:
    - shard-tglb:         NOTRUN -> [SKIP][104] ([i915#3319]) +2 similar issues
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb5/igt@kms_cursor_crc@pipe-b-cursor-32x32-sliding.html

  * igt@kms_cursor_crc@pipe-c-cursor-max-size-onscreen:
    - shard-tglb:         NOTRUN -> [SKIP][105] ([i915#3359]) +9 similar issues
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@kms_cursor_crc@pipe-c-cursor-max-size-onscreen.html

  * igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge:
    - shard-iclb:         NOTRUN -> [SKIP][106] ([fdo#109278]) +58 similar issues
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb1/igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic:
    - shard-tglb:         NOTRUN -> [SKIP][107] ([fdo#109274] / [fdo#111825]) +14 similar issues
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb7/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size:
    - shard-iclb:         NOTRUN -> [SKIP][108] ([fdo#109274] / [fdo#109278]) +2 similar issues
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb4/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-tglb:         NOTRUN -> [SKIP][109] ([i915#4103]) +1 similar issue
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_dp_tiled_display@basic-test-pattern:
    - shard-iclb:         NOTRUN -> [SKIP][110] ([i915#426])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb7/igt@kms_dp_tiled_display@basic-test-pattern.html
    - shard-tglb:         NOTRUN -> [SKIP][111] ([i915#426])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb2/igt@kms_dp_tiled_display@basic-test-pattern.html

  * igt@kms_draw_crc@draw-method-rgb565-blt-4tiled:
    - shard-iclb:         NOTRUN -> [SKIP][112] ([i915#5287]) +3 similar issues
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb6/igt@kms_draw_crc@draw-method-rgb565-blt-4tiled.html

  * igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled:
    - shard-tglb:         NOTRUN -> [SKIP][113] ([i915#5287]) +3 similar issues
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb5/igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-xtiled:
    - shard-iclb:         [PASS][114] -> [FAIL][115] ([i915#1888])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-iclb2/igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-xtiled.html
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb3/igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-xtiled.html

  * igt@kms_dsc@xrgb8888-dsc-compression:
    - shard-tglb:         NOTRUN -> [SKIP][116] ([i915#3828])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb8/igt@kms_dsc@xrgb8888-dsc-compression.html
    - shard-iclb:         NOTRUN -> [SKIP][117] ([i915#3828])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb6/igt@kms_dsc@xrgb8888-dsc-compression.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-apl:          [PASS][118] -> [INCOMPLETE][119] ([i915#180] / [i915#1982])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-apl4/igt@kms_fbcon_fbt@fbc-suspend.html
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl7/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a2:
    - shard-glk:          [PASS][120] -> [FAIL][121] ([i915#79])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-glk8/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a2.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-glk5/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a2.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-dp1:
    - shard-kbl:          [PASS][122] -> [DMESG-WARN][123] ([i915#180]) +2 similar issues
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-kbl3/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl6/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-dp1:
    - shard-apl:          [PASS][124] -> [DMESG-WARN][125] ([i915#180]) +2 similar issues
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6379/shard-apl4/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-apl4/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html
    - shard-kbl:          NOTRUN -> [DMESG-WARN][126] ([i915#180]) +2 similar issues
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-kbl6/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-tglb:         NOTRUN -> [SKIP][127] ([i915#2587])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-tglb5/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_force_connector_basic@force-load-detect:
    - shard-iclb:         NOTRUN -> [SKIP][128] ([fdo#109285])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/shard-iclb4/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt:
    - shard-tglb:         NOTRUN -> [SKIP][12

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6786/index.html

[-- Attachment #2: Type: text/html, Size: 34063 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests
  2022-03-14  5:14 [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
  2022-03-14  6:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
  2022-03-14  7:12 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2022-03-15  9:29 ` Zbigniew Kempczyński
  2022-03-21 23:00   ` Ramalingam C
  2022-03-29 12:41 ` [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/gem_lmem_swapping: Add ccs subtests (rev2) Patchwork
  3 siblings, 1 reply; 7+ messages in thread
From: Zbigniew Kempczyński @ 2022-03-15  9:29 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

On Mon, Mar 14, 2022 at 10:44:32AM +0530, Ramalingam C wrote:
> Add subtests for covering the compressed object's eviction.
> 
> v2:
>   gem_sync after the block_copy blit for init
> v3:
>   ahnd is passed in as a param [Zbigniew]
>   cmd is bb [Zbigniew]
>   blt src and dst sizes supposed to be same [Zbigniew]
> 
> Signed-off-by: Chris Wilson <chris.p.wilson@intel.com>
> Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> ---
>  tests/i915/gem_lmem_swapping.c | 222 +++++++++++++++++++++++++++++++--
>  1 file changed, 215 insertions(+), 7 deletions(-)
> 
> diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
> index 582111dddeb9..97858219aa96 100644
> --- a/tests/i915/gem_lmem_swapping.c
> +++ b/tests/i915/gem_lmem_swapping.c
> @@ -22,6 +22,7 @@
>  #include <sys/time.h>
>  #include <sys/wait.h>
>  #include "drm.h"
> +#include "i915/i915_blt.h"
>  
>  IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
>  
> @@ -30,6 +31,7 @@ IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
>  
>  #define PAGE_SIZE  (1ULL << 12)
>  #define SZ_64K	   (16 * PAGE_SIZE)
> +#define DG2_MOCS   (2 << 1)
>  
>  static const char *readable_unit(uint64_t size)
>  {
> @@ -60,6 +62,7 @@ struct params {
>  #define TEST_RANDOM	(1 << 3)
>  #define TEST_ENGINES	(1 << 4)
>  #define TEST_MULTI	(1 << 5)
> +#define TEST_CCS	(1 << 6)
>  	unsigned int flags;
>  	unsigned int seed;
>  	bool oom_test;
> @@ -69,8 +72,56 @@ struct object {
>  	uint64_t size;
>  	uint32_t seed;
>  	uint32_t handle;
> +	struct blt_copy_object *blt_obj;
>  };
>  
> +static void set_object(struct blt_copy_object *obj,
> +		       uint32_t handle, uint64_t size, uint32_t region,
> +		       uint8_t mocs, enum blt_tiling tiling,
> +		       enum blt_compression compression,
> +		       enum blt_compression_type compression_type)
> +{
> +	obj->handle = handle;
> +	obj->size = size;
> +	obj->region = region;
> +	obj->mocs = mocs;
> +	obj->tiling = tiling;
> +	obj->compression = compression;
> +	obj->compression_type = compression_type;
> +}
> +
> +static void set_geom(struct blt_copy_object *obj, uint32_t pitch,
> +		     int16_t x1, int16_t y1, int16_t x2, int16_t y2,
> +		     uint16_t x_offset, uint16_t y_offset)
> +{
> +	obj->pitch = pitch;
> +	obj->x1 = x1;
> +	obj->y1 = y1;
> +	obj->x2 = x2;
> +	obj->y2 = y2;
> +	obj->x_offset = x_offset;
> +	obj->y_offset = y_offset;
> +}
> +
> +static void set_batch(struct blt_copy_batch *batch,
> +		      uint32_t handle, uint64_t size, uint32_t region)
> +{
> +	batch->handle = handle;
> +	batch->size = size;
> +	batch->region = region;
> +}
> +
> +static void set_object_ext(struct blt_block_copy_object_ext *obj,
> +			   uint8_t compression_format,
> +			   uint16_t surface_width, uint16_t surface_height,
> +			   enum blt_surface_type surface_type)
> +{
> +	obj->compression_format = compression_format;
> +	obj->surface_width = surface_width;
> +	obj->surface_height = surface_height;
> +	obj->surface_type = surface_type;
> +}
> +
>  static uint32_t create_bo(int i915,
>  			  uint64_t size,
>  			  struct drm_i915_gem_memory_class_instance *region,
> @@ -105,6 +156,46 @@ init_object(int i915, struct object *obj, unsigned long seed, unsigned int flags
>  	munmap(buf, obj->size);
>  }
>  
> +#define BATCH_SIZE		4096
> +static void
> +init_object_ccs(int i915, struct object *obj, struct blt_copy_object *tmp,
> +		struct blt_copy_batch *cmd, unsigned long seed,
> +		const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
> +{
> +	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
> +	const struct intel_execution_engine2 *e;
> +	struct blt_copy_data blt = {};
> +	unsigned long *buf, j;
> +
> +	obj->seed = seed;
> +	for_each_ctx_engine(i915, ctx, e) {
> +		igt_assert_f(gem_engine_can_block_copy(i915, e),
> +			     "Ctx dont have Blt engine");
> +		break;
> +	}
> +
> +	buf = gem_mmap__device_coherent(i915, tmp->handle, 0, obj->size, PROT_WRITE);
> +	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, I915_GEM_DOMAIN_WC);
> +
> +	for (j = 0; j < obj->size / sizeof(*buf); j++)
> +		buf[j] = seed++;
> +	munmap(buf, obj->size);
> +
> +	memset(&blt, 0, sizeof(blt));
> +	blt.color_depth = CD_32bit;
> +
> +	memcpy(&blt.src, tmp, sizeof(blt.src));
> +	memcpy(&blt.dst, obj->blt_obj, sizeof(blt.dst));
> +	memcpy(&blt.bb, cmd, sizeof(blt.bb));
> +
> +	set_object_ext(&ext.src, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
> +	set_object_ext(&ext.dst, 0, obj->blt_obj->x2, obj->blt_obj->y2,
> +		       SURFACE_TYPE_2D);
> +
> +	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
> +	gem_sync(i915, obj->blt_obj->handle);

You can avoid stalls if you will use gem_create_from_pool().

> +}
> +
>  static void
>  verify_object(int i915, const struct object *obj,  unsigned int flags)
>  {
> @@ -125,6 +216,53 @@ verify_object(int i915, const struct object *obj,  unsigned int flags)
>  	munmap(buf, obj->size);
>  }
>  
> +static void
> +verify_object_ccs(int i915, const struct object *obj,
> +		  struct blt_copy_object *tmp, struct blt_copy_batch *cmd,
> +		  const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
> +{
> +	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
> +	const struct intel_execution_engine2 *e;
> +	struct blt_copy_data blt = {};
> +	unsigned long j, val, *buf;
> +
> +	for_each_ctx_engine(i915, ctx, e) {
> +		igt_assert_f(gem_engine_can_block_copy(i915, e),
> +			     "ctx dont have Blt engine");
> +		break;
> +	}
> +
> +	memset(&blt, 0, sizeof(blt));
> +	blt.color_depth = CD_32bit;
> +
> +	memcpy(&blt.src, obj->blt_obj, sizeof(blt.src));
> +	memcpy(&blt.dst, tmp, sizeof(blt.dst));
> +	memcpy(&blt.bb, cmd, sizeof(blt.bb));
> +
> +	blt.dst.x2 = min(obj->blt_obj->x2, tmp->x2);
> +	blt.dst.y2 = min(obj->blt_obj->y2, tmp->y2);
> +
> +	set_object_ext(&ext.src, 0, obj->blt_obj->x2, obj->blt_obj->y2,
> +		       SURFACE_TYPE_2D);
> +	set_object_ext(&ext.dst, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
> +	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
> +
> +	buf = gem_mmap__device_coherent(i915, tmp->handle, 0,
> +					obj->size, PROT_READ);
> +	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, 0);
> +
> +	for (j = 0; j < obj->size / PAGE_SIZE; j++) {
> +		unsigned long x = (j * PAGE_SIZE + rand() % PAGE_SIZE) / sizeof(*buf);
> +
> +		val = obj->seed + x;
> +		igt_assert_f(buf[x] == val,
> +			     "Object mismatch at offset %lu - found %lx, expected %lx, difference:%lx!\n",
> +			     x * sizeof(*buf), buf[x], val, buf[x] ^ val);
> +	}
> +
> +	munmap(buf, obj->size);
> +}
> +
>  static void move_to_lmem(int i915,
>  			 struct object *list,
>  			 unsigned int num,
> @@ -160,31 +298,62 @@ static void __do_evict(int i915,
>  		       struct params *params,
>  		       unsigned int seed)
>  {
> +	uint32_t region_id = INTEL_MEMORY_REGION_ID(region->memory_class,
> +						    region->memory_instance);
>  	const unsigned int max_swap_in = params->count / 100 + 1;
>  	const uint32_t bbe = MI_BATCH_BUFFER_END;
>  	struct object *objects, *obj, *list;
> -	uint32_t batch;
> +	const uint32_t bpp = 32;
> +	uint32_t batch, width, height, stride;
> +	const intel_ctx_t *blt_ctx;
> +	struct blt_copy_object *tmp;
> +	struct blt_copy_batch *cmd;
>  	unsigned int engine = 0;
>  	unsigned int i, l;
> -	uint64_t size;
> +	uint64_t size, ahnd;
>  	struct timespec t = {};
>  	unsigned int num;
>  
> +	width = PAGE_SIZE / (bpp / 8);
> +	height = params->size.max / (bpp / 8) /  width;
> +	stride = width * 4;
> +
> +	tmp = calloc(1, sizeof(*tmp));
> +	cmd = calloc(1, sizeof(*cmd));
> +
>  	__gem_context_set_persistence(i915, 0, false);
>  	size = 4096;
>  	batch = create_bo(i915, size, region, params->oom_test);
> -
>  	gem_write(i915, batch, 0, &bbe, sizeof(bbe));
>  
> +	if (params->flags & TEST_CCS)
> +		blt_ctx = intel_ctx_create_for_engine(i915,
> +						      I915_ENGINE_CLASS_COPY,
> +						      0);
> +
>  	objects = calloc(params->count, sizeof(*objects));
>  	igt_assert(objects);
>  
>  	list = calloc(max_swap_in, sizeof(*list));
>  	igt_assert(list);
>  
> +	ahnd = intel_allocator_open_full(i915, blt_ctx->id, 0, 0,
> +					 INTEL_ALLOCATOR_SIMPLE,
> +					 ALLOC_STRATEGY_LOW_TO_HIGH, 0);
>  	srand(seed);
>  
>  	/* Create the initial working set of objects. */
> +	if (params->flags & TEST_CCS) {
> +		tmp->handle = gem_create_in_memory_regions(i915, params->size.max,
> +				   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0));
> +		set_object(tmp, tmp->handle, params->size.max,
> +			   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0), DG2_MOCS,
> +			   T_LINEAR, COMPRESSION_DISABLED, COMPRESSION_TYPE_3D);
> +		set_geom(tmp, stride, 0, 0, width, height, 0, 0);
> +		cmd->handle = gem_create_in_memory_regions(i915, BATCH_SIZE, region_id);

I would use bb pool to avoid stalls.


> +		set_batch(cmd, cmd->handle, BATCH_SIZE, region_id);
> +	}
> +
>  	size = 0;
>  	for (i = 0, obj = objects; i < params->count; i++, obj++) {
>  		if (params->flags & TEST_RANDOM)
> @@ -194,6 +363,7 @@ static void __do_evict(int i915,
>  		else
>  			obj->size = params->size.min;
>  
> +		obj->size = ALIGN(obj->size, 4096);
>  		size += obj->size;
>  		if ((size >> 20) > params->mem_limit) {
>  			params->count = i;
> @@ -201,10 +371,26 @@ static void __do_evict(int i915,
>  		}
>  		obj->handle = create_bo(i915, obj->size, region, params->oom_test);
>  
> -		move_to_lmem(i915, objects + i, 1, batch, engine,
> -			     params->oom_test);
> -		if (params->flags & TEST_VERIFY)
> +		if (params->flags & TEST_CCS) {
> +			width = PAGE_SIZE / (bpp / 8);
> +			height = obj->size / (bpp / 8) /  width;
> +			stride = width * 4;
> +
> +			obj->blt_obj = calloc(1, sizeof(*obj->blt_obj));
> +			set_object(obj->blt_obj, obj->handle, obj->size, region_id,
> +				   DG2_MOCS, T_LINEAR, COMPRESSION_ENABLED,
> +				   COMPRESSION_TYPE_3D);
> +			set_geom(obj->blt_obj, stride, 0, 0, width, height, 0, 0);

Especially here and sync after last blit.

> +			init_object_ccs(i915, obj, tmp, cmd, rand(), blt_ctx,
> +					region_id, ahnd);
> +		} else if (params->flags & TEST_VERIFY) {
>  			init_object(i915, obj, rand(), params->flags);
> +			move_to_lmem(i915, objects + i, 1, batch, engine,
> +				     params->oom_test);
> +		} else {
> +			move_to_lmem(i915, objects + i, 1, batch, engine,
> +				     params->oom_test);
> +		}
>  	}
>  
>  	igt_debug("obj size min/max=%lu %s/%lu %s, count=%u, seed: %u\n",
> @@ -231,7 +417,15 @@ static void __do_evict(int i915,
>  		if (params->flags & TEST_ENGINES)
>  			engine = (engine + 1) % __num_engines__;
>  
> -		if (params->flags & TEST_VERIFY) {
> +		if (params->flags & TEST_CCS) {
> +			for (i = 0; i < num; i++)
> +				verify_object_ccs(i915, &list[i], tmp, cmd,
> +						  blt_ctx, region_id, ahnd);

This one syncs internally in gem_set_domain so single bb is ok.

> +			/* Update random object - may swap it back in. */
> +			i = rand() % params->count;
> +			init_object_ccs(i915, &objects[i], tmp, cmd, rand(),
> +					blt_ctx, region_id, ahnd);

But here also I would use bb pool with sync after last one.

Other things looks ok imo.

--
Zbigniew

> +		} else if (params->flags & TEST_VERIFY) {
>  			for (i = 0; i < num; i++)
>  				verify_object(i915, &list[i], params->flags);
>  
> @@ -241,11 +435,17 @@ static void __do_evict(int i915,
>  		}
>  	}
>  
> +	put_ahnd(ahnd);
>  	for (i = 0; i < params->count; i++)
>  		gem_close(i915, objects[i].handle);
>  
>  	free(list);
>  	free(objects);
> +	if (params->flags & TEST_CCS) {
> +		gem_close(i915, cmd->handle);
> +		gem_close(i915, tmp->handle);
> +		gem_context_destroy(i915, blt_ctx->id);
> +	}
>  
>  	gem_close(i915, batch);
>  }
> @@ -348,6 +548,9 @@ static void test_evict(int i915,
>  	const unsigned int nproc = sysconf(_SC_NPROCESSORS_ONLN) + 1;
>  	struct params params;
>  
> +	if (flags & TEST_CCS)
> +		igt_require(IS_DG2(intel_get_drm_devid(i915)));
> +
>  	fill_params(i915, &params, region, flags, nproc, false);
>  
>  	if (flags & TEST_PARALLEL) {
> @@ -511,6 +714,11 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  		{ "parallel-random-engines", TEST_PARALLEL | TEST_RANDOM | TEST_ENGINES },
>  		{ "parallel-random-verify", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY },
>  		{ "parallel-multi", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY | TEST_ENGINES | TEST_MULTI },
> +		{ "verify-ccs", TEST_CCS },
> +		{ "verify-random-ccs", TEST_CCS | TEST_RANDOM },
> +		{ "heavy-verify-random-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY },
> +		{ "heavy-verify-multi-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY | TEST_ENGINES | TEST_MULTI },
> +		{ "parallel-random-verify-ccs", TEST_PARALLEL | TEST_RANDOM | TEST_CCS },
>  		{ }
>  	};
>  	int i915 = -1;
> -- 
> 2.20.1
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests
  2022-03-15  9:29 ` [igt-dev] [PATCH i-g-t v3] " Zbigniew Kempczyński
@ 2022-03-21 23:00   ` Ramalingam C
  2022-03-22  9:51     ` Zbigniew Kempczyński
  0 siblings, 1 reply; 7+ messages in thread
From: Ramalingam C @ 2022-03-21 23:00 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: igt-dev

On 2022-03-15 at 10:29:38 +0100, Zbigniew Kempczyński wrote:
> On Mon, Mar 14, 2022 at 10:44:32AM +0530, Ramalingam C wrote:
> > Add subtests for covering the compressed object's eviction.
> > 
> > v2:
> >   gem_sync after the block_copy blit for init
> > v3:
> >   ahnd is passed in as a param [Zbigniew]
> >   cmd is bb [Zbigniew]
> >   blt src and dst sizes supposed to be same [Zbigniew]
> > 
> > Signed-off-by: Chris Wilson <chris.p.wilson@intel.com>
> > Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
> > Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> > ---
> >  tests/i915/gem_lmem_swapping.c | 222 +++++++++++++++++++++++++++++++--
> >  1 file changed, 215 insertions(+), 7 deletions(-)
> > 
> > diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
> > index 582111dddeb9..97858219aa96 100644
> > --- a/tests/i915/gem_lmem_swapping.c
> > +++ b/tests/i915/gem_lmem_swapping.c
> > @@ -22,6 +22,7 @@
> >  #include <sys/time.h>
> >  #include <sys/wait.h>
> >  #include "drm.h"
> > +#include "i915/i915_blt.h"
> >  
> >  IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
> >  
> > @@ -30,6 +31,7 @@ IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
> >  
> >  #define PAGE_SIZE  (1ULL << 12)
> >  #define SZ_64K	   (16 * PAGE_SIZE)
> > +#define DG2_MOCS   (2 << 1)
> >  
> >  static const char *readable_unit(uint64_t size)
> >  {
> > @@ -60,6 +62,7 @@ struct params {
> >  #define TEST_RANDOM	(1 << 3)
> >  #define TEST_ENGINES	(1 << 4)
> >  #define TEST_MULTI	(1 << 5)
> > +#define TEST_CCS	(1 << 6)
> >  	unsigned int flags;
> >  	unsigned int seed;
> >  	bool oom_test;
> > @@ -69,8 +72,56 @@ struct object {
> >  	uint64_t size;
> >  	uint32_t seed;
> >  	uint32_t handle;
> > +	struct blt_copy_object *blt_obj;
> >  };
> >  
> > +static void set_object(struct blt_copy_object *obj,
> > +		       uint32_t handle, uint64_t size, uint32_t region,
> > +		       uint8_t mocs, enum blt_tiling tiling,
> > +		       enum blt_compression compression,
> > +		       enum blt_compression_type compression_type)
> > +{
> > +	obj->handle = handle;
> > +	obj->size = size;
> > +	obj->region = region;
> > +	obj->mocs = mocs;
> > +	obj->tiling = tiling;
> > +	obj->compression = compression;
> > +	obj->compression_type = compression_type;
> > +}
> > +
> > +static void set_geom(struct blt_copy_object *obj, uint32_t pitch,
> > +		     int16_t x1, int16_t y1, int16_t x2, int16_t y2,
> > +		     uint16_t x_offset, uint16_t y_offset)
> > +{
> > +	obj->pitch = pitch;
> > +	obj->x1 = x1;
> > +	obj->y1 = y1;
> > +	obj->x2 = x2;
> > +	obj->y2 = y2;
> > +	obj->x_offset = x_offset;
> > +	obj->y_offset = y_offset;
> > +}
> > +
> > +static void set_batch(struct blt_copy_batch *batch,
> > +		      uint32_t handle, uint64_t size, uint32_t region)
> > +{
> > +	batch->handle = handle;
> > +	batch->size = size;
> > +	batch->region = region;
> > +}
> > +
> > +static void set_object_ext(struct blt_block_copy_object_ext *obj,
> > +			   uint8_t compression_format,
> > +			   uint16_t surface_width, uint16_t surface_height,
> > +			   enum blt_surface_type surface_type)
> > +{
> > +	obj->compression_format = compression_format;
> > +	obj->surface_width = surface_width;
> > +	obj->surface_height = surface_height;
> > +	obj->surface_type = surface_type;
> > +}
> > +
> >  static uint32_t create_bo(int i915,
> >  			  uint64_t size,
> >  			  struct drm_i915_gem_memory_class_instance *region,
> > @@ -105,6 +156,46 @@ init_object(int i915, struct object *obj, unsigned long seed, unsigned int flags
> >  	munmap(buf, obj->size);
> >  }
> >  
> > +#define BATCH_SIZE		4096
> > +static void
> > +init_object_ccs(int i915, struct object *obj, struct blt_copy_object *tmp,
> > +		struct blt_copy_batch *cmd, unsigned long seed,
> > +		const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
> > +{
> > +	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
> > +	const struct intel_execution_engine2 *e;
> > +	struct blt_copy_data blt = {};
> > +	unsigned long *buf, j;
> > +
> > +	obj->seed = seed;
> > +	for_each_ctx_engine(i915, ctx, e) {
> > +		igt_assert_f(gem_engine_can_block_copy(i915, e),
> > +			     "Ctx dont have Blt engine");
> > +		break;
> > +	}
> > +
> > +	buf = gem_mmap__device_coherent(i915, tmp->handle, 0, obj->size, PROT_WRITE);
> > +	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, I915_GEM_DOMAIN_WC);
> > +
> > +	for (j = 0; j < obj->size / sizeof(*buf); j++)
> > +		buf[j] = seed++;
> > +	munmap(buf, obj->size);
> > +
> > +	memset(&blt, 0, sizeof(blt));
> > +	blt.color_depth = CD_32bit;
> > +
> > +	memcpy(&blt.src, tmp, sizeof(blt.src));
> > +	memcpy(&blt.dst, obj->blt_obj, sizeof(blt.dst));
> > +	memcpy(&blt.bb, cmd, sizeof(blt.bb));
> > +
> > +	set_object_ext(&ext.src, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
> > +	set_object_ext(&ext.dst, 0, obj->blt_obj->x2, obj->blt_obj->y2,
> > +		       SURFACE_TYPE_2D);
> > +
> > +	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
> > +	gem_sync(i915, obj->blt_obj->handle);
> 
> You can avoid stalls if you will use gem_create_from_pool().
Hi Zbigkniew! Thanks for the review.

AFAIK, pool of obj will be useful if we want to keep scheduling work with
different bb. So that we will get different or free bbs each time so
that on the run we wont write into already executing work.

Here the common obj used between init_obj_ccs and verify_obj_ccs are the
obj and also cmd. So either way we need to sync here, which we are
already doing it on obj.

Now could you please help me to understand how pool could help us here?
> 
> > +}
> > +
> >  static void
> >  verify_object(int i915, const struct object *obj,  unsigned int flags)
> >  {
> > @@ -125,6 +216,53 @@ verify_object(int i915, const struct object *obj,  unsigned int flags)
> >  	munmap(buf, obj->size);
> >  }
> >  
> > +static void
> > +verify_object_ccs(int i915, const struct object *obj,
> > +		  struct blt_copy_object *tmp, struct blt_copy_batch *cmd,
> > +		  const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
> > +{
> > +	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
> > +	const struct intel_execution_engine2 *e;
> > +	struct blt_copy_data blt = {};
> > +	unsigned long j, val, *buf;
> > +
> > +	for_each_ctx_engine(i915, ctx, e) {
> > +		igt_assert_f(gem_engine_can_block_copy(i915, e),
> > +			     "ctx dont have Blt engine");
> > +		break;
> > +	}
> > +
> > +	memset(&blt, 0, sizeof(blt));
> > +	blt.color_depth = CD_32bit;
> > +
> > +	memcpy(&blt.src, obj->blt_obj, sizeof(blt.src));
> > +	memcpy(&blt.dst, tmp, sizeof(blt.dst));
> > +	memcpy(&blt.bb, cmd, sizeof(blt.bb));
> > +
> > +	blt.dst.x2 = min(obj->blt_obj->x2, tmp->x2);
> > +	blt.dst.y2 = min(obj->blt_obj->y2, tmp->y2);
> > +
> > +	set_object_ext(&ext.src, 0, obj->blt_obj->x2, obj->blt_obj->y2,
> > +		       SURFACE_TYPE_2D);
> > +	set_object_ext(&ext.dst, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
> > +	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
> > +
> > +	buf = gem_mmap__device_coherent(i915, tmp->handle, 0,
> > +					obj->size, PROT_READ);
> > +	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, 0);
> > +
> > +	for (j = 0; j < obj->size / PAGE_SIZE; j++) {
> > +		unsigned long x = (j * PAGE_SIZE + rand() % PAGE_SIZE) / sizeof(*buf);
> > +
> > +		val = obj->seed + x;
> > +		igt_assert_f(buf[x] == val,
> > +			     "Object mismatch at offset %lu - found %lx, expected %lx, difference:%lx!\n",
> > +			     x * sizeof(*buf), buf[x], val, buf[x] ^ val);
> > +	}
> > +
> > +	munmap(buf, obj->size);
> > +}
> > +
> >  static void move_to_lmem(int i915,
> >  			 struct object *list,
> >  			 unsigned int num,
> > @@ -160,31 +298,62 @@ static void __do_evict(int i915,
> >  		       struct params *params,
> >  		       unsigned int seed)
> >  {
> > +	uint32_t region_id = INTEL_MEMORY_REGION_ID(region->memory_class,
> > +						    region->memory_instance);
> >  	const unsigned int max_swap_in = params->count / 100 + 1;
> >  	const uint32_t bbe = MI_BATCH_BUFFER_END;
> >  	struct object *objects, *obj, *list;
> > -	uint32_t batch;
> > +	const uint32_t bpp = 32;
> > +	uint32_t batch, width, height, stride;
> > +	const intel_ctx_t *blt_ctx;
> > +	struct blt_copy_object *tmp;
> > +	struct blt_copy_batch *cmd;
> >  	unsigned int engine = 0;
> >  	unsigned int i, l;
> > -	uint64_t size;
> > +	uint64_t size, ahnd;
> >  	struct timespec t = {};
> >  	unsigned int num;
> >  
> > +	width = PAGE_SIZE / (bpp / 8);
> > +	height = params->size.max / (bpp / 8) /  width;
> > +	stride = width * 4;
> > +
> > +	tmp = calloc(1, sizeof(*tmp));
> > +	cmd = calloc(1, sizeof(*cmd));
> > +
> >  	__gem_context_set_persistence(i915, 0, false);
> >  	size = 4096;
> >  	batch = create_bo(i915, size, region, params->oom_test);
> > -
> >  	gem_write(i915, batch, 0, &bbe, sizeof(bbe));
> >  
> > +	if (params->flags & TEST_CCS)
> > +		blt_ctx = intel_ctx_create_for_engine(i915,
> > +						      I915_ENGINE_CLASS_COPY,
> > +						      0);
> > +
> >  	objects = calloc(params->count, sizeof(*objects));
> >  	igt_assert(objects);
> >  
> >  	list = calloc(max_swap_in, sizeof(*list));
> >  	igt_assert(list);
> >  
> > +	ahnd = intel_allocator_open_full(i915, blt_ctx->id, 0, 0,
> > +					 INTEL_ALLOCATOR_SIMPLE,
> > +					 ALLOC_STRATEGY_LOW_TO_HIGH, 0);
> >  	srand(seed);
> >  
> >  	/* Create the initial working set of objects. */
> > +	if (params->flags & TEST_CCS) {
> > +		tmp->handle = gem_create_in_memory_regions(i915, params->size.max,
> > +				   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0));
> > +		set_object(tmp, tmp->handle, params->size.max,
> > +			   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0), DG2_MOCS,
> > +			   T_LINEAR, COMPRESSION_DISABLED, COMPRESSION_TYPE_3D);
> > +		set_geom(tmp, stride, 0, 0, width, height, 0, 0);
> > +		cmd->handle = gem_create_in_memory_regions(i915, BATCH_SIZE, region_id);
> 
> I would use bb pool to avoid stalls.
May be i am missing something. since this is sequential if we sync
between init, verify and subsequent init we dont need bb pool.

if we need two different bb in a loop for different independent tasks
then bb pool might help to go ahead without sync inbetween.

Sorry if i miss what you are suggesting. Please help me to understand.

Ram.
> 
> 
> > +		set_batch(cmd, cmd->handle, BATCH_SIZE, region_id);
> > +	}
> > +
> >  	size = 0;
> >  	for (i = 0, obj = objects; i < params->count; i++, obj++) {
> >  		if (params->flags & TEST_RANDOM)
> > @@ -194,6 +363,7 @@ static void __do_evict(int i915,
> >  		else
> >  			obj->size = params->size.min;
> >  
> > +		obj->size = ALIGN(obj->size, 4096);
> >  		size += obj->size;
> >  		if ((size >> 20) > params->mem_limit) {
> >  			params->count = i;
> > @@ -201,10 +371,26 @@ static void __do_evict(int i915,
> >  		}
> >  		obj->handle = create_bo(i915, obj->size, region, params->oom_test);
> >  
> > -		move_to_lmem(i915, objects + i, 1, batch, engine,
> > -			     params->oom_test);
> > -		if (params->flags & TEST_VERIFY)
> > +		if (params->flags & TEST_CCS) {
> > +			width = PAGE_SIZE / (bpp / 8);
> > +			height = obj->size / (bpp / 8) /  width;
> > +			stride = width * 4;
> > +
> > +			obj->blt_obj = calloc(1, sizeof(*obj->blt_obj));
> > +			set_object(obj->blt_obj, obj->handle, obj->size, region_id,
> > +				   DG2_MOCS, T_LINEAR, COMPRESSION_ENABLED,
> > +				   COMPRESSION_TYPE_3D);
> > +			set_geom(obj->blt_obj, stride, 0, 0, width, height, 0, 0);
> 
> Especially here and sync after last blit.
> 
> > +			init_object_ccs(i915, obj, tmp, cmd, rand(), blt_ctx,
> > +					region_id, ahnd);
> > +		} else if (params->flags & TEST_VERIFY) {
> >  			init_object(i915, obj, rand(), params->flags);
> > +			move_to_lmem(i915, objects + i, 1, batch, engine,
> > +				     params->oom_test);
> > +		} else {
> > +			move_to_lmem(i915, objects + i, 1, batch, engine,
> > +				     params->oom_test);
> > +		}
> >  	}
> >  
> >  	igt_debug("obj size min/max=%lu %s/%lu %s, count=%u, seed: %u\n",
> > @@ -231,7 +417,15 @@ static void __do_evict(int i915,
> >  		if (params->flags & TEST_ENGINES)
> >  			engine = (engine + 1) % __num_engines__;
> >  
> > -		if (params->flags & TEST_VERIFY) {
> > +		if (params->flags & TEST_CCS) {
> > +			for (i = 0; i < num; i++)
> > +				verify_object_ccs(i915, &list[i], tmp, cmd,
> > +						  blt_ctx, region_id, ahnd);
> 
> This one syncs internally in gem_set_domain so single bb is ok.
> 
> > +			/* Update random object - may swap it back in. */
> > +			i = rand() % params->count;
> > +			init_object_ccs(i915, &objects[i], tmp, cmd, rand(),
> > +					blt_ctx, region_id, ahnd);
> 
> But here also I would use bb pool with sync after last one.
> 
> Other things looks ok imo.
> 
> --
> Zbigniew
> 
> > +		} else if (params->flags & TEST_VERIFY) {
> >  			for (i = 0; i < num; i++)
> >  				verify_object(i915, &list[i], params->flags);
> >  
> > @@ -241,11 +435,17 @@ static void __do_evict(int i915,
> >  		}
> >  	}
> >  
> > +	put_ahnd(ahnd);
> >  	for (i = 0; i < params->count; i++)
> >  		gem_close(i915, objects[i].handle);
> >  
> >  	free(list);
> >  	free(objects);
> > +	if (params->flags & TEST_CCS) {
> > +		gem_close(i915, cmd->handle);
> > +		gem_close(i915, tmp->handle);
> > +		gem_context_destroy(i915, blt_ctx->id);
> > +	}
> >  
> >  	gem_close(i915, batch);
> >  }
> > @@ -348,6 +548,9 @@ static void test_evict(int i915,
> >  	const unsigned int nproc = sysconf(_SC_NPROCESSORS_ONLN) + 1;
> >  	struct params params;
> >  
> > +	if (flags & TEST_CCS)
> > +		igt_require(IS_DG2(intel_get_drm_devid(i915)));
> > +
> >  	fill_params(i915, &params, region, flags, nproc, false);
> >  
> >  	if (flags & TEST_PARALLEL) {
> > @@ -511,6 +714,11 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
> >  		{ "parallel-random-engines", TEST_PARALLEL | TEST_RANDOM | TEST_ENGINES },
> >  		{ "parallel-random-verify", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY },
> >  		{ "parallel-multi", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY | TEST_ENGINES | TEST_MULTI },
> > +		{ "verify-ccs", TEST_CCS },
> > +		{ "verify-random-ccs", TEST_CCS | TEST_RANDOM },
> > +		{ "heavy-verify-random-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY },
> > +		{ "heavy-verify-multi-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY | TEST_ENGINES | TEST_MULTI },
> > +		{ "parallel-random-verify-ccs", TEST_PARALLEL | TEST_RANDOM | TEST_CCS },
> >  		{ }
> >  	};
> >  	int i915 = -1;
> > -- 
> > 2.20.1
> > 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests
  2022-03-21 23:00   ` Ramalingam C
@ 2022-03-22  9:51     ` Zbigniew Kempczyński
  0 siblings, 0 replies; 7+ messages in thread
From: Zbigniew Kempczyński @ 2022-03-22  9:51 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

On Tue, Mar 22, 2022 at 04:30:53AM +0530, Ramalingam C wrote:
> On 2022-03-15 at 10:29:38 +0100, Zbigniew Kempczyński wrote:
> > On Mon, Mar 14, 2022 at 10:44:32AM +0530, Ramalingam C wrote:
> > > Add subtests for covering the compressed object's eviction.
> > > 
> > > v2:
> > >   gem_sync after the block_copy blit for init
> > > v3:
> > >   ahnd is passed in as a param [Zbigniew]
> > >   cmd is bb [Zbigniew]
> > >   blt src and dst sizes supposed to be same [Zbigniew]
> > > 
> > > Signed-off-by: Chris Wilson <chris.p.wilson@intel.com>
> > > Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
> > > Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> > > ---
> > >  tests/i915/gem_lmem_swapping.c | 222 +++++++++++++++++++++++++++++++--
> > >  1 file changed, 215 insertions(+), 7 deletions(-)
> > > 
> > > diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
> > > index 582111dddeb9..97858219aa96 100644
> > > --- a/tests/i915/gem_lmem_swapping.c
> > > +++ b/tests/i915/gem_lmem_swapping.c
> > > @@ -22,6 +22,7 @@
> > >  #include <sys/time.h>
> > >  #include <sys/wait.h>
> > >  #include "drm.h"
> > > +#include "i915/i915_blt.h"
> > >  
> > >  IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
> > >  
> > > @@ -30,6 +31,7 @@ IGT_TEST_DESCRIPTION("Exercise local memory swapping.");
> > >  
> > >  #define PAGE_SIZE  (1ULL << 12)
> > >  #define SZ_64K	   (16 * PAGE_SIZE)
> > > +#define DG2_MOCS   (2 << 1)
> > >  
> > >  static const char *readable_unit(uint64_t size)
> > >  {
> > > @@ -60,6 +62,7 @@ struct params {
> > >  #define TEST_RANDOM	(1 << 3)
> > >  #define TEST_ENGINES	(1 << 4)
> > >  #define TEST_MULTI	(1 << 5)
> > > +#define TEST_CCS	(1 << 6)
> > >  	unsigned int flags;
> > >  	unsigned int seed;
> > >  	bool oom_test;
> > > @@ -69,8 +72,56 @@ struct object {
> > >  	uint64_t size;
> > >  	uint32_t seed;
> > >  	uint32_t handle;
> > > +	struct blt_copy_object *blt_obj;
> > >  };
> > >  
> > > +static void set_object(struct blt_copy_object *obj,
> > > +		       uint32_t handle, uint64_t size, uint32_t region,
> > > +		       uint8_t mocs, enum blt_tiling tiling,
> > > +		       enum blt_compression compression,
> > > +		       enum blt_compression_type compression_type)
> > > +{
> > > +	obj->handle = handle;
> > > +	obj->size = size;
> > > +	obj->region = region;
> > > +	obj->mocs = mocs;
> > > +	obj->tiling = tiling;
> > > +	obj->compression = compression;
> > > +	obj->compression_type = compression_type;
> > > +}
> > > +
> > > +static void set_geom(struct blt_copy_object *obj, uint32_t pitch,
> > > +		     int16_t x1, int16_t y1, int16_t x2, int16_t y2,
> > > +		     uint16_t x_offset, uint16_t y_offset)
> > > +{
> > > +	obj->pitch = pitch;
> > > +	obj->x1 = x1;
> > > +	obj->y1 = y1;
> > > +	obj->x2 = x2;
> > > +	obj->y2 = y2;
> > > +	obj->x_offset = x_offset;
> > > +	obj->y_offset = y_offset;
> > > +}
> > > +
> > > +static void set_batch(struct blt_copy_batch *batch,
> > > +		      uint32_t handle, uint64_t size, uint32_t region)
> > > +{
> > > +	batch->handle = handle;
> > > +	batch->size = size;
> > > +	batch->region = region;
> > > +}
> > > +
> > > +static void set_object_ext(struct blt_block_copy_object_ext *obj,
> > > +			   uint8_t compression_format,
> > > +			   uint16_t surface_width, uint16_t surface_height,
> > > +			   enum blt_surface_type surface_type)
> > > +{
> > > +	obj->compression_format = compression_format;
> > > +	obj->surface_width = surface_width;
> > > +	obj->surface_height = surface_height;
> > > +	obj->surface_type = surface_type;
> > > +}
> > > +
> > >  static uint32_t create_bo(int i915,
> > >  			  uint64_t size,
> > >  			  struct drm_i915_gem_memory_class_instance *region,
> > > @@ -105,6 +156,46 @@ init_object(int i915, struct object *obj, unsigned long seed, unsigned int flags
> > >  	munmap(buf, obj->size);
> > >  }
> > >  
> > > +#define BATCH_SIZE		4096
> > > +static void
> > > +init_object_ccs(int i915, struct object *obj, struct blt_copy_object *tmp,
> > > +		struct blt_copy_batch *cmd, unsigned long seed,
> > > +		const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
> > > +{
> > > +	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
> > > +	const struct intel_execution_engine2 *e;
> > > +	struct blt_copy_data blt = {};
> > > +	unsigned long *buf, j;
> > > +
> > > +	obj->seed = seed;
> > > +	for_each_ctx_engine(i915, ctx, e) {
> > > +		igt_assert_f(gem_engine_can_block_copy(i915, e),
> > > +			     "Ctx dont have Blt engine");
> > > +		break;
> > > +	}
> > > +
> > > +	buf = gem_mmap__device_coherent(i915, tmp->handle, 0, obj->size, PROT_WRITE);
> > > +	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, I915_GEM_DOMAIN_WC);
> > > +
> > > +	for (j = 0; j < obj->size / sizeof(*buf); j++)
> > > +		buf[j] = seed++;
> > > +	munmap(buf, obj->size);
> > > +
> > > +	memset(&blt, 0, sizeof(blt));
> > > +	blt.color_depth = CD_32bit;
> > > +
> > > +	memcpy(&blt.src, tmp, sizeof(blt.src));
> > > +	memcpy(&blt.dst, obj->blt_obj, sizeof(blt.dst));
> > > +	memcpy(&blt.bb, cmd, sizeof(blt.bb));
> > > +
> > > +	set_object_ext(&ext.src, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
> > > +	set_object_ext(&ext.dst, 0, obj->blt_obj->x2, obj->blt_obj->y2,
> > > +		       SURFACE_TYPE_2D);
> > > +
> > > +	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
> > > +	gem_sync(i915, obj->blt_obj->handle);
> > 
> > You can avoid stalls if you will use gem_create_from_pool().
> Hi Zbigkniew! Thanks for the review.
> 
> AFAIK, pool of obj will be useful if we want to keep scheduling work with
> different bb. So that we will get different or free bbs each time so
> that on the run we wont write into already executing work.
> 
> Here the common obj used between init_obj_ccs and verify_obj_ccs are the
> obj and also cmd. So either way we need to sync here, which we are
> already doing it on obj.
> 
> Now could you please help me to understand how pool could help us here?

Currently you need to wait until bb becomes not busy (gem_sync()) before
you're reusing it feeding it with commands. This leads to stalls between
execution - after gem_sync() gpu is doing nothing. These micro pauses can
hide some coherency issues which may occur in pipelined executions.

If you're doing 

	bb = gem_create_from_pool(i915, 4096);

you'll get first handle which is 4KiB size and at the moment of that call
is not busy. So you don't need to use gem_sync() because library will return
you first not used object with 4KiB size. Removing gem_sync() you'll verify
how not-stalled execution will behave.

--
Zbigniew


> > 
> > > +}
> > > +
> > >  static void
> > >  verify_object(int i915, const struct object *obj,  unsigned int flags)
> > >  {
> > > @@ -125,6 +216,53 @@ verify_object(int i915, const struct object *obj,  unsigned int flags)
> > >  	munmap(buf, obj->size);
> > >  }
> > >  
> > > +static void
> > > +verify_object_ccs(int i915, const struct object *obj,
> > > +		  struct blt_copy_object *tmp, struct blt_copy_batch *cmd,
> > > +		  const intel_ctx_t *ctx, uint32_t region, uint64_t ahnd)
> > > +{
> > > +	struct blt_block_copy_data_ext ext = {}, *pext = &ext;
> > > +	const struct intel_execution_engine2 *e;
> > > +	struct blt_copy_data blt = {};
> > > +	unsigned long j, val, *buf;
> > > +
> > > +	for_each_ctx_engine(i915, ctx, e) {
> > > +		igt_assert_f(gem_engine_can_block_copy(i915, e),
> > > +			     "ctx dont have Blt engine");
> > > +		break;
> > > +	}
> > > +
> > > +	memset(&blt, 0, sizeof(blt));
> > > +	blt.color_depth = CD_32bit;
> > > +
> > > +	memcpy(&blt.src, obj->blt_obj, sizeof(blt.src));
> > > +	memcpy(&blt.dst, tmp, sizeof(blt.dst));
> > > +	memcpy(&blt.bb, cmd, sizeof(blt.bb));
> > > +
> > > +	blt.dst.x2 = min(obj->blt_obj->x2, tmp->x2);
> > > +	blt.dst.y2 = min(obj->blt_obj->y2, tmp->y2);
> > > +
> > > +	set_object_ext(&ext.src, 0, obj->blt_obj->x2, obj->blt_obj->y2,
> > > +		       SURFACE_TYPE_2D);
> > > +	set_object_ext(&ext.dst, 0, tmp->x2, tmp->y2, SURFACE_TYPE_2D);
> > > +	blt_block_copy(i915, ctx, e, ahnd, &blt, pext);
> > > +
> > > +	buf = gem_mmap__device_coherent(i915, tmp->handle, 0,
> > > +					obj->size, PROT_READ);
> > > +	gem_set_domain(i915, tmp->handle, I915_GEM_DOMAIN_WC, 0);
> > > +
> > > +	for (j = 0; j < obj->size / PAGE_SIZE; j++) {
> > > +		unsigned long x = (j * PAGE_SIZE + rand() % PAGE_SIZE) / sizeof(*buf);
> > > +
> > > +		val = obj->seed + x;
> > > +		igt_assert_f(buf[x] == val,
> > > +			     "Object mismatch at offset %lu - found %lx, expected %lx, difference:%lx!\n",
> > > +			     x * sizeof(*buf), buf[x], val, buf[x] ^ val);
> > > +	}
> > > +
> > > +	munmap(buf, obj->size);
> > > +}
> > > +
> > >  static void move_to_lmem(int i915,
> > >  			 struct object *list,
> > >  			 unsigned int num,
> > > @@ -160,31 +298,62 @@ static void __do_evict(int i915,
> > >  		       struct params *params,
> > >  		       unsigned int seed)
> > >  {
> > > +	uint32_t region_id = INTEL_MEMORY_REGION_ID(region->memory_class,
> > > +						    region->memory_instance);
> > >  	const unsigned int max_swap_in = params->count / 100 + 1;
> > >  	const uint32_t bbe = MI_BATCH_BUFFER_END;
> > >  	struct object *objects, *obj, *list;
> > > -	uint32_t batch;
> > > +	const uint32_t bpp = 32;
> > > +	uint32_t batch, width, height, stride;
> > > +	const intel_ctx_t *blt_ctx;
> > > +	struct blt_copy_object *tmp;
> > > +	struct blt_copy_batch *cmd;
> > >  	unsigned int engine = 0;
> > >  	unsigned int i, l;
> > > -	uint64_t size;
> > > +	uint64_t size, ahnd;
> > >  	struct timespec t = {};
> > >  	unsigned int num;
> > >  
> > > +	width = PAGE_SIZE / (bpp / 8);
> > > +	height = params->size.max / (bpp / 8) /  width;
> > > +	stride = width * 4;
> > > +
> > > +	tmp = calloc(1, sizeof(*tmp));
> > > +	cmd = calloc(1, sizeof(*cmd));
> > > +
> > >  	__gem_context_set_persistence(i915, 0, false);
> > >  	size = 4096;
> > >  	batch = create_bo(i915, size, region, params->oom_test);
> > > -
> > >  	gem_write(i915, batch, 0, &bbe, sizeof(bbe));
> > >  
> > > +	if (params->flags & TEST_CCS)
> > > +		blt_ctx = intel_ctx_create_for_engine(i915,
> > > +						      I915_ENGINE_CLASS_COPY,
> > > +						      0);
> > > +
> > >  	objects = calloc(params->count, sizeof(*objects));
> > >  	igt_assert(objects);
> > >  
> > >  	list = calloc(max_swap_in, sizeof(*list));
> > >  	igt_assert(list);
> > >  
> > > +	ahnd = intel_allocator_open_full(i915, blt_ctx->id, 0, 0,
> > > +					 INTEL_ALLOCATOR_SIMPLE,
> > > +					 ALLOC_STRATEGY_LOW_TO_HIGH, 0);
> > >  	srand(seed);
> > >  
> > >  	/* Create the initial working set of objects. */
> > > +	if (params->flags & TEST_CCS) {
> > > +		tmp->handle = gem_create_in_memory_regions(i915, params->size.max,
> > > +				   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0));
> > > +		set_object(tmp, tmp->handle, params->size.max,
> > > +			   INTEL_MEMORY_REGION_ID(I915_SYSTEM_MEMORY, 0), DG2_MOCS,
> > > +			   T_LINEAR, COMPRESSION_DISABLED, COMPRESSION_TYPE_3D);
> > > +		set_geom(tmp, stride, 0, 0, width, height, 0, 0);
> > > +		cmd->handle = gem_create_in_memory_regions(i915, BATCH_SIZE, region_id);
> > 
> > I would use bb pool to avoid stalls.
> May be i am missing something. since this is sequential if we sync
> between init, verify and subsequent init we dont need bb pool.
> 
> if we need two different bb in a loop for different independent tasks
> then bb pool might help to go ahead without sync inbetween.
> 
> Sorry if i miss what you are suggesting. Please help me to understand.
> 
> Ram.
> > 
> > 
> > > +		set_batch(cmd, cmd->handle, BATCH_SIZE, region_id);
> > > +	}
> > > +
> > >  	size = 0;
> > >  	for (i = 0, obj = objects; i < params->count; i++, obj++) {
> > >  		if (params->flags & TEST_RANDOM)
> > > @@ -194,6 +363,7 @@ static void __do_evict(int i915,
> > >  		else
> > >  			obj->size = params->size.min;
> > >  
> > > +		obj->size = ALIGN(obj->size, 4096);
> > >  		size += obj->size;
> > >  		if ((size >> 20) > params->mem_limit) {
> > >  			params->count = i;
> > > @@ -201,10 +371,26 @@ static void __do_evict(int i915,
> > >  		}
> > >  		obj->handle = create_bo(i915, obj->size, region, params->oom_test);
> > >  
> > > -		move_to_lmem(i915, objects + i, 1, batch, engine,
> > > -			     params->oom_test);
> > > -		if (params->flags & TEST_VERIFY)
> > > +		if (params->flags & TEST_CCS) {
> > > +			width = PAGE_SIZE / (bpp / 8);
> > > +			height = obj->size / (bpp / 8) /  width;
> > > +			stride = width * 4;
> > > +
> > > +			obj->blt_obj = calloc(1, sizeof(*obj->blt_obj));
> > > +			set_object(obj->blt_obj, obj->handle, obj->size, region_id,
> > > +				   DG2_MOCS, T_LINEAR, COMPRESSION_ENABLED,
> > > +				   COMPRESSION_TYPE_3D);
> > > +			set_geom(obj->blt_obj, stride, 0, 0, width, height, 0, 0);
> > 
> > Especially here and sync after last blit.
> > 
> > > +			init_object_ccs(i915, obj, tmp, cmd, rand(), blt_ctx,
> > > +					region_id, ahnd);
> > > +		} else if (params->flags & TEST_VERIFY) {
> > >  			init_object(i915, obj, rand(), params->flags);
> > > +			move_to_lmem(i915, objects + i, 1, batch, engine,
> > > +				     params->oom_test);
> > > +		} else {
> > > +			move_to_lmem(i915, objects + i, 1, batch, engine,
> > > +				     params->oom_test);
> > > +		}
> > >  	}
> > >  
> > >  	igt_debug("obj size min/max=%lu %s/%lu %s, count=%u, seed: %u\n",
> > > @@ -231,7 +417,15 @@ static void __do_evict(int i915,
> > >  		if (params->flags & TEST_ENGINES)
> > >  			engine = (engine + 1) % __num_engines__;
> > >  
> > > -		if (params->flags & TEST_VERIFY) {
> > > +		if (params->flags & TEST_CCS) {
> > > +			for (i = 0; i < num; i++)
> > > +				verify_object_ccs(i915, &list[i], tmp, cmd,
> > > +						  blt_ctx, region_id, ahnd);
> > 
> > This one syncs internally in gem_set_domain so single bb is ok.
> > 
> > > +			/* Update random object - may swap it back in. */
> > > +			i = rand() % params->count;
> > > +			init_object_ccs(i915, &objects[i], tmp, cmd, rand(),
> > > +					blt_ctx, region_id, ahnd);
> > 
> > But here also I would use bb pool with sync after last one.
> > 
> > Other things looks ok imo.
> > 
> > --
> > Zbigniew
> > 
> > > +		} else if (params->flags & TEST_VERIFY) {
> > >  			for (i = 0; i < num; i++)
> > >  				verify_object(i915, &list[i], params->flags);
> > >  
> > > @@ -241,11 +435,17 @@ static void __do_evict(int i915,
> > >  		}
> > >  	}
> > >  
> > > +	put_ahnd(ahnd);
> > >  	for (i = 0; i < params->count; i++)
> > >  		gem_close(i915, objects[i].handle);
> > >  
> > >  	free(list);
> > >  	free(objects);
> > > +	if (params->flags & TEST_CCS) {
> > > +		gem_close(i915, cmd->handle);
> > > +		gem_close(i915, tmp->handle);
> > > +		gem_context_destroy(i915, blt_ctx->id);
> > > +	}
> > >  
> > >  	gem_close(i915, batch);
> > >  }
> > > @@ -348,6 +548,9 @@ static void test_evict(int i915,
> > >  	const unsigned int nproc = sysconf(_SC_NPROCESSORS_ONLN) + 1;
> > >  	struct params params;
> > >  
> > > +	if (flags & TEST_CCS)
> > > +		igt_require(IS_DG2(intel_get_drm_devid(i915)));
> > > +
> > >  	fill_params(i915, &params, region, flags, nproc, false);
> > >  
> > >  	if (flags & TEST_PARALLEL) {
> > > @@ -511,6 +714,11 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
> > >  		{ "parallel-random-engines", TEST_PARALLEL | TEST_RANDOM | TEST_ENGINES },
> > >  		{ "parallel-random-verify", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY },
> > >  		{ "parallel-multi", TEST_PARALLEL | TEST_RANDOM | TEST_VERIFY | TEST_ENGINES | TEST_MULTI },
> > > +		{ "verify-ccs", TEST_CCS },
> > > +		{ "verify-random-ccs", TEST_CCS | TEST_RANDOM },
> > > +		{ "heavy-verify-random-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY },
> > > +		{ "heavy-verify-multi-ccs", TEST_CCS | TEST_RANDOM | TEST_HEAVY | TEST_ENGINES | TEST_MULTI },
> > > +		{ "parallel-random-verify-ccs", TEST_PARALLEL | TEST_RANDOM | TEST_CCS },
> > >  		{ }
> > >  	};
> > >  	int i915 = -1;
> > > -- 
> > > 2.20.1
> > > 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/gem_lmem_swapping: Add ccs subtests (rev2)
  2022-03-14  5:14 [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
                   ` (2 preceding siblings ...)
  2022-03-15  9:29 ` [igt-dev] [PATCH i-g-t v3] " Zbigniew Kempczyński
@ 2022-03-29 12:41 ` Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-03-29 12:41 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

== Series Details ==

Series: tests/i915/gem_lmem_swapping: Add ccs subtests (rev2)
URL   : https://patchwork.freedesktop.org/series/101324/
State : failure

== Summary ==

Applying: tests/i915/gem_lmem_swapping: Add ccs subtests
Using index info to reconstruct a base tree...
M	tests/i915/gem_lmem_swapping.c
Falling back to patching base and 3-way merge...
Auto-merging tests/i915/gem_lmem_swapping.c
CONFLICT (content): Merge conflict in tests/i915/gem_lmem_swapping.c
Patch failed at 0001 tests/i915/gem_lmem_swapping: Add ccs subtests
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-03-29 12:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-14  5:14 [igt-dev] [PATCH i-g-t v3] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
2022-03-14  6:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2022-03-14  7:12 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2022-03-15  9:29 ` [igt-dev] [PATCH i-g-t v3] " Zbigniew Kempczyński
2022-03-21 23:00   ` Ramalingam C
2022-03-22  9:51     ` Zbigniew Kempczyński
2022-03-29 12:41 ` [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/gem_lmem_swapping: Add ccs subtests (rev2) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.