All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v4 0/2] tests/i915/gem_lmem_swapping: Add ccs subtests
@ 2022-03-30  4:49 Ramalingam C
  2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 1/2] tests/i915/gem_lmem_swapping: create batch buffer from obj pool Ramalingam C
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Ramalingam C @ 2022-03-30  4:49 UTC (permalink / raw)
  To: igt-dev

Add subtests for compressed objects. And also batch buffers are created
from the obj pool

v4: create batch buffers from obj pool

Ramalingam C (2):
  tests/i915/gem_lmem_swapping: create batch buffer from obj pool
  tests/i915/gem_lmem_swapping: Add ccs subtests

 tests/i915/gem_lmem_swapping.c | 245 +++++++++++++++++++++++++++++++--
 1 file changed, 231 insertions(+), 14 deletions(-)

-- 
2.20.1

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

* [igt-dev] [PATCH i-g-t v4 1/2] tests/i915/gem_lmem_swapping: create batch buffer from obj pool
  2022-03-30  4:49 [igt-dev] [PATCH i-g-t v4 0/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
@ 2022-03-30  4:49 ` Ramalingam C
  2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 2/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Ramalingam C @ 2022-03-30  4:49 UTC (permalink / raw)
  To: igt-dev

Use the gem_create_from_pool() for creating the batch buffers.

Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
 tests/i915/gem_lmem_swapping.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
index 43f0688f30b2..aba713039cfa 100644
--- a/tests/i915/gem_lmem_swapping.c
+++ b/tests/i915/gem_lmem_swapping.c
@@ -129,7 +129,7 @@ static void move_to_lmem(int i915,
 			 const intel_ctx_t *ctx,
 			 struct object *list,
 			 unsigned int num,
-			 uint32_t batch,
+			 unsigned int region,
 			 unsigned int engine,
 			 bool do_oom_test)
 {
@@ -140,7 +140,13 @@ static void move_to_lmem(int i915,
 		.flags = I915_EXEC_NO_RELOC | I915_EXEC_HANDLE_LUT | engine,
 		.rsvd1 = ctx->id,
 	};
-	unsigned int i, ret;
+	const uint32_t bbe = MI_BATCH_BUFFER_END;
+	unsigned int i, ret, batch;
+	uint64_t size;
+
+	size = 4096;
+	batch = gem_create_from_pool(i915, &size, region);
+	gem_write(i915, batch, 0, &bbe, sizeof(bbe));
 
 	memset(obj, 0, sizeof(obj));
 
@@ -154,6 +160,7 @@ retry:
 	ret = __gem_execbuf(i915, &eb);
 	if (do_oom_test && (ret == -ENOMEM || ret == -ENXIO))
 		goto retry;
+
 	igt_assert_eq(ret, 0);
 }
 
@@ -163,10 +170,10 @@ 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;
 	unsigned int engine = 0;
 	unsigned int i, l;
 	uint64_t size;
@@ -174,9 +181,6 @@ static void __do_evict(int i915,
 	unsigned int num;
 
 	size = 4096;
-	batch = create_bo(i915, &size, region, params->oom_test);
-
-	gem_write(i915, batch, 0, &bbe, sizeof(bbe));
 
 	objects = calloc(params->count, sizeof(*objects));
 	igt_assert(objects);
@@ -203,7 +207,7 @@ static void __do_evict(int i915,
 		}
 		obj->handle = create_bo(i915, &obj->size, region, params->oom_test);
 
-		move_to_lmem(i915, ctx, objects + i, 1, batch, engine,
+		move_to_lmem(i915, ctx, objects + i, 1, region_id, engine,
 			     params->oom_test);
 		if (params->flags & TEST_VERIFY)
 			init_object(i915, obj, rand(), params->flags);
@@ -228,7 +232,8 @@ static void __do_evict(int i915,
 			idx = (idx + 1) % params->count;
 		}
 
-		move_to_lmem(i915, ctx, list, num, batch, engine, params->oom_test);
+		move_to_lmem(i915, ctx, list, num, region_id, engine,
+			     params->oom_test);
 
 		if (params->flags & TEST_ENGINES)
 			engine = (engine + 1) % __num_engines__;
@@ -248,8 +253,6 @@ static void __do_evict(int i915,
 
 	free(list);
 	free(objects);
-
-	gem_close(i915, batch);
 }
 
 static void fill_params(int i915, struct params *params,
-- 
2.20.1

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

* [igt-dev] [PATCH i-g-t v4 2/2] tests/i915/gem_lmem_swapping: Add ccs subtests
  2022-03-30  4:49 [igt-dev] [PATCH i-g-t v4 0/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
  2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 1/2] tests/i915/gem_lmem_swapping: create batch buffer from obj pool Ramalingam C
@ 2022-03-30  4:49 ` Ramalingam C
  2022-03-30  4:55   ` Dixit, Ashutosh
  2022-03-30  5:23 ` [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_lmem_swapping: Add ccs subtests (rev3) Patchwork
  2022-03-30  5:53 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
  3 siblings, 1 reply; 6+ messages in thread
From: Ramalingam C @ 2022-03-30  4:49 UTC (permalink / raw)
  To: 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]
v4:
  Use gem_create_from_pool [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 | 226 ++++++++++++++++++++++++++++++++-
 1 file changed, 220 insertions(+), 6 deletions(-)

diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
index aba713039cfa..eacf862fec21 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,51 @@ init_object(int i915, struct object *obj, unsigned long seed, unsigned int flags
 	munmap(buf, obj->size);
 }
 
+static void
+init_object_ccs(int i915, struct object *obj, struct blt_copy_object *tmp,
+		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 = {};
+	struct blt_copy_batch *cmd;
+	uint64_t size = 4096;
+	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;
+	}
+
+	cmd = calloc(1, sizeof(*cmd));
+	cmd->handle = gem_create_from_pool(i915, &size, region);
+	set_batch(cmd, cmd->handle, size, region);
+
+	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);
+	free(cmd);
+}
+
 static void
 verify_object(int i915, const struct object *obj,  unsigned int flags)
 {
@@ -125,6 +221,60 @@ 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, 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 = {};
+	struct blt_copy_batch *cmd;
+	uint64_t size = 4096;
+	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;
+	}
+
+	cmd = calloc(1, sizeof(*cmd));
+	cmd->handle = gem_create_from_pool(i915, &size, region);
+	set_batch(cmd, cmd->handle, size, region);
+
+	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);
+	free(cmd);
+}
+
 static void move_to_lmem(int i915,
 			 const intel_ctx_t *ctx,
 			 struct object *list,
@@ -174,13 +324,26 @@ static void __do_evict(int i915,
 						    region->memory_instance);
 	const unsigned int max_swap_in = params->count / 100 + 1;
 	struct object *objects, *obj, *list;
+	const uint32_t bpp = 32;
+	uint32_t width, height, stride;
+	const intel_ctx_t *blt_ctx;
+	struct blt_copy_object *tmp;
 	unsigned int engine = 0;
 	unsigned int i, l;
-	uint64_t size;
+	uint64_t size, ahnd;
 	struct timespec t = {};
 	unsigned int num;
 
-	size = 4096;
+	width = PAGE_SIZE / (bpp / 8);
+	height = params->size.max / (bpp / 8) /  width;
+	stride = width * 4;
+
+	tmp = calloc(1, sizeof(*tmp));
+	__gem_context_set_persistence(i915, 0, false);
+	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);
@@ -188,9 +351,21 @@ static void __do_evict(int i915,
 	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);
+	}
+
 	size = 0;
 	for (i = 0, obj = objects; i < params->count; i++, obj++) {
 		if (params->flags & TEST_RANDOM)
@@ -200,6 +375,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;
@@ -207,10 +383,26 @@ static void __do_evict(int i915,
 		}
 		obj->handle = create_bo(i915, &obj->size, region, params->oom_test);
 
-		move_to_lmem(i915, ctx, objects + i, 1, region_id, 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, rand(), blt_ctx,
+					region_id, ahnd);
+		} else if (params->flags & TEST_VERIFY) {
 			init_object(i915, obj, rand(), params->flags);
+			move_to_lmem(i915, ctx, objects + i, 1, region_id, engine,
+				     params->oom_test);
+		} else {
+			move_to_lmem(i915, ctx, objects + i, 1, region_id, engine,
+				     params->oom_test);
+		}
 	}
 
 	igt_debug("obj size min/max=%lu %s/%lu %s, count=%u, seed: %u\n",
@@ -238,7 +430,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,
+						  blt_ctx, region_id, ahnd);
+			/* Update random object - may swap it back in. */
+			i = rand() % params->count;
+			init_object_ccs(i915, &objects[i], tmp, 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);
 
@@ -248,11 +448,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, tmp->handle);
+		gem_context_destroy(i915, blt_ctx->id);
+	}
 }
 
 static void fill_params(int i915, struct params *params,
@@ -354,6 +560,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) {
@@ -522,6 +731,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 },
 		{ }
 	};
 	const intel_ctx_t *ctx;
-- 
2.20.1

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

* Re: [igt-dev] [PATCH i-g-t v4 2/2] tests/i915/gem_lmem_swapping: Add ccs subtests
  2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 2/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
@ 2022-03-30  4:55   ` Dixit, Ashutosh
  0 siblings, 0 replies; 6+ messages in thread
From: Dixit, Ashutosh @ 2022-03-30  4:55 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

On Tue, 29 Mar 2022 21:49:15 -0700, Ramalingam C wrote:
>
> @@ -174,13 +324,26 @@ static void __do_evict(int i915,
>						    region->memory_instance);
>	const unsigned int max_swap_in = params->count / 100 + 1;
>	struct object *objects, *obj, *list;
> +	const uint32_t bpp = 32;
> +	uint32_t width, height, stride;
> +	const intel_ctx_t *blt_ctx;
> +	struct blt_copy_object *tmp;
>	unsigned int engine = 0;
>	unsigned int i, l;
> -	uint64_t size;
> +	uint64_t size, ahnd;
>	struct timespec t = {};
>	unsigned int num;
>
> -	size = 4096;
> +	width = PAGE_SIZE / (bpp / 8);
> +	height = params->size.max / (bpp / 8) /  width;
> +	stride = width * 4;
> +
> +	tmp = calloc(1, sizeof(*tmp));
> +	__gem_context_set_persistence(i915, 0, false);

Setting context 0 as non-persistent?

> +	if (params->flags & TEST_CCS)
> +		blt_ctx = intel_ctx_create_for_engine(i915,
> +						      I915_ENGINE_CLASS_COPY,
> +						      0);

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

* [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_lmem_swapping: Add ccs subtests (rev3)
  2022-03-30  4:49 [igt-dev] [PATCH i-g-t v4 0/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
  2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 1/2] tests/i915/gem_lmem_swapping: create batch buffer from obj pool Ramalingam C
  2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 2/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
@ 2022-03-30  5:23 ` Patchwork
  2022-03-30  5:53 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
  3 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2022-03-30  5:23 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

== Series Details ==

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

== Summary ==

Pipeline status: FAILED.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/545268 for the overview.

test:ninja-test-arm64 has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/20461159):
  Ok:                   22
  Expected Fail:         3
  Fail:                287
  Unexpected Pass:       0
  Skipped:               0
  Timeout:               0
  
  Full log written to /builds/gfx-ci/igt-ci-tags/build/meson-logs/testlog.txt
  section_end:1648617544:step_script
  section_start:1648617544:upload_artifacts_on_failure
  Uploading artifacts for failed job
  Uploading artifacts...
  build: found 1712 matching files and directories   
  Uploading artifacts as "archive" to coordinator... 201 Created  id=20461159 responseStatus=201 Created token=GkSzCGxz
  section_end:1648617554:upload_artifacts_on_failure
  section_start:1648617554:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1648617555:cleanup_file_variables
  ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/545268

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

* [igt-dev] ✗ Fi.CI.BAT: failure for tests/i915/gem_lmem_swapping: Add ccs subtests (rev3)
  2022-03-30  4:49 [igt-dev] [PATCH i-g-t v4 0/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
                   ` (2 preceding siblings ...)
  2022-03-30  5:23 ` [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_lmem_swapping: Add ccs subtests (rev3) Patchwork
@ 2022-03-30  5:53 ` Patchwork
  3 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2022-03-30  5:53 UTC (permalink / raw)
  To: Ramalingam C; +Cc: igt-dev

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

== Series Details ==

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

== Summary ==

CI Bug Log - changes from IGT_6400 -> IGTPW_6844
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_6844 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_6844, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

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

Participating hosts (44 -> 46)
------------------------------

  Additional (5): fi-kbl-soraka bat-adlm-1 fi-icl-u2 fi-pnv-d510 fi-kbl-8809g 
  Missing    (3): fi-bdw-samus fi-bsw-cyan bat-adlp-4 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_lmem_swapping@verify-random@lmem0:
    - bat-dg1-6:          [PASS][1] -> [CRASH][2] +3 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-dg1-6/igt@gem_lmem_swapping@verify-random@lmem0.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg1-6/igt@gem_lmem_swapping@verify-random@lmem0.html

  
#### Suppressed ####

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

  * igt@gem_lmem_swapping@random-engines@lmem0:
    - {bat-dg2-8}:        [PASS][3] -> [CRASH][4] +3 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-dg2-8/igt@gem_lmem_swapping@random-engines@lmem0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg2-8/igt@gem_lmem_swapping@random-engines@lmem0.html

  * igt@gem_lmem_swapping@verify-random@lmem0:
    - {bat-dg2-9}:        [PASS][5] -> [CRASH][6] +3 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-dg2-9/igt@gem_lmem_swapping@verify-random@lmem0.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg2-9/igt@gem_lmem_swapping@verify-random@lmem0.html

  * igt@i915_selftest@live@gem_contexts:
    - {fi-ehl-2}:         [PASS][7] -> [INCOMPLETE][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/fi-ehl-2/igt@i915_selftest@live@gem_contexts.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-ehl-2/igt@i915_selftest@live@gem_contexts.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - {bat-adlm-1}:       NOTRUN -> [INCOMPLETE][9]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-adlm-1/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@prime_self_import@basic-with_one_bo:
    - {bat-dg2-9}:        NOTRUN -> [DMESG-WARN][10]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg2-9/igt@prime_self_import@basic-with_one_bo.html

  * igt@runner@aborted:
    - {bat-dg2-9}:        [FAIL][11] ([i915#4312]) -> [FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-dg2-9/igt@runner@aborted.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg2-9/igt@runner@aborted.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@amdgpu/amd_cs_nop@fork-gfx0:
    - fi-icl-u2:          NOTRUN -> [SKIP][13] ([fdo#109315]) +17 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@amdgpu/amd_cs_nop@fork-gfx0.html

  * igt@gem_exec_fence@basic-busy@bcs0:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][14] ([fdo#109271]) +9 similar issues
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-soraka/igt@gem_exec_fence@basic-busy@bcs0.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - fi-kbl-8809g:       NOTRUN -> [DMESG-WARN][15] ([i915#4962]) +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-8809g/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][16] ([fdo#109271] / [i915#2190])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-soraka/igt@gem_huc_copy@huc-copy.html
    - fi-kbl-8809g:       NOTRUN -> [SKIP][17] ([fdo#109271] / [i915#2190])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html
    - fi-icl-u2:          NOTRUN -> [SKIP][18] ([i915#2190])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][19] ([fdo#109271] / [i915#4613]) +3 similar issues
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-soraka/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - fi-icl-u2:          NOTRUN -> [SKIP][20] ([i915#4613]) +3 similar issues
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_lmem_swapping@random-engines:
    - fi-ivb-3770:        NOTRUN -> [SKIP][21] ([fdo#109271]) +36 similar issues
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-ivb-3770/igt@gem_lmem_swapping@random-engines.html
    - fi-kbl-8809g:       NOTRUN -> [SKIP][22] ([fdo#109271] / [i915#4613]) +3 similar issues
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-8809g/igt@gem_lmem_swapping@random-engines.html

  * igt@i915_selftest@live@gt_pm:
    - fi-kbl-soraka:      NOTRUN -> [DMESG-FAIL][23] ([i915#1886])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-soraka/igt@i915_selftest@live@gt_pm.html

  * igt@i915_selftest@live@hangcheck:
    - bat-dg1-6:          [PASS][24] -> [DMESG-FAIL][25] ([i915#4494] / [i915#4957])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-dg1-6/igt@i915_selftest@live@hangcheck.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg1-6/igt@i915_selftest@live@hangcheck.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][26] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-soraka/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_chamelium@dp-hpd-fast:
    - fi-ivb-3770:        NOTRUN -> [SKIP][27] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-ivb-3770/igt@kms_chamelium@dp-hpd-fast.html

  * igt@kms_chamelium@hdmi-edid-read:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][28] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-8809g/igt@kms_chamelium@hdmi-edid-read.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-icl-u2:          NOTRUN -> [SKIP][29] ([fdo#111827]) +8 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - fi-icl-u2:          NOTRUN -> [SKIP][30] ([fdo#109278]) +2 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1:
    - fi-tgl-u2:          [PASS][31] -> [DMESG-WARN][32] ([i915#402])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/fi-tgl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-tgl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-icl-u2:          NOTRUN -> [SKIP][33] ([fdo#109285])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c:
    - fi-pnv-d510:        NOTRUN -> [SKIP][34] ([fdo#109271] / [i915#5341])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-pnv-d510/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c.html
    - fi-kbl-8809g:       NOTRUN -> [SKIP][35] ([fdo#109271] / [i915#5341])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-8809g/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][36] ([fdo#109271] / [i915#533])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-soraka/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d.html
    - fi-kbl-8809g:       NOTRUN -> [SKIP][37] ([fdo#109271] / [i915#533])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-8809g/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d.html

  * igt@kms_psr@cursor_plane_move:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][38] ([fdo#109271]) +54 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-kbl-8809g/igt@kms_psr@cursor_plane_move.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-icl-u2:          NOTRUN -> [SKIP][39] ([i915#3555])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-userptr:
    - fi-pnv-d510:        NOTRUN -> [SKIP][40] ([fdo#109271]) +57 similar issues
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-pnv-d510/igt@prime_vgem@basic-userptr.html
    - fi-icl-u2:          NOTRUN -> [SKIP][41] ([i915#3301])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-icl-u2/igt@prime_vgem@basic-userptr.html

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

  
#### Possible fixes ####

  * igt@dmabuf@all@dma_fence_chain:
    - bat-dg1-6:          [INCOMPLETE][43] -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-dg1-6/igt@dmabuf@all@dma_fence_chain.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg1-6/igt@dmabuf@all@dma_fence_chain.html

  * igt@i915_selftest@live@gt_timelines:
    - {bat-rpls-2}:       [DMESG-WARN][45] ([i915#4391]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-rpls-2/igt@i915_selftest@live@gt_timelines.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-rpls-2/igt@i915_selftest@live@gt_timelines.html

  * igt@i915_selftest@live@hugepages:
    - {bat-rpls-2}:       [DMESG-WARN][47] ([i915#5278]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-rpls-2/igt@i915_selftest@live@hugepages.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-rpls-2/igt@i915_selftest@live@hugepages.html

  * igt@i915_selftest@live@reset:
    - {bat-rpls-2}:       [INCOMPLETE][49] ([i915#4983]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-rpls-2/igt@i915_selftest@live@reset.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-rpls-2/igt@i915_selftest@live@reset.html

  * igt@kms_busy@basic@flip:
    - fi-tgl-u2:          [DMESG-WARN][51] ([i915#402]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/fi-tgl-u2/igt@kms_busy@basic@flip.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/fi-tgl-u2/igt@kms_busy@basic@flip.html

  * igt@kms_frontbuffer_tracking@basic:
    - {bat-dg2-9}:        [DMESG-WARN][53] ([i915#5195]) -> [PASS][54]
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6400/bat-dg2-9/igt@kms_frontbuffer_tracking@basic.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/bat-dg2-9/igt@kms_frontbuffer_tracking@basic.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
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1886]: https://gitlab.freedesktop.org/drm/intel/issues/1886
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2722]: https://gitlab.freedesktop.org/drm/intel/issues/2722
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#4962]: https://gitlab.freedesktop.org/drm/intel/issues/4962
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5068]: https://gitlab.freedesktop.org/drm/intel/issues/5068
  [i915#5193]: https://gitlab.freedesktop.org/drm/intel/issues/5193
  [i915#5195]: https://gitlab.freedesktop.org/drm/intel/issues/5195
  [i915#5275]: https://gitlab.freedesktop.org/drm/intel/issues/5275
  [i915#5278]: https://gitlab.freedesktop.org/drm/intel/issues/5278
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5341]: https://gitlab.freedesktop.org/drm/intel/issues/5341


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6400 -> IGTPW_6844

  CI-20190529: 20190529
  CI_DRM_11416: 1dc2c6953e2689a0e5b7cca8450da14059d35f03 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_6844: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6844/index.html
  IGT_6400: 1478f8f698b97256a7da2fafd4fc2675358d40c6 @ 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_6844/index.html

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

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

end of thread, other threads:[~2022-03-30  5:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-30  4:49 [igt-dev] [PATCH i-g-t v4 0/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 1/2] tests/i915/gem_lmem_swapping: create batch buffer from obj pool Ramalingam C
2022-03-30  4:49 ` [igt-dev] [PATCH i-g-t v4 2/2] tests/i915/gem_lmem_swapping: Add ccs subtests Ramalingam C
2022-03-30  4:55   ` Dixit, Ashutosh
2022-03-30  5:23 ` [igt-dev] ✗ GitLab.Pipeline: warning for tests/i915/gem_lmem_swapping: Add ccs subtests (rev3) Patchwork
2022-03-30  5:53 ` [igt-dev] ✗ Fi.CI.BAT: failure " 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.