* [PATCH 0/3] Negative tests for VM_BIND decompression
@ 2026-05-27 5:42 Smitha Balasubramanyam
2026-05-27 5:42 ` [PATCH 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam
` (7 more replies)
0 siblings, 8 replies; 21+ messages in thread
From: Smitha Balasubramanyam @ 2026-05-27 5:42 UTC (permalink / raw)
To: igt-dev
This series adds negative test coverage for VM_BIND DECOMPRESS flows in
xe_ccs.
Patch 1 introduces resource management structures, helper utilities,
and a negative uAPI parameter validation test for VM_BIND DECOMPRESS flows.
Patch 2 adds a helper for fault-mode handling along with a
negative test to validate VM_BIND DECOMPRESS uAPI parameters under fault-mode conditions.
Patch 3 adds negative test coverage for VM_BIND DECOMPRESS
with CCS corruption, including suspend-resume scenarios.
Smitha Balasubramanyam (3):
tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp
tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test
tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp
tests/intel/xe_ccs.c | 1184 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1184 insertions(+)
--
2.43.0
^ permalink raw reply [flat|nested] 21+ messages in thread* [PATCH 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam @ 2026-05-27 5:42 ` Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test Smitha Balasubramanyam ` (6 subsequent siblings) 7 siblings, 0 replies; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-05-27 5:42 UTC (permalink / raw) To: igt-dev Introduce data structures and helper utilities used by the VM negative tests to validate the VM_Bind Decomp feature These helpers provide resource management and setup/cleanup logic that simplifies the implementation of the test cases introduced in subsequent patches. One functional subtest is introduced in this patch. This test verifies handling of invalid UAPI Params in Non-fault Mode. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 478 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 478 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index 4c5fe0311..c3949fcd1 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -68,10 +68,17 @@ * * SUBTEST: vm-bind-fault-mode-decompress * Description: Validate VM_BIND with DECOMPRESS flag functionality in fault mode + * + * SUBTEST: vm-bind-decompress-uapi-bad-params + * Description: UAPI negative test — attempt VM_BIND with a combination of invalid params */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); +#ifndef INVALID_PAT_INDEX +#define INVALID_PAT_INDEX 10U +#endif + static struct param { int compression_format; int tiling; @@ -100,6 +107,7 @@ struct test_config { bool suspend_resume; bool vm_bind_decompress; bool vm_bind_fault_mode_decompress; + bool vm_bind_decompress_uapi_bad_params; int width_increment; int width_steps; int overwrite_width; @@ -371,6 +379,459 @@ static void surf_copy(int xe, "restoring source ccs data\n"); } +/* VM_BIND DECOMPRESS negative-test case definitions and shared setup state */ +struct vm_bind_decomp_neg_test_case { + const char *test_name; + uint32_t pat; /* PAT index passed to __xe_vm_bind() */ + uint32_t flags; /* DRM_XE_VM_BIND_FLAG_* */ + bool expect_fail; /* true => we expect kernel to reject (result != 0) */ +}; + +struct vm_bind_decomp_setup_resources { + int xe; + u32 vm; + u64 vm_map_addr; + u64 map_size; + u32 handle; /* compressed destination BO handle */ + u32 bb; + u32 region_src; + u32 region_comp; + u64 size; + uint32_t comp_pat; + uint32_t uncompressed_pat; + + /* objects to destroy/map bookkeeping */ + struct blt_copy_object *src_obj; + struct blt_copy_object *comp_obj; +}; + +/* Cleanup for VM_Bind Decomp Negative test cases */ +static void vm_bind_decomp_test_cleanup(int xe, uint64_t ahnd, + struct vm_bind_decomp_setup_resources *state) +{ + /* Return if there is nothing to clean up. */ + if (!state) + return; + + /* If a VM mapping remains, try to unmap it. */ + if (state->vm && state->vm_map_addr && state->map_size) { + int ret = __xe_vm_bind(xe, state->vm, 0, 0, 0, + state->vm_map_addr, state->map_size, + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); + igt_info("Unmapping VM mapping at addr 0x%llx, size %llu, ret=%d\n", + (unsigned long long)state->vm_map_addr, + (unsigned long long)state->map_size, + ret); + } + + /* Remove allocator offsets if set */ + if (ahnd) { + if (state->src_obj && state->src_obj->handle) { + igt_debug("Removing allocator offset for src_obj handle %u\n", + state->src_obj->handle); + put_offset(ahnd, state->src_obj->handle); + } + if (state->comp_obj && state->comp_obj->handle) + put_offset(ahnd, state->comp_obj->handle); + igt_debug("Removed allocator offsets for src_obj and comp_obj if they existed\n"); + if (state->bb) + put_offset(ahnd, state->bb); + igt_debug("Removed allocator offset for bb handle %u\n", state->bb); + intel_allocator_bind(ahnd, 0, 0); + igt_debug("SUCCESS : Cleared allocator bindings\n"); + } + + /* Destroy blit objects */ + if (state->src_obj) + blt_destroy_object(xe, state->src_obj); + if (state->comp_obj) + blt_destroy_object(xe, state->comp_obj); + igt_debug("SUCCESS : Destroyed blit objects if they existed\n"); + + /* Close bb handle(s) */ + + if (state->bb) { + gem_close(xe, state->bb); + igt_debug("SUCCESS : Close bb handle\n"); + } + + /* Destroy VM */ + if (state->vm) + xe_vm_destroy(xe, state->vm); + igt_debug("SUCCESS : Destroyed VM if it existed\n"); + + /* Clear fields to make it safe to call again */ + memset(state, 0, sizeof(*state)); + igt_debug("SUCCESS : Cleared state structure\n"); + + igt_debug("SUCCESS : Cleanup completed\n"); +} + +/* Setup function: prepares state->src_obj, state->comp_obj, VM and initial map. + * On any failure it calls vm_bind_decomp_test_setup() then igt_assert_f() to abort safely. + */ +static int vm_bind_decomp_test_setup(int xe, intel_ctx_t *ctx, uint64_t ahnd, + u32 region_src, u32 region_comp, u32 width, u32 height, + enum blt_tiling_type tiling, + const struct test_config *config, + bool is_gradient, + bool use_fault_mode_vm, + struct vm_bind_decomp_setup_resources *state) +{ + struct blt_copy_data blt = {}; + struct blt_block_copy_data_ext ext = {}; + u64 bb_size = xe_bb_size(xe, SZ_4K); + u8 uc_mocs = intel_get_uc_mocs_index(xe); + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; + const u32 bpp = 32; + int result = -1; + uint32_t devid; + + igt_assert(state); + memset(state, 0, sizeof(*state)); + + state->xe = xe; + state->region_src = region_src; + state->region_comp = region_comp; + state->vm_map_addr = 0x30000000; + state->size = (u64)width * height * 4; + state->map_size = ALIGN(state->size, xe_get_default_alignment(xe)); + + /* Precondition checks - do these before allocating resources */ + devid = intel_get_drm_devid(xe); + igt_require(intel_gen(devid) >= 20); + igt_require(config->compression); + igt_require(blt_uses_extended_block_copy(xe)); + igt_require(blt_platform_has_flat_ccs_enabled(xe)); + + /* Create VM (FAULT_MODE requires LR_MODE) when requested by caller. */ + if (use_fault_mode_vm) + state->vm = xe_vm_create(xe, + DRM_XE_VM_CREATE_FLAG_LR_MODE | + DRM_XE_VM_CREATE_FLAG_FAULT_MODE, + 0); + else + state->vm = xe_vm_create(xe, 0, 0); + if (state->vm <= 0) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "xe_vm_create() failed: %d\n", state->vm); + } + + /* Create BB */ + state->bb = xe_bo_create(xe, 0, bb_size, region_src, + DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM); + if (!state->bb) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "xe_bo_create() for BB failed\n"); + } + + /* Init blit + batch */ + blt_copy_init(xe, &blt); + blt_set_batch(&blt.bb, state->bb, bb_size, region_src); + + /* Create src (uncompressed) */ + state->src_obj = blt_create_object(&blt, region_src, width, height, bpp, + uc_mocs, T_LINEAR, COMPRESSION_DISABLED, + comp_type, true); + if (!state->src_obj || !state->src_obj->ptr) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "failed to create or map src object\n"); + } + + /* Fill deterministic compressible data */ + if (is_gradient) { + blt_surface_fill_rect(xe, state->src_obj, width, height); + } else { + fill_buffer_simple_pattern(state->src_obj->ptr, state->src_obj->size); + igt_assert_f(verify_test_pattern(state->src_obj->ptr, + state->src_obj->size, "SOURCE"), + "Source pattern verification failed"); + } + /* Create compressed destination object */ + state->comp_obj = blt_create_object(&blt, region_comp, width, height, bpp, + uc_mocs, tiling, COMPRESSION_ENABLED, + comp_type, true); + if (!state->comp_obj) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "failed to create compressed object\n"); + } + + /* Compress using GPU: caller must provide ctx/ahnd */ + blt.color_depth = CD_32bit; + blt.print_bb = param.print_bb; + blt_set_copy_object(&blt.src, state->src_obj); + blt_set_copy_object(&blt.dst, state->comp_obj); + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); + + /* Use provided ctx/ahnd */ + igt_assert(ctx && ahnd); + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); + intel_ctx_xe_sync(ctx, true); + + /* Verify compression occurred when platform supports it */ + if (blt_platform_has_flat_ccs_enabled(xe)) { + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, + ahnd, state->comp_obj); + if (!is_compressed) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, + "Surface compression failed, cannot test decompression\n"); + } + } + + /* store handles and PATs */ + state->handle = state->comp_obj->handle; + state->uncompressed_pat = intel_get_pat_idx_uc(xe); + state->comp_pat = intel_get_pat_idx_uc_comp(xe); + + /* perform initial map using compressed pat */ + result = __xe_vm_bind(xe, state->vm, 0, state->handle, 0, + state->vm_map_addr, state->map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + state->comp_pat, 0); + if (result != 0) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "initial __xe_vm_bind MAP failed: %d (%s)\n", + result, strerror(errno)); + } + /* success */ + return 0; +} + +static void vm_bind_decompress_uapi_bad_params(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + enum blt_tiling_type tiling, + const struct test_config *config) +{ + struct vm_bind_decomp_setup_resources allocated_resources = {}; + int ret = 0; + void *mapped_data = MAP_FAILED; + u32 *mapped_ptr = NULL; + bool decompression_successful = false; + uint64_t addr; + u32 handle; + u64 use_map_size; + const uint64_t default_alignment = xe_get_default_alignment(xe); + + /* Build negative cases (runtime PAT lookups) */ + struct vm_bind_decomp_neg_test_case bad_cases[8] = { + /* PAT-based accepts (DECOMPRESS + Default PAT) */ + /* In the __xe_vmbind() wrapper, + * the DEFAULT_PAT_INDEX is updated to the appropriate GPU PAT index + * for the default caching type, so this case should succeed with a valid PAT + * even though we are passing the generic DEFAULT_PAT_INDEX value + */ + { "decompress-default-pat", DEFAULT_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based accepts (DECOMPRESS + GPU WB PAT) */ + { "decompress-gpu-wb-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based rejects (DECOMPRESS + Invalid PAT) */ + { "decompress-invalid-pat", INVALID_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + non-UC PAT) */ + { "decompress-gpu-wt-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + compressed PAT) */ + { "decompress-gpu-compressed-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Range smaller than the uncompressed size (should be rejected for DECOMPRESS) */ + { "decompress-small-range", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Misaligned virtual address for DECOMPRESS update */ + { "decompress-misaligned-va", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Wrong BO handle supplied (invalid handle) */ + { "decompress-wrong-bo-handle", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + }; + + /* Setup (this asserts+cleans on failure) */ + ret = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, + width, height, tiling, config, false, false, + &allocated_resources); + igt_assert_eq(ret, 0); + + /* assign runtime values after setup */ + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(allocated_resources.comp_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "COMPRESSED", 4); + + /* Fill platform-specific PAT lookups and runtime-dependent PATs */ + bad_cases[1].pat = intel_get_pat_idx_wb(xe); + bad_cases[3].pat = intel_get_pat_idx_wt(xe); + bad_cases[4].pat = intel_get_pat_idx_uc_comp(xe); + bad_cases[5].pat = allocated_resources.uncompressed_pat; + bad_cases[6].pat = allocated_resources.uncompressed_pat; + bad_cases[7].pat = allocated_resources.uncompressed_pat; + + /* Iterate the cases */ + for (unsigned int i = 0; i < ARRAY_SIZE(bad_cases); i++) { + const struct vm_bind_decomp_neg_test_case *test_variant = &bad_cases[i]; + + u32 use_pat = test_variant->pat; + u32 flags = test_variant->flags; + + /* Reset to known good values before each iteration */ + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + igt_info("\nVM_BIND variant: %s\n", test_variant->test_name); + + /* Specialize the case parameters */ + if (!strcmp(test_variant->test_name, "decompress-small-range")) { + use_map_size = allocated_resources.map_size - 1; + igt_debug("allocated_resources.size=%llu, default_alignment=%llu\n", + (unsigned long long)allocated_resources.size, + (unsigned long long)default_alignment); + } else if (!strcmp(test_variant->test_name, "decompress-misaligned-va")) { + addr = allocated_resources.vm_map_addr + 1; /* deliberately misaligned */ + + } else if (!strcmp(test_variant->test_name, "decompress-wrong-bo-handle")) { + /* flip some bits to make handle unlikely to be valid */ + handle = allocated_resources.handle ^ 0xdeadbeef; + } + igt_debug("Issuing VM_BIND :addr=0x%llx map_size=%llu handle=%u pat=%u " + "flags=0x%x for %s\n", + (unsigned long long)addr, + (unsigned long long)use_map_size, + handle, use_pat, flags, test_variant->test_name); + errno = 0; + ret = __xe_vm_bind(xe, allocated_resources.vm, + 0, /* engine */ + handle, /* handle (may be invalid) */ + 0, /* offset in BO */ + addr, /* VA */ + use_map_size, + DRM_XE_VM_BIND_OP_MAP, /* update mapping */ + flags, + NULL, 0, 0, + use_pat, + 0); + /* Evaluate outcome against expectation */ + if (test_variant->expect_fail) { + if (ret == 0) { + /* Unexpected success — try to unmap and then fail the test (cleanup) */ + igt_warn("VM_BIND unexpectedly SUCCEEDED for %s " + "- attempting cleanup\n", + test_variant->test_name); + + /* Attempt to unmap the mapping we may have created */ + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, addr, + use_map_size, DRM_XE_VM_BIND_OP_UNMAP, + 0, NULL, 0, 0, 0, 0); + + /* Perform cleanup before asserting */ + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, + "VM_BIND expected failure but succeeded for %s", + test_variant->test_name); + } else { + igt_info("VM_BIND rejected as expected for %s (errno=%d %s)\n", + test_variant->test_name, errno, strerror(errno)); + } + } else { + /* Expected path: VM_BIND must succeed, then data integrity is verified. */ + if (ret != 0) { + igt_warn("VM_BIND unexpectedly FAILED for %s: %d (%s)\n", + test_variant->test_name, ret, strerror(errno)); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "VM_BIND unexpected failure for %s", + test_variant->test_name); + } else { + igt_info("VM_BIND succeeded for %s (as expected)\n", + test_variant->test_name); + if (!strcmp(test_variant->test_name, "decompress-default-pat") || + !strcmp(test_variant->test_name, "decompress-gpu-wb-pat")) { + /* Map the BO for CPU access using helper */ + mapped_data = xe_bo_map(xe, allocated_resources.handle, + allocated_resources.size); + if (mapped_data == MAP_FAILED) { + igt_warn("Mapping handle %u failed for verification\n", + allocated_resources.handle); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "Failed to map BO for verification"); + } + mapped_ptr = (uint32_t *)mapped_data; + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, + allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(mapped_ptr, + min_t(size_t, 64, + allocated_resources.size), + "DECOMPRESSED", 4); + + decompression_successful = + verify_test_pattern(mapped_ptr, + allocated_resources.size, + "DECOMPRESSED"); + if (!decompression_successful) + igt_info("Decompression pattern verification " + "FAILED for %s\n", + test_variant->test_name); + + if (memcmp(mapped_ptr, + allocated_resources.src_obj->ptr, + allocated_resources.size) != 0) { + igt_info("Decompressed data does not match " + "original for %s\n", + test_variant->test_name); + print_buffer_data(mapped_ptr, + min_t(size_t, 256, + allocated_resources.size), + "CURRENT_STATE", 4); + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 256, + allocated_resources.size), + "EXPECTED", 4); + + /* tidy mapping and do full cleanup before failing */ + munmap(mapped_data, allocated_resources.size); + vm_bind_decomp_test_cleanup(xe, ahnd, + &allocated_resources); + igt_assert_f(false, + "Decompressed BO contents differ " + "from original for %s", + test_variant->test_name); + } + + igt_info("Decompression content matches original for %s\n", + test_variant->test_name); + /* tidy up mapping */ + munmap(mapped_data, allocated_resources.size); + mapped_data = MAP_FAILED; + mapped_ptr = NULL; + } + } + } + } + + /* final clean */ + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -1274,6 +1735,11 @@ static void single_copy(int xe, const struct test_config *config, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_uapi_bad_params) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_uapi_bad_params(xe, ctx, ahnd, region1, region2, + width, height, tiling, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -1569,7 +2035,19 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) igt_subtest("vm-bind-fault-mode-decompress") { struct test_config config = { .compression = true, .vm_bind_fault_mode_decompress = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + igt_describe("Validate uAPI of VM_BIND with DECOMPRESS flag with bad params"); + igt_subtest("vm-bind-decompress-uapi-bad-params") { + struct test_config config = { .compression = true, + .vm_bind_decompress_uapi_bad_params = true }; u32 region1 = system_memory(xe); u32 region2 = vram_if_possible(xe, 0); int tiling = T_LINEAR; -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam @ 2026-05-27 5:42 ` Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam ` (5 subsequent siblings) 7 siblings, 0 replies; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-05-27 5:42 UTC (permalink / raw) To: igt-dev Add a helper to trigger page-fault writes along with a negative testcase covering invalid UAPI handling in fault mode. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 361 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 361 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index c3949fcd1..3bfb439b9 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -71,6 +71,10 @@ * * SUBTEST: vm-bind-decompress-uapi-bad-params * Description: UAPI negative test — attempt VM_BIND with a combination of invalid params + * + * SUBTEST: vm-bind-decompress-uapi-bad-params-fault-mode + * Description: UAPI negative test attempt VM_BIND with a combination of + * invalid params - fault mode */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); @@ -108,6 +112,7 @@ struct test_config { bool vm_bind_decompress; bool vm_bind_fault_mode_decompress; bool vm_bind_decompress_uapi_bad_params; + bool vm_bind_decompress_uapi_bad_params_fault_mode; int width_increment; int width_steps; int overwrite_width; @@ -832,6 +837,343 @@ static void vm_bind_decompress_uapi_bad_params(int xe, vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); } +/* Helper: submit a tiny GPU batch that writes an immediate dword to the + * provided VA. This forces the kernel to fault in / decompress pages + * for that VA. Uses the provided `ctx` and `ahnd` (caller should have + * created/validated these). + */ +static void trigger_page_fault_write(int xe, intel_ctx_t *ctx, + uint64_t vm_map_addr, + uint64_t map_size, + uint32_t region) +{ + struct drm_xe_exec exec = {}; + struct drm_xe_sync exec_sync = {}; + const u64 vm_alignment = xe_get_default_alignment(xe); + const size_t ufence_bo_size = SZ_4K; + u64 cmd_vm_addr = 0; + u64 ufence_vm_addr = 0; + u64 *ufence_map = MAP_FAILED; + u32 cmd_bo = 0; + u32 ufence_bo = 0; + u32 *cmdp = MAP_FAILED; + int ret; + + /* Create command and fence BOs, then map them directly into the target VM. */ + cmd_bo = xe_bo_create(xe, 0, SZ_4K, region, 0); + igt_assert_f(cmd_bo, "failed to create cmd_bo\n"); + ufence_bo = xe_bo_create_caching(xe, 0, ufence_bo_size, + system_memory(xe), 0, + DRM_XE_GEM_CPU_CACHING_WC); + igt_assert_f(ufence_bo, "failed to create ufence_bo\n"); + + /* Map the BO to write the batch */ + cmdp = xe_bo_map(xe, cmd_bo, SZ_4K); + igt_assert_f(cmdp != MAP_FAILED, "xe_bo_map cmd_bo failed\n"); + ufence_map = xe_bo_map(xe, ufence_bo, ufence_bo_size); + igt_assert_f(ufence_map != MAP_FAILED, "xe_bo_map ufence_bo failed\n"); + memset(ufence_map, 0, ufence_bo_size); + + cmd_vm_addr = ALIGN(vm_map_addr + map_size, vm_alignment); + ufence_vm_addr = ALIGN(cmd_vm_addr + SZ_4K, vm_alignment); + + ret = __xe_vm_bind(xe, ctx->vm, 0, cmd_bo, 0, cmd_vm_addr, SZ_4K, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + DEFAULT_PAT_INDEX, 0); + igt_assert_eq(ret, 0); + ret = __xe_vm_bind(xe, ctx->vm, 0, ufence_bo, 0, ufence_vm_addr, ufence_bo_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + DEFAULT_PAT_INDEX, 0); + igt_assert_eq(ret, 0); + + /* Build a tiny batch: MI_STORE_DWORD_IMM_GEN4 dst=vm_map_addr, value=0xDEADBEEF */ + cmdp[0] = MI_STORE_DWORD_IMM_GEN4; + cmdp[1] = lower_32_bits(vm_map_addr); + cmdp[2] = upper_32_bits(vm_map_addr); + cmdp[3] = 0xDEADBEEF; + cmdp[4] = MI_BATCH_BUFFER_END; + + /* Debug dump of the first few dwords in the fault-trigger batch. */ + igt_debug("BB dump: cmd_bo=%u cmd_off=0x%llx region=%u vm=%u execq=%u", + cmd_bo, (unsigned long long)cmd_vm_addr, region, + ctx->vm, ctx->exec_queue); + for (int i = 0; i < 8; i++) + igt_debug(" bb[%02d]=0x%08x", i, cmdp[i]); + igt_debug("\n"); + + /* Dump the first few dwords of the BB (do this BEFORE munmap) */ + igt_info("BB dump: cmd_bo=%u cmd_off=0x%llx region=%u vm=%u execq=%u", + cmd_bo, (unsigned long long)cmd_vm_addr, region, + ctx->vm, ctx->exec_queue); + for (int i = 0; i < 8; i++) + igt_info(" bb[%02d]=0x%08x", i, cmdp[i]); + + /* Make CPU writes visible to GPU */ + munmap(cmdp, SZ_4K); + cmdp = MAP_FAILED; + + /* Submit the batch directly. */ + memset(&exec, 0, sizeof(exec)); + exec.exec_queue_id = ctx->exec_queue; + exec.address = cmd_vm_addr; + exec.num_batch_buffer = 1; + + memset(&exec_sync, 0, sizeof(exec_sync)); + exec_sync.type = DRM_XE_SYNC_TYPE_USER_FENCE; + exec_sync.flags = DRM_XE_SYNC_FLAG_SIGNAL; + exec_sync.addr = ufence_vm_addr; + exec_sync.timeline_value = 1ULL; + exec.num_syncs = 1; + exec.syncs = to_user_pointer(&exec_sync); + + igt_info("Submitting faulting batch to write to VA 0x%llx\n", + (unsigned long long)vm_map_addr); + igt_debug("Submitting faulting batch to write to VA 0x%llx\n", + (unsigned long long)vm_map_addr); + ret = igt_ioctl(xe, DRM_IOCTL_XE_EXEC, &exec); + igt_assert_f(ret == 0, "EXEC ioctl failed: %d (%s)\n", ret, strerror(errno)); + + xe_wait_ufence(xe, ufence_map, 1ULL, ctx->exec_queue, NSEC_PER_SEC); + igt_assert_eq_u64(ufence_map[0], 1ULL); + + /* Cleanup */ + ret = __xe_vm_bind(xe, ctx->vm, 0, 0, 0, cmd_vm_addr, SZ_4K, + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); + igt_assert_eq(ret, 0); + ret = __xe_vm_bind(xe, ctx->vm, 0, 0, 0, ufence_vm_addr, ufence_bo_size, + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); + igt_assert_eq(ret, 0); + + munmap(ufence_map, ufence_bo_size); + gem_close(xe, cmd_bo); + gem_close(xe, ufence_bo); + + igt_info("Faulting write batch completed successfully\n"); +} + +/* Fault-mode variant of vm_bind_decompress_uapi_bad_params. + * It reuses your bad_cases but, for expected-success cases, triggers + * a GPU write to the mapped VA to force the kernel page-fault/decompress path. + */ +static void vm_bind_decompress_uapi_bad_params_fault_mode(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + enum blt_tiling_type tiling, + const struct test_config *config) +{ + struct vm_bind_decomp_setup_resources allocated_resources = {}; + struct drm_xe_engine_class_instance inst = { + .engine_class = DRM_XE_ENGINE_CLASS_RENDER, + }; + intel_ctx_t *fault_ctx = NULL; + u32 fault_exec_queue = 0; + int ret = 0; + bool pattern_matches; + void *mapped_data = MAP_FAILED; + u64 addr; + u32 handle; + u64 use_map_size; + const uint64_t default_alignment = xe_get_default_alignment(xe); + struct vm_bind_decomp_neg_test_case bad_cases[8] = { + /* PAT-based accepts (DECOMPRESS + Default PAT) */ + { "decompress-default-pat", DEFAULT_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based accepts (DECOMPRESS + GPU WB PAT) */ + { "decompress-gpu-wb-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based rejects (DECOMPRESS + Invalid PAT) */ + { "decompress-invalid-pat", INVALID_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + non-UC PAT) */ + { "decompress-gpu-wt-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + compressed PAT) */ + { "decompress-gpu-compressed-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Range smaller than the uncompressed size (should be rejected for DECOMPRESS) */ + { "decompress-small-range", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Misaligned virtual address for DECOMPRESS update */ + { "decompress-misaligned-va", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Wrong BO handle supplied (invalid handle) */ + { "decompress-wrong-bo-handle", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + }; + /* Setup (this asserts+cleans on failure) */ + ret = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, width, + height, tiling, config, false, true, + &allocated_resources); + igt_assert_eq(ret, 0); + igt_assert_f(allocated_resources.vm != 0, "VM not created\n"); + + /* Fault-triggering writes must execute in the same VM used by VM_BIND. */ + fault_exec_queue = xe_exec_queue_create(xe, allocated_resources.vm, &inst, 0); + fault_ctx = intel_ctx_xe(xe, allocated_resources.vm, fault_exec_queue, 0, 0, 0); + igt_assert_f(fault_ctx, "failed to create fault-mode execution context\n"); + + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(allocated_resources.comp_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "COMPRESSED", 4); + + /* Fill PAT values before iterating through each case*/ + bad_cases[1].pat = intel_get_pat_idx_wb(xe); + bad_cases[3].pat = intel_get_pat_idx_wt(xe); + bad_cases[4].pat = intel_get_pat_idx_uc_comp(xe); + bad_cases[5].pat = allocated_resources.uncompressed_pat; + bad_cases[6].pat = allocated_resources.uncompressed_pat; + bad_cases[7].pat = allocated_resources.uncompressed_pat; + + /* Iterate cases */ + for (unsigned int i = 0; i < ARRAY_SIZE(bad_cases); i++) { + const struct vm_bind_decomp_neg_test_case *test_variant = &bad_cases[i]; + + /* Reset per-case parameters */ + u32 use_pat = test_variant->pat; + u32 flags = test_variant->flags; + + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + igt_info("\nVM_BIND variant: %s\n", test_variant->test_name); + + /* Corrupt inputs or pass wrong params for a few special cases. */ + if (!strcmp(test_variant->test_name, "decompress-small-range")) { + if (allocated_resources.map_size > default_alignment) + use_map_size = allocated_resources.map_size - 1; + igt_info("Using reduced map size: %llu\n", + (unsigned long long)use_map_size); + } else if (!strcmp(test_variant->test_name, "decompress-misaligned-va")) { + addr = allocated_resources.vm_map_addr + 1; + } else if (!strcmp(test_variant->test_name, "decompress-wrong-bo-handle")) { + handle = allocated_resources.handle ^ 0xdeadbeef; + } + + errno = 0; + ret = + __xe_vm_bind(xe, allocated_resources.vm, 0, handle, 0, addr, + use_map_size, DRM_XE_VM_BIND_OP_MAP, flags, + NULL, 0, 0, use_pat, 0); + if (test_variant->expect_fail) { + if (ret == 0) { + /* Unexpected success — unmap and abort */ + igt_warn("VM_BIND unexpectedly SUCCEEDED for %s — cleaning up\n", + test_variant->test_name); + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, + addr, use_map_size, DRM_XE_VM_BIND_OP_UNMAP, 0, + NULL, 0, 0, 0, 0); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, + "VM_BIND expected failure but succeeded for %s", + test_variant->test_name); + } else { + igt_info("VM_BIND rejected as expected for %s " + "(ret=%d errno=%d %s)\n", + test_variant->test_name, ret, errno, strerror(errno)); + igt_info("Success : VM_Bind rejected\n"); + } + } else { + /* Expected path: VM_BIND must succeed, then data integrity is verified. */ + if (ret != 0) { + igt_warn("VM_BIND unexpectedly FAILED for %s: %d (%s)\n", + test_variant->test_name, ret, strerror(errno)); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "VM_BIND unexpected failure for %s", + test_variant->test_name); + } + + igt_info("VM_BIND succeeded for %s (as expected)\n", + test_variant->test_name); + /* Trigger page-fault via GPU write to the mapped VA */ + trigger_page_fault_write(xe, fault_ctx, addr, + allocated_resources.map_size, + region1); + + /* Compare destination buffer against source and print short dumps. */ + mapped_data = xe_bo_map(xe, allocated_resources.handle, + allocated_resources.size); + igt_assert_f(mapped_data != MAP_FAILED, + "Failed to map destination BO for %s\n", + test_variant->test_name); + + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(mapped_data, + min_t(size_t, 64, allocated_resources.size), + "DECOMPRESSED", 4); + + pattern_matches = + verify_test_pattern(mapped_data, + allocated_resources.size, + "DECOMPRESSED"); + if (!pattern_matches) + igt_info("Decompression pattern verification FAILED for %s\n", + test_variant->test_name); + + if (memcmp(mapped_data, + allocated_resources.src_obj->ptr, + allocated_resources.size) != 0) { + igt_info("Decompressed data does not match original for %s\n", + test_variant->test_name); + print_buffer_data(mapped_data, + min_t(size_t, 256, allocated_resources.size), + "CURRENT_STATE", 4); + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 256, allocated_resources.size), + "EXPECTED", 4); + + munmap(mapped_data, allocated_resources.size); + mapped_data = MAP_FAILED; + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, + "Decompressed BO contents differ from original for %s", + test_variant->test_name); + } + + igt_info("Decompression content matches original for %s\n", + test_variant->test_name); + munmap(mapped_data, allocated_resources.size); + mapped_data = MAP_FAILED; + + /* Unmap to keep state clean for next iteration */ + ret = + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, addr, + use_map_size, DRM_XE_VM_BIND_OP_UNMAP, + 0, NULL, 0, 0, 0, 0); + if (ret != 0) + igt_warn("Unmap after VM_BIND (fault-mode) failed: %d (%s)\n", ret, + strerror(errno)); + } + } + + if (fault_exec_queue) + xe_exec_queue_destroy(xe, fault_exec_queue); + free(fault_ctx); + + /* Final cleanup */ + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -1740,6 +2082,12 @@ static void single_copy(int xe, const struct test_config *config, vm_bind_decompress_uapi_bad_params(xe, ctx, ahnd, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_uapi_bad_params_fault_mode) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_uapi_bad_params_fault_mode(xe, + ctx, ahnd, region1, region2, + width, height, tiling, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -2057,6 +2405,19 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); } + igt_describe("Validate uAPI of VM_BIND with DECOMPRESS flag with bad params"); + igt_subtest("vm-bind-decompress-uapi-bad-params-fault-mode") { + struct test_config config = { .compression = true, + .vm_bind_decompress_uapi_bad_params_fault_mode = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + igt_fixture() { xe_device_put(xe); close(xe); -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test Smitha Balasubramanyam @ 2026-05-27 5:42 ` Smitha Balasubramanyam 2026-05-27 6:40 ` ✓ Xe.CI.BAT: success for Negative tests for VM_BIND decompression Patchwork ` (4 subsequent siblings) 7 siblings, 0 replies; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-05-27 5:42 UTC (permalink / raw) To: igt-dev Add a negative test covering VM_BIND decompression verification with corrupted CCS metadata. The test also exercises suspend and resume handling during the corruption scenario. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 345 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 345 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index 3bfb439b9..e6875cfbf 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -75,6 +75,13 @@ * SUBTEST: vm-bind-decompress-uapi-bad-params-fault-mode * Description: UAPI negative test attempt VM_BIND with a combination of * invalid params - fault mode + * + * SUBTEST: vm-bind-decompress-ccs-corruption + * Description: Functional negative test — attempt VM_BIND after corrupting the CCS data; + * verify that decompression fails (data differs from original). + * + * SUBTEST: vm-bind-decompress-ccs-corruption-suspend-resume + * Description: Validate VM_BIND with DECOMPRESS flag with corrupted CCS with suspend/resume (S0) */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); @@ -113,6 +120,7 @@ struct test_config { bool vm_bind_fault_mode_decompress; bool vm_bind_decompress_uapi_bad_params; bool vm_bind_decompress_uapi_bad_params_fault_mode; + bool vm_bind_decompress_ccs_corruption; int width_increment; int width_steps; int overwrite_width; @@ -1174,6 +1182,307 @@ static void vm_bind_decompress_uapi_bad_params_fault_mode(int xe, vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); } +/* Functional negative test that validates VM_BIND Decompress with CCS corruption. + * It compresses src -> mid1/mid2, extracts CCS, corrupts mid1 CCS, writes back, + * reissues VM_BIND with DECOMPRESS for both and verifies mid1 != src and mid2 == src. + */ +static void vm_bind_decompress_ccs_corruption(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + const struct test_config *config) +{ + struct drm_xe_gem_mmap_offset mmap_offset = {}; + struct blt_copy_data blt = {}; + struct blt_block_copy_data_ext ext = {}; + struct blt_ctrl_surf_copy_data surf = {}; + struct vm_bind_decomp_setup_resources allocated_resources = {}; + struct blt_copy_object *src, *mid1, *mid2; + const u32 bpp = 32; + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; + u64 bb_size = xe_bb_size(xe, SZ_4K); + u64 size = (u64)width * height * 4; + u32 comp_pat = intel_get_pat_idx_uc_comp(xe); + u32 ccs1, ccs2; + uint32_t *ccsmap1 = NULL, *ccsmap2 = NULL; + uint64_t ccssize = 0; + uint64_t ccs_bo_size = 0; + uint32_t *ccscopy = NULL; + int result; + void *mapped_mid1 = MAP_FAILED; + void *mapped_mid2 = MAP_FAILED; + + /* Use vm_bind_decomp_test_setup to create a src (uncompressed) and a first + * compressed object (mid1). The helper also creates a VM and BB + * used for subsequent ctrl-surface operations. + */ + result = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, width, + height, T_LINEAR, config, true, false, + &allocated_resources); + igt_assert_eq(result, 0); + + /* Reuse helper-created objects */ + src = allocated_resources.src_obj; + mid1 = allocated_resources.comp_obj; + + print_buffer_data(src->ptr, min_t(size_t, 64, size), "ORIGINAL", 4); + print_buffer_data(mid1->ptr, min_t(size_t, 64, size), + "SURFACE1_COMPRESSED", 4); + + /* Compute CCS sizes now that mid1 is valid */ + ccssize = mid1->size / CCS_RATIO(xe); + ccs_bo_size = ALIGN(ccssize, xe_get_default_alignment(xe)); + ccscopy = malloc(ccssize); + + /* Create a second compressed object (mid2) and compress src->mid2 */ + /* Init blit + batch */ + blt_copy_init(xe, &blt); + mid2 = blt_create_object(&blt, region2, width, height, + bpp, intel_get_uc_mocs_index(xe), T_LINEAR, + COMPRESSION_ENABLED, comp_type, true); + igt_assert(mid2); + + /* Use the BB provided by the helper */ + blt_set_batch(&blt.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt.color_depth = CD_32bit; + blt.print_bb = param.print_bb; + blt_set_copy_object(&blt.src, src); + blt_set_copy_object(&blt.dst, mid2); + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); + + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); + intel_ctx_xe_sync(ctx, true); + + /* Verify compression occurred when platform supports it */ + if (blt_platform_has_flat_ccs_enabled(xe)) { + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, ahnd, mid2); + + if (!is_compressed) { + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "Surface compression failed - " + " cannot test decompression\n"); + } + } + + print_buffer_data(mid2->ptr, min_t(size_t, 64, size), + "SURFACE2_COMPRESSED", 4); + + ccs1 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + ccs2 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + blt_ctrl_surf_copy_init(xe, &surf); + surf.print_bb = param.print_bb; + + /* mid1 -> ccs1 */ + blt_set_ctrl_surf_object(&surf.src, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* mid2 -> ccs2 */ + blt_set_ctrl_surf_object(&surf.src, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("\nExtracted CCS for both compressed surfaces\n"); + igt_info("Proceeds to corrupt surface1 CCS and preserve surface2 CCS\n"); + + /* --- Map, corrupt mid1's CCS, then write corrupted CCS back into mid1 --- */ + /* Map ccs1 (the corrupted copy) */ + ccsmap1 = xe_bo_map(xe, ccs1, ccssize); + // Verifying mapping + igt_assert(ccsmap1 != MAP_FAILED); + + igt_assert(ccscopy); + memcpy(ccscopy, ccsmap1, ccssize); + + /* Corrupt the CCS content (example corruption) */ + for (size_t i = 0; i < ccssize / sizeof(uint32_t); i++) + ccsmap1[i] = (uint32_t)i ^ 0xdeadbeefu; + + /* Ensure GPU sees the change by writing it back via ctrl-surf-copy: + * ccs1 -> mid1 (DIRECT_ACCESS -> BLT_INDIRECT_ACCESS) + */ + munmap(ccsmap1, ccssize); /* unmap before submitting */ + blt_set_ctrl_surf_object(&surf.src, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* --- Write clean/unaltered CCS back to mid2 (optional, restoration) --- */ + ccsmap2 = xe_bo_map(xe, ccs2, ccssize); + igt_assert(ccsmap2 != MAP_FAILED); + munmap(ccsmap2, ccssize); + blt_set_ctrl_surf_object(&surf.src, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("Applied corrupted CCS to surface1 and restored clean CCS to surface2\n"); + + /* --- Suspend/Resume test (optional) --- */ + if (config->suspend_resume) { + char *ccs1_before = NULL, *ccs2_before = NULL; + char *ccs1_after = NULL, *ccs2_after = NULL; + void *map; + + igt_info("Test Case has invoked a suspend-resume\n"); + + /* Compute checksums of CCS BOs before suspend */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Ensure all GPU work is visible, then suspend/resume */ + intel_ctx_xe_sync(ctx, true); + igt_info("Suspending system to test CCS persistence across S0 suspend/resume\n"); + igt_system_suspend_autoresume(SUSPEND_STATE_FREEZE, SUSPEND_TEST_NONE); + igt_info("System resume complete — continuing VM_BIND tests\n"); + + /* Re-read CCS BOs after resume and compute checksums */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Expectations: + * - ccs1 (corrupted) should remain changed across suspend/resume + * - ccs2 (clean) should remain unchanged across suspend/resume + */ + if (ccs1_before && ccs1_after && !strcmp(ccs1_before, ccs1_after)) + igt_info("CCS1 (corrupted) persisted with same checksum (expected)\n"); + else if (ccs1_before && ccs1_after) + igt_warn("CCS1 checksum changed across suspend/resume (unexpected)\n"); + + if (ccs2_before && ccs2_after && strcmp(ccs2_before, ccs2_after) == 0) + igt_info("CCS2 (clean) persisted with identical checksum (expected)\n"); + else + igt_warn("CCS2 checksum changed across suspend/resume (unexpected)\n"); + + g_free(ccs1_before); + g_free(ccs1_after); + g_free(ccs2_before); + g_free(ccs2_after); + } + + /* Cleanup */ + free(ccscopy); + /* ccsmap1 was unmapped before writeback; avoid double unmap here */ + gem_close(xe, ccs1); + gem_close(xe, ccs2); + put_offset(ahnd, ccs1); + put_offset(ahnd, ccs2); + igt_debug("Cleaned up CCS BOs\n"); + + /* Bind both mid1 and mid2 initially compressed */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + /* Update mappings to request DECOMPRESS (UC PAT) */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + + /* Map both for CPU access and compare */ + mmap_offset.handle = mid1->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + + igt_assert_eq(result, 0); + mapped_mid1 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid1 != MAP_FAILED); + + mmap_offset.handle = mid2->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + igt_assert_eq(result, 0); + mapped_mid2 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid2 != MAP_FAILED); + igt_info("Issued VM_BIND with DECOMPRESS for both surfaces and now verifying each surface against the original data\n"); + if (memcmp(mapped_mid1, src->ptr, size) == 0) + igt_assert_f(false, "mid1 decompressed matches src " + "(expected mismatch due to CCS corruption)"); + igt_info("VM_BIND decompression did not recover original data for corrupted surface (mid1), as expected\n"); + + print_buffer_data(mapped_mid1, min_t(size_t, 64, size), + "MID1_CORRUPTED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + if (memcmp(mapped_mid2, src->ptr, size) != 0) + igt_assert_f(false, "Decompressed MID2 does not match src " + "(expected match for clean CCS)"); + igt_info("VM_BIND decompression successful for clean surface (mid2)\n"); + + print_buffer_data(mapped_mid2, min_t(size_t, 64, size), + "MID2_DECOMPRESSED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + igt_info("CCS corruption decompression test completed successfully\n"); + munmap(mapped_mid1, size); + munmap(mapped_mid2, size); + + put_offset(ahnd, mid2->handle); + blt_destroy_object(xe, mid2); + + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -2088,6 +2397,12 @@ static void single_copy(int xe, const struct test_config *config, ctx, ahnd, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_ccs_corruption) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_ccs_corruption(xe, ctx, ahnd, + region1, region2, width, + height, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -2418,6 +2733,36 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); } + igt_describe("Validate VM_BIND with DECOMPRESS flag with corrupted CCS"); + igt_subtest("vm-bind-decompress-ccs-corruption") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = false }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + + igt_describe("Validate VM_BIND with DECOMPRESS flag " + "with corrupted CCS with suspend/resume"); + igt_subtest_with_dynamic("vm-bind-decompress-ccs-corruption-suspend-resume") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, + BLOCK_COPY); + } + igt_fixture() { xe_device_put(xe); close(xe); -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* ✓ Xe.CI.BAT: success for Negative tests for VM_BIND decompression 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam ` (2 preceding siblings ...) 2026-05-27 5:42 ` [PATCH 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam @ 2026-05-27 6:40 ` Patchwork 2026-05-27 6:42 ` ✓ i915.CI.BAT: " Patchwork ` (3 subsequent siblings) 7 siblings, 0 replies; 21+ messages in thread From: Patchwork @ 2026-05-27 6:40 UTC (permalink / raw) To: Smitha Balasubramanyam; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 1156 bytes --] == Series Details == Series: Negative tests for VM_BIND decompression URL : https://patchwork.freedesktop.org/series/167345/ State : success == Summary == CI Bug Log - changes from XEIGT_8938_BAT -> XEIGTPW_15251_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (13 -> 13) ------------------------------ No changes in participating hosts Changes ------- No changes found Build changes ------------- * IGT: IGT_8938 -> IGTPW_15251 * Linux: xe-5131-ba2b29e3db52fcd75c2dc6d76d81f26eb59b7e33 -> xe-5134-14d3e29c36bea707856f5c03dbf7b0ef73fdeb85 IGTPW_15251: 79b7fff627089201841344197b960bbf78300e39 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8938: b024a3b67372962ff6e643d3998c5cf5acc07081 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-5131-ba2b29e3db52fcd75c2dc6d76d81f26eb59b7e33: ba2b29e3db52fcd75c2dc6d76d81f26eb59b7e33 xe-5134-14d3e29c36bea707856f5c03dbf7b0ef73fdeb85: 14d3e29c36bea707856f5c03dbf7b0ef73fdeb85 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/index.html [-- Attachment #2: Type: text/html, Size: 1715 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* ✓ i915.CI.BAT: success for Negative tests for VM_BIND decompression 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam ` (3 preceding siblings ...) 2026-05-27 6:40 ` ✓ Xe.CI.BAT: success for Negative tests for VM_BIND decompression Patchwork @ 2026-05-27 6:42 ` Patchwork 2026-05-27 8:39 ` ✗ Xe.CI.FULL: failure " Patchwork ` (2 subsequent siblings) 7 siblings, 0 replies; 21+ messages in thread From: Patchwork @ 2026-05-27 6:42 UTC (permalink / raw) To: Smitha Balasubramanyam; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 2220 bytes --] == Series Details == Series: Negative tests for VM_BIND decompression URL : https://patchwork.freedesktop.org/series/167345/ State : success == Summary == CI Bug Log - changes from IGT_8938 -> IGTPW_15251 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/index.html Participating hosts (42 -> 40) ------------------------------ Missing (2): bat-dg2-13 fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_15251 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live@late_gt_pm: - fi-cfl-8109u: [PASS][1] -> [DMESG-WARN][2] ([i915#13735]) +80 other tests dmesg-warn [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8938/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html * igt@kms_pipe_crc_basic@read-crc: - fi-cfl-8109u: [PASS][3] -> [DMESG-WARN][4] ([i915#13735] / [i915#15673]) +49 other tests dmesg-warn [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8938/fi-cfl-8109u/igt@kms_pipe_crc_basic@read-crc.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/fi-cfl-8109u/igt@kms_pipe_crc_basic@read-crc.html [i915#13735]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13735 [i915#15673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15673 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_8938 -> IGTPW_15251 * Linux: CI_DRM_18556 -> CI_DRM_18558 CI-20190529: 20190529 CI_DRM_18556: 1e5fbf0d628cd02dced6cfb1ebe39717f121fb4c @ git://anongit.freedesktop.org/gfx-ci/linux CI_DRM_18558: 14d3e29c36bea707856f5c03dbf7b0ef73fdeb85 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_15251: 79b7fff627089201841344197b960bbf78300e39 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8938: b024a3b67372962ff6e643d3998c5cf5acc07081 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/index.html [-- Attachment #2: Type: text/html, Size: 2931 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* ✗ Xe.CI.FULL: failure for Negative tests for VM_BIND decompression 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam ` (4 preceding siblings ...) 2026-05-27 6:42 ` ✓ i915.CI.BAT: " Patchwork @ 2026-05-27 8:39 ` Patchwork 2026-05-27 13:21 ` ✓ i915.CI.Full: success " Patchwork 2026-06-15 12:31 ` [PATCH v2 0/3] " Smitha Balasubramanyam 7 siblings, 0 replies; 21+ messages in thread From: Patchwork @ 2026-05-27 8:39 UTC (permalink / raw) To: Smitha Balasubramanyam; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 45748 bytes --] == Series Details == Series: Negative tests for VM_BIND decompression URL : https://patchwork.freedesktop.org/series/167345/ State : failure == Summary == CI Bug Log - changes from XEIGT_8938_FULL -> XEIGTPW_15251_FULL ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with XEIGTPW_15251_FULL absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in XEIGTPW_15251_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (2 -> 2) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in XEIGTPW_15251_FULL: ### IGT changes ### #### Possible regressions #### * {igt@xe_ccs@vm-bind-decompress-ccs-corruption-suspend-resume} (NEW): - shard-bmg: NOTRUN -> [SKIP][1] [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-2/igt@xe_ccs@vm-bind-decompress-ccs-corruption-suspend-resume.html - shard-lnl: NOTRUN -> [INCOMPLETE][2] [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-2/igt@xe_ccs@vm-bind-decompress-ccs-corruption-suspend-resume.html * {igt@xe_ccs@vm-bind-decompress-uapi-bad-params-fault-mode} (NEW): - shard-lnl: NOTRUN -> [FAIL][3] +2 other tests fail [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@xe_ccs@vm-bind-decompress-uapi-bad-params-fault-mode.html * igt@xe_sriov_scheduling@equal-throughput: - shard-bmg: [PASS][4] -> [SKIP][5] [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-8/igt@xe_sriov_scheduling@equal-throughput.html [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-9/igt@xe_sriov_scheduling@equal-throughput.html New tests --------- New tests have been introduced between XEIGT_8938_FULL and XEIGTPW_15251_FULL: ### New IGT tests (4) ### * igt@xe_ccs@vm-bind-decompress-ccs-corruption: - Statuses : 1 fail(s) - Exec time: [0.17] s * igt@xe_ccs@vm-bind-decompress-ccs-corruption-suspend-resume: - Statuses : 1 incomplete(s) 1 skip(s) - Exec time: [0.0, 1.44] s * igt@xe_ccs@vm-bind-decompress-uapi-bad-params: - Statuses : 1 fail(s) 1 pass(s) - Exec time: [0.07, 2.87] s * igt@xe_ccs@vm-bind-decompress-uapi-bad-params-fault-mode: - Statuses : 1 fail(s) 1 pass(s) - Exec time: [0.16, 3.00] s Known issues ------------ Here are the changes found in XEIGTPW_15251_FULL that come from known issues: ### IGT changes ### #### Issues hit #### * igt@intel_hwmon@hwmon-write: - shard-bmg: [PASS][6] -> [FAIL][7] ([Intel XE#7445]) [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-3/igt@intel_hwmon@hwmon-write.html [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-10/igt@intel_hwmon@hwmon-write.html * igt@kms_big_fb@4-tiled-8bpp-rotate-90: - shard-lnl: NOTRUN -> [SKIP][8] ([Intel XE#1407]) +1 other test skip [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip: - shard-lnl: NOTRUN -> [SKIP][9] ([Intel XE#3658] / [Intel XE#7360]) [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip: - shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#1124]) +1 other test skip [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html * igt@kms_big_fb@yf-tiled-64bpp-rotate-180: - shard-lnl: NOTRUN -> [SKIP][11] ([Intel XE#1124]) +3 other tests skip [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html * igt@kms_bw@linear-tiling-2-displays-target-1920x1080p: - shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#367]) +1 other test skip [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-1/igt@kms_bw@linear-tiling-2-displays-target-1920x1080p.html * igt@kms_bw@linear-tiling-2-displays-target-2160x1440p: - shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#367]) [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@kms_bw@linear-tiling-2-displays-target-2160x1440p.html * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc: - shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#2887]) +6 other tests skip [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc.html * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs: - shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#2887]) +5 other tests skip [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-1/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs.html * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs: - shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#3432]) [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html - shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#3432]) [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3: - shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2652]) +8 other tests skip [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3.html * igt@kms_chamelium_color@ctm-blue-to-red: - shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2325] / [Intel XE#7358]) [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-4/igt@kms_chamelium_color@ctm-blue-to-red.html * igt@kms_chamelium_color@ctm-limited-range: - shard-lnl: NOTRUN -> [SKIP][20] ([Intel XE#306] / [Intel XE#7358]) +1 other test skip [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_chamelium_color@ctm-limited-range.html * igt@kms_chamelium_frames@hdmi-aspect-ratio: - shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2252]) +3 other tests skip [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-2/igt@kms_chamelium_frames@hdmi-aspect-ratio.html - shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#373]) +4 other tests skip [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@kms_chamelium_frames@hdmi-aspect-ratio.html * igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-2: - shard-bmg: NOTRUN -> [FAIL][23] ([Intel XE#3304] / [Intel XE#7374]) +1 other test fail [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-9/igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-2.html * igt@kms_content_protection@dp-mst-type-0-hdcp14: - shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#6974]) [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@kms_content_protection@dp-mst-type-0-hdcp14.html - shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#6974]) [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@kms_content_protection@dp-mst-type-0-hdcp14.html * igt@kms_content_protection@uevent: - shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#7642]) +1 other test skip [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_content_protection@uevent.html - shard-bmg: NOTRUN -> [FAIL][27] ([Intel XE#6707] / [Intel XE#7439]) +1 other test fail [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-7/igt@kms_content_protection@uevent.html * igt@kms_cursor_crc@cursor-offscreen-512x512: - shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#2321] / [Intel XE#7355]) +1 other test skip [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_cursor_crc@cursor-offscreen-512x512.html * igt@kms_cursor_crc@cursor-rapid-movement-128x42: - shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#1424]) [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html * igt@kms_cursor_crc@cursor-rapid-movement-64x21: - shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2320]) [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-6/igt@kms_cursor_crc@cursor-rapid-movement-64x21.html * igt@kms_cursor_crc@cursor-sliding-512x170: - shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2321] / [Intel XE#7355]) [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-5/igt@kms_cursor_crc@cursor-sliding-512x170.html * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy: - shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#309] / [Intel XE#7343]) +2 other tests skip [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html * igt@kms_cursor_legacy@flip-vs-cursor-legacy: - shard-bmg: [PASS][33] -> [FAIL][34] ([Intel XE#7571]) [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-6/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html * igt@kms_dp_link_training@non-uhbr-sst: - shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#4354] / [Intel XE#7450]) [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@kms_dp_link_training@non-uhbr-sst.html * igt@kms_dp_linktrain_fallback@dp-fallback: - shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#4294] / [Intel XE#7477]) [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-1/igt@kms_dp_linktrain_fallback@dp-fallback.html * igt@kms_dsc@dsc-fractional-bpp: - shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2244]) [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@kms_dsc@dsc-fractional-bpp.html - shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#2244]) [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-1/igt@kms_dsc@dsc-fractional-bpp.html * igt@kms_flip@2x-flip-vs-rmfb: - shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#1421]) +2 other tests skip [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_flip@2x-flip-vs-rmfb.html * igt@kms_flip@flip-vs-expired-vblank@a-edp1: - shard-lnl: [PASS][40] -> [FAIL][41] ([Intel XE#301]) [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x: - shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#7179]) [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling: - shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385]) [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-default-mode: - shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#1397] / [Intel XE#7385]) [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling: - shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#7178] / [Intel XE#7349]) [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html - shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#7178] / [Intel XE#7349]) [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling: - shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling: - shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#7178] / [Intel XE#7351]) +2 other tests skip [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html * igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-blt: - shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-10/igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-blt.html * igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-cur-indfb-draw-render: - shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#2311]) +19 other tests skip [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-4/igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-cur-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff: - shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#4141]) +2 other tests skip [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html * igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render: - shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-render.html * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc: - shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#6312] / [Intel XE#651]) +4 other tests skip [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y: - shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#1469] / [Intel XE#7399]) +1 other test skip [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html * igt@kms_frontbuffer_tracking@fbcdrrshdr-modesetfrombusy: - shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#6312]) +6 other tests skip [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrshdr-modesetfrombusy.html * igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-render: - shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#7061]) +3 other tests skip [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-7/igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-render.html - shard-lnl: NOTRUN -> [SKIP][57] ([Intel XE#7061]) +4 other tests skip [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-2/igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-render.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-draw-blt: - shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#7865]) +10 other tests skip [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-cur-indfb-draw-render: - shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#2313]) +19 other tests skip [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-cur-indfb-draw-render.html * igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc: - shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#7905]) +21 other tests skip [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render: - shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#656] / [Intel XE#7905]) +18 other tests skip [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html * igt@kms_hdmi_inject@inject-4k: - shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#1470]) [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-2/igt@kms_hdmi_inject@inject-4k.html * igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f: - shard-bmg: [PASS][63] -> [SKIP][64] ([Intel XE#7915]) +5 other tests skip [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-10/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-8/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html * igt@kms_joiner@basic-force-ultra-joiner: - shard-lnl: NOTRUN -> [SKIP][65] ([Intel XE#6900] / [Intel XE#7362]) [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_joiner@basic-force-ultra-joiner.html * igt@kms_pipe_stress@stress-xrgb8888-yftiled: - shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#6912] / [Intel XE#7375]) [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-8/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html - shard-lnl: NOTRUN -> [SKIP][67] ([Intel XE#6912] / [Intel XE#7375]) [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier: - shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#7283]) [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-4/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier.html * igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5: - shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#7130]) +1 other test skip [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5.html - shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#7130]) +1 other test skip [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5.html * igt@kms_plane_lowres@tiling-yf: - shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#599]) [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_plane_lowres@tiling-yf.html * igt@kms_plane_multiple@2x-tiling-4: - shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#4596] / [Intel XE#5854]) [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@kms_plane_multiple@2x-tiling-4.html * igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a: - shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-8/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a.html * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf: - shard-bmg: NOTRUN -> [SKIP][74] ([Intel XE#1489]) +3 other tests skip [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-10/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html - shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304]) +1 other test skip [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf@pipe-b-edp-1: - shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#4608] / [Intel XE#7304]) +1 other test skip [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf@pipe-b-edp-1.html * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1: - shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#4608]) +1 other test skip [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1.html * igt@kms_psr@fbc-pr-suspend: - shard-lnl: NOTRUN -> [SKIP][78] ([Intel XE#1406]) +1 other test skip [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-1/igt@kms_psr@fbc-pr-suspend.html * igt@kms_psr@fbc-psr2-dpms: - shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#1406] / [Intel XE#7345]) [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@kms_psr@fbc-psr2-dpms.html * igt@kms_psr@fbc-psr2-dpms@edp-1: - shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#1406] / [Intel XE#4609]) [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@kms_psr@fbc-psr2-dpms@edp-1.html * igt@kms_psr@psr-cursor-plane-onoff: - shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#2234] / [Intel XE#2850]) +5 other tests skip [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-7/igt@kms_psr@psr-cursor-plane-onoff.html * igt@kms_rotation_crc@sprite-rotation-270: - shard-lnl: NOTRUN -> [SKIP][82] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342]) [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_rotation_crc@sprite-rotation-270.html - shard-bmg: NOTRUN -> [SKIP][83] ([Intel XE#3904] / [Intel XE#7342]) [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-4/igt@kms_rotation_crc@sprite-rotation-270.html * igt@kms_setmode@clone-exclusive-crtc: - shard-lnl: NOTRUN -> [SKIP][84] ([Intel XE#1435]) [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@kms_setmode@clone-exclusive-crtc.html * igt@kms_sharpness_filter@filter-strength: - shard-bmg: NOTRUN -> [SKIP][85] ([Intel XE#6503]) [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-9/igt@kms_sharpness_filter@filter-strength.html * igt@kms_tv_load_detect@load-detect: - shard-lnl: NOTRUN -> [SKIP][86] ([Intel XE#330] / [Intel XE#5857]) [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@kms_tv_load_detect@load-detect.html - shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#2450] / [Intel XE#5857]) [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-2/igt@kms_tv_load_detect@load-detect.html * igt@kms_vrr@flipline: - shard-lnl: [PASS][88] -> [FAIL][89] ([Intel XE#4227] / [Intel XE#7397]) +1 other test fail [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-lnl-1/igt@kms_vrr@flipline.html [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@kms_vrr@flipline.html * igt@kms_vrr@negative-basic: - shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#1499]) [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@kms_vrr@negative-basic.html * igt@xe_eudebug@basic-vm-access-faultable: - shard-bmg: NOTRUN -> [SKIP][91] ([Intel XE#7636]) +3 other tests skip [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-10/igt@xe_eudebug@basic-vm-access-faultable.html * igt@xe_eudebug@vm-bind-clear-faultable: - shard-lnl: NOTRUN -> [SKIP][92] ([Intel XE#7636]) +7 other tests skip [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@xe_eudebug@vm-bind-clear-faultable.html * igt@xe_evict@evict-cm-threads-small-multi-vm: - shard-lnl: NOTRUN -> [SKIP][93] ([Intel XE#6540] / [Intel XE#688]) +2 other tests skip [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@xe_evict@evict-cm-threads-small-multi-vm.html * igt@xe_exec_balancer@once-virtual-rebind: - shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#7482]) +10 other tests skip [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@xe_exec_balancer@once-virtual-rebind.html * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue: - shard-bmg: NOTRUN -> [SKIP][95] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue.html - shard-lnl: NOTRUN -> [SKIP][96] ([Intel XE#1392]) +2 other tests skip [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-2/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue.html * igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-race-imm: - shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#7136]) +4 other tests skip [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-race-imm.html * igt@xe_exec_fault_mode@twice-multi-queue-imm: - shard-bmg: NOTRUN -> [SKIP][98] ([Intel XE#7136]) +4 other tests skip [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-9/igt@xe_exec_fault_mode@twice-multi-queue-imm.html * igt@xe_exec_multi_queue@max-queues-preempt-mode-fault-basic-smem: - shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#6874]) +16 other tests skip [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@xe_exec_multi_queue@max-queues-preempt-mode-fault-basic-smem.html * igt@xe_exec_multi_queue@two-queues-userptr: - shard-bmg: NOTRUN -> [SKIP][100] ([Intel XE#6874]) +13 other tests skip [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-7/igt@xe_exec_multi_queue@two-queues-userptr.html * igt@xe_exec_system_allocator@many-stride-mmap-file-nomemset: - shard-lnl: [PASS][101] -> [ABORT][102] ([Intel XE#8007]) [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-lnl-2/igt@xe_exec_system_allocator@many-stride-mmap-file-nomemset.html [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@xe_exec_system_allocator@many-stride-mmap-file-nomemset.html * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma: - shard-lnl: NOTRUN -> [SKIP][103] ([Intel XE#6196]) [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma.html * igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic: - shard-lnl: NOTRUN -> [SKIP][104] ([Intel XE#7138]) +4 other tests skip [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic.html * igt@xe_exec_threads@threads-multi-queue-fd-basic: - shard-bmg: NOTRUN -> [SKIP][105] ([Intel XE#7138]) +2 other tests skip [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-7/igt@xe_exec_threads@threads-multi-queue-fd-basic.html * igt@xe_mmap@pci-membarrier-bad-pagesize: - shard-lnl: NOTRUN -> [SKIP][106] ([Intel XE#5100] / [Intel XE#7322] / [Intel XE#7408]) [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@xe_mmap@pci-membarrier-bad-pagesize.html * igt@xe_multigpu_svm@mgpu-coherency-fail-prefetch: - shard-lnl: NOTRUN -> [SKIP][107] ([Intel XE#6964]) +1 other test skip [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@xe_multigpu_svm@mgpu-coherency-fail-prefetch.html * igt@xe_multigpu_svm@mgpu-pagefault-basic: - shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#6964]) +1 other test skip [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-5/igt@xe_multigpu_svm@mgpu-pagefault-basic.html * igt@xe_page_reclaim@many-vma-same-bo: - shard-bmg: NOTRUN -> [SKIP][109] ([Intel XE#7793]) +1 other test skip [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-7/igt@xe_page_reclaim@many-vma-same-bo.html * igt@xe_page_reclaim@random: - shard-lnl: NOTRUN -> [SKIP][110] ([Intel XE#7793]) +2 other tests skip [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@xe_page_reclaim@random.html * igt@xe_pm@d3cold-basic: - shard-lnl: NOTRUN -> [SKIP][111] ([Intel XE#2284] / [Intel XE#366] / [Intel XE#7370]) [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-3/igt@xe_pm@d3cold-basic.html * igt@xe_pm@d3hot-i2c: - shard-lnl: NOTRUN -> [SKIP][112] ([Intel XE#5742] / [Intel XE#7328] / [Intel XE#7400]) [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-8/igt@xe_pm@d3hot-i2c.html - shard-bmg: NOTRUN -> [SKIP][113] ([Intel XE#5742] / [Intel XE#7328] / [Intel XE#7400]) [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-8/igt@xe_pm@d3hot-i2c.html * igt@xe_pxp@pxp-termination-key-update-post-suspend: - shard-bmg: NOTRUN -> [SKIP][114] ([Intel XE#4733] / [Intel XE#7417]) +1 other test skip [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-10/igt@xe_pxp@pxp-termination-key-update-post-suspend.html * igt@xe_query@multigpu-query-config: - shard-bmg: NOTRUN -> [SKIP][115] ([Intel XE#944]) +1 other test skip [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-7/igt@xe_query@multigpu-query-config.html * igt@xe_query@multigpu-query-invalid-extension: - shard-lnl: NOTRUN -> [SKIP][116] ([Intel XE#944]) +2 other tests skip [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-5/igt@xe_query@multigpu-query-invalid-extension.html * igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs: - shard-lnl: NOTRUN -> [SKIP][117] ([Intel XE#4130] / [Intel XE#7366]) [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html * igt@xe_sriov_flr@flr-vf1-clear: - shard-bmg: [PASS][118] -> [FAIL][119] ([Intel XE#6569]) [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-10/igt@xe_sriov_flr@flr-vf1-clear.html [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-9/igt@xe_sriov_flr@flr-vf1-clear.html * igt@xe_sriov_vfio@region-info: - shard-lnl: NOTRUN -> [SKIP][120] ([Intel XE#7724]) [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-2/igt@xe_sriov_vfio@region-info.html #### Possible fixes #### * igt@kms_flip@2x-dpms-vs-vblank-race: - shard-bmg: [FAIL][121] ([Intel XE#3098]) -> [PASS][122] +1 other test pass [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-4/igt@kms_flip@2x-dpms-vs-vblank-race.html [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-6/igt@kms_flip@2x-dpms-vs-vblank-race.html * igt@kms_flip@flip-vs-expired-vblank@b-edp1: - shard-lnl: [FAIL][123] ([Intel XE#301]) -> [PASS][124] [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html * igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010: - shard-bmg: [SKIP][125] ([Intel XE#7915]) -> [PASS][126] +1 other test pass [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-3/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010.html [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-2/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010.html * igt@xe_evict@evict-mixed-many-threads-small: - shard-bmg: [INCOMPLETE][127] ([Intel XE#6321]) -> [PASS][128] [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-6/igt@xe_evict@evict-mixed-many-threads-small.html [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html * igt@xe_exec_reset@long-spin-many-preempt-gt0-threads: - shard-bmg: [FAIL][129] ([Intel XE#7956]) -> [PASS][130] [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-7/igt@xe_exec_reset@long-spin-many-preempt-gt0-threads.html [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@xe_exec_reset@long-spin-many-preempt-gt0-threads.html * igt@xe_wedged@wedged-mode-toggle: - shard-lnl: [ABORT][131] ([Intel XE#8007]) -> [PASS][132] [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-lnl-8/igt@xe_wedged@wedged-mode-toggle.html [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-lnl-4/igt@xe_wedged@wedged-mode-toggle.html #### Warnings #### * igt@kms_hdr@brightness-with-hdr: - shard-bmg: [SKIP][133] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916]) -> [SKIP][134] ([Intel XE#3544] / [Intel XE#7916]) [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-8/igt@kms_hdr@brightness-with-hdr.html [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-10/igt@kms_hdr@brightness-with-hdr.html * igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f: - shard-bmg: [SKIP][135] ([Intel XE#7915]) -> [SKIP][136] ([Intel XE#7916]) +1 other test skip [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-8/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-10/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html * igt@kms_tiled_display@basic-test-pattern: - shard-bmg: [FAIL][137] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][138] ([Intel XE#2426] / [Intel XE#5848]) [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8938/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern.html [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124 [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392 [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397 [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406 [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407 [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421 [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424 [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435 [Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469 [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470 [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489 [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499 [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729 [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745 [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234 [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244 [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252 [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284 [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311 [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313 [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320 [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321 [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322 [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325 [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426 [Intel XE#2450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2450 [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652 [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763 [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850 [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887 [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893 [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301 [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306 [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309 [Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098 [Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330 [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304 [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414 [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432 [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544 [Intel XE#3658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3658 [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366 [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367 [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373 [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904 [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130 [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141 [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227 [Intel XE#4294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4294 [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354 [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596 [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608 [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609 [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733 [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100 [Intel XE#5742]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5742 [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848 [Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854 [Intel XE#5857]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5857 [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599 [Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196 [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312 [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321 [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503 [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651 [Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540 [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656 [Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569 [Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707 [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874 [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688 [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886 [Intel XE#6900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6900 [Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912 [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964 [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974 [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061 [Intel XE#7130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7130 [Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136 [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138 [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178 [Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179 [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283 [Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304 [Intel XE#7322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7322 [Intel XE#7328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7328 [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342 [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343 [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345 [Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349 [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351 [Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355 [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356 [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358 [Intel XE#7360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7360 [Intel XE#7362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7362 [Intel XE#7366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7366 [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370 [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372 [Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374 [Intel XE#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375 [Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385 [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397 [Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399 [Intel XE#7400]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7400 [Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408 [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417 [Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424 [Intel XE#7439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7439 [Intel XE#7445]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7445 [Intel XE#7450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7450 [Intel XE#7477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7477 [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482 [Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571 [Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636 [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642 [Intel XE#7724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7724 [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793 [Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865 [Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905 [Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915 [Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916 [Intel XE#7956]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7956 [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007 [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944 Build changes ------------- * IGT: IGT_8938 -> IGTPW_15251 * Linux: xe-5131-ba2b29e3db52fcd75c2dc6d76d81f26eb59b7e33 -> xe-5134-14d3e29c36bea707856f5c03dbf7b0ef73fdeb85 IGTPW_15251: 79b7fff627089201841344197b960bbf78300e39 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8938: b024a3b67372962ff6e643d3998c5cf5acc07081 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-5131-ba2b29e3db52fcd75c2dc6d76d81f26eb59b7e33: ba2b29e3db52fcd75c2dc6d76d81f26eb59b7e33 xe-5134-14d3e29c36bea707856f5c03dbf7b0ef73fdeb85: 14d3e29c36bea707856f5c03dbf7b0ef73fdeb85 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15251/index.html [-- Attachment #2: Type: text/html, Size: 52202 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* ✓ i915.CI.Full: success for Negative tests for VM_BIND decompression 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam ` (5 preceding siblings ...) 2026-05-27 8:39 ` ✗ Xe.CI.FULL: failure " Patchwork @ 2026-05-27 13:21 ` Patchwork 2026-06-15 12:31 ` [PATCH v2 0/3] " Smitha Balasubramanyam 7 siblings, 0 replies; 21+ messages in thread From: Patchwork @ 2026-05-27 13:21 UTC (permalink / raw) To: Smitha Balasubramanyam; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 159181 bytes --] == Series Details == Series: Negative tests for VM_BIND decompression URL : https://patchwork.freedesktop.org/series/167345/ State : success == Summary == CI Bug Log - changes from CI_DRM_18558_full -> IGTPW_15251_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/index.html Participating hosts (10 -> 10) ------------------------------ No changes in participating hosts New tests --------- New tests have been introduced between CI_DRM_18558_full and IGTPW_15251_full: ### New IGT tests (3) ### * igt@kms_flip@plain-flip-fb-recreate@a-hdmi-a2: - Statuses : 1 pass(s) - Exec time: [5.70] s * igt@kms_flip@plain-flip-fb-recreate@b-hdmi-a2: - Statuses : 1 pass(s) - Exec time: [5.97] s * igt@kms_flip@plain-flip-fb-recreate@c-hdmi-a2: - Statuses : 1 pass(s) - Exec time: [5.70] s Known issues ------------ Here are the changes found in IGTPW_15251_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@api_intel_bb@blit-reloc-purge-cache: - shard-rkl: NOTRUN -> [SKIP][1] ([i915#8411]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-3/igt@api_intel_bb@blit-reloc-purge-cache.html * igt@api_intel_bb@crc32: - shard-rkl: NOTRUN -> [SKIP][2] ([i915#6230]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@api_intel_bb@crc32.html - shard-tglu: NOTRUN -> [SKIP][3] ([i915#6230]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-3/igt@api_intel_bb@crc32.html * igt@device_reset@unbind-cold-reset-rebind: - shard-rkl: NOTRUN -> [SKIP][4] ([i915#11078] / [i915#14544]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@device_reset@unbind-cold-reset-rebind.html - shard-dg1: NOTRUN -> [SKIP][5] ([i915#11078]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@device_reset@unbind-cold-reset-rebind.html - shard-tglu: NOTRUN -> [SKIP][6] ([i915#11078]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@device_reset@unbind-cold-reset-rebind.html - shard-mtlp: NOTRUN -> [SKIP][7] ([i915#11078]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@device_reset@unbind-cold-reset-rebind.html - shard-dg2: NOTRUN -> [SKIP][8] ([i915#11078]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@device_reset@unbind-cold-reset-rebind.html * igt@device_reset@unbind-reset-rebind: - shard-dg1: NOTRUN -> [ABORT][9] ([i915#11814]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-15/igt@device_reset@unbind-reset-rebind.html * igt@drm_buddy@drm_buddy: - shard-rkl: NOTRUN -> [SKIP][10] ([i915#15678]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@drm_buddy@drm_buddy.html - shard-tglu: NOTRUN -> [SKIP][11] ([i915#15678]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@drm_buddy@drm_buddy.html * igt@gem_ccs@block-copy-compressed: - shard-tglu-1: NOTRUN -> [SKIP][12] ([i915#3555] / [i915#9323]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gem_ccs@block-copy-compressed.html * igt@gem_ccs@block-multicopy-inplace: - shard-rkl: NOTRUN -> [SKIP][13] ([i915#3555] / [i915#9323]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@gem_ccs@block-multicopy-inplace.html * igt@gem_ccs@ctrl-surf-copy: - shard-tglu: NOTRUN -> [SKIP][14] ([i915#3555] / [i915#9323]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-6/igt@gem_ccs@ctrl-surf-copy.html * igt@gem_ccs@ctrl-surf-copy-new-ctx: - shard-tglu-1: NOTRUN -> [SKIP][15] ([i915#9323]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gem_ccs@ctrl-surf-copy-new-ctx.html * igt@gem_ccs@suspend-resume: - shard-tglu: NOTRUN -> [SKIP][16] ([i915#9323]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-5/igt@gem_ccs@suspend-resume.html * igt@gem_ccs@suspend-resume@tile64-compressed-compfmt0-lmem0-lmem0: - shard-dg2: NOTRUN -> [INCOMPLETE][17] ([i915#13356]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@gem_ccs@suspend-resume@tile64-compressed-compfmt0-lmem0-lmem0.html * igt@gem_close_race@multigpu-basic-process: - shard-tglu: NOTRUN -> [SKIP][18] ([i915#7697]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-6/igt@gem_close_race@multigpu-basic-process.html - shard-mtlp: NOTRUN -> [SKIP][19] ([i915#7697]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@gem_close_race@multigpu-basic-process.html - shard-dg2: NOTRUN -> [SKIP][20] ([i915#7697]) [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@gem_close_race@multigpu-basic-process.html - shard-rkl: NOTRUN -> [SKIP][21] ([i915#7697]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@gem_close_race@multigpu-basic-process.html - shard-dg1: NOTRUN -> [SKIP][22] ([i915#7697]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@gem_close_race@multigpu-basic-process.html * igt@gem_close_race@multigpu-basic-threads: - shard-tglu-1: NOTRUN -> [SKIP][23] ([i915#7697]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gem_close_race@multigpu-basic-threads.html * igt@gem_create@create-ext-cpu-access-big: - shard-mtlp: NOTRUN -> [SKIP][24] ([i915#6335]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@gem_create@create-ext-cpu-access-big.html * igt@gem_ctx_isolation@preservation-s3@rcs0: - shard-glk: NOTRUN -> [INCOMPLETE][25] ([i915#13356]) +1 other test incomplete [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk8/igt@gem_ctx_isolation@preservation-s3@rcs0.html * igt@gem_ctx_persistence@hang: - shard-mtlp: NOTRUN -> [SKIP][26] ([i915#8555]) +1 other test skip [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-4/igt@gem_ctx_persistence@hang.html - shard-dg2: NOTRUN -> [SKIP][27] ([i915#8555]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@gem_ctx_persistence@hang.html - shard-dg1: NOTRUN -> [SKIP][28] ([i915#8555]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@gem_ctx_persistence@hang.html - shard-snb: NOTRUN -> [SKIP][29] ([i915#1099]) +1 other test skip [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-snb4/igt@gem_ctx_persistence@hang.html * igt@gem_ctx_sseu@invalid-sseu: - shard-dg2: NOTRUN -> [SKIP][30] ([i915#280]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@gem_ctx_sseu@invalid-sseu.html - shard-rkl: NOTRUN -> [SKIP][31] ([i915#280]) [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@gem_ctx_sseu@invalid-sseu.html - shard-tglu: NOTRUN -> [SKIP][32] ([i915#280]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@gem_ctx_sseu@invalid-sseu.html * igt@gem_eio@in-flight-suspend: - shard-glk: NOTRUN -> [INCOMPLETE][33] ([i915#13390]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk9/igt@gem_eio@in-flight-suspend.html * igt@gem_eio@unwedge-stress: - shard-snb: NOTRUN -> [FAIL][34] ([i915#8898]) +1 other test fail [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-snb1/igt@gem_eio@unwedge-stress.html * igt@gem_eio@unwedge-stress@blt: - shard-mtlp: NOTRUN -> [SKIP][35] ([i915#15314]) +1 other test skip [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@gem_eio@unwedge-stress@blt.html * igt@gem_exec_balancer@bonded-sync: - shard-dg2: NOTRUN -> [SKIP][36] ([i915#4771]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@gem_exec_balancer@bonded-sync.html * igt@gem_exec_balancer@parallel-balancer: - shard-rkl: NOTRUN -> [SKIP][37] ([i915#4525]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@gem_exec_balancer@parallel-balancer.html - shard-tglu: NOTRUN -> [SKIP][38] ([i915#4525]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@gem_exec_balancer@parallel-balancer.html * igt@gem_exec_capture@capture-invisible@lmem0: - shard-dg2: NOTRUN -> [SKIP][39] ([i915#6334]) +2 other tests skip [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@gem_exec_capture@capture-invisible@lmem0.html - shard-dg1: NOTRUN -> [SKIP][40] ([i915#6334]) +2 other tests skip [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-16/igt@gem_exec_capture@capture-invisible@lmem0.html * igt@gem_exec_capture@capture-invisible@smem0: - shard-rkl: NOTRUN -> [SKIP][41] ([i915#6334]) +1 other test skip [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@gem_exec_capture@capture-invisible@smem0.html - shard-tglu-1: NOTRUN -> [SKIP][42] ([i915#6334]) +1 other test skip [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gem_exec_capture@capture-invisible@smem0.html - shard-mtlp: NOTRUN -> [SKIP][43] ([i915#6334]) +1 other test skip [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@gem_exec_capture@capture-invisible@smem0.html * igt@gem_exec_capture@capture-recoverable: - shard-rkl: NOTRUN -> [SKIP][44] ([i915#6344]) [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@gem_exec_capture@capture-recoverable.html - shard-tglu: NOTRUN -> [SKIP][45] ([i915#6344]) [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-6/igt@gem_exec_capture@capture-recoverable.html * igt@gem_exec_fence@submit3: - shard-dg2: NOTRUN -> [SKIP][46] ([i915#4812]) +1 other test skip [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@gem_exec_fence@submit3.html - shard-dg1: NOTRUN -> [SKIP][47] ([i915#4812]) [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@gem_exec_fence@submit3.html - shard-mtlp: NOTRUN -> [SKIP][48] ([i915#4812]) [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@gem_exec_fence@submit3.html * igt@gem_exec_flush@basic-uc-pro-default: - shard-dg2: NOTRUN -> [SKIP][49] ([i915#3539] / [i915#4852]) +3 other tests skip [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@gem_exec_flush@basic-uc-pro-default.html * igt@gem_exec_reloc@basic-cpu-read-noreloc: - shard-mtlp: NOTRUN -> [SKIP][50] ([i915#3281]) +6 other tests skip [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@gem_exec_reloc@basic-cpu-read-noreloc.html * igt@gem_exec_reloc@basic-wc-active: - shard-rkl: NOTRUN -> [SKIP][51] ([i915#14544] / [i915#3281]) [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_exec_reloc@basic-wc-active.html - shard-dg1: NOTRUN -> [SKIP][52] ([i915#3281]) +2 other tests skip [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@gem_exec_reloc@basic-wc-active.html * igt@gem_exec_reloc@basic-write-read-active: - shard-dg2: NOTRUN -> [SKIP][53] ([i915#3281]) +7 other tests skip [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@gem_exec_reloc@basic-write-read-active.html - shard-rkl: NOTRUN -> [SKIP][54] ([i915#3281]) +7 other tests skip [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@gem_exec_reloc@basic-write-read-active.html * igt@gem_exec_suspend@basic-s3-devices: - shard-rkl: NOTRUN -> [ABORT][55] ([i915#15131] / [i915#15542]) [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-1/igt@gem_exec_suspend@basic-s3-devices.html * igt@gem_exec_suspend@basic-s3-devices@smem: - shard-rkl: NOTRUN -> [ABORT][56] ([i915#15542]) [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-1/igt@gem_exec_suspend@basic-s3-devices@smem.html * igt@gem_fence_thrash@bo-copy: - shard-dg2: NOTRUN -> [SKIP][57] ([i915#4860]) +2 other tests skip [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@gem_fence_thrash@bo-copy.html - shard-dg1: NOTRUN -> [SKIP][58] ([i915#4860]) [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-13/igt@gem_fence_thrash@bo-copy.html - shard-mtlp: NOTRUN -> [SKIP][59] ([i915#4860]) +1 other test skip [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@gem_fence_thrash@bo-copy.html * igt@gem_huc_copy@huc-copy: - shard-glk: NOTRUN -> [SKIP][60] ([i915#2190]) [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk6/igt@gem_huc_copy@huc-copy.html * igt@gem_lmem_swapping@heavy-verify-multi: - shard-mtlp: NOTRUN -> [SKIP][61] ([i915#4613]) +1 other test skip [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@gem_lmem_swapping@heavy-verify-multi.html * igt@gem_lmem_swapping@massive-random: - shard-glk: NOTRUN -> [SKIP][62] ([i915#4613]) +3 other tests skip [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk5/igt@gem_lmem_swapping@massive-random.html - shard-rkl: NOTRUN -> [SKIP][63] ([i915#4613]) +3 other tests skip [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@gem_lmem_swapping@massive-random.html * igt@gem_lmem_swapping@parallel-random-verify: - shard-tglu-1: NOTRUN -> [SKIP][64] ([i915#4613]) +1 other test skip [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gem_lmem_swapping@parallel-random-verify.html * igt@gem_lmem_swapping@parallel-random-verify-ccs: - shard-tglu: NOTRUN -> [SKIP][65] ([i915#4613]) +4 other tests skip [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@gem_lmem_swapping@parallel-random-verify-ccs.html * igt@gem_media_fill@media-fill: - shard-mtlp: NOTRUN -> [SKIP][66] ([i915#8289]) [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@gem_media_fill@media-fill.html - shard-dg2: NOTRUN -> [SKIP][67] ([i915#8289]) [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@gem_media_fill@media-fill.html * igt@gem_media_vme: - shard-tglu-1: NOTRUN -> [SKIP][68] ([i915#284]) [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gem_media_vme.html * igt@gem_mmap_gtt@medium-copy-xy: - shard-dg2: NOTRUN -> [SKIP][69] ([i915#4077]) +16 other tests skip [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@gem_mmap_gtt@medium-copy-xy.html * igt@gem_mmap_wc@bad-offset: - shard-mtlp: NOTRUN -> [SKIP][70] ([i915#4083]) +3 other tests skip [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@gem_mmap_wc@bad-offset.html * igt@gem_mmap_wc@coherency: - shard-dg1: NOTRUN -> [SKIP][71] ([i915#4083]) +3 other tests skip [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@gem_mmap_wc@coherency.html * igt@gem_mmap_wc@write-wc-read-gtt: - shard-dg2: NOTRUN -> [SKIP][72] ([i915#4083]) +5 other tests skip [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@gem_mmap_wc@write-wc-read-gtt.html * igt@gem_partial_pwrite_pread@writes-after-reads: - shard-rkl: NOTRUN -> [SKIP][73] ([i915#3282]) +6 other tests skip [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads.html * igt@gem_pread@exhaustion: - shard-rkl: NOTRUN -> [SKIP][74] ([i915#14544] / [i915#3282]) [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_pread@exhaustion.html - shard-tglu: NOTRUN -> [WARN][75] ([i915#2658]) [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-7/igt@gem_pread@exhaustion.html * igt@gem_pread@snoop: - shard-dg2: NOTRUN -> [SKIP][76] ([i915#3282]) +7 other tests skip [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@gem_pread@snoop.html - shard-dg1: NOTRUN -> [SKIP][77] ([i915#3282]) +2 other tests skip [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-15/igt@gem_pread@snoop.html - shard-mtlp: NOTRUN -> [SKIP][78] ([i915#3282]) +2 other tests skip [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@gem_pread@snoop.html * igt@gem_pxp@protected-encrypted-src-copy-not-readible: - shard-dg2: NOTRUN -> [SKIP][79] ([i915#4270]) [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs: - shard-glk: NOTRUN -> [SKIP][80] +554 other tests skip [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk2/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html * igt@gem_render_copy@yf-tiled-ccs-to-y-tiled: - shard-dg2: NOTRUN -> [SKIP][81] ([i915#5190] / [i915#8428]) +9 other tests skip [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@gem_render_copy@yf-tiled-ccs-to-y-tiled.html * igt@gem_render_copy@yf-tiled-ccs-to-y-tiled-ccs: - shard-mtlp: NOTRUN -> [SKIP][82] ([i915#8428]) +3 other tests skip [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@gem_render_copy@yf-tiled-ccs-to-y-tiled-ccs.html * igt@gem_set_tiling_vs_pwrite: - shard-dg2: NOTRUN -> [SKIP][83] ([i915#4079]) [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@gem_set_tiling_vs_pwrite.html * igt@gem_tiled_pread_basic@basic: - shard-dg2: NOTRUN -> [SKIP][84] ([i915#15657]) [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@gem_tiled_pread_basic@basic.html * igt@gem_unfence_active_buffers: - shard-mtlp: NOTRUN -> [SKIP][85] ([i915#4879]) [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@gem_unfence_active_buffers.html * igt@gem_userptr_blits@coherency-sync: - shard-dg2: NOTRUN -> [SKIP][86] ([i915#3297]) +1 other test skip [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@gem_userptr_blits@coherency-sync.html - shard-rkl: NOTRUN -> [SKIP][87] ([i915#3297]) +2 other tests skip [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-3/igt@gem_userptr_blits@coherency-sync.html * igt@gem_userptr_blits@coherency-unsync: - shard-tglu-1: NOTRUN -> [SKIP][88] ([i915#3297]) [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gem_userptr_blits@coherency-unsync.html * igt@gem_userptr_blits@invalid-mmap-offset-unsync: - shard-dg1: NOTRUN -> [SKIP][89] ([i915#3297]) [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-14/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html - shard-tglu: NOTRUN -> [SKIP][90] ([i915#3297]) [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-8/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html - shard-mtlp: NOTRUN -> [SKIP][91] ([i915#3297]) [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html * igt@gen9_exec_parse@bb-large: - shard-tglu: NOTRUN -> [SKIP][92] ([i915#2527] / [i915#2856]) +4 other tests skip [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@gen9_exec_parse@bb-large.html * igt@gen9_exec_parse@bb-oversize: - shard-rkl: NOTRUN -> [SKIP][93] ([i915#2527]) +5 other tests skip [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@gen9_exec_parse@bb-oversize.html - shard-dg1: NOTRUN -> [SKIP][94] ([i915#2527]) +1 other test skip [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@gen9_exec_parse@bb-oversize.html - shard-mtlp: NOTRUN -> [SKIP][95] ([i915#2856]) +2 other tests skip [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@gen9_exec_parse@bb-oversize.html * igt@gen9_exec_parse@cmd-crossing-page: - shard-tglu-1: NOTRUN -> [SKIP][96] ([i915#2527] / [i915#2856]) +1 other test skip [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@gen9_exec_parse@cmd-crossing-page.html * igt@gen9_exec_parse@shadow-peek: - shard-dg2: NOTRUN -> [SKIP][97] ([i915#2856]) +5 other tests skip [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@gen9_exec_parse@shadow-peek.html * igt@i915_drm_fdinfo@all-busy-check-all: - shard-mtlp: NOTRUN -> [SKIP][98] ([i915#14123]) [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@i915_drm_fdinfo@all-busy-check-all.html - shard-dg2: NOTRUN -> [SKIP][99] ([i915#14123]) [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@i915_drm_fdinfo@all-busy-check-all.html - shard-dg1: NOTRUN -> [SKIP][100] ([i915#14123]) [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@i915_drm_fdinfo@all-busy-check-all.html * igt@i915_module_load@fault-injection: - shard-dg2: NOTRUN -> [ABORT][101] ([i915#15342] / [i915#15481]) [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@i915_module_load@fault-injection.html - shard-dg1: NOTRUN -> [ABORT][102] ([i915#11814] / [i915#15481]) +1 other test abort [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-19/igt@i915_module_load@fault-injection.html - shard-mtlp: NOTRUN -> [ABORT][103] ([i915#15342] / [i915#15481]) [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@i915_module_load@fault-injection.html * igt@i915_module_load@fault-injection@__uc_init: - shard-dg2: NOTRUN -> [ABORT][104] ([i915#15481]) [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@i915_module_load@fault-injection@__uc_init.html - shard-rkl: NOTRUN -> [SKIP][105] ([i915#15479]) +4 other tests skip [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@i915_module_load@fault-injection@__uc_init.html - shard-mtlp: NOTRUN -> [ABORT][106] ([i915#15481]) [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@i915_module_load@fault-injection@__uc_init.html * igt@i915_module_load@fault-injection@i915_driver_mmio_probe: - shard-dg1: NOTRUN -> [INCOMPLETE][107] ([i915#15481]) [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-19/igt@i915_module_load@fault-injection@i915_driver_mmio_probe.html * igt@i915_module_load@fault-injection@intel_connector_register: - shard-rkl: NOTRUN -> [ABORT][108] ([i915#15342]) +1 other test abort [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@i915_module_load@fault-injection@intel_connector_register.html - shard-snb: NOTRUN -> [ABORT][109] ([i915#15342]) +1 other test abort [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-snb5/igt@i915_module_load@fault-injection@intel_connector_register.html - shard-tglu: NOTRUN -> [ABORT][110] ([i915#15342]) +1 other test abort [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-7/igt@i915_module_load@fault-injection@intel_connector_register.html - shard-mtlp: NOTRUN -> [DMESG-WARN][111] ([i915#15342]) [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@i915_module_load@fault-injection@intel_connector_register.html - shard-glk: NOTRUN -> [ABORT][112] ([i915#15342]) +1 other test abort [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk4/igt@i915_module_load@fault-injection@intel_connector_register.html - shard-dg2: NOTRUN -> [DMESG-WARN][113] ([i915#15342]) [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@i915_module_load@fault-injection@intel_connector_register.html * igt@i915_module_load@fault-injection@intel_guc_ct_init: - shard-snb: NOTRUN -> [SKIP][114] +187 other tests skip [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-snb5/igt@i915_module_load@fault-injection@intel_guc_ct_init.html * igt@i915_module_load@fault-injection@uc_fw_rsa_data_create: - shard-tglu: NOTRUN -> [SKIP][115] ([i915#15479]) +4 other tests skip [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-7/igt@i915_module_load@fault-injection@uc_fw_rsa_data_create.html * igt@i915_module_load@reload-no-display: - shard-dg2: [PASS][116] -> [DMESG-WARN][117] ([i915#13029] / [i915#14545]) [116]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-8/igt@i915_module_load@reload-no-display.html [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@i915_module_load@reload-no-display.html - shard-dg1: [PASS][118] -> [DMESG-WARN][119] ([i915#13029] / [i915#14545]) [118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-15/igt@i915_module_load@reload-no-display.html [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-16/igt@i915_module_load@reload-no-display.html * igt@i915_module_load@resize-bar: - shard-dg2: NOTRUN -> [DMESG-WARN][120] ([i915#14545]) [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@i915_module_load@resize-bar.html * igt@i915_pm_freq_api@freq-basic-api: - shard-tglu-1: NOTRUN -> [SKIP][121] ([i915#8399]) [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@i915_pm_freq_api@freq-basic-api.html * igt@i915_pm_freq_api@freq-reset: - shard-tglu: NOTRUN -> [SKIP][122] ([i915#8399]) [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@i915_pm_freq_api@freq-reset.html * igt@i915_pm_freq_api@freq-suspend: - shard-rkl: NOTRUN -> [SKIP][123] ([i915#8399]) +1 other test skip [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@i915_pm_freq_api@freq-suspend.html * igt@i915_pm_freq_api@freq-suspend@gt0: - shard-dg2: [PASS][124] -> [INCOMPLETE][125] ([i915#13356] / [i915#13820]) +1 other test incomplete [124]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-7/igt@i915_pm_freq_api@freq-suspend@gt0.html [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@i915_pm_freq_api@freq-suspend@gt0.html * igt@i915_pm_rc6_residency@rc6-accuracy: - shard-dg2: NOTRUN -> [FAIL][126] ([i915#12964]) +1 other test fail [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@i915_pm_rc6_residency@rc6-accuracy.html * igt@i915_pm_rps@min-max-config-loaded: - shard-dg2: NOTRUN -> [SKIP][127] ([i915#11681] / [i915#6621]) [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@i915_pm_rps@min-max-config-loaded.html * igt@i915_pm_rps@thresholds: - shard-dg2: NOTRUN -> [SKIP][128] ([i915#11681]) [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@i915_pm_rps@thresholds.html * igt@i915_pm_sseu@full-enable: - shard-dg2: NOTRUN -> [SKIP][129] ([i915#4387]) [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@i915_pm_sseu@full-enable.html * igt@i915_query@hwconfig_table: - shard-rkl: NOTRUN -> [SKIP][130] ([i915#6245]) [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@i915_query@hwconfig_table.html * igt@i915_query@query-topology-coherent-slice-mask: - shard-dg2: NOTRUN -> [SKIP][131] ([i915#6188]) [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@i915_query@query-topology-coherent-slice-mask.html * igt@i915_query@query-topology-unsupported: - shard-mtlp: NOTRUN -> [SKIP][132] ([i915#16079]) [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@i915_query@query-topology-unsupported.html * igt@i915_suspend@basic-s3-without-i915: - shard-glk: [PASS][133] -> [INCOMPLETE][134] ([i915#16182] / [i915#4817]) [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-glk6/igt@i915_suspend@basic-s3-without-i915.html [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk9/igt@i915_suspend@basic-s3-without-i915.html * igt@i915_suspend@fence-restore-tiled2untiled: - shard-glk: NOTRUN -> [INCOMPLETE][135] ([i915#16182] / [i915#4817]) [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk2/igt@i915_suspend@fence-restore-tiled2untiled.html * igt@i915_suspend@sysfs-reader: - shard-rkl: [PASS][136] -> [INCOMPLETE][137] ([i915#4817]) [136]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@i915_suspend@sysfs-reader.html [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@i915_suspend@sysfs-reader.html * igt@kms_addfb_basic@addfb25-x-tiled-legacy: - shard-mtlp: NOTRUN -> [SKIP][138] ([i915#4212]) +1 other test skip [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html * igt@kms_addfb_basic@basic-x-tiled-legacy: - shard-dg2: NOTRUN -> [SKIP][139] ([i915#4212]) +1 other test skip [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@kms_addfb_basic@basic-x-tiled-legacy.html - shard-dg1: NOTRUN -> [SKIP][140] ([i915#4212]) [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-16/igt@kms_addfb_basic@basic-x-tiled-legacy.html * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels: - shard-glk: NOTRUN -> [SKIP][141] ([i915#1769]) [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html * igt@kms_big_fb@4-tiled-32bpp-rotate-0: - shard-rkl: NOTRUN -> [SKIP][142] ([i915#14544] / [i915#5286]) +1 other test skip [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html * igt@kms_big_fb@4-tiled-64bpp-rotate-90: - shard-dg1: NOTRUN -> [SKIP][143] ([i915#4538] / [i915#5286]) +1 other test skip [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html * igt@kms_big_fb@4-tiled-addfb-size-overflow: - shard-tglu: NOTRUN -> [SKIP][144] ([i915#5286]) +3 other tests skip [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@kms_big_fb@4-tiled-addfb-size-overflow.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip: - shard-rkl: NOTRUN -> [SKIP][145] ([i915#5286]) +4 other tests skip [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html - shard-tglu-1: NOTRUN -> [SKIP][146] ([i915#5286]) +3 other tests skip [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip: - shard-mtlp: [PASS][147] -> [FAIL][148] ([i915#15733] / [i915#5138]) [147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html * igt@kms_big_fb@linear-64bpp-rotate-90: - shard-rkl: NOTRUN -> [SKIP][149] ([i915#3638]) +4 other tests skip [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_big_fb@linear-64bpp-rotate-90.html - shard-dg1: NOTRUN -> [SKIP][150] ([i915#3638]) +2 other tests skip [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-15/igt@kms_big_fb@linear-64bpp-rotate-90.html * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip: - shard-mtlp: NOTRUN -> [SKIP][151] ([i915#3828]) [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180: - shard-dg1: [PASS][152] -> [DMESG-WARN][153] ([i915#4391] / [i915#4423]) [152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-16/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180.html [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-16/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180.html * igt@kms_big_fb@x-tiled-32bpp-rotate-270: - shard-rkl: NOTRUN -> [SKIP][154] ([i915#14544] / [i915#3638]) [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html * igt@kms_big_fb@y-tiled-64bpp-rotate-0: - shard-dg2: NOTRUN -> [SKIP][155] ([i915#4538] / [i915#5190]) +11 other tests skip [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html * igt@kms_big_fb@yf-tiled-16bpp-rotate-270: - shard-dg1: NOTRUN -> [SKIP][156] ([i915#4538]) +1 other test skip [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs: - shard-mtlp: NOTRUN -> [SKIP][157] ([i915#12313]) +2 other tests skip [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-4/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][158] ([i915#14544] / [i915#6095]) +14 other tests skip [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html * igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs@pipe-c-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][159] ([i915#14098] / [i915#14544] / [i915#6095]) +10 other tests skip [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs@pipe-c-hdmi-a-2.html * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1: - shard-tglu: NOTRUN -> [SKIP][160] ([i915#6095]) +69 other tests skip [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs: - shard-dg2: NOTRUN -> [SKIP][161] ([i915#12313]) +2 other tests skip [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html - shard-rkl: NOTRUN -> [SKIP][162] ([i915#12313]) +3 other tests skip [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs: - shard-tglu-1: NOTRUN -> [SKIP][163] ([i915#12313]) [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][164] ([i915#14098] / [i915#6095]) +54 other tests skip [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-1/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2.html * igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1: - shard-glk: NOTRUN -> [INCOMPLETE][165] ([i915#15582] / [i915#16205]) +3 other tests incomplete [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk6/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-3: - shard-dg2: NOTRUN -> [SKIP][166] ([i915#6095]) +14 other tests skip [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-3.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs: - shard-dg1: NOTRUN -> [SKIP][167] ([i915#12313]) +1 other test skip [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html - shard-tglu: NOTRUN -> [SKIP][168] ([i915#12313]) +1 other test skip [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3: - shard-dg2: NOTRUN -> [SKIP][169] ([i915#10307] / [i915#6095]) +89 other tests skip [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3.html * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][170] ([i915#6095]) +84 other tests skip [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs@pipe-a-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-edp-1: - shard-mtlp: NOTRUN -> [SKIP][171] ([i915#6095]) +44 other tests skip [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-edp-1.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1: - shard-tglu-1: NOTRUN -> [SKIP][172] ([i915#6095]) +44 other tests skip [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1.html * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-4: - shard-dg1: NOTRUN -> [SKIP][173] ([i915#4423] / [i915#6095]) [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-4.html * igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3: - shard-dg1: NOTRUN -> [SKIP][174] ([i915#6095]) +209 other tests skip [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3.html * igt@kms_cdclk@plane-scaling: - shard-rkl: NOTRUN -> [SKIP][175] ([i915#3742]) [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_cdclk@plane-scaling.html - shard-dg1: NOTRUN -> [SKIP][176] ([i915#3742]) [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_cdclk@plane-scaling.html - shard-tglu: NOTRUN -> [SKIP][177] ([i915#3742]) [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-6/igt@kms_cdclk@plane-scaling.html * igt@kms_cdclk@plane-scaling@pipe-c-edp-1: - shard-mtlp: NOTRUN -> [SKIP][178] ([i915#13783]) +4 other tests skip [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@kms_cdclk@plane-scaling@pipe-c-edp-1.html * igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-1: - shard-dg2: NOTRUN -> [SKIP][179] ([i915#13783]) +4 other tests skip [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-1.html * igt@kms_chamelium_color@ctm-green-to-red: - shard-dg2: NOTRUN -> [SKIP][180] +9 other tests skip [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_chamelium_color@ctm-green-to-red.html * igt@kms_chamelium_edid@dp-mode-timings: - shard-tglu-1: NOTRUN -> [SKIP][181] ([i915#11151] / [i915#7828]) +4 other tests skip [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_chamelium_edid@dp-mode-timings.html * igt@kms_chamelium_frames@dp-crc-fast: - shard-dg2: NOTRUN -> [SKIP][182] ([i915#11151] / [i915#7828]) +10 other tests skip [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_chamelium_frames@dp-crc-fast.html * igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode: - shard-rkl: NOTRUN -> [SKIP][183] ([i915#11151] / [i915#7828]) +11 other tests skip [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html - shard-dg1: NOTRUN -> [SKIP][184] ([i915#11151] / [i915#7828]) +3 other tests skip [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-16/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html * igt@kms_chamelium_hpd@dp-hpd-storm-disable: - shard-tglu: NOTRUN -> [SKIP][185] ([i915#11151] / [i915#7828]) +6 other tests skip [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html * igt@kms_chamelium_hpd@vga-hpd-enable-disable-mode: - shard-mtlp: NOTRUN -> [SKIP][186] ([i915#11151] / [i915#7828]) +5 other tests skip [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@kms_chamelium_hpd@vga-hpd-enable-disable-mode.html * igt@kms_content_protection@atomic-dpms: - shard-rkl: NOTRUN -> [SKIP][187] ([i915#15865]) +1 other test skip [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_content_protection@atomic-dpms.html * igt@kms_content_protection@dp-mst-lic-type-1: - shard-dg2: NOTRUN -> [SKIP][188] ([i915#15330] / [i915#3299]) [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@kms_content_protection@dp-mst-lic-type-1.html - shard-rkl: NOTRUN -> [SKIP][189] ([i915#15330] / [i915#3116]) +1 other test skip [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_content_protection@dp-mst-lic-type-1.html * igt@kms_content_protection@dp-mst-type-0: - shard-tglu-1: NOTRUN -> [SKIP][190] ([i915#15330] / [i915#3116] / [i915#3299]) [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_content_protection@dp-mst-type-0.html - shard-mtlp: NOTRUN -> [SKIP][191] ([i915#15330] / [i915#3299]) [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@kms_content_protection@dp-mst-type-0.html * igt@kms_content_protection@dp-mst-type-0-suspend-resume: - shard-dg2: NOTRUN -> [SKIP][192] ([i915#15330]) [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html * igt@kms_content_protection@dp-mst-type-1-suspend-resume: - shard-tglu: NOTRUN -> [SKIP][193] ([i915#15330]) +1 other test skip [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html - shard-rkl: NOTRUN -> [SKIP][194] ([i915#15330]) [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html * igt@kms_content_protection@suspend-resume: - shard-dg2: NOTRUN -> [SKIP][195] ([i915#15865]) [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@kms_content_protection@suspend-resume.html * igt@kms_cursor_crc@cursor-offscreen-512x512: - shard-rkl: NOTRUN -> [SKIP][196] ([i915#13049] / [i915#14544]) [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_cursor_crc@cursor-offscreen-512x512.html * igt@kms_cursor_crc@cursor-offscreen-64x21: - shard-mtlp: NOTRUN -> [SKIP][197] ([i915#8814]) +2 other tests skip [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@kms_cursor_crc@cursor-offscreen-64x21.html * igt@kms_cursor_crc@cursor-onscreen-256x85: - shard-tglu: NOTRUN -> [FAIL][198] ([i915#13566]) +3 other tests fail [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@kms_cursor_crc@cursor-onscreen-256x85.html * igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [FAIL][199] ([i915#13566]) +5 other tests fail [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-2.html * igt@kms_cursor_crc@cursor-onscreen-32x10: - shard-mtlp: NOTRUN -> [SKIP][200] ([i915#3555] / [i915#8814]) [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@kms_cursor_crc@cursor-onscreen-32x10.html * igt@kms_cursor_crc@cursor-onscreen-32x32: - shard-tglu-1: NOTRUN -> [SKIP][201] ([i915#3555]) +2 other tests skip [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-32x32.html * igt@kms_cursor_crc@cursor-onscreen-max-size: - shard-dg2: NOTRUN -> [SKIP][202] ([i915#3555]) +3 other tests skip [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_cursor_crc@cursor-onscreen-max-size.html * igt@kms_cursor_crc@cursor-random-512x170: - shard-dg2: NOTRUN -> [SKIP][203] ([i915#13049]) +1 other test skip [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_cursor_crc@cursor-random-512x170.html - shard-tglu: NOTRUN -> [SKIP][204] ([i915#13049]) [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@kms_cursor_crc@cursor-random-512x170.html * igt@kms_cursor_crc@cursor-random-64x21: - shard-tglu-1: NOTRUN -> [FAIL][205] ([i915#13566]) +1 other test fail [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_cursor_crc@cursor-random-64x21.html * igt@kms_cursor_crc@cursor-rapid-movement-512x512: - shard-mtlp: NOTRUN -> [SKIP][206] ([i915#13049]) [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html * igt@kms_cursor_crc@cursor-sliding-256x85: - shard-rkl: [PASS][207] -> [FAIL][208] ([i915#13566]) [207]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@kms_cursor_crc@cursor-sliding-256x85.html [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_cursor_crc@cursor-sliding-256x85.html - shard-tglu: [PASS][209] -> [FAIL][210] ([i915#13566]) +1 other test fail [209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-tglu-4/igt@kms_cursor_crc@cursor-sliding-256x85.html [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-5/igt@kms_cursor_crc@cursor-sliding-256x85.html * igt@kms_cursor_crc@cursor-sliding-512x170: - shard-tglu-1: NOTRUN -> [SKIP][211] ([i915#13049]) [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-512x170.html * igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic: - shard-mtlp: NOTRUN -> [SKIP][212] ([i915#9809]) [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - shard-tglu: NOTRUN -> [SKIP][213] ([i915#4103]) [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size: - shard-rkl: NOTRUN -> [SKIP][214] ([i915#4103]) +1 other test skip [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html - shard-dg2: NOTRUN -> [SKIP][215] ([i915#4103]) [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html * igt@kms_cursor_legacy@cursora-vs-flipb-toggle: - shard-dg2: NOTRUN -> [SKIP][216] ([i915#13046] / [i915#5354]) +3 other tests skip [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-glk: NOTRUN -> [FAIL][217] ([i915#15804]) +1 other test fail [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html * igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot: - shard-rkl: NOTRUN -> [SKIP][218] ([i915#9067]) [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html * igt@kms_dirtyfb@psr-dirtyfb-ioctl: - shard-tglu: NOTRUN -> [SKIP][219] ([i915#9723]) [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-5/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1: - shard-rkl: NOTRUN -> [SKIP][220] ([i915#3804]) [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html * igt@kms_dp_linktrain_fallback@dsc-fallback: - shard-rkl: NOTRUN -> [SKIP][221] ([i915#13707]) [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_dp_linktrain_fallback@dsc-fallback.html - shard-tglu: NOTRUN -> [SKIP][222] ([i915#13707]) [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@kms_dp_linktrain_fallback@dsc-fallback.html * igt@kms_draw_crc@draw-method-mmap-gtt: - shard-dg2: NOTRUN -> [SKIP][223] ([i915#8812]) [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_draw_crc@draw-method-mmap-gtt.html * igt@kms_dsc@dsc-with-bpc-formats: - shard-rkl: NOTRUN -> [SKIP][224] ([i915#3555] / [i915#3840]) [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_dsc@dsc-with-bpc-formats.html * igt@kms_dsc@dsc-with-output-formats: - shard-tglu-1: NOTRUN -> [SKIP][225] ([i915#3555] / [i915#3840]) +1 other test skip [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_dsc@dsc-with-output-formats.html - shard-mtlp: NOTRUN -> [SKIP][226] ([i915#3555] / [i915#3840]) [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-4/igt@kms_dsc@dsc-with-output-formats.html * igt@kms_dsc@dsc-with-output-formats-with-bpc: - shard-dg2: NOTRUN -> [SKIP][227] ([i915#3840] / [i915#9053]) [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_dsc@dsc-with-output-formats-with-bpc.html - shard-rkl: NOTRUN -> [SKIP][228] ([i915#3840] / [i915#9053]) [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_dsc@dsc-with-output-formats-with-bpc.html - shard-dg1: NOTRUN -> [SKIP][229] ([i915#3840] / [i915#9053]) [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-14/igt@kms_dsc@dsc-with-output-formats-with-bpc.html - shard-tglu: NOTRUN -> [SKIP][230] ([i915#3840] / [i915#9053]) [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-5/igt@kms_dsc@dsc-with-output-formats-with-bpc.html - shard-mtlp: NOTRUN -> [SKIP][231] ([i915#3555] / [i915#3840] / [i915#9053]) [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_dsc@dsc-with-output-formats-with-bpc.html * igt@kms_fbcon_fbt@psr: - shard-tglu: NOTRUN -> [SKIP][232] ([i915#3469]) [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@kms_fbcon_fbt@psr.html * igt@kms_fbcon_fbt@psr-suspend: - shard-rkl: NOTRUN -> [SKIP][233] ([i915#3955]) [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_fbcon_fbt@psr-suspend.html - shard-tglu-1: NOTRUN -> [SKIP][234] ([i915#3469]) [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_fbcon_fbt@psr-suspend.html - shard-dg2: NOTRUN -> [SKIP][235] ([i915#3469]) [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@kms_fbcon_fbt@psr-suspend.html * igt@kms_feature_discovery@psr1: - shard-tglu: NOTRUN -> [SKIP][236] ([i915#658]) [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@kms_feature_discovery@psr1.html - shard-dg2: NOTRUN -> [SKIP][237] ([i915#658]) [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_feature_discovery@psr1.html - shard-rkl: NOTRUN -> [SKIP][238] ([i915#658]) [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_feature_discovery@psr1.html - shard-dg1: NOTRUN -> [SKIP][239] ([i915#658]) [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_feature_discovery@psr1.html * igt@kms_flip@2x-blocking-wf_vblank: - shard-dg2: NOTRUN -> [SKIP][240] ([i915#9934]) +6 other tests skip [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_flip@2x-blocking-wf_vblank.html * igt@kms_flip@2x-flip-vs-absolute-wf_vblank: - shard-tglu: NOTRUN -> [SKIP][241] ([i915#3637] / [i915#9934]) +10 other tests skip [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html - shard-mtlp: NOTRUN -> [SKIP][242] ([i915#3637] / [i915#9934]) +1 other test skip [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html - shard-dg1: NOTRUN -> [SKIP][243] ([i915#9934]) [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-13/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html * igt@kms_flip@2x-flip-vs-blocking-wf-vblank: - shard-tglu-1: NOTRUN -> [SKIP][244] ([i915#3637] / [i915#9934]) +2 other tests skip [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_flip@2x-flip-vs-blocking-wf-vblank.html * igt@kms_flip@2x-flip-vs-dpms-on-nop: - shard-tglu-1: NOTRUN -> [SKIP][245] ([i915#9934]) [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_flip@2x-flip-vs-dpms-on-nop.html * igt@kms_flip@2x-plain-flip-fb-recreate: - shard-rkl: NOTRUN -> [SKIP][246] ([i915#9934]) +8 other tests skip [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_flip@2x-plain-flip-fb-recreate.html * igt@kms_flip@flip-vs-expired-vblank-interruptible: - shard-dg2: [PASS][247] -> [FAIL][248] ([i915#13027]) [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_flip@flip-vs-expired-vblank-interruptible.html * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a3: - shard-dg2: [PASS][249] -> [FAIL][250] ([i915#15718]) [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a3.html [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a3.html * igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a3: - shard-dg1: [PASS][251] -> [FAIL][252] ([i915#13027]) +1 other test fail [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-12/igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a3.html [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a3.html * igt@kms_flip@flip-vs-suspend-interruptible: - shard-glk10: NOTRUN -> [INCOMPLETE][253] ([i915#12745] / [i915#4839]) [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk10/igt@kms_flip@flip-vs-suspend-interruptible.html * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1: - shard-glk10: NOTRUN -> [INCOMPLETE][254] ([i915#12745]) [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk10/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling: - shard-dg2: NOTRUN -> [SKIP][255] ([i915#15643]) +1 other test skip [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling: - shard-dg2: NOTRUN -> [SKIP][256] ([i915#15643] / [i915#5190]) +4 other tests skip [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling: - shard-tglu: NOTRUN -> [SKIP][257] ([i915#15643]) +3 other tests skip [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html - shard-mtlp: NOTRUN -> [SKIP][258] ([i915#3555] / [i915#8810] / [i915#8813]) +2 other tests skip [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html - shard-rkl: NOTRUN -> [SKIP][259] ([i915#14544] / [i915#15643]) [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-default-mode: - shard-mtlp: NOTRUN -> [SKIP][260] ([i915#8810] / [i915#8813]) [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling: - shard-tglu-1: NOTRUN -> [SKIP][261] ([i915#15643]) [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling: - shard-rkl: NOTRUN -> [SKIP][262] ([i915#15643]) +5 other tests skip [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling: - shard-dg1: NOTRUN -> [SKIP][263] ([i915#15643]) +2 other tests skip [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html - shard-mtlp: NOTRUN -> [SKIP][264] ([i915#15643]) +1 other test skip [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html * igt@kms_force_connector_basic@force-edid: - shard-mtlp: [PASS][265] -> [SKIP][266] ([i915#15672]) [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-6/igt@kms_force_connector_basic@force-edid.html [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@kms_force_connector_basic@force-edid.html * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-wc: - shard-dg1: NOTRUN -> [SKIP][267] ([i915#15104] / [i915#15990]) [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt: - shard-dg2: NOTRUN -> [SKIP][268] ([i915#15990] / [i915#8708]) +15 other tests skip [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff: - shard-dg1: NOTRUN -> [SKIP][269] ([i915#4423]) [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff.html * igt@kms_frontbuffer_tracking@fbc-suspend: - shard-rkl: [PASS][270] -> [INCOMPLETE][271] ([i915#10056]) [270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-suspend.html [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-suspend.html - shard-glk: NOTRUN -> [INCOMPLETE][272] ([i915#10056]) [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk3/igt@kms_frontbuffer_tracking@fbc-suspend.html * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-mmap-gtt: - shard-glk: [PASS][273] -> [SKIP][274] +6 other tests skip [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-glk8/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-mmap-gtt.html [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk5/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-pgflip-blt: - shard-mtlp: NOTRUN -> [SKIP][275] ([i915#15989]) +24 other tests skip [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-mmap-gtt: - shard-mtlp: NOTRUN -> [SKIP][276] ([i915#15990]) +2 other tests skip [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-plflip-blt: - shard-tglu: NOTRUN -> [SKIP][277] +101 other tests skip [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-8/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-plflip-blt.html * igt@kms_frontbuffer_tracking@fbchdr-modesetfrombusy: - shard-tglu-1: NOTRUN -> [SKIP][278] ([i915#15989]) +12 other tests skip [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_frontbuffer_tracking@fbchdr-modesetfrombusy.html * igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-render: - shard-dg2: NOTRUN -> [SKIP][279] ([i915#15989]) +17 other tests skip [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-render.html - shard-rkl: NOTRUN -> [SKIP][280] ([i915#15989]) +29 other tests skip [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-render.html * igt@kms_frontbuffer_tracking@fbchdr-suspend: - shard-tglu: NOTRUN -> [SKIP][281] ([i915#15989]) +22 other tests skip [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@kms_frontbuffer_tracking@fbchdr-suspend.html - shard-glk11: NOTRUN -> [INCOMPLETE][282] ([i915#16056]) [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk11/igt@kms_frontbuffer_tracking@fbchdr-suspend.html * igt@kms_frontbuffer_tracking@fbchdr-tiling-y: - shard-dg2: NOTRUN -> [SKIP][283] ([i915#10055]) +1 other test skip [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_frontbuffer_tracking@fbchdr-tiling-y.html - shard-dg1: NOTRUN -> [SKIP][284] ([i915#15989]) +6 other tests skip [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-13/igt@kms_frontbuffer_tracking@fbchdr-tiling-y.html - shard-mtlp: NOTRUN -> [SKIP][285] ([i915#10055]) [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@kms_frontbuffer_tracking@fbchdr-tiling-y.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-gtt: - shard-dg2: NOTRUN -> [SKIP][286] ([i915#15104] / [i915#15990]) +2 other tests skip [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt: - shard-rkl: NOTRUN -> [SKIP][287] +114 other tests skip [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc: - shard-rkl: NOTRUN -> [SKIP][288] ([i915#15102] / [i915#3023]) +31 other tests skip [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt: - shard-dg1: NOTRUN -> [SKIP][289] ([i915#15990] / [i915#8708]) +7 other tests skip [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4: - shard-tglu-1: NOTRUN -> [SKIP][290] ([i915#5439]) [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-move: - shard-dg1: NOTRUN -> [SKIP][291] ([i915#15102]) +9 other tests skip [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-move.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-pri-indfb-draw-render: - shard-glk11: NOTRUN -> [SKIP][292] +82 other tests skip [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk11/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-pri-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-rte: - shard-rkl: NOTRUN -> [SKIP][293] ([i915#14544] / [i915#15102]) +7 other tests skip [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-rte.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-cur-indfb-draw-mmap-wc: - shard-rkl: NOTRUN -> [SKIP][294] ([i915#14544]) +15 other tests skip [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-cur-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-shrfb-msflip-blt: - shard-mtlp: NOTRUN -> [SKIP][295] ([i915#15991]) +23 other tests skip [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-shrfb-msflip-blt.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-linear: - shard-dg2: NOTRUN -> [SKIP][296] ([i915#15102]) +38 other tests skip [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-linear.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-y: - shard-tglu-1: NOTRUN -> [SKIP][297] ([i915#15102]) +30 other tests skip [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-y.html * igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-indfb-draw-pwrite: - shard-rkl: [PASS][298] -> [SKIP][299] ([i915#15989]) +4 other tests skip [298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-indfb-draw-pwrite.html [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-indfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-wc: - shard-dg2: NOTRUN -> [SKIP][300] ([i915#15990]) +24 other tests skip [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@hdr-2p-primscrn-shrfb-msflip-blt: - shard-tglu-1: NOTRUN -> [SKIP][301] +72 other tests skip [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_frontbuffer_tracking@hdr-2p-primscrn-shrfb-msflip-blt.html * igt@kms_frontbuffer_tracking@hdr-2p-primscrn-spr-indfb-fullscreen: - shard-dg2: NOTRUN -> [SKIP][302] ([i915#15991]) +38 other tests skip [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_frontbuffer_tracking@hdr-2p-primscrn-spr-indfb-fullscreen.html * igt@kms_frontbuffer_tracking@pipe-fbc-rte: - shard-tglu-1: NOTRUN -> [SKIP][303] ([i915#9766]) [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-render: - shard-tglu: NOTRUN -> [SKIP][304] ([i915#15102]) +45 other tests skip [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-8/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-render.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt: - shard-mtlp: NOTRUN -> [SKIP][305] ([i915#15990] / [i915#8708]) +7 other tests skip [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render: - shard-rkl: NOTRUN -> [SKIP][306] ([i915#14544] / [i915#15102] / [i915#3023]) +1 other test skip [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc: - shard-rkl: NOTRUN -> [SKIP][307] ([i915#1825]) +3 other tests skip [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-render: - shard-dg2: NOTRUN -> [SKIP][308] ([i915#15991] / [i915#5354]) +30 other tests skip [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-render.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff: - shard-glk10: NOTRUN -> [SKIP][309] +4 other tests skip [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk10/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render: - shard-mtlp: NOTRUN -> [SKIP][310] ([i915#15991] / [i915#1825]) +14 other tests skip [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-draw-mmap-wc: - shard-dg1: NOTRUN -> [SKIP][311] ([i915#15990]) +3 other tests skip [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-move: - shard-rkl: NOTRUN -> [SKIP][312] ([i915#15102]) +32 other tests skip [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-move.html * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-cur-indfb-draw-blt: - shard-dg1: NOTRUN -> [SKIP][313] +24 other tests skip [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-cur-indfb-draw-blt.html * igt@kms_hdmi_inject@inject-4k: - shard-mtlp: [PASS][314] -> [SKIP][315] ([i915#15725]) [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-2/igt@kms_hdmi_inject@inject-4k.html [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-1/igt@kms_hdmi_inject@inject-4k.html * igt@kms_hdr@bpc-switch-suspend: - shard-rkl: NOTRUN -> [SKIP][316] ([i915#16012] / [i915#3555] / [i915#8228]) [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_hdr@bpc-switch-suspend.html * igt@kms_hdr@bpc-switch-suspend@pipe-a-hdmi-a-2-xrgb2101010: - shard-rkl: NOTRUN -> [SKIP][317] ([i915#16012]) +5 other tests skip [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_hdr@bpc-switch-suspend@pipe-a-hdmi-a-2-xrgb2101010.html * igt@kms_hdr@bpc-switch@pipe-a-hdmi-a-1-xrgb2101010: - shard-dg1: NOTRUN -> [SKIP][318] ([i915#16012]) +3 other tests skip [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-14/igt@kms_hdr@bpc-switch@pipe-a-hdmi-a-1-xrgb2101010.html * igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-1-xrgb2101010: - shard-tglu-1: NOTRUN -> [SKIP][319] ([i915#16011]) +2 other tests skip [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-1-xrgb2101010.html * igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-2-xrgb16161616f: - shard-rkl: NOTRUN -> [SKIP][320] ([i915#16011]) +7 other tests skip [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-2-xrgb16161616f.html * igt@kms_hdr@invalid-hdr: - shard-tglu-1: NOTRUN -> [SKIP][321] ([i915#16012] / [i915#3555] / [i915#8228]) [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_hdr@invalid-hdr.html * igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-1-xrgb16161616f: - shard-tglu-1: NOTRUN -> [SKIP][322] ([i915#16012]) +1 other test skip [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-1-xrgb16161616f.html * igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb16161616f: - shard-dg2: NOTRUN -> [SKIP][323] ([i915#16012]) +1 other test skip [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html * igt@kms_hdr@static-toggle-suspend: - shard-dg2: NOTRUN -> [SKIP][324] ([i915#16011] / [i915#3555] / [i915#8228]) [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_hdr@static-toggle-suspend.html - shard-rkl: NOTRUN -> [SKIP][325] ([i915#16011] / [i915#3555] / [i915#8228]) +1 other test skip [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_hdr@static-toggle-suspend.html * igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3-xrgb16161616f: - shard-dg2: NOTRUN -> [SKIP][326] ([i915#16011]) +1 other test skip [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3-xrgb16161616f.html * igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb2101010: - shard-dg1: NOTRUN -> [SKIP][327] ([i915#16011]) +3 other tests skip [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb2101010.html * igt@kms_joiner@basic-big-joiner: - shard-rkl: NOTRUN -> [SKIP][328] ([i915#15460]) +1 other test skip [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_joiner@basic-big-joiner.html * igt@kms_joiner@basic-force-big-joiner: - shard-rkl: NOTRUN -> [SKIP][329] ([i915#15459]) [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-1/igt@kms_joiner@basic-force-big-joiner.html * igt@kms_joiner@basic-max-non-joiner: - shard-tglu: NOTRUN -> [SKIP][330] ([i915#13688]) [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@kms_joiner@basic-max-non-joiner.html - shard-rkl: NOTRUN -> [SKIP][331] ([i915#13688]) [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_joiner@basic-max-non-joiner.html * igt@kms_joiner@invalid-modeset-big-joiner: - shard-dg2: NOTRUN -> [SKIP][332] ([i915#15460]) [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_joiner@invalid-modeset-big-joiner.html * igt@kms_joiner@invalid-modeset-force-big-joiner: - shard-mtlp: NOTRUN -> [SKIP][333] ([i915#15459]) [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_joiner@invalid-modeset-force-big-joiner.html * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner: - shard-tglu-1: NOTRUN -> [SKIP][334] ([i915#15638] / [i915#15722]) [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-tglu-1: NOTRUN -> [SKIP][335] ([i915#15815]) [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_pipe_stress@stress-xrgb8888-yftiled: - shard-mtlp: NOTRUN -> [SKIP][336] ([i915#14712]) [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html * igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier: - shard-rkl: NOTRUN -> [SKIP][337] ([i915#14544] / [i915#15709]) +1 other test skip [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier.html * igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier@pipe-a-plane-5: - shard-dg2: NOTRUN -> [SKIP][338] ([i915#15608]) +3 other tests skip [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier@pipe-a-plane-5.html * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping: - shard-tglu-1: NOTRUN -> [SKIP][339] ([i915#15709]) +1 other test skip [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping.html * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping: - shard-dg1: NOTRUN -> [SKIP][340] ([i915#15709]) [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping.html * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping: - shard-dg2: NOTRUN -> [SKIP][341] ([i915#15709]) +3 other tests skip [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html * igt@kms_plane@pixel-format-y-tiled-ccs-modifier: - shard-mtlp: NOTRUN -> [SKIP][342] ([i915#15709]) +2 other tests skip [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html * igt@kms_plane@pixel-format-y-tiled-modifier@pipe-b-plane-7: - shard-tglu-1: NOTRUN -> [SKIP][343] ([i915#15608]) +1 other test skip [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_plane@pixel-format-y-tiled-modifier@pipe-b-plane-7.html * igt@kms_plane@pixel-format-yf-tiled-modifier: - shard-rkl: NOTRUN -> [SKIP][344] ([i915#15709]) +4 other tests skip [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_plane@pixel-format-yf-tiled-modifier.html - shard-tglu: NOTRUN -> [SKIP][345] ([i915#15709]) +2 other tests skip [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@kms_plane@pixel-format-yf-tiled-modifier.html * igt@kms_plane_alpha_blend@alpha-opaque-fb: - shard-glk11: NOTRUN -> [FAIL][346] ([i915#10647] / [i915#12169]) [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk11/igt@kms_plane_alpha_blend@alpha-opaque-fb.html * igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1: - shard-glk11: NOTRUN -> [FAIL][347] ([i915#10647]) +1 other test fail [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk11/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html * igt@kms_plane_alpha_blend@constant-alpha-max: - shard-glk: NOTRUN -> [FAIL][348] ([i915#10647] / [i915#12169]) [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk9/igt@kms_plane_alpha_blend@constant-alpha-max.html * igt@kms_plane_alpha_blend@constant-alpha-max@pipe-c-hdmi-a-1: - shard-glk: NOTRUN -> [FAIL][349] ([i915#10647]) +1 other test fail [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk9/igt@kms_plane_alpha_blend@constant-alpha-max@pipe-c-hdmi-a-1.html * igt@kms_plane_lowres@tiling-yf: - shard-dg2: NOTRUN -> [SKIP][350] ([i915#3555] / [i915#8821]) [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_plane_lowres@tiling-yf.html * igt@kms_plane_multiple@2x-tiling-4: - shard-tglu-1: NOTRUN -> [SKIP][351] ([i915#13958]) [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-4.html * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b: - shard-rkl: NOTRUN -> [SKIP][352] ([i915#15329]) +7 other tests skip [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a: - shard-tglu-1: NOTRUN -> [SKIP][353] ([i915#15329]) +9 other tests skip [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-d: - shard-mtlp: NOTRUN -> [SKIP][354] ([i915#15329]) +13 other tests skip [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-d.html * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5: - shard-mtlp: NOTRUN -> [SKIP][355] ([i915#15329] / [i915#3555] / [i915#6953]) [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5.html * igt@kms_pm_backlight@brightness-with-dpms: - shard-tglu-1: NOTRUN -> [SKIP][356] ([i915#12343]) [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_pm_backlight@brightness-with-dpms.html * igt@kms_pm_backlight@fade: - shard-tglu: NOTRUN -> [SKIP][357] ([i915#12343] / [i915#9812]) +1 other test skip [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@kms_pm_backlight@fade.html - shard-rkl: NOTRUN -> [SKIP][358] ([i915#12343] / [i915#14544] / [i915#5354]) [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_pm_backlight@fade.html - shard-dg1: NOTRUN -> [SKIP][359] ([i915#12343] / [i915#5354]) [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-14/igt@kms_pm_backlight@fade.html * igt@kms_pm_backlight@fade-with-dpms: - shard-rkl: NOTRUN -> [SKIP][360] ([i915#12343] / [i915#5354]) +2 other tests skip [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_pm_backlight@fade-with-dpms.html - shard-tglu-1: NOTRUN -> [SKIP][361] ([i915#12343] / [i915#9812]) [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_pm_backlight@fade-with-dpms.html - shard-dg2: NOTRUN -> [SKIP][362] ([i915#12343] / [i915#5354]) [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_pm_backlight@fade-with-dpms.html * igt@kms_pm_dc@dc5-psr: - shard-rkl: NOTRUN -> [SKIP][363] ([i915#15948]) [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_pm_dc@dc5-psr.html - shard-tglu: NOTRUN -> [SKIP][364] ([i915#15948]) [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@kms_pm_dc@dc5-psr.html * igt@kms_pm_dc@dc6-dpms: - shard-rkl: NOTRUN -> [FAIL][365] ([i915#15752]) [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_pm_dc@dc6-dpms.html * igt@kms_pm_lpsp@screens-disabled: - shard-tglu-1: NOTRUN -> [SKIP][366] ([i915#8430]) [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_pm_lpsp@screens-disabled.html * igt@kms_pm_rpm@cursor-dpms: - shard-mtlp: NOTRUN -> [SKIP][367] ([i915#4077]) +9 other tests skip [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_pm_rpm@cursor-dpms.html * igt@kms_pm_rpm@dpms-lpsp: - shard-rkl: [PASS][368] -> [SKIP][369] ([i915#15073]) +2 other tests skip [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@kms_pm_rpm@dpms-lpsp.html [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_pm_rpm@dpms-lpsp.html * igt@kms_pm_rpm@dpms-non-lpsp: - shard-dg2: [PASS][370] -> [SKIP][371] ([i915#15073]) [370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-7/igt@kms_pm_rpm@dpms-non-lpsp.html [371]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_pm_rpm@dpms-non-lpsp.html * igt@kms_pm_rpm@fences: - shard-dg1: NOTRUN -> [SKIP][372] ([i915#4077]) +6 other tests skip [372]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_pm_rpm@fences.html * igt@kms_pm_rpm@i2c: - shard-dg1: [PASS][373] -> [DMESG-WARN][374] ([i915#4423]) +3 other tests dmesg-warn [373]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-19/igt@kms_pm_rpm@i2c.html [374]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-19/igt@kms_pm_rpm@i2c.html * igt@kms_pm_rpm@modeset-lpsp: - shard-dg2: NOTRUN -> [SKIP][375] ([i915#15073]) [375]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@kms_pm_rpm@modeset-lpsp.html * igt@kms_pm_rpm@modeset-lpsp-stress: - shard-dg1: [PASS][376] -> [SKIP][377] ([i915#15073]) +3 other tests skip [376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-15/igt@kms_pm_rpm@modeset-lpsp-stress.html [377]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_pm_rpm@modeset-lpsp-stress.html * igt@kms_pm_rpm@modeset-non-lpsp-stress: - shard-rkl: NOTRUN -> [SKIP][378] ([i915#15073]) +1 other test skip [378]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress.html * igt@kms_pm_rpm@system-suspend-modeset: - shard-glk: [PASS][379] -> [INCOMPLETE][380] ([i915#10553]) [379]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-glk4/igt@kms_pm_rpm@system-suspend-modeset.html [380]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk3/igt@kms_pm_rpm@system-suspend-modeset.html * igt@kms_prime@basic-crc-hybrid: - shard-mtlp: NOTRUN -> [SKIP][381] ([i915#6524]) +1 other test skip [381]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@kms_prime@basic-crc-hybrid.html * igt@kms_prime@basic-modeset-hybrid: - shard-dg2: NOTRUN -> [SKIP][382] ([i915#6524] / [i915#6805]) [382]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_prime@basic-modeset-hybrid.html - shard-rkl: NOTRUN -> [SKIP][383] ([i915#6524]) [383]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_prime@basic-modeset-hybrid.html - shard-dg1: NOTRUN -> [SKIP][384] ([i915#6524]) [384]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-19/igt@kms_prime@basic-modeset-hybrid.html - shard-tglu: NOTRUN -> [SKIP][385] ([i915#6524]) [385]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-7/igt@kms_prime@basic-modeset-hybrid.html * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf: - shard-glk11: NOTRUN -> [SKIP][386] ([i915#11520]) +1 other test skip [386]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk11/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1: - shard-mtlp: NOTRUN -> [SKIP][387] ([i915#9808]) +1 other test skip [387]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1.html * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1: - shard-mtlp: NOTRUN -> [SKIP][388] ([i915#12316]) +5 other tests skip [388]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf: - shard-glk: NOTRUN -> [SKIP][389] ([i915#11520]) +10 other tests skip [389]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk4/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf.html * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf: - shard-tglu: NOTRUN -> [SKIP][390] ([i915#11520]) +9 other tests skip [390]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-5/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf: - shard-tglu-1: NOTRUN -> [SKIP][391] ([i915#11520]) +4 other tests skip [391]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf.html * igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf: - shard-rkl: NOTRUN -> [SKIP][392] ([i915#11520]) +10 other tests skip [392]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area: - shard-dg2: NOTRUN -> [SKIP][393] ([i915#11520]) +10 other tests skip [393]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html - shard-rkl: NOTRUN -> [SKIP][394] ([i915#11520] / [i915#14544]) +1 other test skip [394]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html - shard-snb: NOTRUN -> [SKIP][395] ([i915#11520]) +4 other tests skip [395]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-snb4/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html - shard-dg1: NOTRUN -> [SKIP][396] ([i915#11520]) +2 other tests skip [396]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html * igt@kms_psr2_su@page_flip-p010: - shard-dg2: NOTRUN -> [SKIP][397] ([i915#9683]) [397]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_psr2_su@page_flip-p010.html * igt@kms_psr@fbc-psr-basic: - shard-dg2: NOTRUN -> [SKIP][398] ([i915#1072] / [i915#9732]) +24 other tests skip [398]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_psr@fbc-psr-basic.html * igt@kms_psr@fbc-psr-sprite-plane-onoff: - shard-mtlp: NOTRUN -> [SKIP][399] ([i915#9688]) +8 other tests skip [399]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_psr@fbc-psr-sprite-plane-onoff.html * igt@kms_psr@psr-basic: - shard-tglu: NOTRUN -> [SKIP][400] ([i915#9732]) +20 other tests skip [400]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@kms_psr@psr-basic.html - shard-rkl: NOTRUN -> [SKIP][401] ([i915#1072] / [i915#14544] / [i915#9732]) [401]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_psr@psr-basic.html * igt@kms_psr@psr-cursor-plane-move: - shard-tglu-1: NOTRUN -> [SKIP][402] ([i915#9732]) +13 other tests skip [402]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_psr@psr-cursor-plane-move.html * igt@kms_psr@psr-sprite-plane-onoff: - shard-rkl: NOTRUN -> [SKIP][403] ([i915#1072] / [i915#9732]) +26 other tests skip [403]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_psr@psr-sprite-plane-onoff.html * igt@kms_psr@psr2-sprite-mmap-gtt: - shard-dg1: NOTRUN -> [SKIP][404] ([i915#1072] / [i915#9732]) +5 other tests skip [404]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-15/igt@kms_psr@psr2-sprite-mmap-gtt.html - shard-mtlp: NOTRUN -> [SKIP][405] ([i915#4077] / [i915#9688]) +3 other tests skip [405]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@kms_psr@psr2-sprite-mmap-gtt.html * igt@kms_rotation_crc@exhaust-fences: - shard-mtlp: NOTRUN -> [SKIP][406] ([i915#4235]) [406]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-8/igt@kms_rotation_crc@exhaust-fences.html * igt@kms_rotation_crc@multiplane-rotation: - shard-glk11: NOTRUN -> [INCOMPLETE][407] ([i915#15492] / [i915#16184]) [407]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk11/igt@kms_rotation_crc@multiplane-rotation.html * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180: - shard-rkl: NOTRUN -> [SKIP][408] ([i915#5289]) [408]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html - shard-dg1: NOTRUN -> [SKIP][409] ([i915#5289]) [409]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html - shard-tglu: NOTRUN -> [SKIP][410] ([i915#5289]) +1 other test skip [410]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-10/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0: - shard-dg2: NOTRUN -> [SKIP][411] ([i915#5190]) +1 other test skip [411]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90: - shard-tglu-1: NOTRUN -> [SKIP][412] ([i915#5289]) [412]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0: - shard-dg2: NOTRUN -> [SKIP][413] ([i915#12755] / [i915#15867]) [413]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-3/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html * igt@kms_scaling_modes@scaling-mode-none: - shard-rkl: NOTRUN -> [SKIP][414] ([i915#3555]) +4 other tests skip [414]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_scaling_modes@scaling-mode-none.html - shard-dg1: NOTRUN -> [SKIP][415] ([i915#3555]) +3 other tests skip [415]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-14/igt@kms_scaling_modes@scaling-mode-none.html - shard-mtlp: NOTRUN -> [SKIP][416] ([i915#3555] / [i915#5030] / [i915#9041]) [416]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_scaling_modes@scaling-mode-none.html * igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1: - shard-mtlp: NOTRUN -> [SKIP][417] ([i915#5030]) +2 other tests skip [417]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1.html * igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1: - shard-mtlp: NOTRUN -> [SKIP][418] ([i915#5030] / [i915#9041]) [418]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1.html * igt@kms_setmode@basic: - shard-tglu: [PASS][419] -> [FAIL][420] ([i915#15106]) +2 other tests fail [419]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-tglu-3/igt@kms_setmode@basic.html [420]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@kms_setmode@basic.html * igt@kms_setmode@clone-exclusive-crtc: - shard-mtlp: NOTRUN -> [SKIP][421] ([i915#3555] / [i915#8809]) [421]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-5/igt@kms_setmode@clone-exclusive-crtc.html * igt@kms_setmode@invalid-clone-exclusive-crtc: - shard-mtlp: NOTRUN -> [SKIP][422] ([i915#3555] / [i915#8809] / [i915#8823]) [422]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@kms_setmode@invalid-clone-exclusive-crtc.html * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1: - shard-glk: NOTRUN -> [INCOMPLETE][423] ([i915#12276]) +1 other test incomplete [423]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk1/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1.html * igt@kms_vrr@flip-basic: - shard-rkl: NOTRUN -> [SKIP][424] ([i915#14544] / [i915#15243] / [i915#3555]) [424]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_vrr@flip-basic.html * igt@kms_vrr@flip-suspend: - shard-tglu: NOTRUN -> [SKIP][425] ([i915#3555]) +5 other tests skip [425]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-7/igt@kms_vrr@flip-suspend.html - shard-rkl: NOTRUN -> [SKIP][426] ([i915#15243] / [i915#3555]) [426]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_vrr@flip-suspend.html * igt@kms_vrr@lobf: - shard-dg2: NOTRUN -> [SKIP][427] ([i915#11920]) [427]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@kms_vrr@lobf.html - shard-rkl: NOTRUN -> [SKIP][428] ([i915#11920]) [428]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_vrr@lobf.html - shard-dg1: NOTRUN -> [SKIP][429] ([i915#11920]) [429]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-16/igt@kms_vrr@lobf.html - shard-tglu: NOTRUN -> [SKIP][430] ([i915#11920]) [430]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-9/igt@kms_vrr@lobf.html - shard-mtlp: NOTRUN -> [SKIP][431] ([i915#11920]) [431]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@kms_vrr@lobf.html * igt@kms_vrr@seamless-rr-switch-virtual: - shard-rkl: NOTRUN -> [SKIP][432] ([i915#9906]) [432]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-3/igt@kms_vrr@seamless-rr-switch-virtual.html * igt@perf@gen8-unprivileged-single-ctx-counters: - shard-mtlp: NOTRUN -> [SKIP][433] +13 other tests skip [433]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@perf@gen8-unprivileged-single-ctx-counters.html * igt@perf@unprivileged-single-ctx-counters: - shard-rkl: NOTRUN -> [SKIP][434] ([i915#2433]) [434]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@perf@unprivileged-single-ctx-counters.html * igt@perf_pmu@busy-double-start@vcs1: - shard-mtlp: [PASS][435] -> [FAIL][436] ([i915#4349]) +2 other tests fail [435]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-5/igt@perf_pmu@busy-double-start@vcs1.html [436]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@perf_pmu@busy-double-start@vcs1.html * igt@perf_pmu@busy-double-start@vecs1: - shard-dg2: NOTRUN -> [FAIL][437] ([i915#4349]) +4 other tests fail [437]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@perf_pmu@busy-double-start@vecs1.html * igt@perf_pmu@event-wait: - shard-mtlp: NOTRUN -> [SKIP][438] ([i915#8807]) [438]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@perf_pmu@event-wait.html * igt@perf_pmu@event-wait@rcs0: - shard-mtlp: NOTRUN -> [SKIP][439] ([i915#3555] / [i915#8807]) [439]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-7/igt@perf_pmu@event-wait@rcs0.html * igt@perf_pmu@module-unload: - shard-glk: NOTRUN -> [ABORT][440] ([i915#15778]) [440]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk4/igt@perf_pmu@module-unload.html * igt@perf_pmu@rc6-suspend: - shard-glk: NOTRUN -> [INCOMPLETE][441] ([i915#13356] / [i915#16236]) [441]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk8/igt@perf_pmu@rc6-suspend.html * igt@prime_vgem@basic-fence-read: - shard-rkl: NOTRUN -> [SKIP][442] ([i915#3291] / [i915#3708]) +1 other test skip [442]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@prime_vgem@basic-fence-read.html * igt@prime_vgem@basic-read: - shard-dg2: NOTRUN -> [SKIP][443] ([i915#3291] / [i915#3708]) [443]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@prime_vgem@basic-read.html * igt@prime_vgem@fence-read-hang: - shard-rkl: NOTRUN -> [SKIP][444] ([i915#3708]) [444]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-1/igt@prime_vgem@fence-read-hang.html * igt@sriov_basic@enable-vfs-autoprobe-on: - shard-mtlp: NOTRUN -> [SKIP][445] ([i915#16066]) +9 other tests skip [445]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-4/igt@sriov_basic@enable-vfs-autoprobe-on.html * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7: - shard-tglu-1: NOTRUN -> [SKIP][446] ([i915#16066]) +9 other tests skip [446]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-1/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7.html #### Possible fixes #### * igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0: - shard-dg2: [INCOMPLETE][447] ([i915#13356]) -> [PASS][448] [447]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-5/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html [448]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html * igt@gem_eio@in-flight-1us: - shard-dg1: [DMESG-WARN][449] ([i915#4423]) -> [PASS][450] [449]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-19/igt@gem_eio@in-flight-1us.html [450]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@gem_eio@in-flight-1us.html * igt@gem_exec_big@single: - shard-mtlp: [FAIL][451] ([i915#15871]) -> [PASS][452] [451]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-5/igt@gem_exec_big@single.html [452]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-4/igt@gem_exec_big@single.html * igt@gem_exec_suspend@basic-s0: - shard-rkl: [INCOMPLETE][453] ([i915#13356]) -> [PASS][454] +2 other tests pass [453]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@gem_exec_suspend@basic-s0.html [454]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@gem_exec_suspend@basic-s0.html * igt@gem_mmap_offset@clear-via-pagefault: - shard-mtlp: [INCOMPLETE][455] ([i915#16021] / [i915#16202]) -> [PASS][456] +1 other test pass [455]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-8/igt@gem_mmap_offset@clear-via-pagefault.html [456]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-3/igt@gem_mmap_offset@clear-via-pagefault.html * igt@i915_pm_rps@reset: - shard-snb: [TIMEOUT][457] ([i915#16162]) -> [PASS][458] [457]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-snb5/igt@i915_pm_rps@reset.html [458]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-snb6/igt@i915_pm_rps@reset.html * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3: - shard-dg2: [FAIL][459] ([i915#5956]) -> [PASS][460] +1 other test pass [459]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-7/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3.html [460]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-8/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip: - shard-mtlp: [FAIL][461] ([i915#15733] / [i915#5138]) -> [PASS][462] [461]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html [462]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc: - shard-rkl: [INCOMPLETE][463] ([i915#15582]) -> [PASS][464] [463]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html [464]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html * igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1: - shard-rkl: [FAIL][465] ([i915#13566]) -> [PASS][466] +3 other tests pass [465]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-5/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html [466]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html - shard-tglu: [FAIL][467] ([i915#13566]) -> [PASS][468] +5 other tests pass [467]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-tglu-7/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html [468]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-2/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html * igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-mmap-wc: - shard-rkl: [SKIP][469] ([i915#15989]) -> [PASS][470] +11 other tests pass [469]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-3/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-mmap-wc.html [470]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-1/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-render: - shard-glk: [SKIP][471] -> [PASS][472] +3 other tests pass [471]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-glk6/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-render.html [472]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-glk8/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-render.html * igt@kms_hdr@bpc-switch: - shard-rkl: [SKIP][473] ([i915#16012] / [i915#3555] / [i915#8228]) -> [PASS][474] [473]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@kms_hdr@bpc-switch.html [474]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_hdr@bpc-switch.html * igt@kms_hdr@static-toggle-dpms: - shard-rkl: [SKIP][475] ([i915#16011] / [i915#3555] / [i915#8228]) -> [PASS][476] [475]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@kms_hdr@static-toggle-dpms.html [476]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_hdr@static-toggle-dpms.html * igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-2-xrgb2101010: - shard-rkl: [SKIP][477] ([i915#16011]) -> [PASS][478] +1 other test pass [477]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-2-xrgb2101010.html [478]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-2-xrgb2101010.html * igt@kms_pm_rpm@modeset-non-lpsp: - shard-dg1: [SKIP][479] ([i915#15073]) -> [PASS][480] +1 other test pass [479]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-14/igt@kms_pm_rpm@modeset-non-lpsp.html [480]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-16/igt@kms_pm_rpm@modeset-non-lpsp.html * igt@kms_pm_rpm@modeset-non-lpsp-stress: - shard-dg2: [SKIP][481] ([i915#15073]) -> [PASS][482] +1 other test pass [481]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-4/igt@kms_pm_rpm@modeset-non-lpsp-stress.html [482]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-7/igt@kms_pm_rpm@modeset-non-lpsp-stress.html * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait: - shard-rkl: [SKIP][483] ([i915#15073]) -> [PASS][484] +1 other test pass [483]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html [484]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html * igt@kms_pm_rpm@system-suspend-idle: - shard-dg2: [INCOMPLETE][485] ([i915#14419]) -> [PASS][486] [485]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-7/igt@kms_pm_rpm@system-suspend-idle.html [486]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_pm_rpm@system-suspend-idle.html * igt@perf_pmu@most-busy-check-all@bcs0: - shard-mtlp: [FAIL][487] ([i915#15997]) -> [PASS][488] +1 other test pass [487]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-4/igt@perf_pmu@most-busy-check-all@bcs0.html [488]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-2/igt@perf_pmu@most-busy-check-all@bcs0.html #### Warnings #### * igt@gem_ccs@large-ctrl-surf-copy: - shard-rkl: [SKIP][489] ([i915#13008]) -> [SKIP][490] ([i915#13008] / [i915#14544]) [489]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@gem_ccs@large-ctrl-surf-copy.html [490]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_ccs@large-ctrl-surf-copy.html * igt@gem_ccs@suspend-resume: - shard-rkl: [SKIP][491] ([i915#14544] / [i915#9323]) -> [SKIP][492] ([i915#9323]) [491]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@gem_ccs@suspend-resume.html [492]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@gem_ccs@suspend-resume.html * igt@gem_create@create-ext-cpu-access-sanity-check: - shard-rkl: [SKIP][493] ([i915#6335]) -> [SKIP][494] ([i915#14544] / [i915#6335]) [493]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@gem_create@create-ext-cpu-access-sanity-check.html [494]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_create@create-ext-cpu-access-sanity-check.html * igt@gem_exec_balancer@parallel-ordering: - shard-rkl: [SKIP][495] ([i915#4525]) -> [SKIP][496] ([i915#14544] / [i915#4525]) +1 other test skip [495]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@gem_exec_balancer@parallel-ordering.html [496]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_exec_balancer@parallel-ordering.html * igt@gem_exec_reloc@basic-gtt-cpu-active: - shard-rkl: [SKIP][497] ([i915#3281]) -> [SKIP][498] ([i915#14544] / [i915#3281]) +2 other tests skip [497]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@gem_exec_reloc@basic-gtt-cpu-active.html [498]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-cpu-active.html * igt@gem_exec_reloc@basic-wc-noreloc: - shard-rkl: [SKIP][499] ([i915#14544] / [i915#3281]) -> [SKIP][500] ([i915#3281]) [499]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@gem_exec_reloc@basic-wc-noreloc.html [500]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@gem_exec_reloc@basic-wc-noreloc.html * igt@gem_lmem_swapping@heavy-verify-random: - shard-rkl: [SKIP][501] ([i915#4613]) -> [SKIP][502] ([i915#14544] / [i915#4613]) +1 other test skip [501]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-5/igt@gem_lmem_swapping@heavy-verify-random.html [502]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-random.html * igt@gem_partial_pwrite_pread@write: - shard-rkl: [SKIP][503] ([i915#3282]) -> [SKIP][504] ([i915#14544] / [i915#3282]) +1 other test skip [503]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@gem_partial_pwrite_pread@write.html [504]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_partial_pwrite_pread@write.html * igt@gem_userptr_blits@dmabuf-unsync: - shard-rkl: [SKIP][505] ([i915#14544] / [i915#3297]) -> [SKIP][506] ([i915#3297]) [505]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@gem_userptr_blits@dmabuf-unsync.html [506]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@gem_userptr_blits@dmabuf-unsync.html * igt@gem_userptr_blits@unsync-unmap: - shard-rkl: [SKIP][507] ([i915#3297]) -> [SKIP][508] ([i915#14544] / [i915#3297]) [507]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@gem_userptr_blits@unsync-unmap.html [508]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gem_userptr_blits@unsync-unmap.html * igt@gen9_exec_parse@basic-rejected: - shard-rkl: [SKIP][509] ([i915#2527]) -> [SKIP][510] ([i915#14544] / [i915#2527]) +1 other test skip [509]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@gen9_exec_parse@basic-rejected.html [510]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@gen9_exec_parse@basic-rejected.html * igt@i915_pm_freq_api@freq-reset: - shard-rkl: [SKIP][511] ([i915#14544] / [i915#8399]) -> [SKIP][512] ([i915#8399]) [511]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@i915_pm_freq_api@freq-reset.html [512]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@i915_pm_freq_api@freq-reset.html * igt@i915_pm_rc6_residency@media-rc6-accuracy: - shard-rkl: [SKIP][513] ([i915#16080] / [i915#16166]) -> [SKIP][514] ([i915#14544] / [i915#16080] / [i915#16166]) [513]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-1/igt@i915_pm_rc6_residency@media-rc6-accuracy.html [514]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@i915_pm_rc6_residency@media-rc6-accuracy.html * igt@i915_query@test-query-geometry-subslices: - shard-rkl: [SKIP][515] ([i915#5723]) -> [SKIP][516] ([i915#14544] / [i915#5723]) [515]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@i915_query@test-query-geometry-subslices.html [516]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@i915_query@test-query-geometry-subslices.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip: - shard-rkl: [SKIP][517] ([i915#5286]) -> [SKIP][518] ([i915#14544] / [i915#5286]) +1 other test skip [517]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html [518]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip: - shard-rkl: [SKIP][519] ([i915#3828]) -> [SKIP][520] ([i915#14544] / [i915#3828]) [519]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-5/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip.html [520]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip.html * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs: - shard-rkl: [SKIP][521] ([i915#12313]) -> [SKIP][522] ([i915#12313] / [i915#14544]) [521]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html [522]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html * igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs: - shard-rkl: [SKIP][523] ([i915#12313] / [i915#14544]) -> [SKIP][524] ([i915#12313]) [523]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html [524]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-3/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html * igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs: - shard-rkl: [SKIP][525] ([i915#14098] / [i915#6095]) -> [SKIP][526] ([i915#14098] / [i915#14544] / [i915#6095]) +6 other tests skip [525]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html [526]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-2: - shard-rkl: [SKIP][527] ([i915#14544] / [i915#6095]) -> [SKIP][528] ([i915#6095]) +2 other tests skip [527]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-2.html [528]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2: - shard-rkl: [SKIP][529] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][530] ([i915#14098] / [i915#6095]) +3 other tests skip [529]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2.html [530]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2: - shard-rkl: [SKIP][531] ([i915#6095]) -> [SKIP][532] ([i915#14544] / [i915#6095]) +1 other test skip [531]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-3/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2.html [532]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs: - shard-dg1: [SKIP][533] ([i915#6095]) -> [SKIP][534] ([i915#4423] / [i915#6095]) [533]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-12/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs.html [534]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs.html * igt@kms_cdclk@mode-transition: - shard-rkl: [SKIP][535] ([i915#14544] / [i915#3742]) -> [SKIP][536] ([i915#3742]) [535]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_cdclk@mode-transition.html [536]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-7/igt@kms_cdclk@mode-transition.html * igt@kms_cdclk@mode-transition-all-outputs: - shard-rkl: [SKIP][537] ([i915#3742]) -> [SKIP][538] ([i915#14544] / [i915#3742]) [537]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@kms_cdclk@mode-transition-all-outputs.html [538]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_cdclk@mode-transition-all-outputs.html * igt@kms_chamelium_hpd@hdmi-hpd: - shard-dg1: [SKIP][539] ([i915#11151] / [i915#7828]) -> [SKIP][540] ([i915#11151] / [i915#4423] / [i915#7828]) [539]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-18/igt@kms_chamelium_hpd@hdmi-hpd.html [540]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_chamelium_hpd@hdmi-hpd.html * igt@kms_chamelium_hpd@vga-hpd-for-each-pipe: - shard-rkl: [SKIP][541] ([i915#11151] / [i915#7828]) -> [SKIP][542] ([i915#11151] / [i915#14544] / [i915#7828]) +4 other tests skip [541]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html [542]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html * igt@kms_content_protection@dp-mst-type-0-suspend-resume: - shard-rkl: [SKIP][543] ([i915#14544] / [i915#15330]) -> [SKIP][544] ([i915#15330]) [543]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html [544]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-1/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html * igt@kms_content_protection@legacy-hdcp14: - shard-dg2: [FAIL][545] ([i915#7173]) -> [SKIP][546] ([i915#15865]) [545]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-10/igt@kms_content_protection@legacy-hdcp14.html [546]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-5/igt@kms_content_protection@legacy-hdcp14.html * igt@kms_content_protection@mei-interface: - shard-rkl: [SKIP][547] ([i915#15865]) -> [SKIP][548] ([i915#14544] / [i915#15865]) +2 other tests skip [547]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-5/igt@kms_content_protection@mei-interface.html [548]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_content_protection@mei-interface.html * igt@kms_cursor_crc@cursor-offscreen-32x10: - shard-rkl: [SKIP][549] ([i915#3555]) -> [SKIP][550] ([i915#14544] / [i915#3555]) +1 other test skip [549]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-5/igt@kms_cursor_crc@cursor-offscreen-32x10.html [550]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_cursor_crc@cursor-offscreen-32x10.html * igt@kms_cursor_crc@cursor-random-512x170: - shard-rkl: [SKIP][551] ([i915#13049] / [i915#14544]) -> [SKIP][552] ([i915#13049]) [551]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x170.html [552]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_cursor_crc@cursor-random-512x170.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions: - shard-rkl: [SKIP][553] ([i915#4103]) -> [SKIP][554] ([i915#14544] / [i915#4103]) [553]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html [554]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html * igt@kms_dsc@dsc-basic: - shard-rkl: [SKIP][555] ([i915#3555] / [i915#3840]) -> [SKIP][556] ([i915#14544] / [i915#3555] / [i915#3840]) +1 other test skip [555]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@kms_dsc@dsc-basic.html [556]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_dsc@dsc-basic.html * igt@kms_flip@2x-flip-vs-dpms: - shard-rkl: [SKIP][557] ([i915#14544] / [i915#9934]) -> [SKIP][558] ([i915#9934]) +1 other test skip [557]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_flip@2x-flip-vs-dpms.html [558]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_flip@2x-flip-vs-dpms.html * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset: - shard-dg1: [SKIP][559] ([i915#4423] / [i915#9934]) -> [SKIP][560] ([i915#9934]) [559]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-17/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html [560]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-18/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html * igt@kms_flip@2x-wf_vblank-ts-check-interruptible: - shard-rkl: [SKIP][561] ([i915#9934]) -> [SKIP][562] ([i915#14544] / [i915#9934]) +2 other tests skip [561]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html [562]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling: - shard-rkl: [SKIP][563] ([i915#15643]) -> [SKIP][564] ([i915#14544] / [i915#15643]) [563]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html [564]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html * igt@kms_force_connector_basic@force-load-detect: - shard-mtlp: [SKIP][565] ([i915#15672]) -> [SKIP][566] [565]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-mtlp-1/igt@kms_force_connector_basic@force-load-detect.html [566]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-mtlp-6/igt@kms_force_connector_basic@force-load-detect.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render: - shard-rkl: [SKIP][567] -> [SKIP][568] ([i915#14544]) +34 other tests skip [567]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html [568]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt: - shard-rkl: [SKIP][569] ([i915#14544] / [i915#1825]) -> [SKIP][570] ([i915#1825]) +1 other test skip [569]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html [570]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-render: - shard-dg1: [SKIP][571] ([i915#4423]) -> [SKIP][572] [571]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-19/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-render.html [572]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-14/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw: - shard-rkl: [SKIP][573] ([i915#15102] / [i915#3023]) -> [SKIP][574] ([i915#14544] / [i915#15102] / [i915#3023]) +6 other tests skip [573]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html [574]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite: - shard-rkl: [SKIP][575] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][576] ([i915#15102] / [i915#3023]) [575]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html [576]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt: - shard-dg2: [SKIP][577] ([i915#10433] / [i915#15102]) -> [SKIP][578] ([i915#15102]) +2 other tests skip [577]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html [578]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-wc: - shard-dg1: [SKIP][579] ([i915#15990]) -> [SKIP][580] ([i915#15990] / [i915#4423]) [579]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-15/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-wc.html [580]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt: - shard-rkl: [SKIP][581] ([i915#15102]) -> [SKIP][582] ([i915#14544] / [i915#15102]) +11 other tests skip [581]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html [582]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt: - shard-rkl: [SKIP][583] ([i915#1825]) -> [SKIP][584] ([i915#14544] / [i915#1825]) +5 other tests skip [583]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html [584]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt: - shard-rkl: [SKIP][585] ([i915#14544]) -> [SKIP][586] +7 other tests skip [585]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt.html [586]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary: - shard-dg2: [SKIP][587] ([i915#15102]) -> [SKIP][588] ([i915#10433] / [i915#15102]) +2 other tests skip [587]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html [588]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-indfb-plflip-blt: - shard-rkl: [SKIP][589] ([i915#14544] / [i915#15102]) -> [SKIP][590] ([i915#15102]) +2 other tests skip [589]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-indfb-plflip-blt.html [590]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-indfb-plflip-blt.html * igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-render: - shard-dg1: [SKIP][591] -> [SKIP][592] ([i915#4423]) [591]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-15/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-render.html [592]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-13/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-render.html * igt@kms_hdr@invalid-hdr: - shard-dg2: [SKIP][593] ([i915#3555] / [i915#8228]) -> [SKIP][594] ([i915#16012] / [i915#3555] / [i915#8228]) [593]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg2-10/igt@kms_hdr@invalid-hdr.html [594]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg2-6/igt@kms_hdr@invalid-hdr.html * igt@kms_joiner@invalid-modeset-force-big-joiner: - shard-rkl: [SKIP][595] ([i915#15459]) -> [SKIP][596] ([i915#14544] / [i915#15459]) [595]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@kms_joiner@invalid-modeset-force-big-joiner.html [596]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_joiner@invalid-modeset-force-big-joiner.html * igt@kms_plane_lowres@tiling-yf: - shard-rkl: [SKIP][597] ([i915#14544] / [i915#3555]) -> [SKIP][598] ([i915#3555]) [597]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_plane_lowres@tiling-yf.html [598]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@kms_plane_lowres@tiling-yf.html * igt@kms_plane_multiple@2x-tiling-x: - shard-rkl: [SKIP][599] ([i915#13958]) -> [SKIP][600] ([i915#13958] / [i915#14544]) [599]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-3/igt@kms_plane_multiple@2x-tiling-x.html [600]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-x.html * igt@kms_pm_backlight@fade-with-suspend: - shard-rkl: [SKIP][601] ([i915#12343] / [i915#5354]) -> [SKIP][602] ([i915#12343] / [i915#14544] / [i915#5354]) [601]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-5/igt@kms_pm_backlight@fade-with-suspend.html [602]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_pm_backlight@fade-with-suspend.html * igt@kms_pm_dc@dc6-dpms: - shard-tglu: [FAIL][603] ([i915#15752]) -> [SKIP][604] ([i915#15128]) [603]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-tglu-3/igt@kms_pm_dc@dc6-dpms.html [604]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-6/igt@kms_pm_dc@dc6-dpms.html * igt@kms_pm_lpsp@kms-lpsp: - shard-rkl: [SKIP][605] ([i915#3828]) -> [SKIP][606] ([i915#14544] / [i915#9340]) [605]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-5/igt@kms_pm_lpsp@kms-lpsp.html [606]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_pm_lpsp@kms-lpsp.html * igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area: - shard-rkl: [SKIP][607] ([i915#11520] / [i915#14544]) -> [SKIP][608] ([i915#11520]) [607]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html [608]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-2/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf: - shard-rkl: [SKIP][609] ([i915#11520]) -> [SKIP][610] ([i915#11520] / [i915#14544]) +2 other tests skip [609]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html [610]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-rkl: [SKIP][611] ([i915#9683]) -> [SKIP][612] ([i915#14544] / [i915#9683]) [611]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-2/igt@kms_psr2_su@frontbuffer-xrgb8888.html [612]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_psr@fbc-pr-cursor-render: - shard-rkl: [SKIP][613] ([i915#1072] / [i915#9732]) -> [SKIP][614] ([i915#1072] / [i915#14544] / [i915#9732]) +8 other tests skip [613]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@kms_psr@fbc-pr-cursor-render.html [614]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_psr@fbc-pr-cursor-render.html * igt@kms_psr@fbc-psr2-sprite-render: - shard-rkl: [SKIP][615] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][616] ([i915#1072] / [i915#9732]) +1 other test skip [615]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_psr@fbc-psr2-sprite-render.html [616]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_psr@fbc-psr2-sprite-render.html * igt@kms_psr@pr-no-drrs: - shard-dg1: [SKIP][617] ([i915#1072] / [i915#9732]) -> [SKIP][618] ([i915#1072] / [i915#4423] / [i915#9732]) [617]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-dg1-16/igt@kms_psr@pr-no-drrs.html [618]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-dg1-17/igt@kms_psr@pr-no-drrs.html * igt@kms_psr_stress_test@flip-primary-invalidate-overlay: - shard-rkl: [SKIP][619] ([i915#14544] / [i915#15949]) -> [SKIP][620] ([i915#15949]) [619]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html [620]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-4/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html * igt@kms_tiled_display@basic-test-pattern: - shard-rkl: [SKIP][621] ([i915#8623]) -> [SKIP][622] ([i915#14544] / [i915#8623]) [621]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-3/igt@kms_tiled_display@basic-test-pattern.html [622]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@kms_tiled_display@basic-test-pattern.html * igt@perf_pmu@module-unload: - shard-tglu: [INCOMPLETE][623] ([i915#13520]) -> [ABORT][624] ([i915#15778]) [623]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-tglu-5/igt@perf_pmu@module-unload.html [624]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-tglu-5/igt@perf_pmu@module-unload.html * igt@prime_vgem@basic-write: - shard-rkl: [SKIP][625] ([i915#3291] / [i915#3708]) -> [SKIP][626] ([i915#14544] / [i915#3291] / [i915#3708]) [625]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-4/igt@prime_vgem@basic-write.html [626]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@prime_vgem@basic-write.html * igt@sriov_basic@enable-vfs-bind-unbind-each: - shard-rkl: [SKIP][627] ([i915#14544] / [i915#9917]) -> [SKIP][628] ([i915#9917]) [627]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each.html [628]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-5/igt@sriov_basic@enable-vfs-bind-unbind-each.html * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all: - shard-rkl: [SKIP][629] ([i915#9917]) -> [SKIP][630] ([i915#14544] / [i915#9917]) [629]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18558/shard-rkl-8/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html [630]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html [i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055 [i915#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056 [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307 [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433 [i915#10553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10553 [i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647 [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072 [i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099 [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078 [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151 [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520 [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681 [i915#11814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11814 [i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920 [i915#12169]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12169 [i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276 [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313 [i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316 [i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343 [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745 [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755 [i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964 [i915#13008]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13008 [i915#13027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13027 [i915#13029]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13029 [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046 [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049 [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356 [i915#13390]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13390 [i915#13520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13520 [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566 [i915#13688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13688 [i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707 [i915#13783]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13783 [i915#13820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13820 [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958 [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098 [i915#14123]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14123 [i915#14419]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14419 [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544 [i915#14545]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14545 [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712 [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073 [i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102 [i915#15104]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15104 [i915#15106]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15106 [i915#15128]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15128 [i915#15131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15131 [i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243 [i915#15314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15314 [i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329 [i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330 [i915#15342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15342 [i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459 [i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460 [i915#15479]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15479 [i915#15481]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15481 [i915#15492]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15492 [i915#15542]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15542 [i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582 [i915#15608]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15608 [i915#15638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15638 [i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643 [i915#15657]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15657 [i915#15672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15672 [i915#15678]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15678 [i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709 [i915#15718]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15718 [i915#15722]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15722 [i915#15725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15725 [i915#15733]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15733 [i915#15752]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15752 [i915#15778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15778 [i915#15804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15804 [i915#15815]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15815 [i915#15865]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15865 [i915#15867]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15867 [i915#15871]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15871 [i915#15948]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15948 [i915#15949]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15949 [i915#15989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15989 [i915#15990]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15990 [i915#15991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15991 [i915#15997]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15997 [i915#16011]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16011 [i915#16012]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16012 [i915#16021]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16021 [i915#16056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16056 [i915#16066]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16066 [i915#16079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16079 [i915#16080]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16080 [i915#16162]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16162 [i915#16166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16166 [i915#16182]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16182 [i915#16184]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16184 [i915#16202]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16202 [i915#16205]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16205 [i915#16236]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16236 [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769 [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825 [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190 [i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433 [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527 [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658 [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280 [i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284 [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856 [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023 [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116 [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282 [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291 [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297 [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299 [i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469 [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539 [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555 [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637 [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638 [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708 [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742 [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804 [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828 [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840 [i915#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955 [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077 [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083 [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103 [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212 [i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235 [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270 [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349 [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387 [i915#4391]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4391 [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423 [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525 [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538 [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613 [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771 [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812 [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817 [i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839 [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852 [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860 [i915#4879]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4879 [i915#5030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5030 [i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138 [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190 [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286 [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289 [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354 [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439 [i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723 [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956 [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095 [i915#6188]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6188 [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230 [i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245 [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334 [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335 [i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344 [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524 [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658 [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621 [i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805 [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953 [i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173 [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697 [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828 [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228 [i915#8289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8289 [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399 [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411 [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428 [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430 [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555 [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623 [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708 [i915#8807]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8807 [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809 [i915#8810]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8810 [i915#8812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8812 [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813 [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814 [i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821 [i915#8823]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8823 [i915#8898]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8898 [i915#9041]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9041 [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053 [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067 [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323 [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340 [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683 [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688 [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723 [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732 [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766 [i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808 [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809 [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812 [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906 [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917 [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_8938 -> IGTPW_15251 * Piglit: piglit_4509 -> None CI-20190529: 20190529 CI_DRM_18558: 14d3e29c36bea707856f5c03dbf7b0ef73fdeb85 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_15251: 79b7fff627089201841344197b960bbf78300e39 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_8938: b024a3b67372962ff6e643d3998c5cf5acc07081 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15251/index.html [-- Attachment #2: Type: text/html, Size: 213064 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 0/3] Negative tests for VM_BIND decompression 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam ` (6 preceding siblings ...) 2026-05-27 13:21 ` ✓ i915.CI.Full: success " Patchwork @ 2026-06-15 12:31 ` Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam ` (2 more replies) 7 siblings, 3 replies; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-06-15 12:31 UTC (permalink / raw) To: igt-dev, zbigniew.kempczynski This series adds negative test coverage for VM_BIND DECOMPRESS flows in xe_ccs. Patch 1 introduces resource management structures, helper utilities, and a negative uAPI parameter validation test for VM_BIND DECOMPRESS flows. Patch 2 adds a helper for fault-mode handling along with a negative test to validate VM_BIND DECOMPRESS uAPI parameters under fault-mode conditions. Patch 3 adds negative test coverage for VM_BIND DECOMPRESS with CCS corruption, including suspend-resume scenarios. Changes in v2: - Patch 1: Add xe_has_vram() require in vm_bind_decomp_test_setup() so the negative tests skip cleanly on integrated GPUs. - Patch 3: Change igt_subtest_with_dynamic to igt_subtest for vm-bind-decompress-ccs-corruption-suspend-resume. The subtest had no igt_dynamic() body and was reporting a spurious SKIP ("No dynamic tests executed") on BMG CI. Smitha Balasubramanyam (3): tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp tests/intel/xe_ccs.c | 1185 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1185 insertions(+) -- 2.43.0 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp 2026-06-15 12:31 ` [PATCH v2 0/3] " Smitha Balasubramanyam @ 2026-06-15 12:31 ` Smitha Balasubramanyam 2026-06-15 17:02 ` Matthew Auld 2026-06-15 12:31 ` [PATCH v2 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam 2 siblings, 1 reply; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-06-15 12:31 UTC (permalink / raw) To: igt-dev, zbigniew.kempczynski Introduce data structures and helper utilities used by the VM negative tests to validate the VM_Bind Decomp feature These helpers provide resource management and setup/cleanup logic that simplifies the implementation of the test cases introduced in subsequent patches. One functional subtest is introduced in this patch. This test verifies handling of invalid UAPI Params in Non-fault Mode. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 479 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 479 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index 4c5fe0311..e1dc80659 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -68,10 +68,17 @@ * * SUBTEST: vm-bind-fault-mode-decompress * Description: Validate VM_BIND with DECOMPRESS flag functionality in fault mode + * + * SUBTEST: vm-bind-decompress-uapi-bad-params + * Description: UAPI negative test — attempt VM_BIND with a combination of invalid params */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); +#ifndef INVALID_PAT_INDEX +#define INVALID_PAT_INDEX 10U +#endif + static struct param { int compression_format; int tiling; @@ -100,6 +107,7 @@ struct test_config { bool suspend_resume; bool vm_bind_decompress; bool vm_bind_fault_mode_decompress; + bool vm_bind_decompress_uapi_bad_params; int width_increment; int width_steps; int overwrite_width; @@ -371,6 +379,460 @@ static void surf_copy(int xe, "restoring source ccs data\n"); } +/* VM_BIND DECOMPRESS negative-test case definitions and shared setup state */ +struct vm_bind_decomp_neg_test_case { + const char *test_name; + uint32_t pat; /* PAT index passed to __xe_vm_bind() */ + uint32_t flags; /* DRM_XE_VM_BIND_FLAG_* */ + bool expect_fail; /* true => we expect kernel to reject (result != 0) */ +}; + +struct vm_bind_decomp_setup_resources { + int xe; + u32 vm; + u64 vm_map_addr; + u64 map_size; + u32 handle; /* compressed destination BO handle */ + u32 bb; + u32 region_src; + u32 region_comp; + u64 size; + uint32_t comp_pat; + uint32_t uncompressed_pat; + + /* objects to destroy/map bookkeeping */ + struct blt_copy_object *src_obj; + struct blt_copy_object *comp_obj; +}; + +/* Cleanup for VM_Bind Decomp Negative test cases */ +static void vm_bind_decomp_test_cleanup(int xe, uint64_t ahnd, + struct vm_bind_decomp_setup_resources *state) +{ + /* Return if there is nothing to clean up. */ + if (!state) + return; + + /* If a VM mapping remains, try to unmap it. */ + if (state->vm && state->vm_map_addr && state->map_size) { + int ret = __xe_vm_bind(xe, state->vm, 0, 0, 0, + state->vm_map_addr, state->map_size, + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); + igt_info("Unmapping VM mapping at addr 0x%llx, size %llu, ret=%d\n", + (unsigned long long)state->vm_map_addr, + (unsigned long long)state->map_size, + ret); + } + + /* Remove allocator offsets if set */ + if (ahnd) { + if (state->src_obj && state->src_obj->handle) { + igt_debug("Removing allocator offset for src_obj handle %u\n", + state->src_obj->handle); + put_offset(ahnd, state->src_obj->handle); + } + if (state->comp_obj && state->comp_obj->handle) + put_offset(ahnd, state->comp_obj->handle); + igt_debug("Removed allocator offsets for src_obj and comp_obj if they existed\n"); + if (state->bb) + put_offset(ahnd, state->bb); + igt_debug("Removed allocator offset for bb handle %u\n", state->bb); + intel_allocator_bind(ahnd, 0, 0); + igt_debug("SUCCESS : Cleared allocator bindings\n"); + } + + /* Destroy blit objects */ + if (state->src_obj) + blt_destroy_object(xe, state->src_obj); + if (state->comp_obj) + blt_destroy_object(xe, state->comp_obj); + igt_debug("SUCCESS : Destroyed blit objects if they existed\n"); + + /* Close bb handle(s) */ + + if (state->bb) { + gem_close(xe, state->bb); + igt_debug("SUCCESS : Close bb handle\n"); + } + + /* Destroy VM */ + if (state->vm) + xe_vm_destroy(xe, state->vm); + igt_debug("SUCCESS : Destroyed VM if it existed\n"); + + /* Clear fields to make it safe to call again */ + memset(state, 0, sizeof(*state)); + igt_debug("SUCCESS : Cleared state structure\n"); + + igt_debug("SUCCESS : Cleanup completed\n"); +} + +/* Setup function: prepares state->src_obj, state->comp_obj, VM and initial map. + * On any failure it calls vm_bind_decomp_test_setup() then igt_assert_f() to abort safely. + */ +static int vm_bind_decomp_test_setup(int xe, intel_ctx_t *ctx, uint64_t ahnd, + u32 region_src, u32 region_comp, u32 width, u32 height, + enum blt_tiling_type tiling, + const struct test_config *config, + bool is_gradient, + bool use_fault_mode_vm, + struct vm_bind_decomp_setup_resources *state) +{ + struct blt_copy_data blt = {}; + struct blt_block_copy_data_ext ext = {}; + u64 bb_size = xe_bb_size(xe, SZ_4K); + u8 uc_mocs = intel_get_uc_mocs_index(xe); + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; + const u32 bpp = 32; + int result = -1; + uint32_t devid; + + igt_assert(state); + memset(state, 0, sizeof(*state)); + + state->xe = xe; + state->region_src = region_src; + state->region_comp = region_comp; + state->vm_map_addr = 0x30000000; + state->size = (u64)width * height * 4; + state->map_size = ALIGN(state->size, xe_get_default_alignment(xe)); + + /* Precondition checks - do these before allocating resources */ + devid = intel_get_drm_devid(xe); + igt_require(intel_gen(devid) >= 20); + igt_require(xe_has_vram(xe)); + igt_require(config->compression); + igt_require(blt_uses_extended_block_copy(xe)); + igt_require(blt_platform_has_flat_ccs_enabled(xe)); + + /* Create VM (FAULT_MODE requires LR_MODE) when requested by caller. */ + if (use_fault_mode_vm) + state->vm = xe_vm_create(xe, + DRM_XE_VM_CREATE_FLAG_LR_MODE | + DRM_XE_VM_CREATE_FLAG_FAULT_MODE, + 0); + else + state->vm = xe_vm_create(xe, 0, 0); + if (state->vm <= 0) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "xe_vm_create() failed: %d\n", state->vm); + } + + /* Create BB */ + state->bb = xe_bo_create(xe, 0, bb_size, region_src, + DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM); + if (!state->bb) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "xe_bo_create() for BB failed\n"); + } + + /* Init blit + batch */ + blt_copy_init(xe, &blt); + blt_set_batch(&blt.bb, state->bb, bb_size, region_src); + + /* Create src (uncompressed) */ + state->src_obj = blt_create_object(&blt, region_src, width, height, bpp, + uc_mocs, T_LINEAR, COMPRESSION_DISABLED, + comp_type, true); + if (!state->src_obj || !state->src_obj->ptr) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "failed to create or map src object\n"); + } + + /* Fill deterministic compressible data */ + if (is_gradient) { + blt_surface_fill_rect(xe, state->src_obj, width, height); + } else { + fill_buffer_simple_pattern(state->src_obj->ptr, state->src_obj->size); + igt_assert_f(verify_test_pattern(state->src_obj->ptr, + state->src_obj->size, "SOURCE"), + "Source pattern verification failed"); + } + /* Create compressed destination object */ + state->comp_obj = blt_create_object(&blt, region_comp, width, height, bpp, + uc_mocs, tiling, COMPRESSION_ENABLED, + comp_type, true); + if (!state->comp_obj) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "failed to create compressed object\n"); + } + + /* Compress using GPU: caller must provide ctx/ahnd */ + blt.color_depth = CD_32bit; + blt.print_bb = param.print_bb; + blt_set_copy_object(&blt.src, state->src_obj); + blt_set_copy_object(&blt.dst, state->comp_obj); + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); + + /* Use provided ctx/ahnd */ + igt_assert(ctx && ahnd); + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); + intel_ctx_xe_sync(ctx, true); + + /* Verify compression occurred when platform supports it */ + if (blt_platform_has_flat_ccs_enabled(xe)) { + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, + ahnd, state->comp_obj); + if (!is_compressed) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, + "Surface compression failed, cannot test decompression\n"); + } + } + + /* store handles and PATs */ + state->handle = state->comp_obj->handle; + state->uncompressed_pat = intel_get_pat_idx_uc(xe); + state->comp_pat = intel_get_pat_idx_uc_comp(xe); + + /* perform initial map using compressed pat */ + result = __xe_vm_bind(xe, state->vm, 0, state->handle, 0, + state->vm_map_addr, state->map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + state->comp_pat, 0); + if (result != 0) { + vm_bind_decomp_test_cleanup(xe, ahnd, state); + igt_assert_f(false, "initial __xe_vm_bind MAP failed: %d (%s)\n", + result, strerror(errno)); + } + /* success */ + return 0; +} + +static void vm_bind_decompress_uapi_bad_params(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + enum blt_tiling_type tiling, + const struct test_config *config) +{ + struct vm_bind_decomp_setup_resources allocated_resources = {}; + int ret = 0; + void *mapped_data = MAP_FAILED; + u32 *mapped_ptr = NULL; + bool decompression_successful = false; + uint64_t addr; + u32 handle; + u64 use_map_size; + const uint64_t default_alignment = xe_get_default_alignment(xe); + + /* Build negative cases (runtime PAT lookups) */ + struct vm_bind_decomp_neg_test_case bad_cases[8] = { + /* PAT-based accepts (DECOMPRESS + Default PAT) */ + /* In the __xe_vmbind() wrapper, + * the DEFAULT_PAT_INDEX is updated to the appropriate GPU PAT index + * for the default caching type, so this case should succeed with a valid PAT + * even though we are passing the generic DEFAULT_PAT_INDEX value + */ + { "decompress-default-pat", DEFAULT_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based accepts (DECOMPRESS + GPU WB PAT) */ + { "decompress-gpu-wb-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based rejects (DECOMPRESS + Invalid PAT) */ + { "decompress-invalid-pat", INVALID_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + non-UC PAT) */ + { "decompress-gpu-wt-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + compressed PAT) */ + { "decompress-gpu-compressed-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Range smaller than the uncompressed size (should be rejected for DECOMPRESS) */ + { "decompress-small-range", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Misaligned virtual address for DECOMPRESS update */ + { "decompress-misaligned-va", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Wrong BO handle supplied (invalid handle) */ + { "decompress-wrong-bo-handle", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + }; + + /* Setup (this asserts+cleans on failure) */ + ret = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, + width, height, tiling, config, false, false, + &allocated_resources); + igt_assert_eq(ret, 0); + + /* assign runtime values after setup */ + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(allocated_resources.comp_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "COMPRESSED", 4); + + /* Fill platform-specific PAT lookups and runtime-dependent PATs */ + bad_cases[1].pat = intel_get_pat_idx_wb(xe); + bad_cases[3].pat = intel_get_pat_idx_wt(xe); + bad_cases[4].pat = intel_get_pat_idx_uc_comp(xe); + bad_cases[5].pat = allocated_resources.uncompressed_pat; + bad_cases[6].pat = allocated_resources.uncompressed_pat; + bad_cases[7].pat = allocated_resources.uncompressed_pat; + + /* Iterate the cases */ + for (unsigned int i = 0; i < ARRAY_SIZE(bad_cases); i++) { + const struct vm_bind_decomp_neg_test_case *test_variant = &bad_cases[i]; + + u32 use_pat = test_variant->pat; + u32 flags = test_variant->flags; + + /* Reset to known good values before each iteration */ + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + igt_info("\nVM_BIND variant: %s\n", test_variant->test_name); + + /* Specialize the case parameters */ + if (!strcmp(test_variant->test_name, "decompress-small-range")) { + use_map_size = allocated_resources.map_size - 1; + igt_debug("allocated_resources.size=%llu, default_alignment=%llu\n", + (unsigned long long)allocated_resources.size, + (unsigned long long)default_alignment); + } else if (!strcmp(test_variant->test_name, "decompress-misaligned-va")) { + addr = allocated_resources.vm_map_addr + 1; /* deliberately misaligned */ + + } else if (!strcmp(test_variant->test_name, "decompress-wrong-bo-handle")) { + /* flip some bits to make handle unlikely to be valid */ + handle = allocated_resources.handle ^ 0xdeadbeef; + } + igt_debug("Issuing VM_BIND :addr=0x%llx map_size=%llu handle=%u pat=%u " + "flags=0x%x for %s\n", + (unsigned long long)addr, + (unsigned long long)use_map_size, + handle, use_pat, flags, test_variant->test_name); + errno = 0; + ret = __xe_vm_bind(xe, allocated_resources.vm, + 0, /* engine */ + handle, /* handle (may be invalid) */ + 0, /* offset in BO */ + addr, /* VA */ + use_map_size, + DRM_XE_VM_BIND_OP_MAP, /* update mapping */ + flags, + NULL, 0, 0, + use_pat, + 0); + /* Evaluate outcome against expectation */ + if (test_variant->expect_fail) { + if (ret == 0) { + /* Unexpected success — try to unmap and then fail the test (cleanup) */ + igt_warn("VM_BIND unexpectedly SUCCEEDED for %s " + "- attempting cleanup\n", + test_variant->test_name); + + /* Attempt to unmap the mapping we may have created */ + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, addr, + use_map_size, DRM_XE_VM_BIND_OP_UNMAP, + 0, NULL, 0, 0, 0, 0); + + /* Perform cleanup before asserting */ + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, + "VM_BIND expected failure but succeeded for %s", + test_variant->test_name); + } else { + igt_info("VM_BIND rejected as expected for %s (errno=%d %s)\n", + test_variant->test_name, errno, strerror(errno)); + } + } else { + /* Expected path: VM_BIND must succeed, then data integrity is verified. */ + if (ret != 0) { + igt_warn("VM_BIND unexpectedly FAILED for %s: %d (%s)\n", + test_variant->test_name, ret, strerror(errno)); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "VM_BIND unexpected failure for %s", + test_variant->test_name); + } else { + igt_info("VM_BIND succeeded for %s (as expected)\n", + test_variant->test_name); + if (!strcmp(test_variant->test_name, "decompress-default-pat") || + !strcmp(test_variant->test_name, "decompress-gpu-wb-pat")) { + /* Map the BO for CPU access using helper */ + mapped_data = xe_bo_map(xe, allocated_resources.handle, + allocated_resources.size); + if (mapped_data == MAP_FAILED) { + igt_warn("Mapping handle %u failed for verification\n", + allocated_resources.handle); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "Failed to map BO for verification"); + } + mapped_ptr = (uint32_t *)mapped_data; + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, + allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(mapped_ptr, + min_t(size_t, 64, + allocated_resources.size), + "DECOMPRESSED", 4); + + decompression_successful = + verify_test_pattern(mapped_ptr, + allocated_resources.size, + "DECOMPRESSED"); + if (!decompression_successful) + igt_info("Decompression pattern verification " + "FAILED for %s\n", + test_variant->test_name); + + if (memcmp(mapped_ptr, + allocated_resources.src_obj->ptr, + allocated_resources.size) != 0) { + igt_info("Decompressed data does not match " + "original for %s\n", + test_variant->test_name); + print_buffer_data(mapped_ptr, + min_t(size_t, 256, + allocated_resources.size), + "CURRENT_STATE", 4); + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 256, + allocated_resources.size), + "EXPECTED", 4); + + /* tidy mapping and do full cleanup before failing */ + munmap(mapped_data, allocated_resources.size); + vm_bind_decomp_test_cleanup(xe, ahnd, + &allocated_resources); + igt_assert_f(false, + "Decompressed BO contents differ " + "from original for %s", + test_variant->test_name); + } + + igt_info("Decompression content matches original for %s\n", + test_variant->test_name); + /* tidy up mapping */ + munmap(mapped_data, allocated_resources.size); + mapped_data = MAP_FAILED; + mapped_ptr = NULL; + } + } + } + } + + /* final clean */ + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -1274,6 +1736,11 @@ static void single_copy(int xe, const struct test_config *config, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_uapi_bad_params) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_uapi_bad_params(xe, ctx, ahnd, region1, region2, + width, height, tiling, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -1569,7 +2036,19 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) igt_subtest("vm-bind-fault-mode-decompress") { struct test_config config = { .compression = true, .vm_bind_fault_mode_decompress = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + igt_describe("Validate uAPI of VM_BIND with DECOMPRESS flag with bad params"); + igt_subtest("vm-bind-decompress-uapi-bad-params") { + struct test_config config = { .compression = true, + .vm_bind_decompress_uapi_bad_params = true }; u32 region1 = system_memory(xe); u32 region2 = vram_if_possible(xe, 0); int tiling = T_LINEAR; -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp 2026-06-15 12:31 ` [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam @ 2026-06-15 17:02 ` Matthew Auld 2026-06-15 17:06 ` Matthew Auld 0 siblings, 1 reply; 21+ messages in thread From: Matthew Auld @ 2026-06-15 17:02 UTC (permalink / raw) To: Smitha Balasubramanyam, igt-dev, zbigniew.kempczynski On 15/06/2026 13:31, Smitha Balasubramanyam wrote: > Introduce data structures and helper utilities used by the VM > negative tests to validate the VM_Bind Decomp feature > > These helpers provide resource management and setup/cleanup > logic that simplifies the implementation of the test cases > introduced in subsequent patches. > > One functional subtest is introduced in this patch. > This test verifies handling of invalid UAPI Params in Non-fault Mode. Why is there so much code being added in this series? The negative tests should just be checking that an ioctl gets rejected, when doing various bogus things? Series is adding like +1000 lines of code? What am I missing? > > Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> > --- > tests/intel/xe_ccs.c | 479 +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 479 insertions(+) > > diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c > index 4c5fe0311..e1dc80659 100644 > --- a/tests/intel/xe_ccs.c > +++ b/tests/intel/xe_ccs.c > @@ -68,10 +68,17 @@ > * > * SUBTEST: vm-bind-fault-mode-decompress > * Description: Validate VM_BIND with DECOMPRESS flag functionality in fault mode > + * > + * SUBTEST: vm-bind-decompress-uapi-bad-params > + * Description: UAPI negative test — attempt VM_BIND with a combination of invalid params > */ > > IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); > > +#ifndef INVALID_PAT_INDEX > +#define INVALID_PAT_INDEX 10U > +#endif > + > static struct param { > int compression_format; > int tiling; > @@ -100,6 +107,7 @@ struct test_config { > bool suspend_resume; > bool vm_bind_decompress; > bool vm_bind_fault_mode_decompress; > + bool vm_bind_decompress_uapi_bad_params; > int width_increment; > int width_steps; > int overwrite_width; > @@ -371,6 +379,460 @@ static void surf_copy(int xe, > "restoring source ccs data\n"); > } > > +/* VM_BIND DECOMPRESS negative-test case definitions and shared setup state */ > +struct vm_bind_decomp_neg_test_case { > + const char *test_name; > + uint32_t pat; /* PAT index passed to __xe_vm_bind() */ > + uint32_t flags; /* DRM_XE_VM_BIND_FLAG_* */ > + bool expect_fail; /* true => we expect kernel to reject (result != 0) */ > +}; > + > +struct vm_bind_decomp_setup_resources { > + int xe; > + u32 vm; > + u64 vm_map_addr; > + u64 map_size; > + u32 handle; /* compressed destination BO handle */ > + u32 bb; > + u32 region_src; > + u32 region_comp; > + u64 size; > + uint32_t comp_pat; > + uint32_t uncompressed_pat; > + > + /* objects to destroy/map bookkeeping */ > + struct blt_copy_object *src_obj; > + struct blt_copy_object *comp_obj; > +}; > + > +/* Cleanup for VM_Bind Decomp Negative test cases */ > +static void vm_bind_decomp_test_cleanup(int xe, uint64_t ahnd, > + struct vm_bind_decomp_setup_resources *state) > +{ > + /* Return if there is nothing to clean up. */ > + if (!state) > + return; > + > + /* If a VM mapping remains, try to unmap it. */ > + if (state->vm && state->vm_map_addr && state->map_size) { > + int ret = __xe_vm_bind(xe, state->vm, 0, 0, 0, > + state->vm_map_addr, state->map_size, > + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); > + igt_info("Unmapping VM mapping at addr 0x%llx, size %llu, ret=%d\n", > + (unsigned long long)state->vm_map_addr, > + (unsigned long long)state->map_size, > + ret); > + } > + > + /* Remove allocator offsets if set */ > + if (ahnd) { > + if (state->src_obj && state->src_obj->handle) { > + igt_debug("Removing allocator offset for src_obj handle %u\n", > + state->src_obj->handle); > + put_offset(ahnd, state->src_obj->handle); > + } > + if (state->comp_obj && state->comp_obj->handle) > + put_offset(ahnd, state->comp_obj->handle); > + igt_debug("Removed allocator offsets for src_obj and comp_obj if they existed\n"); > + if (state->bb) > + put_offset(ahnd, state->bb); > + igt_debug("Removed allocator offset for bb handle %u\n", state->bb); > + intel_allocator_bind(ahnd, 0, 0); > + igt_debug("SUCCESS : Cleared allocator bindings\n"); > + } > + > + /* Destroy blit objects */ > + if (state->src_obj) > + blt_destroy_object(xe, state->src_obj); > + if (state->comp_obj) > + blt_destroy_object(xe, state->comp_obj); > + igt_debug("SUCCESS : Destroyed blit objects if they existed\n"); > + > + /* Close bb handle(s) */ > + > + if (state->bb) { > + gem_close(xe, state->bb); > + igt_debug("SUCCESS : Close bb handle\n"); > + } > + > + /* Destroy VM */ > + if (state->vm) > + xe_vm_destroy(xe, state->vm); > + igt_debug("SUCCESS : Destroyed VM if it existed\n"); > + > + /* Clear fields to make it safe to call again */ > + memset(state, 0, sizeof(*state)); > + igt_debug("SUCCESS : Cleared state structure\n"); > + > + igt_debug("SUCCESS : Cleanup completed\n"); > +} > + > +/* Setup function: prepares state->src_obj, state->comp_obj, VM and initial map. > + * On any failure it calls vm_bind_decomp_test_setup() then igt_assert_f() to abort safely. > + */ > +static int vm_bind_decomp_test_setup(int xe, intel_ctx_t *ctx, uint64_t ahnd, > + u32 region_src, u32 region_comp, u32 width, u32 height, > + enum blt_tiling_type tiling, > + const struct test_config *config, > + bool is_gradient, > + bool use_fault_mode_vm, > + struct vm_bind_decomp_setup_resources *state) > +{ > + struct blt_copy_data blt = {}; > + struct blt_block_copy_data_ext ext = {}; > + u64 bb_size = xe_bb_size(xe, SZ_4K); > + u8 uc_mocs = intel_get_uc_mocs_index(xe); > + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; > + const u32 bpp = 32; > + int result = -1; > + uint32_t devid; > + > + igt_assert(state); > + memset(state, 0, sizeof(*state)); > + > + state->xe = xe; > + state->region_src = region_src; > + state->region_comp = region_comp; > + state->vm_map_addr = 0x30000000; > + state->size = (u64)width * height * 4; > + state->map_size = ALIGN(state->size, xe_get_default_alignment(xe)); > + > + /* Precondition checks - do these before allocating resources */ > + devid = intel_get_drm_devid(xe); > + igt_require(intel_gen(devid) >= 20); > + igt_require(xe_has_vram(xe)); > + igt_require(config->compression); > + igt_require(blt_uses_extended_block_copy(xe)); > + igt_require(blt_platform_has_flat_ccs_enabled(xe)); > + > + /* Create VM (FAULT_MODE requires LR_MODE) when requested by caller. */ > + if (use_fault_mode_vm) > + state->vm = xe_vm_create(xe, > + DRM_XE_VM_CREATE_FLAG_LR_MODE | > + DRM_XE_VM_CREATE_FLAG_FAULT_MODE, > + 0); > + else > + state->vm = xe_vm_create(xe, 0, 0); > + if (state->vm <= 0) { > + vm_bind_decomp_test_cleanup(xe, ahnd, state); > + igt_assert_f(false, "xe_vm_create() failed: %d\n", state->vm); > + } > + > + /* Create BB */ > + state->bb = xe_bo_create(xe, 0, bb_size, region_src, > + DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM); > + if (!state->bb) { > + vm_bind_decomp_test_cleanup(xe, ahnd, state); > + igt_assert_f(false, "xe_bo_create() for BB failed\n"); > + } > + > + /* Init blit + batch */ > + blt_copy_init(xe, &blt); > + blt_set_batch(&blt.bb, state->bb, bb_size, region_src); > + > + /* Create src (uncompressed) */ > + state->src_obj = blt_create_object(&blt, region_src, width, height, bpp, > + uc_mocs, T_LINEAR, COMPRESSION_DISABLED, > + comp_type, true); > + if (!state->src_obj || !state->src_obj->ptr) { > + vm_bind_decomp_test_cleanup(xe, ahnd, state); > + igt_assert_f(false, "failed to create or map src object\n"); > + } > + > + /* Fill deterministic compressible data */ > + if (is_gradient) { > + blt_surface_fill_rect(xe, state->src_obj, width, height); > + } else { > + fill_buffer_simple_pattern(state->src_obj->ptr, state->src_obj->size); > + igt_assert_f(verify_test_pattern(state->src_obj->ptr, > + state->src_obj->size, "SOURCE"), > + "Source pattern verification failed"); > + } > + /* Create compressed destination object */ > + state->comp_obj = blt_create_object(&blt, region_comp, width, height, bpp, > + uc_mocs, tiling, COMPRESSION_ENABLED, > + comp_type, true); > + if (!state->comp_obj) { > + vm_bind_decomp_test_cleanup(xe, ahnd, state); > + igt_assert_f(false, "failed to create compressed object\n"); > + } > + > + /* Compress using GPU: caller must provide ctx/ahnd */ > + blt.color_depth = CD_32bit; > + blt.print_bb = param.print_bb; > + blt_set_copy_object(&blt.src, state->src_obj); > + blt_set_copy_object(&blt.dst, state->comp_obj); > + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); > + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); > + > + /* Use provided ctx/ahnd */ > + igt_assert(ctx && ahnd); > + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); > + intel_ctx_xe_sync(ctx, true); > + > + /* Verify compression occurred when platform supports it */ > + if (blt_platform_has_flat_ccs_enabled(xe)) { > + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, > + ahnd, state->comp_obj); > + if (!is_compressed) { > + vm_bind_decomp_test_cleanup(xe, ahnd, state); > + igt_assert_f(false, > + "Surface compression failed, cannot test decompression\n"); > + } > + } > + > + /* store handles and PATs */ > + state->handle = state->comp_obj->handle; > + state->uncompressed_pat = intel_get_pat_idx_uc(xe); > + state->comp_pat = intel_get_pat_idx_uc_comp(xe); > + > + /* perform initial map using compressed pat */ > + result = __xe_vm_bind(xe, state->vm, 0, state->handle, 0, > + state->vm_map_addr, state->map_size, > + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, > + state->comp_pat, 0); > + if (result != 0) { > + vm_bind_decomp_test_cleanup(xe, ahnd, state); > + igt_assert_f(false, "initial __xe_vm_bind MAP failed: %d (%s)\n", > + result, strerror(errno)); > + } > + /* success */ > + return 0; > +} > + > +static void vm_bind_decompress_uapi_bad_params(int xe, > + intel_ctx_t *ctx, > + u64 ahnd, > + u32 region1, > + u32 region2, > + u32 width, > + u32 height, > + enum blt_tiling_type tiling, > + const struct test_config *config) > +{ > + struct vm_bind_decomp_setup_resources allocated_resources = {}; > + int ret = 0; > + void *mapped_data = MAP_FAILED; > + u32 *mapped_ptr = NULL; > + bool decompression_successful = false; > + uint64_t addr; > + u32 handle; > + u64 use_map_size; > + const uint64_t default_alignment = xe_get_default_alignment(xe); > + > + /* Build negative cases (runtime PAT lookups) */ > + struct vm_bind_decomp_neg_test_case bad_cases[8] = { > + /* PAT-based accepts (DECOMPRESS + Default PAT) */ > + /* In the __xe_vmbind() wrapper, > + * the DEFAULT_PAT_INDEX is updated to the appropriate GPU PAT index > + * for the default caching type, so this case should succeed with a valid PAT > + * even though we are passing the generic DEFAULT_PAT_INDEX value > + */ > + { "decompress-default-pat", DEFAULT_PAT_INDEX, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, > + > + /* PAT-based accepts (DECOMPRESS + GPU WB PAT) */ > + { "decompress-gpu-wb-pat", 0, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, > + > + /* PAT-based rejects (DECOMPRESS + Invalid PAT) */ > + { "decompress-invalid-pat", INVALID_PAT_INDEX, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, > + > + /* PAT-based rejects (DECOMPRESS + non-UC PAT) */ > + { "decompress-gpu-wt-pat", 0, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, > + > + /* PAT-based rejects (DECOMPRESS + compressed PAT) */ > + { "decompress-gpu-compressed-pat", 0, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, > + > + /* Range smaller than the uncompressed size (should be rejected for DECOMPRESS) */ > + { "decompress-small-range", 0, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, > + > + /* Misaligned virtual address for DECOMPRESS update */ > + { "decompress-misaligned-va", 0, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, > + > + /* Wrong BO handle supplied (invalid handle) */ > + { "decompress-wrong-bo-handle", 0, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, > + }; > + > + /* Setup (this asserts+cleans on failure) */ > + ret = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, > + width, height, tiling, config, false, false, > + &allocated_resources); > + igt_assert_eq(ret, 0); > + > + /* assign runtime values after setup */ > + addr = allocated_resources.vm_map_addr; > + handle = allocated_resources.handle; > + use_map_size = allocated_resources.map_size; > + > + print_buffer_data(allocated_resources.src_obj->ptr, > + min_t(size_t, 64, allocated_resources.size), > + "ORIGINAL", 4); > + print_buffer_data(allocated_resources.comp_obj->ptr, > + min_t(size_t, 64, allocated_resources.size), > + "COMPRESSED", 4); > + > + /* Fill platform-specific PAT lookups and runtime-dependent PATs */ > + bad_cases[1].pat = intel_get_pat_idx_wb(xe); > + bad_cases[3].pat = intel_get_pat_idx_wt(xe); > + bad_cases[4].pat = intel_get_pat_idx_uc_comp(xe); > + bad_cases[5].pat = allocated_resources.uncompressed_pat; > + bad_cases[6].pat = allocated_resources.uncompressed_pat; > + bad_cases[7].pat = allocated_resources.uncompressed_pat; > + > + /* Iterate the cases */ > + for (unsigned int i = 0; i < ARRAY_SIZE(bad_cases); i++) { > + const struct vm_bind_decomp_neg_test_case *test_variant = &bad_cases[i]; > + > + u32 use_pat = test_variant->pat; > + u32 flags = test_variant->flags; > + > + /* Reset to known good values before each iteration */ > + addr = allocated_resources.vm_map_addr; > + handle = allocated_resources.handle; > + use_map_size = allocated_resources.map_size; > + > + igt_info("\nVM_BIND variant: %s\n", test_variant->test_name); > + > + /* Specialize the case parameters */ > + if (!strcmp(test_variant->test_name, "decompress-small-range")) { > + use_map_size = allocated_resources.map_size - 1; > + igt_debug("allocated_resources.size=%llu, default_alignment=%llu\n", > + (unsigned long long)allocated_resources.size, > + (unsigned long long)default_alignment); > + } else if (!strcmp(test_variant->test_name, "decompress-misaligned-va")) { > + addr = allocated_resources.vm_map_addr + 1; /* deliberately misaligned */ > + > + } else if (!strcmp(test_variant->test_name, "decompress-wrong-bo-handle")) { > + /* flip some bits to make handle unlikely to be valid */ > + handle = allocated_resources.handle ^ 0xdeadbeef; > + } > + igt_debug("Issuing VM_BIND :addr=0x%llx map_size=%llu handle=%u pat=%u " > + "flags=0x%x for %s\n", > + (unsigned long long)addr, > + (unsigned long long)use_map_size, > + handle, use_pat, flags, test_variant->test_name); > + errno = 0; > + ret = __xe_vm_bind(xe, allocated_resources.vm, > + 0, /* engine */ > + handle, /* handle (may be invalid) */ > + 0, /* offset in BO */ > + addr, /* VA */ > + use_map_size, > + DRM_XE_VM_BIND_OP_MAP, /* update mapping */ > + flags, > + NULL, 0, 0, > + use_pat, > + 0); > + /* Evaluate outcome against expectation */ > + if (test_variant->expect_fail) { > + if (ret == 0) { > + /* Unexpected success — try to unmap and then fail the test (cleanup) */ > + igt_warn("VM_BIND unexpectedly SUCCEEDED for %s " > + "- attempting cleanup\n", > + test_variant->test_name); > + > + /* Attempt to unmap the mapping we may have created */ > + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, addr, > + use_map_size, DRM_XE_VM_BIND_OP_UNMAP, > + 0, NULL, 0, 0, 0, 0); > + > + /* Perform cleanup before asserting */ > + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); > + igt_assert_f(false, > + "VM_BIND expected failure but succeeded for %s", > + test_variant->test_name); > + } else { > + igt_info("VM_BIND rejected as expected for %s (errno=%d %s)\n", > + test_variant->test_name, errno, strerror(errno)); > + } > + } else { > + /* Expected path: VM_BIND must succeed, then data integrity is verified. */ > + if (ret != 0) { > + igt_warn("VM_BIND unexpectedly FAILED for %s: %d (%s)\n", > + test_variant->test_name, ret, strerror(errno)); > + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); > + igt_assert_f(false, "VM_BIND unexpected failure for %s", > + test_variant->test_name); > + } else { > + igt_info("VM_BIND succeeded for %s (as expected)\n", > + test_variant->test_name); > + if (!strcmp(test_variant->test_name, "decompress-default-pat") || > + !strcmp(test_variant->test_name, "decompress-gpu-wb-pat")) { > + /* Map the BO for CPU access using helper */ > + mapped_data = xe_bo_map(xe, allocated_resources.handle, > + allocated_resources.size); > + if (mapped_data == MAP_FAILED) { > + igt_warn("Mapping handle %u failed for verification\n", > + allocated_resources.handle); > + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); > + igt_assert_f(false, "Failed to map BO for verification"); > + } > + mapped_ptr = (uint32_t *)mapped_data; > + print_buffer_data(allocated_resources.src_obj->ptr, > + min_t(size_t, 64, > + allocated_resources.size), > + "ORIGINAL", 4); > + print_buffer_data(mapped_ptr, > + min_t(size_t, 64, > + allocated_resources.size), > + "DECOMPRESSED", 4); > + > + decompression_successful = > + verify_test_pattern(mapped_ptr, > + allocated_resources.size, > + "DECOMPRESSED"); > + if (!decompression_successful) > + igt_info("Decompression pattern verification " > + "FAILED for %s\n", > + test_variant->test_name); > + > + if (memcmp(mapped_ptr, > + allocated_resources.src_obj->ptr, > + allocated_resources.size) != 0) { > + igt_info("Decompressed data does not match " > + "original for %s\n", > + test_variant->test_name); > + print_buffer_data(mapped_ptr, > + min_t(size_t, 256, > + allocated_resources.size), > + "CURRENT_STATE", 4); > + print_buffer_data(allocated_resources.src_obj->ptr, > + min_t(size_t, 256, > + allocated_resources.size), > + "EXPECTED", 4); > + > + /* tidy mapping and do full cleanup before failing */ > + munmap(mapped_data, allocated_resources.size); > + vm_bind_decomp_test_cleanup(xe, ahnd, > + &allocated_resources); > + igt_assert_f(false, > + "Decompressed BO contents differ " > + "from original for %s", > + test_variant->test_name); > + } > + > + igt_info("Decompression content matches original for %s\n", > + test_variant->test_name); > + /* tidy up mapping */ > + munmap(mapped_data, allocated_resources.size); > + mapped_data = MAP_FAILED; > + mapped_ptr = NULL; > + } > + } > + } > + } > + > + /* final clean */ > + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); > +} > + > struct blt_copy3_data { > int xe; > struct blt_copy_object src; > @@ -1274,6 +1736,11 @@ static void single_copy(int xe, const struct test_config *config, > region1, region2, width, > height, tiling, config); > put_ahnd(ahnd); > + } else if (config->vm_bind_decompress_uapi_bad_params) { > + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); > + vm_bind_decompress_uapi_bad_params(xe, ctx, ahnd, region1, region2, > + width, height, tiling, config); > + put_ahnd(ahnd); > } else { > copyfns[copy_function].copyfn(xe, ctx, > region1, region2, > @@ -1569,7 +2036,19 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) > igt_subtest("vm-bind-fault-mode-decompress") { > struct test_config config = { .compression = true, > .vm_bind_fault_mode_decompress = true }; > + u32 region1 = system_memory(xe); > + u32 region2 = vram_if_possible(xe, 0); > + int tiling = T_LINEAR; > + int width = param.width; > + int height = param.height; > + > + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); > + } > > + igt_describe("Validate uAPI of VM_BIND with DECOMPRESS flag with bad params"); > + igt_subtest("vm-bind-decompress-uapi-bad-params") { > + struct test_config config = { .compression = true, > + .vm_bind_decompress_uapi_bad_params = true }; > u32 region1 = system_memory(xe); > u32 region2 = vram_if_possible(xe, 0); > int tiling = T_LINEAR; ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp 2026-06-15 17:02 ` Matthew Auld @ 2026-06-15 17:06 ` Matthew Auld 2026-06-22 5:24 ` Balasubramanyam, Smitha 0 siblings, 1 reply; 21+ messages in thread From: Matthew Auld @ 2026-06-15 17:06 UTC (permalink / raw) To: Smitha Balasubramanyam, igt-dev, zbigniew.kempczynski On 15/06/2026 18:02, Matthew Auld wrote: > On 15/06/2026 13:31, Smitha Balasubramanyam wrote: >> Introduce data structures and helper utilities used by the VM >> negative tests to validate the VM_Bind Decomp feature >> >> These helpers provide resource management and setup/cleanup >> logic that simplifies the implementation of the test cases >> introduced in subsequent patches. >> >> One functional subtest is introduced in this patch. >> This test verifies handling of invalid UAPI Params in Non-fault Mode. > > Why is there so much code being added in this series? The negative tests > should just be checking that an ioctl gets rejected, when doing various > bogus things? Series is adding like +1000 lines of code? What am I missing? Also, if we do need all of this, can we not extend the existing code in some way to handle the negative tests? > >> >> Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> >> --- >> tests/intel/xe_ccs.c | 479 +++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 479 insertions(+) >> >> diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c >> index 4c5fe0311..e1dc80659 100644 >> --- a/tests/intel/xe_ccs.c >> +++ b/tests/intel/xe_ccs.c >> @@ -68,10 +68,17 @@ >> * >> * SUBTEST: vm-bind-fault-mode-decompress >> * Description: Validate VM_BIND with DECOMPRESS flag functionality >> in fault mode >> + * >> + * SUBTEST: vm-bind-decompress-uapi-bad-params >> + * Description: UAPI negative test — attempt VM_BIND with a >> combination of invalid params >> */ >> IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without >> flatccs compression on Xe"); >> +#ifndef INVALID_PAT_INDEX >> +#define INVALID_PAT_INDEX 10U >> +#endif >> + >> static struct param { >> int compression_format; >> int tiling; >> @@ -100,6 +107,7 @@ struct test_config { >> bool suspend_resume; >> bool vm_bind_decompress; >> bool vm_bind_fault_mode_decompress; >> + bool vm_bind_decompress_uapi_bad_params; >> int width_increment; >> int width_steps; >> int overwrite_width; >> @@ -371,6 +379,460 @@ static void surf_copy(int xe, >> "restoring source ccs data\n"); >> } >> +/* VM_BIND DECOMPRESS negative-test case definitions and shared setup >> state */ >> +struct vm_bind_decomp_neg_test_case { >> + const char *test_name; >> + uint32_t pat; /* PAT index passed to __xe_vm_bind() */ >> + uint32_t flags; /* DRM_XE_VM_BIND_FLAG_* */ >> + bool expect_fail; /* true => we expect kernel to reject >> (result != 0) */ >> +}; >> + >> +struct vm_bind_decomp_setup_resources { >> + int xe; >> + u32 vm; >> + u64 vm_map_addr; >> + u64 map_size; >> + u32 handle; /* compressed destination BO handle */ >> + u32 bb; >> + u32 region_src; >> + u32 region_comp; >> + u64 size; >> + uint32_t comp_pat; >> + uint32_t uncompressed_pat; >> + >> + /* objects to destroy/map bookkeeping */ >> + struct blt_copy_object *src_obj; >> + struct blt_copy_object *comp_obj; >> +}; >> + >> +/* Cleanup for VM_Bind Decomp Negative test cases */ >> +static void vm_bind_decomp_test_cleanup(int xe, uint64_t ahnd, >> + struct vm_bind_decomp_setup_resources *state) >> +{ >> + /* Return if there is nothing to clean up. */ >> + if (!state) >> + return; >> + >> + /* If a VM mapping remains, try to unmap it. */ >> + if (state->vm && state->vm_map_addr && state->map_size) { >> + int ret = __xe_vm_bind(xe, state->vm, 0, 0, 0, >> + state->vm_map_addr, state->map_size, >> + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); >> + igt_info("Unmapping VM mapping at addr 0x%llx, size %llu, >> ret=%d\n", >> + (unsigned long long)state->vm_map_addr, >> + (unsigned long long)state->map_size, >> + ret); >> + } >> + >> + /* Remove allocator offsets if set */ >> + if (ahnd) { >> + if (state->src_obj && state->src_obj->handle) { >> + igt_debug("Removing allocator offset for src_obj handle >> %u\n", >> + state->src_obj->handle); >> + put_offset(ahnd, state->src_obj->handle); >> + } >> + if (state->comp_obj && state->comp_obj->handle) >> + put_offset(ahnd, state->comp_obj->handle); >> + igt_debug("Removed allocator offsets for src_obj and comp_obj >> if they existed\n"); >> + if (state->bb) >> + put_offset(ahnd, state->bb); >> + igt_debug("Removed allocator offset for bb handle %u\n", >> state->bb); >> + intel_allocator_bind(ahnd, 0, 0); >> + igt_debug("SUCCESS : Cleared allocator bindings\n"); >> + } >> + >> + /* Destroy blit objects */ >> + if (state->src_obj) >> + blt_destroy_object(xe, state->src_obj); >> + if (state->comp_obj) >> + blt_destroy_object(xe, state->comp_obj); >> + igt_debug("SUCCESS : Destroyed blit objects if they existed\n"); >> + >> + /* Close bb handle(s) */ >> + >> + if (state->bb) { >> + gem_close(xe, state->bb); >> + igt_debug("SUCCESS : Close bb handle\n"); >> + } >> + >> + /* Destroy VM */ >> + if (state->vm) >> + xe_vm_destroy(xe, state->vm); >> + igt_debug("SUCCESS : Destroyed VM if it existed\n"); >> + >> + /* Clear fields to make it safe to call again */ >> + memset(state, 0, sizeof(*state)); >> + igt_debug("SUCCESS : Cleared state structure\n"); >> + >> + igt_debug("SUCCESS : Cleanup completed\n"); >> +} >> + >> +/* Setup function: prepares state->src_obj, state->comp_obj, VM and >> initial map. >> + * On any failure it calls vm_bind_decomp_test_setup() then >> igt_assert_f() to abort safely. >> + */ >> +static int vm_bind_decomp_test_setup(int xe, intel_ctx_t *ctx, >> uint64_t ahnd, >> + u32 region_src, u32 region_comp, u32 width, u32 >> height, >> + enum blt_tiling_type tiling, >> + const struct test_config *config, >> + bool is_gradient, >> + bool use_fault_mode_vm, >> + struct vm_bind_decomp_setup_resources *state) >> +{ >> + struct blt_copy_data blt = {}; >> + struct blt_block_copy_data_ext ext = {}; >> + u64 bb_size = xe_bb_size(xe, SZ_4K); >> + u8 uc_mocs = intel_get_uc_mocs_index(xe); >> + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; >> + const u32 bpp = 32; >> + int result = -1; >> + uint32_t devid; >> + >> + igt_assert(state); >> + memset(state, 0, sizeof(*state)); >> + >> + state->xe = xe; >> + state->region_src = region_src; >> + state->region_comp = region_comp; >> + state->vm_map_addr = 0x30000000; >> + state->size = (u64)width * height * 4; >> + state->map_size = ALIGN(state->size, xe_get_default_alignment(xe)); >> + >> + /* Precondition checks - do these before allocating resources */ >> + devid = intel_get_drm_devid(xe); >> + igt_require(intel_gen(devid) >= 20); >> + igt_require(xe_has_vram(xe)); >> + igt_require(config->compression); >> + igt_require(blt_uses_extended_block_copy(xe)); >> + igt_require(blt_platform_has_flat_ccs_enabled(xe)); >> + >> + /* Create VM (FAULT_MODE requires LR_MODE) when requested by >> caller. */ >> + if (use_fault_mode_vm) >> + state->vm = xe_vm_create(xe, >> + DRM_XE_VM_CREATE_FLAG_LR_MODE | >> + DRM_XE_VM_CREATE_FLAG_FAULT_MODE, >> + 0); >> + else >> + state->vm = xe_vm_create(xe, 0, 0); >> + if (state->vm <= 0) { >> + vm_bind_decomp_test_cleanup(xe, ahnd, state); >> + igt_assert_f(false, "xe_vm_create() failed: %d\n", state->vm); >> + } >> + >> + /* Create BB */ >> + state->bb = xe_bo_create(xe, 0, bb_size, region_src, >> + DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM); >> + if (!state->bb) { >> + vm_bind_decomp_test_cleanup(xe, ahnd, state); >> + igt_assert_f(false, "xe_bo_create() for BB failed\n"); >> + } >> + >> + /* Init blit + batch */ >> + blt_copy_init(xe, &blt); >> + blt_set_batch(&blt.bb, state->bb, bb_size, region_src); >> + >> + /* Create src (uncompressed) */ >> + state->src_obj = blt_create_object(&blt, region_src, width, >> height, bpp, >> + uc_mocs, T_LINEAR, COMPRESSION_DISABLED, >> + comp_type, true); >> + if (!state->src_obj || !state->src_obj->ptr) { >> + vm_bind_decomp_test_cleanup(xe, ahnd, state); >> + igt_assert_f(false, "failed to create or map src object\n"); >> + } >> + >> + /* Fill deterministic compressible data */ >> + if (is_gradient) { >> + blt_surface_fill_rect(xe, state->src_obj, width, height); >> + } else { >> + fill_buffer_simple_pattern(state->src_obj->ptr, state- >> >src_obj->size); >> + igt_assert_f(verify_test_pattern(state->src_obj->ptr, >> + state->src_obj->size, "SOURCE"), >> + "Source pattern verification failed"); >> + } >> + /* Create compressed destination object */ >> + state->comp_obj = blt_create_object(&blt, region_comp, width, >> height, bpp, >> + uc_mocs, tiling, COMPRESSION_ENABLED, >> + comp_type, true); >> + if (!state->comp_obj) { >> + vm_bind_decomp_test_cleanup(xe, ahnd, state); >> + igt_assert_f(false, "failed to create compressed object\n"); >> + } >> + >> + /* Compress using GPU: caller must provide ctx/ahnd */ >> + blt.color_depth = CD_32bit; >> + blt.print_bb = param.print_bb; >> + blt_set_copy_object(&blt.src, state->src_obj); >> + blt_set_copy_object(&blt.dst, state->comp_obj); >> + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); >> + blt_set_object_ext(&ext.dst, param.compression_format, width, >> height, SURFACE_TYPE_2D); >> + >> + /* Use provided ctx/ahnd */ >> + igt_assert(ctx && ahnd); >> + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); >> + intel_ctx_xe_sync(ctx, true); >> + >> + /* Verify compression occurred when platform supports it */ >> + if (blt_platform_has_flat_ccs_enabled(xe)) { >> + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, >> + ahnd, state->comp_obj); >> + if (!is_compressed) { >> + vm_bind_decomp_test_cleanup(xe, ahnd, state); >> + igt_assert_f(false, >> + "Surface compression failed, cannot test >> decompression\n"); >> + } >> + } >> + >> + /* store handles and PATs */ >> + state->handle = state->comp_obj->handle; >> + state->uncompressed_pat = intel_get_pat_idx_uc(xe); >> + state->comp_pat = intel_get_pat_idx_uc_comp(xe); >> + >> + /* perform initial map using compressed pat */ >> + result = __xe_vm_bind(xe, state->vm, 0, state->handle, 0, >> + state->vm_map_addr, state->map_size, >> + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, >> + state->comp_pat, 0); >> + if (result != 0) { >> + vm_bind_decomp_test_cleanup(xe, ahnd, state); >> + igt_assert_f(false, "initial __xe_vm_bind MAP failed: %d >> (%s)\n", >> + result, strerror(errno)); >> + } >> + /* success */ >> + return 0; >> +} >> + >> +static void vm_bind_decompress_uapi_bad_params(int xe, >> + intel_ctx_t *ctx, >> + u64 ahnd, >> + u32 region1, >> + u32 region2, >> + u32 width, >> + u32 height, >> + enum blt_tiling_type tiling, >> + const struct test_config *config) >> +{ >> + struct vm_bind_decomp_setup_resources allocated_resources = {}; >> + int ret = 0; >> + void *mapped_data = MAP_FAILED; >> + u32 *mapped_ptr = NULL; >> + bool decompression_successful = false; >> + uint64_t addr; >> + u32 handle; >> + u64 use_map_size; >> + const uint64_t default_alignment = xe_get_default_alignment(xe); >> + >> + /* Build negative cases (runtime PAT lookups) */ >> + struct vm_bind_decomp_neg_test_case bad_cases[8] = { >> + /* PAT-based accepts (DECOMPRESS + Default PAT) */ >> + /* In the __xe_vmbind() wrapper, >> + * the DEFAULT_PAT_INDEX is updated to the appropriate GPU >> PAT index >> + * for the default caching type, so this case should succeed >> with a valid PAT >> + * even though we are passing the generic DEFAULT_PAT_INDEX >> value >> + */ >> + { "decompress-default-pat", DEFAULT_PAT_INDEX, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, >> + >> + /* PAT-based accepts (DECOMPRESS + GPU WB PAT) */ >> + { "decompress-gpu-wb-pat", 0, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, >> + >> + /* PAT-based rejects (DECOMPRESS + Invalid PAT) */ >> + { "decompress-invalid-pat", INVALID_PAT_INDEX, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, >> + >> + /* PAT-based rejects (DECOMPRESS + non-UC PAT) */ >> + { "decompress-gpu-wt-pat", 0, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, >> + >> + /* PAT-based rejects (DECOMPRESS + compressed PAT) */ >> + { "decompress-gpu-compressed-pat", 0, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, >> + >> + /* Range smaller than the uncompressed size (should be >> rejected for DECOMPRESS) */ >> + { "decompress-small-range", 0, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, >> + >> + /* Misaligned virtual address for DECOMPRESS update */ >> + { "decompress-misaligned-va", 0, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, >> + >> + /* Wrong BO handle supplied (invalid handle) */ >> + { "decompress-wrong-bo-handle", 0, >> + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, >> + }; >> + >> + /* Setup (this asserts+cleans on failure) */ >> + ret = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, >> + width, height, tiling, config, false, false, >> + &allocated_resources); >> + igt_assert_eq(ret, 0); >> + >> + /* assign runtime values after setup */ >> + addr = allocated_resources.vm_map_addr; >> + handle = allocated_resources.handle; >> + use_map_size = allocated_resources.map_size; >> + >> + print_buffer_data(allocated_resources.src_obj->ptr, >> + min_t(size_t, 64, allocated_resources.size), >> + "ORIGINAL", 4); >> + print_buffer_data(allocated_resources.comp_obj->ptr, >> + min_t(size_t, 64, allocated_resources.size), >> + "COMPRESSED", 4); >> + >> + /* Fill platform-specific PAT lookups and runtime-dependent PATs */ >> + bad_cases[1].pat = intel_get_pat_idx_wb(xe); >> + bad_cases[3].pat = intel_get_pat_idx_wt(xe); >> + bad_cases[4].pat = intel_get_pat_idx_uc_comp(xe); >> + bad_cases[5].pat = allocated_resources.uncompressed_pat; >> + bad_cases[6].pat = allocated_resources.uncompressed_pat; >> + bad_cases[7].pat = allocated_resources.uncompressed_pat; >> + >> + /* Iterate the cases */ >> + for (unsigned int i = 0; i < ARRAY_SIZE(bad_cases); i++) { >> + const struct vm_bind_decomp_neg_test_case *test_variant = >> &bad_cases[i]; >> + >> + u32 use_pat = test_variant->pat; >> + u32 flags = test_variant->flags; >> + >> + /* Reset to known good values before each iteration */ >> + addr = allocated_resources.vm_map_addr; >> + handle = allocated_resources.handle; >> + use_map_size = allocated_resources.map_size; >> + >> + igt_info("\nVM_BIND variant: %s\n", test_variant->test_name); >> + >> + /* Specialize the case parameters */ >> + if (!strcmp(test_variant->test_name, "decompress-small- >> range")) { >> + use_map_size = allocated_resources.map_size - 1; >> + igt_debug("allocated_resources.size=%llu, >> default_alignment=%llu\n", >> + (unsigned long long)allocated_resources.size, >> + (unsigned long long)default_alignment); >> + } else if (!strcmp(test_variant->test_name, "decompress- >> misaligned-va")) { >> + addr = allocated_resources.vm_map_addr + 1; /* >> deliberately misaligned */ >> + >> + } else if (!strcmp(test_variant->test_name, "decompress- >> wrong-bo-handle")) { >> + /* flip some bits to make handle unlikely to be valid */ >> + handle = allocated_resources.handle ^ 0xdeadbeef; >> + } >> + igt_debug("Issuing VM_BIND :addr=0x%llx map_size=%llu handle=%u >> pat=%u " >> + "flags=0x%x for %s\n", >> + (unsigned long long)addr, >> + (unsigned long long)use_map_size, >> + handle, use_pat, flags, test_variant->test_name); >> + errno = 0; >> + ret = __xe_vm_bind(xe, allocated_resources.vm, >> + 0, /* engine */ >> + handle, /* handle (may be invalid) */ >> + 0, /* offset in BO */ >> + addr, /* VA */ >> + use_map_size, >> + DRM_XE_VM_BIND_OP_MAP, /* update mapping */ >> + flags, >> + NULL, 0, 0, >> + use_pat, >> + 0); >> + /* Evaluate outcome against expectation */ >> + if (test_variant->expect_fail) { >> + if (ret == 0) { >> + /* Unexpected success — try to unmap and then fail the >> test (cleanup) */ >> + igt_warn("VM_BIND unexpectedly SUCCEEDED for %s " >> + "- attempting cleanup\n", >> + test_variant->test_name); >> + >> + /* Attempt to unmap the mapping we may have created */ >> + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, addr, >> + use_map_size, DRM_XE_VM_BIND_OP_UNMAP, >> + 0, NULL, 0, 0, 0, 0); >> + >> + /* Perform cleanup before asserting */ >> + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); >> + igt_assert_f(false, >> + "VM_BIND expected failure but succeeded for %s", >> + test_variant->test_name); >> + } else { >> + igt_info("VM_BIND rejected as expected for %s (errno=%d >> %s)\n", >> + test_variant->test_name, errno, strerror(errno)); >> + } >> + } else { >> + /* Expected path: VM_BIND must succeed, then data integrity >> is verified. */ >> + if (ret != 0) { >> + igt_warn("VM_BIND unexpectedly FAILED for %s: %d (%s)\n", >> + test_variant->test_name, ret, strerror(errno)); >> + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); >> + igt_assert_f(false, "VM_BIND unexpected failure for %s", >> + test_variant->test_name); >> + } else { >> + igt_info("VM_BIND succeeded for %s (as expected)\n", >> + test_variant->test_name); >> + if (!strcmp(test_variant->test_name, "decompress-default- >> pat") || >> + !strcmp(test_variant->test_name, "decompress-gpu-wb- >> pat")) { >> + /* Map the BO for CPU access using helper */ >> + mapped_data = xe_bo_map(xe, allocated_resources.handle, >> + allocated_resources.size); >> + if (mapped_data == MAP_FAILED) { >> + igt_warn("Mapping handle %u failed for >> verification\n", >> + allocated_resources.handle); >> + vm_bind_decomp_test_cleanup(xe, ahnd, >> &allocated_resources); >> + igt_assert_f(false, "Failed to map BO for >> verification"); >> + } >> + mapped_ptr = (uint32_t *)mapped_data; >> + print_buffer_data(allocated_resources.src_obj->ptr, >> + min_t(size_t, 64, >> + allocated_resources.size), >> + "ORIGINAL", 4); >> + print_buffer_data(mapped_ptr, >> + min_t(size_t, 64, >> + allocated_resources.size), >> + "DECOMPRESSED", 4); >> + >> + decompression_successful = >> + verify_test_pattern(mapped_ptr, >> + allocated_resources.size, >> + "DECOMPRESSED"); >> + if (!decompression_successful) >> + igt_info("Decompression pattern verification " >> + "FAILED for %s\n", >> + test_variant->test_name); >> + >> + if (memcmp(mapped_ptr, >> + allocated_resources.src_obj->ptr, >> + allocated_resources.size) != 0) { >> + igt_info("Decompressed data does not match " >> + "original for %s\n", >> + test_variant->test_name); >> + print_buffer_data(mapped_ptr, >> + min_t(size_t, 256, >> + allocated_resources.size), >> + "CURRENT_STATE", 4); >> + print_buffer_data(allocated_resources.src_obj->ptr, >> + min_t(size_t, 256, >> + allocated_resources.size), >> + "EXPECTED", 4); >> + >> + /* tidy mapping and do full cleanup before >> failing */ >> + munmap(mapped_data, allocated_resources.size); >> + vm_bind_decomp_test_cleanup(xe, ahnd, >> + &allocated_resources); >> + igt_assert_f(false, >> + "Decompressed BO contents differ " >> + "from original for %s", >> + test_variant->test_name); >> + } >> + >> + igt_info("Decompression content matches original for >> %s\n", >> + test_variant->test_name); >> + /* tidy up mapping */ >> + munmap(mapped_data, allocated_resources.size); >> + mapped_data = MAP_FAILED; >> + mapped_ptr = NULL; >> + } >> + } >> + } >> + } >> + >> + /* final clean */ >> + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); >> +} >> + >> struct blt_copy3_data { >> int xe; >> struct blt_copy_object src; >> @@ -1274,6 +1736,11 @@ static void single_copy(int xe, const struct >> test_config *config, >> region1, region2, width, >> height, tiling, config); >> put_ahnd(ahnd); >> + } else if (config->vm_bind_decompress_uapi_bad_params) { >> + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); >> + vm_bind_decompress_uapi_bad_params(xe, ctx, ahnd, region1, >> region2, >> + width, height, tiling, config); >> + put_ahnd(ahnd); >> } else { >> copyfns[copy_function].copyfn(xe, ctx, >> region1, region2, >> @@ -1569,7 +2036,19 @@ int igt_main_args("bf:pst:W:H:", NULL, >> help_str, opt_handler, NULL) >> igt_subtest("vm-bind-fault-mode-decompress") { >> struct test_config config = { .compression = true, >> .vm_bind_fault_mode_decompress = true }; >> + u32 region1 = system_memory(xe); >> + u32 region2 = vram_if_possible(xe, 0); >> + int tiling = T_LINEAR; >> + int width = param.width; >> + int height = param.height; >> + >> + single_copy(xe, &config, region1, region2, width, height, >> tiling, BLOCK_COPY); >> + } >> + igt_describe("Validate uAPI of VM_BIND with DECOMPRESS flag with >> bad params"); >> + igt_subtest("vm-bind-decompress-uapi-bad-params") { >> + struct test_config config = { .compression = true, >> + .vm_bind_decompress_uapi_bad_params = true }; >> u32 region1 = system_memory(xe); >> u32 region2 = vram_if_possible(xe, 0); >> int tiling = T_LINEAR; > ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp 2026-06-15 17:06 ` Matthew Auld @ 2026-06-22 5:24 ` Balasubramanyam, Smitha 2026-06-22 14:50 ` Matthew Auld 0 siblings, 1 reply; 21+ messages in thread From: Balasubramanyam, Smitha @ 2026-06-22 5:24 UTC (permalink / raw) To: Auld, Matthew, igt-dev@lists.freedesktop.org, Kempczynski, Zbigniew On 15/06/2026 18:02, Matthew Auld wrote: > On 15/06/2026 13:31, Smitha Balasubramanyam wrote: >> Introduce data structures and helper utilities used by the VM >> negative tests to validate the VM_Bind Decomp feature >> >> These helpers provide resource management and setup/cleanup logic >> that simplifies the implementation of the test cases introduced in >> subsequent patches. >> >> One functional subtest is introduced in this patch. >> This test verifies handling of invalid UAPI Params in Non-fault Mode. > > Why is there so much code being added in this series? The negative > tests should just be checking that an ioctl gets rejected, when doing > various bogus things? Series is adding like +1000 lines of code? What am I missing? >Also, if we do need all of this, can we not extend the existing code in some way to handle the negative tests? Thanks for the feedback. The major bloat in patch 1 is coming from the two positive cases I included in the bad-params test (decompress-default-pat and decompress-gpu-wb-pat). For those cases, I was not just checking ioctl outcome, but also doing full mmap + pattern verification + memcmp, which is really positive-test coverage. I plan to move those out into a separate follow-up patch. For the fault-mode bad-params case, the invalid parameter combinations themselves are the same as the non-fault-mode case. I split them in v1 mainly because that follows the current pattern already present in xe_ccs.c, where fault and non-fault positive paths are separate. To reduce duplication, I plan to fold the fault-mode and non-fault-mode bad-params coverage into a single implementation driven by a config flag, with separate subtest entry points. Please let me know if this is in the right direction. I initially wanted to keep the negative test self-contained, but I also see that the setup is almost common between the positive and negative paths. So, to contain the code bloat, I plan to refactor the existing positive non-fault case first and then reuse the common setup pieces from there. Please let me know if this is in the right direction. ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp 2026-06-22 5:24 ` Balasubramanyam, Smitha @ 2026-06-22 14:50 ` Matthew Auld 0 siblings, 0 replies; 21+ messages in thread From: Matthew Auld @ 2026-06-22 14:50 UTC (permalink / raw) To: Balasubramanyam, Smitha, igt-dev@lists.freedesktop.org, Kempczynski, Zbigniew On 22/06/2026 06:24, Balasubramanyam, Smitha wrote: > > On 15/06/2026 18:02, Matthew Auld wrote: >> On 15/06/2026 13:31, Smitha Balasubramanyam wrote: >>> Introduce data structures and helper utilities used by the VM >>> negative tests to validate the VM_Bind Decomp feature >>> >>> These helpers provide resource management and setup/cleanup logic >>> that simplifies the implementation of the test cases introduced in >>> subsequent patches. >>> >>> One functional subtest is introduced in this patch. >>> This test verifies handling of invalid UAPI Params in Non-fault Mode. >> >> Why is there so much code being added in this series? The negative >> tests should just be checking that an ioctl gets rejected, when doing >> various bogus things? Series is adding like +1000 lines of code? What am I missing? > >> Also, if we do need all of this, can we not extend the existing code in some way to handle the negative tests? > > Thanks for the feedback. > > The major bloat in patch 1 is coming from the two positive cases I included in the bad-params test (decompress-default-pat and decompress-gpu-wb-pat). > For those cases, I was not just checking ioctl outcome, but also doing full mmap + pattern verification + memcmp, which is really positive-test coverage. > I plan to move those out into a separate follow-up patch. > > For the fault-mode bad-params case, the invalid parameter combinations themselves are the same as the non-fault-mode case. > I split them in v1 mainly because that follows the current pattern already present in xe_ccs.c, where fault and non-fault positive paths are separate. > To reduce duplication, I plan to fold the fault-mode and non-fault-mode bad-params coverage into a single implementation driven by a config flag, > with separate subtest entry points. Please let me know if this is in the right direction. > > I initially wanted to keep the negative test self-contained, but I also see that the setup is almost common between the positive and negative paths. > So, to contain the code bloat, I plan to refactor the existing positive non-fault case first and then reuse the common setup pieces from there. > Please let me know if this is in the right direction. > Yeah, code re-use would be good, if possible. I think to make this easier to review it might make sense to just keep the scope to negative tests, and maybe any extra coverage as another series, if possible. Or at the very least split out more stuff into separate patches. > > ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test 2026-06-15 12:31 ` [PATCH v2 0/3] " Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam @ 2026-06-15 12:31 ` Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam 2 siblings, 0 replies; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-06-15 12:31 UTC (permalink / raw) To: igt-dev, zbigniew.kempczynski Add a helper to trigger page-fault writes along with a negative testcase covering invalid UAPI handling in fault mode. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 361 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 361 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index e1dc80659..9a4fa36e1 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -71,6 +71,10 @@ * * SUBTEST: vm-bind-decompress-uapi-bad-params * Description: UAPI negative test — attempt VM_BIND with a combination of invalid params + * + * SUBTEST: vm-bind-decompress-uapi-bad-params-fault-mode + * Description: UAPI negative test attempt VM_BIND with a combination of + * invalid params - fault mode */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); @@ -108,6 +112,7 @@ struct test_config { bool vm_bind_decompress; bool vm_bind_fault_mode_decompress; bool vm_bind_decompress_uapi_bad_params; + bool vm_bind_decompress_uapi_bad_params_fault_mode; int width_increment; int width_steps; int overwrite_width; @@ -833,6 +838,343 @@ static void vm_bind_decompress_uapi_bad_params(int xe, vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); } +/* Helper: submit a tiny GPU batch that writes an immediate dword to the + * provided VA. This forces the kernel to fault in / decompress pages + * for that VA. Uses the provided `ctx` and `ahnd` (caller should have + * created/validated these). + */ +static void trigger_page_fault_write(int xe, intel_ctx_t *ctx, + uint64_t vm_map_addr, + uint64_t map_size, + uint32_t region) +{ + struct drm_xe_exec exec = {}; + struct drm_xe_sync exec_sync = {}; + const u64 vm_alignment = xe_get_default_alignment(xe); + const size_t ufence_bo_size = SZ_4K; + u64 cmd_vm_addr = 0; + u64 ufence_vm_addr = 0; + u64 *ufence_map = MAP_FAILED; + u32 cmd_bo = 0; + u32 ufence_bo = 0; + u32 *cmdp = MAP_FAILED; + int ret; + + /* Create command and fence BOs, then map them directly into the target VM. */ + cmd_bo = xe_bo_create(xe, 0, SZ_4K, region, 0); + igt_assert_f(cmd_bo, "failed to create cmd_bo\n"); + ufence_bo = xe_bo_create_caching(xe, 0, ufence_bo_size, + system_memory(xe), 0, + DRM_XE_GEM_CPU_CACHING_WC); + igt_assert_f(ufence_bo, "failed to create ufence_bo\n"); + + /* Map the BO to write the batch */ + cmdp = xe_bo_map(xe, cmd_bo, SZ_4K); + igt_assert_f(cmdp != MAP_FAILED, "xe_bo_map cmd_bo failed\n"); + ufence_map = xe_bo_map(xe, ufence_bo, ufence_bo_size); + igt_assert_f(ufence_map != MAP_FAILED, "xe_bo_map ufence_bo failed\n"); + memset(ufence_map, 0, ufence_bo_size); + + cmd_vm_addr = ALIGN(vm_map_addr + map_size, vm_alignment); + ufence_vm_addr = ALIGN(cmd_vm_addr + SZ_4K, vm_alignment); + + ret = __xe_vm_bind(xe, ctx->vm, 0, cmd_bo, 0, cmd_vm_addr, SZ_4K, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + DEFAULT_PAT_INDEX, 0); + igt_assert_eq(ret, 0); + ret = __xe_vm_bind(xe, ctx->vm, 0, ufence_bo, 0, ufence_vm_addr, ufence_bo_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + DEFAULT_PAT_INDEX, 0); + igt_assert_eq(ret, 0); + + /* Build a tiny batch: MI_STORE_DWORD_IMM_GEN4 dst=vm_map_addr, value=0xDEADBEEF */ + cmdp[0] = MI_STORE_DWORD_IMM_GEN4; + cmdp[1] = lower_32_bits(vm_map_addr); + cmdp[2] = upper_32_bits(vm_map_addr); + cmdp[3] = 0xDEADBEEF; + cmdp[4] = MI_BATCH_BUFFER_END; + + /* Debug dump of the first few dwords in the fault-trigger batch. */ + igt_debug("BB dump: cmd_bo=%u cmd_off=0x%llx region=%u vm=%u execq=%u", + cmd_bo, (unsigned long long)cmd_vm_addr, region, + ctx->vm, ctx->exec_queue); + for (int i = 0; i < 8; i++) + igt_debug(" bb[%02d]=0x%08x", i, cmdp[i]); + igt_debug("\n"); + + /* Dump the first few dwords of the BB (do this BEFORE munmap) */ + igt_info("BB dump: cmd_bo=%u cmd_off=0x%llx region=%u vm=%u execq=%u", + cmd_bo, (unsigned long long)cmd_vm_addr, region, + ctx->vm, ctx->exec_queue); + for (int i = 0; i < 8; i++) + igt_info(" bb[%02d]=0x%08x", i, cmdp[i]); + + /* Make CPU writes visible to GPU */ + munmap(cmdp, SZ_4K); + cmdp = MAP_FAILED; + + /* Submit the batch directly. */ + memset(&exec, 0, sizeof(exec)); + exec.exec_queue_id = ctx->exec_queue; + exec.address = cmd_vm_addr; + exec.num_batch_buffer = 1; + + memset(&exec_sync, 0, sizeof(exec_sync)); + exec_sync.type = DRM_XE_SYNC_TYPE_USER_FENCE; + exec_sync.flags = DRM_XE_SYNC_FLAG_SIGNAL; + exec_sync.addr = ufence_vm_addr; + exec_sync.timeline_value = 1ULL; + exec.num_syncs = 1; + exec.syncs = to_user_pointer(&exec_sync); + + igt_info("Submitting faulting batch to write to VA 0x%llx\n", + (unsigned long long)vm_map_addr); + igt_debug("Submitting faulting batch to write to VA 0x%llx\n", + (unsigned long long)vm_map_addr); + ret = igt_ioctl(xe, DRM_IOCTL_XE_EXEC, &exec); + igt_assert_f(ret == 0, "EXEC ioctl failed: %d (%s)\n", ret, strerror(errno)); + + xe_wait_ufence(xe, ufence_map, 1ULL, ctx->exec_queue, NSEC_PER_SEC); + igt_assert_eq_u64(ufence_map[0], 1ULL); + + /* Cleanup */ + ret = __xe_vm_bind(xe, ctx->vm, 0, 0, 0, cmd_vm_addr, SZ_4K, + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); + igt_assert_eq(ret, 0); + ret = __xe_vm_bind(xe, ctx->vm, 0, 0, 0, ufence_vm_addr, ufence_bo_size, + DRM_XE_VM_BIND_OP_UNMAP, 0, NULL, 0, 0, 0, 0); + igt_assert_eq(ret, 0); + + munmap(ufence_map, ufence_bo_size); + gem_close(xe, cmd_bo); + gem_close(xe, ufence_bo); + + igt_info("Faulting write batch completed successfully\n"); +} + +/* Fault-mode variant of vm_bind_decompress_uapi_bad_params. + * It reuses your bad_cases but, for expected-success cases, triggers + * a GPU write to the mapped VA to force the kernel page-fault/decompress path. + */ +static void vm_bind_decompress_uapi_bad_params_fault_mode(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + enum blt_tiling_type tiling, + const struct test_config *config) +{ + struct vm_bind_decomp_setup_resources allocated_resources = {}; + struct drm_xe_engine_class_instance inst = { + .engine_class = DRM_XE_ENGINE_CLASS_RENDER, + }; + intel_ctx_t *fault_ctx = NULL; + u32 fault_exec_queue = 0; + int ret = 0; + bool pattern_matches; + void *mapped_data = MAP_FAILED; + u64 addr; + u32 handle; + u64 use_map_size; + const uint64_t default_alignment = xe_get_default_alignment(xe); + struct vm_bind_decomp_neg_test_case bad_cases[8] = { + /* PAT-based accepts (DECOMPRESS + Default PAT) */ + { "decompress-default-pat", DEFAULT_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based accepts (DECOMPRESS + GPU WB PAT) */ + { "decompress-gpu-wb-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, false }, + + /* PAT-based rejects (DECOMPRESS + Invalid PAT) */ + { "decompress-invalid-pat", INVALID_PAT_INDEX, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + non-UC PAT) */ + { "decompress-gpu-wt-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* PAT-based rejects (DECOMPRESS + compressed PAT) */ + { "decompress-gpu-compressed-pat", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Range smaller than the uncompressed size (should be rejected for DECOMPRESS) */ + { "decompress-small-range", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Misaligned virtual address for DECOMPRESS update */ + { "decompress-misaligned-va", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + + /* Wrong BO handle supplied (invalid handle) */ + { "decompress-wrong-bo-handle", 0, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, true }, + }; + /* Setup (this asserts+cleans on failure) */ + ret = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, width, + height, tiling, config, false, true, + &allocated_resources); + igt_assert_eq(ret, 0); + igt_assert_f(allocated_resources.vm != 0, "VM not created\n"); + + /* Fault-triggering writes must execute in the same VM used by VM_BIND. */ + fault_exec_queue = xe_exec_queue_create(xe, allocated_resources.vm, &inst, 0); + fault_ctx = intel_ctx_xe(xe, allocated_resources.vm, fault_exec_queue, 0, 0, 0); + igt_assert_f(fault_ctx, "failed to create fault-mode execution context\n"); + + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(allocated_resources.comp_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "COMPRESSED", 4); + + /* Fill PAT values before iterating through each case*/ + bad_cases[1].pat = intel_get_pat_idx_wb(xe); + bad_cases[3].pat = intel_get_pat_idx_wt(xe); + bad_cases[4].pat = intel_get_pat_idx_uc_comp(xe); + bad_cases[5].pat = allocated_resources.uncompressed_pat; + bad_cases[6].pat = allocated_resources.uncompressed_pat; + bad_cases[7].pat = allocated_resources.uncompressed_pat; + + /* Iterate cases */ + for (unsigned int i = 0; i < ARRAY_SIZE(bad_cases); i++) { + const struct vm_bind_decomp_neg_test_case *test_variant = &bad_cases[i]; + + /* Reset per-case parameters */ + u32 use_pat = test_variant->pat; + u32 flags = test_variant->flags; + + addr = allocated_resources.vm_map_addr; + handle = allocated_resources.handle; + use_map_size = allocated_resources.map_size; + + igt_info("\nVM_BIND variant: %s\n", test_variant->test_name); + + /* Corrupt inputs or pass wrong params for a few special cases. */ + if (!strcmp(test_variant->test_name, "decompress-small-range")) { + if (allocated_resources.map_size > default_alignment) + use_map_size = allocated_resources.map_size - 1; + igt_info("Using reduced map size: %llu\n", + (unsigned long long)use_map_size); + } else if (!strcmp(test_variant->test_name, "decompress-misaligned-va")) { + addr = allocated_resources.vm_map_addr + 1; + } else if (!strcmp(test_variant->test_name, "decompress-wrong-bo-handle")) { + handle = allocated_resources.handle ^ 0xdeadbeef; + } + + errno = 0; + ret = + __xe_vm_bind(xe, allocated_resources.vm, 0, handle, 0, addr, + use_map_size, DRM_XE_VM_BIND_OP_MAP, flags, + NULL, 0, 0, use_pat, 0); + if (test_variant->expect_fail) { + if (ret == 0) { + /* Unexpected success — unmap and abort */ + igt_warn("VM_BIND unexpectedly SUCCEEDED for %s — cleaning up\n", + test_variant->test_name); + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, + addr, use_map_size, DRM_XE_VM_BIND_OP_UNMAP, 0, + NULL, 0, 0, 0, 0); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, + "VM_BIND expected failure but succeeded for %s", + test_variant->test_name); + } else { + igt_info("VM_BIND rejected as expected for %s " + "(ret=%d errno=%d %s)\n", + test_variant->test_name, ret, errno, strerror(errno)); + igt_info("Success : VM_Bind rejected\n"); + } + } else { + /* Expected path: VM_BIND must succeed, then data integrity is verified. */ + if (ret != 0) { + igt_warn("VM_BIND unexpectedly FAILED for %s: %d (%s)\n", + test_variant->test_name, ret, strerror(errno)); + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "VM_BIND unexpected failure for %s", + test_variant->test_name); + } + + igt_info("VM_BIND succeeded for %s (as expected)\n", + test_variant->test_name); + /* Trigger page-fault via GPU write to the mapped VA */ + trigger_page_fault_write(xe, fault_ctx, addr, + allocated_resources.map_size, + region1); + + /* Compare destination buffer against source and print short dumps. */ + mapped_data = xe_bo_map(xe, allocated_resources.handle, + allocated_resources.size); + igt_assert_f(mapped_data != MAP_FAILED, + "Failed to map destination BO for %s\n", + test_variant->test_name); + + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 64, allocated_resources.size), + "ORIGINAL", 4); + print_buffer_data(mapped_data, + min_t(size_t, 64, allocated_resources.size), + "DECOMPRESSED", 4); + + pattern_matches = + verify_test_pattern(mapped_data, + allocated_resources.size, + "DECOMPRESSED"); + if (!pattern_matches) + igt_info("Decompression pattern verification FAILED for %s\n", + test_variant->test_name); + + if (memcmp(mapped_data, + allocated_resources.src_obj->ptr, + allocated_resources.size) != 0) { + igt_info("Decompressed data does not match original for %s\n", + test_variant->test_name); + print_buffer_data(mapped_data, + min_t(size_t, 256, allocated_resources.size), + "CURRENT_STATE", 4); + print_buffer_data(allocated_resources.src_obj->ptr, + min_t(size_t, 256, allocated_resources.size), + "EXPECTED", 4); + + munmap(mapped_data, allocated_resources.size); + mapped_data = MAP_FAILED; + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, + "Decompressed BO contents differ from original for %s", + test_variant->test_name); + } + + igt_info("Decompression content matches original for %s\n", + test_variant->test_name); + munmap(mapped_data, allocated_resources.size); + mapped_data = MAP_FAILED; + + /* Unmap to keep state clean for next iteration */ + ret = + __xe_vm_bind(xe, allocated_resources.vm, 0, 0, 0, addr, + use_map_size, DRM_XE_VM_BIND_OP_UNMAP, + 0, NULL, 0, 0, 0, 0); + if (ret != 0) + igt_warn("Unmap after VM_BIND (fault-mode) failed: %d (%s)\n", ret, + strerror(errno)); + } + } + + if (fault_exec_queue) + xe_exec_queue_destroy(xe, fault_exec_queue); + free(fault_ctx); + + /* Final cleanup */ + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -1741,6 +2083,12 @@ static void single_copy(int xe, const struct test_config *config, vm_bind_decompress_uapi_bad_params(xe, ctx, ahnd, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_uapi_bad_params_fault_mode) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_uapi_bad_params_fault_mode(xe, + ctx, ahnd, region1, region2, + width, height, tiling, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -2058,6 +2406,19 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); } + igt_describe("Validate uAPI of VM_BIND with DECOMPRESS flag with bad params"); + igt_subtest("vm-bind-decompress-uapi-bad-params-fault-mode") { + struct test_config config = { .compression = true, + .vm_bind_decompress_uapi_bad_params_fault_mode = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + igt_fixture() { xe_device_put(xe); close(xe); -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp 2026-06-15 12:31 ` [PATCH v2 0/3] " Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test Smitha Balasubramanyam @ 2026-06-15 12:31 ` Smitha Balasubramanyam 2026-06-15 17:05 ` Matthew Auld 2 siblings, 1 reply; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-06-15 12:31 UTC (permalink / raw) To: igt-dev, zbigniew.kempczynski Add a negative test covering VM_BIND decompression verification with corrupted CCS metadata. The test also exercises suspend and resume handling during the corruption scenario. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 345 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 345 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index 9a4fa36e1..bcf7655bd 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -75,6 +75,13 @@ * SUBTEST: vm-bind-decompress-uapi-bad-params-fault-mode * Description: UAPI negative test attempt VM_BIND with a combination of * invalid params - fault mode + * + * SUBTEST: vm-bind-decompress-ccs-corruption + * Description: Functional negative test — attempt VM_BIND after corrupting the CCS data; + * verify that decompression fails (data differs from original). + * + * SUBTEST: vm-bind-decompress-ccs-corruption-suspend-resume + * Description: Validate VM_BIND with DECOMPRESS flag with corrupted CCS with suspend/resume (S0) */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); @@ -113,6 +120,7 @@ struct test_config { bool vm_bind_fault_mode_decompress; bool vm_bind_decompress_uapi_bad_params; bool vm_bind_decompress_uapi_bad_params_fault_mode; + bool vm_bind_decompress_ccs_corruption; int width_increment; int width_steps; int overwrite_width; @@ -1175,6 +1183,307 @@ static void vm_bind_decompress_uapi_bad_params_fault_mode(int xe, vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); } +/* Functional negative test that validates VM_BIND Decompress with CCS corruption. + * It compresses src -> mid1/mid2, extracts CCS, corrupts mid1 CCS, writes back, + * reissues VM_BIND with DECOMPRESS for both and verifies mid1 != src and mid2 == src. + */ +static void vm_bind_decompress_ccs_corruption(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + const struct test_config *config) +{ + struct drm_xe_gem_mmap_offset mmap_offset = {}; + struct blt_copy_data blt = {}; + struct blt_block_copy_data_ext ext = {}; + struct blt_ctrl_surf_copy_data surf = {}; + struct vm_bind_decomp_setup_resources allocated_resources = {}; + struct blt_copy_object *src, *mid1, *mid2; + const u32 bpp = 32; + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; + u64 bb_size = xe_bb_size(xe, SZ_4K); + u64 size = (u64)width * height * 4; + u32 comp_pat = intel_get_pat_idx_uc_comp(xe); + u32 ccs1, ccs2; + uint32_t *ccsmap1 = NULL, *ccsmap2 = NULL; + uint64_t ccssize = 0; + uint64_t ccs_bo_size = 0; + uint32_t *ccscopy = NULL; + int result; + void *mapped_mid1 = MAP_FAILED; + void *mapped_mid2 = MAP_FAILED; + + /* Use vm_bind_decomp_test_setup to create a src (uncompressed) and a first + * compressed object (mid1). The helper also creates a VM and BB + * used for subsequent ctrl-surface operations. + */ + result = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, width, + height, T_LINEAR, config, true, false, + &allocated_resources); + igt_assert_eq(result, 0); + + /* Reuse helper-created objects */ + src = allocated_resources.src_obj; + mid1 = allocated_resources.comp_obj; + + print_buffer_data(src->ptr, min_t(size_t, 64, size), "ORIGINAL", 4); + print_buffer_data(mid1->ptr, min_t(size_t, 64, size), + "SURFACE1_COMPRESSED", 4); + + /* Compute CCS sizes now that mid1 is valid */ + ccssize = mid1->size / CCS_RATIO(xe); + ccs_bo_size = ALIGN(ccssize, xe_get_default_alignment(xe)); + ccscopy = malloc(ccssize); + + /* Create a second compressed object (mid2) and compress src->mid2 */ + /* Init blit + batch */ + blt_copy_init(xe, &blt); + mid2 = blt_create_object(&blt, region2, width, height, + bpp, intel_get_uc_mocs_index(xe), T_LINEAR, + COMPRESSION_ENABLED, comp_type, true); + igt_assert(mid2); + + /* Use the BB provided by the helper */ + blt_set_batch(&blt.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt.color_depth = CD_32bit; + blt.print_bb = param.print_bb; + blt_set_copy_object(&blt.src, src); + blt_set_copy_object(&blt.dst, mid2); + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); + + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); + intel_ctx_xe_sync(ctx, true); + + /* Verify compression occurred when platform supports it */ + if (blt_platform_has_flat_ccs_enabled(xe)) { + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, ahnd, mid2); + + if (!is_compressed) { + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "Surface compression failed - " + " cannot test decompression\n"); + } + } + + print_buffer_data(mid2->ptr, min_t(size_t, 64, size), + "SURFACE2_COMPRESSED", 4); + + ccs1 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + ccs2 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + blt_ctrl_surf_copy_init(xe, &surf); + surf.print_bb = param.print_bb; + + /* mid1 -> ccs1 */ + blt_set_ctrl_surf_object(&surf.src, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* mid2 -> ccs2 */ + blt_set_ctrl_surf_object(&surf.src, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("\nExtracted CCS for both compressed surfaces\n"); + igt_info("Proceeds to corrupt surface1 CCS and preserve surface2 CCS\n"); + + /* --- Map, corrupt mid1's CCS, then write corrupted CCS back into mid1 --- */ + /* Map ccs1 (the corrupted copy) */ + ccsmap1 = xe_bo_map(xe, ccs1, ccssize); + // Verifying mapping + igt_assert(ccsmap1 != MAP_FAILED); + + igt_assert(ccscopy); + memcpy(ccscopy, ccsmap1, ccssize); + + /* Corrupt the CCS content (example corruption) */ + for (size_t i = 0; i < ccssize / sizeof(uint32_t); i++) + ccsmap1[i] = (uint32_t)i ^ 0xdeadbeefu; + + /* Ensure GPU sees the change by writing it back via ctrl-surf-copy: + * ccs1 -> mid1 (DIRECT_ACCESS -> BLT_INDIRECT_ACCESS) + */ + munmap(ccsmap1, ccssize); /* unmap before submitting */ + blt_set_ctrl_surf_object(&surf.src, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* --- Write clean/unaltered CCS back to mid2 (optional, restoration) --- */ + ccsmap2 = xe_bo_map(xe, ccs2, ccssize); + igt_assert(ccsmap2 != MAP_FAILED); + munmap(ccsmap2, ccssize); + blt_set_ctrl_surf_object(&surf.src, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("Applied corrupted CCS to surface1 and restored clean CCS to surface2\n"); + + /* --- Suspend/Resume test (optional) --- */ + if (config->suspend_resume) { + char *ccs1_before = NULL, *ccs2_before = NULL; + char *ccs1_after = NULL, *ccs2_after = NULL; + void *map; + + igt_info("Test Case has invoked a suspend-resume\n"); + + /* Compute checksums of CCS BOs before suspend */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Ensure all GPU work is visible, then suspend/resume */ + intel_ctx_xe_sync(ctx, true); + igt_info("Suspending system to test CCS persistence across S0 suspend/resume\n"); + igt_system_suspend_autoresume(SUSPEND_STATE_FREEZE, SUSPEND_TEST_NONE); + igt_info("System resume complete — continuing VM_BIND tests\n"); + + /* Re-read CCS BOs after resume and compute checksums */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Expectations: + * - ccs1 (corrupted) should remain changed across suspend/resume + * - ccs2 (clean) should remain unchanged across suspend/resume + */ + if (ccs1_before && ccs1_after && !strcmp(ccs1_before, ccs1_after)) + igt_info("CCS1 (corrupted) persisted with same checksum (expected)\n"); + else if (ccs1_before && ccs1_after) + igt_warn("CCS1 checksum changed across suspend/resume (unexpected)\n"); + + if (ccs2_before && ccs2_after && strcmp(ccs2_before, ccs2_after) == 0) + igt_info("CCS2 (clean) persisted with identical checksum (expected)\n"); + else + igt_warn("CCS2 checksum changed across suspend/resume (unexpected)\n"); + + g_free(ccs1_before); + g_free(ccs1_after); + g_free(ccs2_before); + g_free(ccs2_after); + } + + /* Cleanup */ + free(ccscopy); + /* ccsmap1 was unmapped before writeback; avoid double unmap here */ + gem_close(xe, ccs1); + gem_close(xe, ccs2); + put_offset(ahnd, ccs1); + put_offset(ahnd, ccs2); + igt_debug("Cleaned up CCS BOs\n"); + + /* Bind both mid1 and mid2 initially compressed */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + /* Update mappings to request DECOMPRESS (UC PAT) */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + + /* Map both for CPU access and compare */ + mmap_offset.handle = mid1->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + + igt_assert_eq(result, 0); + mapped_mid1 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid1 != MAP_FAILED); + + mmap_offset.handle = mid2->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + igt_assert_eq(result, 0); + mapped_mid2 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid2 != MAP_FAILED); + igt_info("Issued VM_BIND with DECOMPRESS for both surfaces and now verifying each surface against the original data\n"); + if (memcmp(mapped_mid1, src->ptr, size) == 0) + igt_assert_f(false, "mid1 decompressed matches src " + "(expected mismatch due to CCS corruption)"); + igt_info("VM_BIND decompression did not recover original data for corrupted surface (mid1), as expected\n"); + + print_buffer_data(mapped_mid1, min_t(size_t, 64, size), + "MID1_CORRUPTED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + if (memcmp(mapped_mid2, src->ptr, size) != 0) + igt_assert_f(false, "Decompressed MID2 does not match src " + "(expected match for clean CCS)"); + igt_info("VM_BIND decompression successful for clean surface (mid2)\n"); + + print_buffer_data(mapped_mid2, min_t(size_t, 64, size), + "MID2_DECOMPRESSED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + igt_info("CCS corruption decompression test completed successfully\n"); + munmap(mapped_mid1, size); + munmap(mapped_mid2, size); + + put_offset(ahnd, mid2->handle); + blt_destroy_object(xe, mid2); + + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -2089,6 +2398,12 @@ static void single_copy(int xe, const struct test_config *config, ctx, ahnd, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_ccs_corruption) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_ccs_corruption(xe, ctx, ahnd, + region1, region2, width, + height, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -2419,6 +2734,36 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); } + igt_describe("Validate VM_BIND with DECOMPRESS flag with corrupted CCS"); + igt_subtest("vm-bind-decompress-ccs-corruption") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = false }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + + igt_describe("Validate VM_BIND with DECOMPRESS flag " + "with corrupted CCS with suspend/resume"); + igt_subtest("vm-bind-decompress-ccs-corruption-suspend-resume") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, + BLOCK_COPY); + } + igt_fixture() { xe_device_put(xe); close(xe); -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp 2026-06-15 12:31 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam @ 2026-06-15 17:05 ` Matthew Auld 2026-06-22 6:08 ` Balasubramanyam, Smitha 0 siblings, 1 reply; 21+ messages in thread From: Matthew Auld @ 2026-06-15 17:05 UTC (permalink / raw) To: Smitha Balasubramanyam, igt-dev, zbigniew.kempczynski On 15/06/2026 13:31, Smitha Balasubramanyam wrote: > Add a negative test covering VM_BIND decompression verification > with corrupted CCS metadata. > > The test also exercises suspend and resume handling during the > corruption scenario. What is meant by corrupted CCS here? Is this userspace corrupting something? If so, why does the kernel care? Can you give some more details here please? > > Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> > --- > tests/intel/xe_ccs.c | 345 +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 345 insertions(+) > > diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c > index 9a4fa36e1..bcf7655bd 100644 > --- a/tests/intel/xe_ccs.c > +++ b/tests/intel/xe_ccs.c > @@ -75,6 +75,13 @@ > * SUBTEST: vm-bind-decompress-uapi-bad-params-fault-mode > * Description: UAPI negative test attempt VM_BIND with a combination of > * invalid params - fault mode > + * > + * SUBTEST: vm-bind-decompress-ccs-corruption > + * Description: Functional negative test — attempt VM_BIND after corrupting the CCS data; > + * verify that decompression fails (data differs from original). > + * > + * SUBTEST: vm-bind-decompress-ccs-corruption-suspend-resume > + * Description: Validate VM_BIND with DECOMPRESS flag with corrupted CCS with suspend/resume (S0) > */ > > IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); > @@ -113,6 +120,7 @@ struct test_config { > bool vm_bind_fault_mode_decompress; > bool vm_bind_decompress_uapi_bad_params; > bool vm_bind_decompress_uapi_bad_params_fault_mode; > + bool vm_bind_decompress_ccs_corruption; > int width_increment; > int width_steps; > int overwrite_width; > @@ -1175,6 +1183,307 @@ static void vm_bind_decompress_uapi_bad_params_fault_mode(int xe, > vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); > } > > +/* Functional negative test that validates VM_BIND Decompress with CCS corruption. > + * It compresses src -> mid1/mid2, extracts CCS, corrupts mid1 CCS, writes back, > + * reissues VM_BIND with DECOMPRESS for both and verifies mid1 != src and mid2 == src. > + */ > +static void vm_bind_decompress_ccs_corruption(int xe, > + intel_ctx_t *ctx, > + u64 ahnd, > + u32 region1, > + u32 region2, > + u32 width, > + u32 height, > + const struct test_config *config) > +{ > + struct drm_xe_gem_mmap_offset mmap_offset = {}; > + struct blt_copy_data blt = {}; > + struct blt_block_copy_data_ext ext = {}; > + struct blt_ctrl_surf_copy_data surf = {}; > + struct vm_bind_decomp_setup_resources allocated_resources = {}; > + struct blt_copy_object *src, *mid1, *mid2; > + const u32 bpp = 32; > + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; > + u64 bb_size = xe_bb_size(xe, SZ_4K); > + u64 size = (u64)width * height * 4; > + u32 comp_pat = intel_get_pat_idx_uc_comp(xe); > + u32 ccs1, ccs2; > + uint32_t *ccsmap1 = NULL, *ccsmap2 = NULL; > + uint64_t ccssize = 0; > + uint64_t ccs_bo_size = 0; > + uint32_t *ccscopy = NULL; > + int result; > + void *mapped_mid1 = MAP_FAILED; > + void *mapped_mid2 = MAP_FAILED; > + > + /* Use vm_bind_decomp_test_setup to create a src (uncompressed) and a first > + * compressed object (mid1). The helper also creates a VM and BB > + * used for subsequent ctrl-surface operations. > + */ > + result = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, width, > + height, T_LINEAR, config, true, false, > + &allocated_resources); > + igt_assert_eq(result, 0); > + > + /* Reuse helper-created objects */ > + src = allocated_resources.src_obj; > + mid1 = allocated_resources.comp_obj; > + > + print_buffer_data(src->ptr, min_t(size_t, 64, size), "ORIGINAL", 4); > + print_buffer_data(mid1->ptr, min_t(size_t, 64, size), > + "SURFACE1_COMPRESSED", 4); > + > + /* Compute CCS sizes now that mid1 is valid */ > + ccssize = mid1->size / CCS_RATIO(xe); > + ccs_bo_size = ALIGN(ccssize, xe_get_default_alignment(xe)); > + ccscopy = malloc(ccssize); > + > + /* Create a second compressed object (mid2) and compress src->mid2 */ > + /* Init blit + batch */ > + blt_copy_init(xe, &blt); > + mid2 = blt_create_object(&blt, region2, width, height, > + bpp, intel_get_uc_mocs_index(xe), T_LINEAR, > + COMPRESSION_ENABLED, comp_type, true); > + igt_assert(mid2); > + > + /* Use the BB provided by the helper */ > + blt_set_batch(&blt.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); > + blt.color_depth = CD_32bit; > + blt.print_bb = param.print_bb; > + blt_set_copy_object(&blt.src, src); > + blt_set_copy_object(&blt.dst, mid2); > + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); > + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); > + > + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); > + intel_ctx_xe_sync(ctx, true); > + > + /* Verify compression occurred when platform supports it */ > + if (blt_platform_has_flat_ccs_enabled(xe)) { > + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, ahnd, mid2); > + > + if (!is_compressed) { > + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); > + igt_assert_f(false, "Surface compression failed - " > + " cannot test decompression\n"); > + } > + } > + > + print_buffer_data(mid2->ptr, min_t(size_t, 64, size), > + "SURFACE2_COMPRESSED", 4); > + > + ccs1 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, > + __xe_default_cpu_caching(xe, > + system_memory(xe), 0)); > + ccs2 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, > + __xe_default_cpu_caching(xe, > + system_memory(xe), 0)); > + blt_ctrl_surf_copy_init(xe, &surf); > + surf.print_bb = param.print_bb; > + > + /* mid1 -> ccs1 */ > + blt_set_ctrl_surf_object(&surf.src, mid1->handle, mid1->region, > + mid1->size, intel_get_uc_mocs_index(xe), > + comp_pat, BLT_INDIRECT_ACCESS); > + blt_set_ctrl_surf_object(&surf.dst, ccs1, system_memory(xe), ccssize, > + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); > + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); > + > + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); > + intel_ctx_xe_sync(ctx, true); > + > + /* mid2 -> ccs2 */ > + blt_set_ctrl_surf_object(&surf.src, mid2->handle, mid2->region, > + mid2->size, intel_get_uc_mocs_index(xe), > + comp_pat, BLT_INDIRECT_ACCESS); > + blt_set_ctrl_surf_object(&surf.dst, ccs2, system_memory(xe), ccssize, > + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); > + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); > + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); > + intel_ctx_xe_sync(ctx, true); > + igt_info("\nExtracted CCS for both compressed surfaces\n"); > + igt_info("Proceeds to corrupt surface1 CCS and preserve surface2 CCS\n"); > + > + /* --- Map, corrupt mid1's CCS, then write corrupted CCS back into mid1 --- */ > + /* Map ccs1 (the corrupted copy) */ > + ccsmap1 = xe_bo_map(xe, ccs1, ccssize); > + // Verifying mapping > + igt_assert(ccsmap1 != MAP_FAILED); > + > + igt_assert(ccscopy); > + memcpy(ccscopy, ccsmap1, ccssize); > + > + /* Corrupt the CCS content (example corruption) */ > + for (size_t i = 0; i < ccssize / sizeof(uint32_t); i++) > + ccsmap1[i] = (uint32_t)i ^ 0xdeadbeefu; > + > + /* Ensure GPU sees the change by writing it back via ctrl-surf-copy: > + * ccs1 -> mid1 (DIRECT_ACCESS -> BLT_INDIRECT_ACCESS) > + */ > + munmap(ccsmap1, ccssize); /* unmap before submitting */ > + blt_set_ctrl_surf_object(&surf.src, ccs1, system_memory(xe), ccssize, > + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); > + blt_set_ctrl_surf_object(&surf.dst, mid1->handle, mid1->region, > + mid1->size, intel_get_uc_mocs_index(xe), > + comp_pat, BLT_INDIRECT_ACCESS); > + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); > + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); > + intel_ctx_xe_sync(ctx, true); > + > + /* --- Write clean/unaltered CCS back to mid2 (optional, restoration) --- */ > + ccsmap2 = xe_bo_map(xe, ccs2, ccssize); > + igt_assert(ccsmap2 != MAP_FAILED); > + munmap(ccsmap2, ccssize); > + blt_set_ctrl_surf_object(&surf.src, ccs2, system_memory(xe), ccssize, > + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); > + blt_set_ctrl_surf_object(&surf.dst, mid2->handle, mid2->region, > + mid2->size, intel_get_uc_mocs_index(xe), > + comp_pat, BLT_INDIRECT_ACCESS); > + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); > + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); > + intel_ctx_xe_sync(ctx, true); > + igt_info("Applied corrupted CCS to surface1 and restored clean CCS to surface2\n"); > + > + /* --- Suspend/Resume test (optional) --- */ > + if (config->suspend_resume) { > + char *ccs1_before = NULL, *ccs2_before = NULL; > + char *ccs1_after = NULL, *ccs2_after = NULL; > + void *map; > + > + igt_info("Test Case has invoked a suspend-resume\n"); > + > + /* Compute checksums of CCS BOs before suspend */ > + map = xe_bo_map(xe, ccs1, ccssize); > + igt_assert(map != MAP_FAILED); > + ccs1_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); > + munmap(map, ccssize); > + > + map = xe_bo_map(xe, ccs2, ccssize); > + igt_assert(map != MAP_FAILED); > + ccs2_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); > + munmap(map, ccssize); > + > + /* Ensure all GPU work is visible, then suspend/resume */ > + intel_ctx_xe_sync(ctx, true); > + igt_info("Suspending system to test CCS persistence across S0 suspend/resume\n"); > + igt_system_suspend_autoresume(SUSPEND_STATE_FREEZE, SUSPEND_TEST_NONE); > + igt_info("System resume complete — continuing VM_BIND tests\n"); > + > + /* Re-read CCS BOs after resume and compute checksums */ > + map = xe_bo_map(xe, ccs1, ccssize); > + igt_assert(map != MAP_FAILED); > + ccs1_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); > + munmap(map, ccssize); > + > + map = xe_bo_map(xe, ccs2, ccssize); > + igt_assert(map != MAP_FAILED); > + ccs2_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); > + munmap(map, ccssize); > + > + /* Expectations: > + * - ccs1 (corrupted) should remain changed across suspend/resume > + * - ccs2 (clean) should remain unchanged across suspend/resume > + */ > + if (ccs1_before && ccs1_after && !strcmp(ccs1_before, ccs1_after)) > + igt_info("CCS1 (corrupted) persisted with same checksum (expected)\n"); > + else if (ccs1_before && ccs1_after) > + igt_warn("CCS1 checksum changed across suspend/resume (unexpected)\n"); > + > + if (ccs2_before && ccs2_after && strcmp(ccs2_before, ccs2_after) == 0) > + igt_info("CCS2 (clean) persisted with identical checksum (expected)\n"); > + else > + igt_warn("CCS2 checksum changed across suspend/resume (unexpected)\n"); > + > + g_free(ccs1_before); > + g_free(ccs1_after); > + g_free(ccs2_before); > + g_free(ccs2_after); > + } > + > + /* Cleanup */ > + free(ccscopy); > + /* ccsmap1 was unmapped before writeback; avoid double unmap here */ > + gem_close(xe, ccs1); > + gem_close(xe, ccs2); > + put_offset(ahnd, ccs1); > + put_offset(ahnd, ccs2); > + igt_debug("Cleaned up CCS BOs\n"); > + > + /* Bind both mid1 and mid2 initially compressed */ > + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, > + allocated_resources.vm_map_addr, > + allocated_resources.map_size, > + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, > + comp_pat, 0); > + igt_assert_eq(result, 0); > + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, > + allocated_resources.vm_map_addr + > + allocated_resources.map_size, > + allocated_resources.map_size, > + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, > + comp_pat, 0); > + igt_assert_eq(result, 0); > + /* Update mappings to request DECOMPRESS (UC PAT) */ > + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, > + allocated_resources.vm_map_addr, > + allocated_resources.map_size, > + DRM_XE_VM_BIND_OP_MAP, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, > + allocated_resources.uncompressed_pat, 0); > + igt_assert_eq(result, 0); > + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, > + allocated_resources.vm_map_addr + > + allocated_resources.map_size, > + allocated_resources.map_size, > + DRM_XE_VM_BIND_OP_MAP, > + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, > + allocated_resources.uncompressed_pat, 0); > + igt_assert_eq(result, 0); > + > + /* Map both for CPU access and compare */ > + mmap_offset.handle = mid1->handle; > + mmap_offset.flags = 0; > + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); > + > + igt_assert_eq(result, 0); > + mapped_mid1 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); > + igt_assert(mapped_mid1 != MAP_FAILED); > + > + mmap_offset.handle = mid2->handle; > + mmap_offset.flags = 0; > + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); > + igt_assert_eq(result, 0); > + mapped_mid2 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); > + igt_assert(mapped_mid2 != MAP_FAILED); > + igt_info("Issued VM_BIND with DECOMPRESS for both surfaces and now verifying each surface against the original data\n"); > + if (memcmp(mapped_mid1, src->ptr, size) == 0) > + igt_assert_f(false, "mid1 decompressed matches src " > + "(expected mismatch due to CCS corruption)"); > + igt_info("VM_BIND decompression did not recover original data for corrupted surface (mid1), as expected\n"); > + > + print_buffer_data(mapped_mid1, min_t(size_t, 64, size), > + "MID1_CORRUPTED", 4); > + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); > + > + if (memcmp(mapped_mid2, src->ptr, size) != 0) > + igt_assert_f(false, "Decompressed MID2 does not match src " > + "(expected match for clean CCS)"); > + igt_info("VM_BIND decompression successful for clean surface (mid2)\n"); > + > + print_buffer_data(mapped_mid2, min_t(size_t, 64, size), > + "MID2_DECOMPRESSED", 4); > + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); > + > + igt_info("CCS corruption decompression test completed successfully\n"); > + munmap(mapped_mid1, size); > + munmap(mapped_mid2, size); > + > + put_offset(ahnd, mid2->handle); > + blt_destroy_object(xe, mid2); > + > + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); > +} > + > struct blt_copy3_data { > int xe; > struct blt_copy_object src; > @@ -2089,6 +2398,12 @@ static void single_copy(int xe, const struct test_config *config, > ctx, ahnd, region1, region2, > width, height, tiling, config); > put_ahnd(ahnd); > + } else if (config->vm_bind_decompress_ccs_corruption) { > + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); > + vm_bind_decompress_ccs_corruption(xe, ctx, ahnd, > + region1, region2, width, > + height, config); > + put_ahnd(ahnd); > } else { > copyfns[copy_function].copyfn(xe, ctx, > region1, region2, > @@ -2419,6 +2734,36 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) > single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); > } > > + igt_describe("Validate VM_BIND with DECOMPRESS flag with corrupted CCS"); > + igt_subtest("vm-bind-decompress-ccs-corruption") { > + struct test_config config = { .compression = true, > + .vm_bind_decompress_ccs_corruption = true, > + .suspend_resume = false }; > + u32 region1 = system_memory(xe); > + u32 region2 = vram_if_possible(xe, 0); > + int tiling = T_LINEAR; > + int width = param.width; > + int height = param.height; > + > + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); > + } > + > + igt_describe("Validate VM_BIND with DECOMPRESS flag " > + "with corrupted CCS with suspend/resume"); > + igt_subtest("vm-bind-decompress-ccs-corruption-suspend-resume") { > + struct test_config config = { .compression = true, > + .vm_bind_decompress_ccs_corruption = true, > + .suspend_resume = true }; > + u32 region1 = system_memory(xe); > + u32 region2 = vram_if_possible(xe, 0); > + int tiling = T_LINEAR; > + int width = param.width; > + int height = param.height; > + > + single_copy(xe, &config, region1, region2, width, height, tiling, > + BLOCK_COPY); > + } > + > igt_fixture() { > xe_device_put(xe); > close(xe); ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp 2026-06-15 17:05 ` Matthew Auld @ 2026-06-22 6:08 ` Balasubramanyam, Smitha 2026-06-22 15:21 ` Matthew Auld 0 siblings, 1 reply; 21+ messages in thread From: Balasubramanyam, Smitha @ 2026-06-22 6:08 UTC (permalink / raw) To: Auld, Matthew, igt-dev@lists.freedesktop.org, Kempczynski, Zbigniew On 15/06/2026 13:31, Smitha Balasubramanyam wrote: > Add a negative test covering VM_BIND decompression verification with > corrupted CCS metadata. > > The test also exercises suspend and resume handling during the > corruption scenario. >What is meant by corrupted CCS here? Is this userspace corrupting something? If so, why does the kernel care? Can you give some more details here please? Sure, this testcase is not primarily a negative uAPI rejection check. The testcase exercises behavior when userspace intentionally corrupts CCS metadata, then issues VM_BIND with DECOMPRESS and compares outcomes: - corrupted-CCS path is expected to differ from source data - clean-CCS path is expected to match source data I agree the current test name may not reflect this intent clearly. I can rename it to something more explicit, like below if you suggest : - vm-bind-decompress-ccs-corruption-behavior-check or - vm-bind-decompress-ccs-corruption-comparison ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp 2026-06-22 6:08 ` Balasubramanyam, Smitha @ 2026-06-22 15:21 ` Matthew Auld 0 siblings, 0 replies; 21+ messages in thread From: Matthew Auld @ 2026-06-22 15:21 UTC (permalink / raw) To: Balasubramanyam, Smitha, igt-dev@lists.freedesktop.org, Kempczynski, Zbigniew On 22/06/2026 07:08, Balasubramanyam, Smitha wrote: > > On 15/06/2026 13:31, Smitha Balasubramanyam wrote: >> Add a negative test covering VM_BIND decompression verification with >> corrupted CCS metadata. > > > The test also exercises suspend and resume handling during the >> corruption scenario. > >> What is meant by corrupted CCS here? Is this userspace corrupting something? If so, why does the kernel care? Can you give some more details here please? > > Sure, this testcase is not primarily a negative uAPI rejection check. > The testcase exercises behavior when userspace intentionally corrupts CCS metadata, then issues VM_BIND with DECOMPRESS and compares outcomes: > - corrupted-CCS path is expected to differ from source data > - clean-CCS path is expected to match source data Does it really matter if userspace tramples the CCS? I assume we already create a compressed surface and check that the decompress flag behaves as we expect. If we trample the CCS data, then yes that will be visible when we decompress, same as when it contains "normal" data. End result is the same with main surface being the uncompressed view taking into account whatever was in the CCS data (whether corrupted or not corrupted) + main surface, with CCS being updated as uncompressed. If usespace corrupts the CCS then yes that will be visible when you decompress it, but that is the same if they corrupt the main surface with random garbage? But is it really worth validating that? I guess it not clear what we are actually validating here from kernel/hw pov? If there is some angle here from hw pov you have in mind, with some kind of specially crafted CCS corruption trying to trigger something bad, then that sounds more like general CCS coverage, and not part of VM_BIND decompress flag? Since the decompress thing can be done just as easily from userpace directly. Idea with having the kernel do it, is just that in some cases it's in the best position to do it, but there is nothing special that the kernel does for the decompress part. Plus that flag is not universally supported. > > I agree the current test name may not reflect this intent clearly. > I can rename it to something more explicit, like below if you suggest : > - vm-bind-decompress-ccs-corruption-behavior-check or > - vm-bind-decompress-ccs-corruption-comparison > ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 0/2] Negative tests for VM_BIND decompression
@ 2026-04-20 4:57 Smitha Balasubramanyam
2026-05-25 11:40 ` [PATCH v2 0/3] " Smitha Balasubramanyam
2026-05-25 12:15 ` [PATCH v2 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam
0 siblings, 2 replies; 21+ messages in thread
From: Smitha Balasubramanyam @ 2026-04-20 4:57 UTC (permalink / raw)
To: igt-dev, zbigniew.kempczynski, matthew.auld
This series adds negative test coverage for VM_BIND decompression.
Patch 1 adds resource management structures and helper utilities
used by the VM_BIND Decomp Negative tests.
Patch 2 implements the actual negative tests covering invalid uapi parameters and
ccs corruption scenarios.
Previous version:
https://patchwork.freedesktop.org/series/162838/
Smitha Balasubramanyam (2):
tests/intel : Add data structs & helper utilities for VM_Bind Neg
tests
tests/intel : Add Neg tests for VM_Bind Decomp
tests/intel/xe_ccs.c | 1026 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 1021 insertions(+), 5 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 21+ messages in thread* [PATCH v2 0/3] Negative tests for VM_BIND decompression 2026-04-20 4:57 [PATCH 0/2] Negative tests for VM_BIND decompression Smitha Balasubramanyam @ 2026-05-25 11:40 ` Smitha Balasubramanyam 2026-05-25 11:40 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam 2026-05-25 12:15 ` [PATCH v2 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam 1 sibling, 1 reply; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-05-25 11:40 UTC (permalink / raw) To: igt-dev This series adds negative test coverage for VM_BIND DECOMPRESS flows in xe_ccs. Patch 1 introduces resource management structures, helper utilities, and a negative uAPI parameter validation test for VM_BIND DECOMPRESS flows. Patch 2 adds a helper for fault-mode handling along with a negative test to validate VM_BIND DECOMPRESS uAPI parameters under fault-mode conditions. Patch 3 adds negative test coverage for VM_BIND DECOMPRESS with CCS corruption, including suspend-resume scenarios. Changes since v1: Reworked test split and helper organization Previous version: https://patchwork.freedesktop.org/series/162838/ Smitha Balasubramanyam (3): tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp tests/intel/xe_ccs.c | 1184 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1184 insertions(+) -- 2.43.0 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp 2026-05-25 11:40 ` [PATCH v2 0/3] " Smitha Balasubramanyam @ 2026-05-25 11:40 ` Smitha Balasubramanyam 0 siblings, 0 replies; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-05-25 11:40 UTC (permalink / raw) To: igt-dev Add a negative test covering VM_BIND decompression verification with corrupted CCS metadata. The test also exercises suspend and resume handling during the corruption scenario. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 345 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 345 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index 3bfb439b9..e6875cfbf 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -75,6 +75,13 @@ * SUBTEST: vm-bind-decompress-uapi-bad-params-fault-mode * Description: UAPI negative test attempt VM_BIND with a combination of * invalid params - fault mode + * + * SUBTEST: vm-bind-decompress-ccs-corruption + * Description: Functional negative test — attempt VM_BIND after corrupting the CCS data; + * verify that decompression fails (data differs from original). + * + * SUBTEST: vm-bind-decompress-ccs-corruption-suspend-resume + * Description: Validate VM_BIND with DECOMPRESS flag with corrupted CCS with suspend/resume (S0) */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); @@ -113,6 +120,7 @@ struct test_config { bool vm_bind_fault_mode_decompress; bool vm_bind_decompress_uapi_bad_params; bool vm_bind_decompress_uapi_bad_params_fault_mode; + bool vm_bind_decompress_ccs_corruption; int width_increment; int width_steps; int overwrite_width; @@ -1174,6 +1182,307 @@ static void vm_bind_decompress_uapi_bad_params_fault_mode(int xe, vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); } +/* Functional negative test that validates VM_BIND Decompress with CCS corruption. + * It compresses src -> mid1/mid2, extracts CCS, corrupts mid1 CCS, writes back, + * reissues VM_BIND with DECOMPRESS for both and verifies mid1 != src and mid2 == src. + */ +static void vm_bind_decompress_ccs_corruption(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + const struct test_config *config) +{ + struct drm_xe_gem_mmap_offset mmap_offset = {}; + struct blt_copy_data blt = {}; + struct blt_block_copy_data_ext ext = {}; + struct blt_ctrl_surf_copy_data surf = {}; + struct vm_bind_decomp_setup_resources allocated_resources = {}; + struct blt_copy_object *src, *mid1, *mid2; + const u32 bpp = 32; + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; + u64 bb_size = xe_bb_size(xe, SZ_4K); + u64 size = (u64)width * height * 4; + u32 comp_pat = intel_get_pat_idx_uc_comp(xe); + u32 ccs1, ccs2; + uint32_t *ccsmap1 = NULL, *ccsmap2 = NULL; + uint64_t ccssize = 0; + uint64_t ccs_bo_size = 0; + uint32_t *ccscopy = NULL; + int result; + void *mapped_mid1 = MAP_FAILED; + void *mapped_mid2 = MAP_FAILED; + + /* Use vm_bind_decomp_test_setup to create a src (uncompressed) and a first + * compressed object (mid1). The helper also creates a VM and BB + * used for subsequent ctrl-surface operations. + */ + result = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, width, + height, T_LINEAR, config, true, false, + &allocated_resources); + igt_assert_eq(result, 0); + + /* Reuse helper-created objects */ + src = allocated_resources.src_obj; + mid1 = allocated_resources.comp_obj; + + print_buffer_data(src->ptr, min_t(size_t, 64, size), "ORIGINAL", 4); + print_buffer_data(mid1->ptr, min_t(size_t, 64, size), + "SURFACE1_COMPRESSED", 4); + + /* Compute CCS sizes now that mid1 is valid */ + ccssize = mid1->size / CCS_RATIO(xe); + ccs_bo_size = ALIGN(ccssize, xe_get_default_alignment(xe)); + ccscopy = malloc(ccssize); + + /* Create a second compressed object (mid2) and compress src->mid2 */ + /* Init blit + batch */ + blt_copy_init(xe, &blt); + mid2 = blt_create_object(&blt, region2, width, height, + bpp, intel_get_uc_mocs_index(xe), T_LINEAR, + COMPRESSION_ENABLED, comp_type, true); + igt_assert(mid2); + + /* Use the BB provided by the helper */ + blt_set_batch(&blt.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt.color_depth = CD_32bit; + blt.print_bb = param.print_bb; + blt_set_copy_object(&blt.src, src); + blt_set_copy_object(&blt.dst, mid2); + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); + + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); + intel_ctx_xe_sync(ctx, true); + + /* Verify compression occurred when platform supports it */ + if (blt_platform_has_flat_ccs_enabled(xe)) { + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, ahnd, mid2); + + if (!is_compressed) { + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "Surface compression failed - " + " cannot test decompression\n"); + } + } + + print_buffer_data(mid2->ptr, min_t(size_t, 64, size), + "SURFACE2_COMPRESSED", 4); + + ccs1 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + ccs2 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + blt_ctrl_surf_copy_init(xe, &surf); + surf.print_bb = param.print_bb; + + /* mid1 -> ccs1 */ + blt_set_ctrl_surf_object(&surf.src, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* mid2 -> ccs2 */ + blt_set_ctrl_surf_object(&surf.src, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("\nExtracted CCS for both compressed surfaces\n"); + igt_info("Proceeds to corrupt surface1 CCS and preserve surface2 CCS\n"); + + /* --- Map, corrupt mid1's CCS, then write corrupted CCS back into mid1 --- */ + /* Map ccs1 (the corrupted copy) */ + ccsmap1 = xe_bo_map(xe, ccs1, ccssize); + // Verifying mapping + igt_assert(ccsmap1 != MAP_FAILED); + + igt_assert(ccscopy); + memcpy(ccscopy, ccsmap1, ccssize); + + /* Corrupt the CCS content (example corruption) */ + for (size_t i = 0; i < ccssize / sizeof(uint32_t); i++) + ccsmap1[i] = (uint32_t)i ^ 0xdeadbeefu; + + /* Ensure GPU sees the change by writing it back via ctrl-surf-copy: + * ccs1 -> mid1 (DIRECT_ACCESS -> BLT_INDIRECT_ACCESS) + */ + munmap(ccsmap1, ccssize); /* unmap before submitting */ + blt_set_ctrl_surf_object(&surf.src, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* --- Write clean/unaltered CCS back to mid2 (optional, restoration) --- */ + ccsmap2 = xe_bo_map(xe, ccs2, ccssize); + igt_assert(ccsmap2 != MAP_FAILED); + munmap(ccsmap2, ccssize); + blt_set_ctrl_surf_object(&surf.src, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("Applied corrupted CCS to surface1 and restored clean CCS to surface2\n"); + + /* --- Suspend/Resume test (optional) --- */ + if (config->suspend_resume) { + char *ccs1_before = NULL, *ccs2_before = NULL; + char *ccs1_after = NULL, *ccs2_after = NULL; + void *map; + + igt_info("Test Case has invoked a suspend-resume\n"); + + /* Compute checksums of CCS BOs before suspend */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Ensure all GPU work is visible, then suspend/resume */ + intel_ctx_xe_sync(ctx, true); + igt_info("Suspending system to test CCS persistence across S0 suspend/resume\n"); + igt_system_suspend_autoresume(SUSPEND_STATE_FREEZE, SUSPEND_TEST_NONE); + igt_info("System resume complete — continuing VM_BIND tests\n"); + + /* Re-read CCS BOs after resume and compute checksums */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Expectations: + * - ccs1 (corrupted) should remain changed across suspend/resume + * - ccs2 (clean) should remain unchanged across suspend/resume + */ + if (ccs1_before && ccs1_after && !strcmp(ccs1_before, ccs1_after)) + igt_info("CCS1 (corrupted) persisted with same checksum (expected)\n"); + else if (ccs1_before && ccs1_after) + igt_warn("CCS1 checksum changed across suspend/resume (unexpected)\n"); + + if (ccs2_before && ccs2_after && strcmp(ccs2_before, ccs2_after) == 0) + igt_info("CCS2 (clean) persisted with identical checksum (expected)\n"); + else + igt_warn("CCS2 checksum changed across suspend/resume (unexpected)\n"); + + g_free(ccs1_before); + g_free(ccs1_after); + g_free(ccs2_before); + g_free(ccs2_after); + } + + /* Cleanup */ + free(ccscopy); + /* ccsmap1 was unmapped before writeback; avoid double unmap here */ + gem_close(xe, ccs1); + gem_close(xe, ccs2); + put_offset(ahnd, ccs1); + put_offset(ahnd, ccs2); + igt_debug("Cleaned up CCS BOs\n"); + + /* Bind both mid1 and mid2 initially compressed */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + /* Update mappings to request DECOMPRESS (UC PAT) */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + + /* Map both for CPU access and compare */ + mmap_offset.handle = mid1->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + + igt_assert_eq(result, 0); + mapped_mid1 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid1 != MAP_FAILED); + + mmap_offset.handle = mid2->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + igt_assert_eq(result, 0); + mapped_mid2 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid2 != MAP_FAILED); + igt_info("Issued VM_BIND with DECOMPRESS for both surfaces and now verifying each surface against the original data\n"); + if (memcmp(mapped_mid1, src->ptr, size) == 0) + igt_assert_f(false, "mid1 decompressed matches src " + "(expected mismatch due to CCS corruption)"); + igt_info("VM_BIND decompression did not recover original data for corrupted surface (mid1), as expected\n"); + + print_buffer_data(mapped_mid1, min_t(size_t, 64, size), + "MID1_CORRUPTED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + if (memcmp(mapped_mid2, src->ptr, size) != 0) + igt_assert_f(false, "Decompressed MID2 does not match src " + "(expected match for clean CCS)"); + igt_info("VM_BIND decompression successful for clean surface (mid2)\n"); + + print_buffer_data(mapped_mid2, min_t(size_t, 64, size), + "MID2_DECOMPRESSED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + igt_info("CCS corruption decompression test completed successfully\n"); + munmap(mapped_mid1, size); + munmap(mapped_mid2, size); + + put_offset(ahnd, mid2->handle); + blt_destroy_object(xe, mid2); + + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -2088,6 +2397,12 @@ static void single_copy(int xe, const struct test_config *config, ctx, ahnd, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_ccs_corruption) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_ccs_corruption(xe, ctx, ahnd, + region1, region2, width, + height, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -2418,6 +2733,36 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); } + igt_describe("Validate VM_BIND with DECOMPRESS flag with corrupted CCS"); + igt_subtest("vm-bind-decompress-ccs-corruption") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = false }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + + igt_describe("Validate VM_BIND with DECOMPRESS flag " + "with corrupted CCS with suspend/resume"); + igt_subtest_with_dynamic("vm-bind-decompress-ccs-corruption-suspend-resume") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, + BLOCK_COPY); + } + igt_fixture() { xe_device_put(xe); close(xe); -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 0/3] Negative tests for VM_BIND decompression 2026-04-20 4:57 [PATCH 0/2] Negative tests for VM_BIND decompression Smitha Balasubramanyam 2026-05-25 11:40 ` [PATCH v2 0/3] " Smitha Balasubramanyam @ 2026-05-25 12:15 ` Smitha Balasubramanyam 2026-05-25 12:15 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam 1 sibling, 1 reply; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-05-25 12:15 UTC (permalink / raw) To: igt-dev This series adds negative test coverage for VM_BIND DECOMPRESS flows in xe_ccs. Patch 1 introduces resource management structures, helper utilities, and a negative uAPI parameter validation test for VM_BIND DECOMPRESS flows. Patch 2 adds a helper for fault-mode handling along with a negative test to validate VM_BIND DECOMPRESS uAPI parameters under fault-mode conditions. Patch 3 adds negative test coverage for VM_BIND DECOMPRESS with CCS corruption, including suspend-resume scenarios. Changes since v1: Reworked test split and helper organization Previous version: https://patchwork.freedesktop.org/series/162838/ Smitha Balasubramanyam (3): tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp tests/intel/xe_ccs.c | 1184 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1184 insertions(+) -- 2.43.0 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp 2026-05-25 12:15 ` [PATCH v2 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam @ 2026-05-25 12:15 ` Smitha Balasubramanyam 0 siblings, 0 replies; 21+ messages in thread From: Smitha Balasubramanyam @ 2026-05-25 12:15 UTC (permalink / raw) To: igt-dev Add a negative test covering VM_BIND decompression verification with corrupted CCS metadata. The test also exercises suspend and resume handling during the corruption scenario. Signed-off-by: Smitha Balasubramanyam <smitha.balasubramanyam@intel.com> --- tests/intel/xe_ccs.c | 345 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 345 insertions(+) diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c index 3bfb439b9..e6875cfbf 100644 --- a/tests/intel/xe_ccs.c +++ b/tests/intel/xe_ccs.c @@ -75,6 +75,13 @@ * SUBTEST: vm-bind-decompress-uapi-bad-params-fault-mode * Description: UAPI negative test attempt VM_BIND with a combination of * invalid params - fault mode + * + * SUBTEST: vm-bind-decompress-ccs-corruption + * Description: Functional negative test — attempt VM_BIND after corrupting the CCS data; + * verify that decompression fails (data differs from original). + * + * SUBTEST: vm-bind-decompress-ccs-corruption-suspend-resume + * Description: Validate VM_BIND with DECOMPRESS flag with corrupted CCS with suspend/resume (S0) */ IGT_TEST_DESCRIPTION("Exercise gen12 blitter with and without flatccs compression on Xe"); @@ -113,6 +120,7 @@ struct test_config { bool vm_bind_fault_mode_decompress; bool vm_bind_decompress_uapi_bad_params; bool vm_bind_decompress_uapi_bad_params_fault_mode; + bool vm_bind_decompress_ccs_corruption; int width_increment; int width_steps; int overwrite_width; @@ -1174,6 +1182,307 @@ static void vm_bind_decompress_uapi_bad_params_fault_mode(int xe, vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); } +/* Functional negative test that validates VM_BIND Decompress with CCS corruption. + * It compresses src -> mid1/mid2, extracts CCS, corrupts mid1 CCS, writes back, + * reissues VM_BIND with DECOMPRESS for both and verifies mid1 != src and mid2 == src. + */ +static void vm_bind_decompress_ccs_corruption(int xe, + intel_ctx_t *ctx, + u64 ahnd, + u32 region1, + u32 region2, + u32 width, + u32 height, + const struct test_config *config) +{ + struct drm_xe_gem_mmap_offset mmap_offset = {}; + struct blt_copy_data blt = {}; + struct blt_block_copy_data_ext ext = {}; + struct blt_ctrl_surf_copy_data surf = {}; + struct vm_bind_decomp_setup_resources allocated_resources = {}; + struct blt_copy_object *src, *mid1, *mid2; + const u32 bpp = 32; + enum blt_compression_type comp_type = COMPRESSION_TYPE_3D; + u64 bb_size = xe_bb_size(xe, SZ_4K); + u64 size = (u64)width * height * 4; + u32 comp_pat = intel_get_pat_idx_uc_comp(xe); + u32 ccs1, ccs2; + uint32_t *ccsmap1 = NULL, *ccsmap2 = NULL; + uint64_t ccssize = 0; + uint64_t ccs_bo_size = 0; + uint32_t *ccscopy = NULL; + int result; + void *mapped_mid1 = MAP_FAILED; + void *mapped_mid2 = MAP_FAILED; + + /* Use vm_bind_decomp_test_setup to create a src (uncompressed) and a first + * compressed object (mid1). The helper also creates a VM and BB + * used for subsequent ctrl-surface operations. + */ + result = vm_bind_decomp_test_setup(xe, ctx, ahnd, region1, region2, width, + height, T_LINEAR, config, true, false, + &allocated_resources); + igt_assert_eq(result, 0); + + /* Reuse helper-created objects */ + src = allocated_resources.src_obj; + mid1 = allocated_resources.comp_obj; + + print_buffer_data(src->ptr, min_t(size_t, 64, size), "ORIGINAL", 4); + print_buffer_data(mid1->ptr, min_t(size_t, 64, size), + "SURFACE1_COMPRESSED", 4); + + /* Compute CCS sizes now that mid1 is valid */ + ccssize = mid1->size / CCS_RATIO(xe); + ccs_bo_size = ALIGN(ccssize, xe_get_default_alignment(xe)); + ccscopy = malloc(ccssize); + + /* Create a second compressed object (mid2) and compress src->mid2 */ + /* Init blit + batch */ + blt_copy_init(xe, &blt); + mid2 = blt_create_object(&blt, region2, width, height, + bpp, intel_get_uc_mocs_index(xe), T_LINEAR, + COMPRESSION_ENABLED, comp_type, true); + igt_assert(mid2); + + /* Use the BB provided by the helper */ + blt_set_batch(&blt.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt.color_depth = CD_32bit; + blt.print_bb = param.print_bb; + blt_set_copy_object(&blt.src, src); + blt_set_copy_object(&blt.dst, mid2); + blt_set_object_ext(&ext.src, 0, width, height, SURFACE_TYPE_2D); + blt_set_object_ext(&ext.dst, param.compression_format, width, height, SURFACE_TYPE_2D); + + blt_block_copy(xe, ctx, NULL, ahnd, &blt, &ext); + intel_ctx_xe_sync(ctx, true); + + /* Verify compression occurred when platform supports it */ + if (blt_platform_has_flat_ccs_enabled(xe)) { + bool is_compressed = blt_surface_is_compressed(xe, ctx, NULL, ahnd, mid2); + + if (!is_compressed) { + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); + igt_assert_f(false, "Surface compression failed - " + " cannot test decompression\n"); + } + } + + print_buffer_data(mid2->ptr, min_t(size_t, 64, size), + "SURFACE2_COMPRESSED", 4); + + ccs1 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + ccs2 = xe_bo_create_caching(xe, 0, ccs_bo_size, system_memory(xe), 0, + __xe_default_cpu_caching(xe, + system_memory(xe), 0)); + blt_ctrl_surf_copy_init(xe, &surf); + surf.print_bb = param.print_bb; + + /* mid1 -> ccs1 */ + blt_set_ctrl_surf_object(&surf.src, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* mid2 -> ccs2 */ + blt_set_ctrl_surf_object(&surf.src, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("\nExtracted CCS for both compressed surfaces\n"); + igt_info("Proceeds to corrupt surface1 CCS and preserve surface2 CCS\n"); + + /* --- Map, corrupt mid1's CCS, then write corrupted CCS back into mid1 --- */ + /* Map ccs1 (the corrupted copy) */ + ccsmap1 = xe_bo_map(xe, ccs1, ccssize); + // Verifying mapping + igt_assert(ccsmap1 != MAP_FAILED); + + igt_assert(ccscopy); + memcpy(ccscopy, ccsmap1, ccssize); + + /* Corrupt the CCS content (example corruption) */ + for (size_t i = 0; i < ccssize / sizeof(uint32_t); i++) + ccsmap1[i] = (uint32_t)i ^ 0xdeadbeefu; + + /* Ensure GPU sees the change by writing it back via ctrl-surf-copy: + * ccs1 -> mid1 (DIRECT_ACCESS -> BLT_INDIRECT_ACCESS) + */ + munmap(ccsmap1, ccssize); /* unmap before submitting */ + blt_set_ctrl_surf_object(&surf.src, ccs1, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid1->handle, mid1->region, + mid1->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + + /* --- Write clean/unaltered CCS back to mid2 (optional, restoration) --- */ + ccsmap2 = xe_bo_map(xe, ccs2, ccssize); + igt_assert(ccsmap2 != MAP_FAILED); + munmap(ccsmap2, ccssize); + blt_set_ctrl_surf_object(&surf.src, ccs2, system_memory(xe), ccssize, + 0, DEFAULT_PAT_INDEX, DIRECT_ACCESS); + blt_set_ctrl_surf_object(&surf.dst, mid2->handle, mid2->region, + mid2->size, intel_get_uc_mocs_index(xe), + comp_pat, BLT_INDIRECT_ACCESS); + blt_set_batch(&surf.bb, allocated_resources.bb, bb_size, allocated_resources.region_src); + blt_ctrl_surf_copy(xe, ctx, NULL, ahnd, &surf); + intel_ctx_xe_sync(ctx, true); + igt_info("Applied corrupted CCS to surface1 and restored clean CCS to surface2\n"); + + /* --- Suspend/Resume test (optional) --- */ + if (config->suspend_resume) { + char *ccs1_before = NULL, *ccs2_before = NULL; + char *ccs1_after = NULL, *ccs2_after = NULL; + void *map; + + igt_info("Test Case has invoked a suspend-resume\n"); + + /* Compute checksums of CCS BOs before suspend */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_before = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Ensure all GPU work is visible, then suspend/resume */ + intel_ctx_xe_sync(ctx, true); + igt_info("Suspending system to test CCS persistence across S0 suspend/resume\n"); + igt_system_suspend_autoresume(SUSPEND_STATE_FREEZE, SUSPEND_TEST_NONE); + igt_info("System resume complete — continuing VM_BIND tests\n"); + + /* Re-read CCS BOs after resume and compute checksums */ + map = xe_bo_map(xe, ccs1, ccssize); + igt_assert(map != MAP_FAILED); + ccs1_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + map = xe_bo_map(xe, ccs2, ccssize); + igt_assert(map != MAP_FAILED); + ccs2_after = g_compute_checksum_for_data(G_CHECKSUM_SHA1, map, ccssize); + munmap(map, ccssize); + + /* Expectations: + * - ccs1 (corrupted) should remain changed across suspend/resume + * - ccs2 (clean) should remain unchanged across suspend/resume + */ + if (ccs1_before && ccs1_after && !strcmp(ccs1_before, ccs1_after)) + igt_info("CCS1 (corrupted) persisted with same checksum (expected)\n"); + else if (ccs1_before && ccs1_after) + igt_warn("CCS1 checksum changed across suspend/resume (unexpected)\n"); + + if (ccs2_before && ccs2_after && strcmp(ccs2_before, ccs2_after) == 0) + igt_info("CCS2 (clean) persisted with identical checksum (expected)\n"); + else + igt_warn("CCS2 checksum changed across suspend/resume (unexpected)\n"); + + g_free(ccs1_before); + g_free(ccs1_after); + g_free(ccs2_before); + g_free(ccs2_after); + } + + /* Cleanup */ + free(ccscopy); + /* ccsmap1 was unmapped before writeback; avoid double unmap here */ + gem_close(xe, ccs1); + gem_close(xe, ccs2); + put_offset(ahnd, ccs1); + put_offset(ahnd, ccs2); + igt_debug("Cleaned up CCS BOs\n"); + + /* Bind both mid1 and mid2 initially compressed */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, 0, NULL, 0, 0, + comp_pat, 0); + igt_assert_eq(result, 0); + /* Update mappings to request DECOMPRESS (UC PAT) */ + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid1->handle, 0, + allocated_resources.vm_map_addr, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + result = __xe_vm_bind(xe, allocated_resources.vm, 0, mid2->handle, 0, + allocated_resources.vm_map_addr + + allocated_resources.map_size, + allocated_resources.map_size, + DRM_XE_VM_BIND_OP_MAP, + DRM_XE_VM_BIND_FLAG_DECOMPRESS, NULL, 0, 0, + allocated_resources.uncompressed_pat, 0); + igt_assert_eq(result, 0); + + /* Map both for CPU access and compare */ + mmap_offset.handle = mid1->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + + igt_assert_eq(result, 0); + mapped_mid1 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid1 != MAP_FAILED); + + mmap_offset.handle = mid2->handle; + mmap_offset.flags = 0; + result = igt_ioctl(xe, DRM_IOCTL_XE_GEM_MMAP_OFFSET, &mmap_offset); + igt_assert_eq(result, 0); + mapped_mid2 = mmap(NULL, size, PROT_READ, MAP_SHARED, xe, mmap_offset.offset); + igt_assert(mapped_mid2 != MAP_FAILED); + igt_info("Issued VM_BIND with DECOMPRESS for both surfaces and now verifying each surface against the original data\n"); + if (memcmp(mapped_mid1, src->ptr, size) == 0) + igt_assert_f(false, "mid1 decompressed matches src " + "(expected mismatch due to CCS corruption)"); + igt_info("VM_BIND decompression did not recover original data for corrupted surface (mid1), as expected\n"); + + print_buffer_data(mapped_mid1, min_t(size_t, 64, size), + "MID1_CORRUPTED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + if (memcmp(mapped_mid2, src->ptr, size) != 0) + igt_assert_f(false, "Decompressed MID2 does not match src " + "(expected match for clean CCS)"); + igt_info("VM_BIND decompression successful for clean surface (mid2)\n"); + + print_buffer_data(mapped_mid2, min_t(size_t, 64, size), + "MID2_DECOMPRESSED", 4); + print_buffer_data(src->ptr, min_t(size_t, 64, size), "SRC", 4); + + igt_info("CCS corruption decompression test completed successfully\n"); + munmap(mapped_mid1, size); + munmap(mapped_mid2, size); + + put_offset(ahnd, mid2->handle); + blt_destroy_object(xe, mid2); + + vm_bind_decomp_test_cleanup(xe, ahnd, &allocated_resources); +} + struct blt_copy3_data { int xe; struct blt_copy_object src; @@ -2088,6 +2397,12 @@ static void single_copy(int xe, const struct test_config *config, ctx, ahnd, region1, region2, width, height, tiling, config); put_ahnd(ahnd); + } else if (config->vm_bind_decompress_ccs_corruption) { + ahnd = intel_allocator_open(xe, vm, INTEL_ALLOCATOR_RELOC); + vm_bind_decompress_ccs_corruption(xe, ctx, ahnd, + region1, region2, width, + height, config); + put_ahnd(ahnd); } else { copyfns[copy_function].copyfn(xe, ctx, region1, region2, @@ -2418,6 +2733,36 @@ int igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL) single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); } + igt_describe("Validate VM_BIND with DECOMPRESS flag with corrupted CCS"); + igt_subtest("vm-bind-decompress-ccs-corruption") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = false }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, BLOCK_COPY); + } + + igt_describe("Validate VM_BIND with DECOMPRESS flag " + "with corrupted CCS with suspend/resume"); + igt_subtest_with_dynamic("vm-bind-decompress-ccs-corruption-suspend-resume") { + struct test_config config = { .compression = true, + .vm_bind_decompress_ccs_corruption = true, + .suspend_resume = true }; + u32 region1 = system_memory(xe); + u32 region2 = vram_if_possible(xe, 0); + int tiling = T_LINEAR; + int width = param.width; + int height = param.height; + + single_copy(xe, &config, region1, region2, width, height, tiling, + BLOCK_COPY); + } + igt_fixture() { xe_device_put(xe); close(xe); -- 2.43.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
end of thread, other threads:[~2026-06-22 15:21 UTC | newest] Thread overview: 21+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-27 5:42 [PATCH 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test Smitha Balasubramanyam 2026-05-27 5:42 ` [PATCH 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam 2026-05-27 6:40 ` ✓ Xe.CI.BAT: success for Negative tests for VM_BIND decompression Patchwork 2026-05-27 6:42 ` ✓ i915.CI.BAT: " Patchwork 2026-05-27 8:39 ` ✗ Xe.CI.FULL: failure " Patchwork 2026-05-27 13:21 ` ✓ i915.CI.Full: success " Patchwork 2026-06-15 12:31 ` [PATCH v2 0/3] " Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 1/3] tests/intel/xe_ccs : Add helpers and Negative test for VM_Bind Decomp Smitha Balasubramanyam 2026-06-15 17:02 ` Matthew Auld 2026-06-15 17:06 ` Matthew Auld 2026-06-22 5:24 ` Balasubramanyam, Smitha 2026-06-22 14:50 ` Matthew Auld 2026-06-15 12:31 ` [PATCH v2 2/3] tests/intel/xe_ccs: Add fault-mode helper and VM_BIND decomp neg test Smitha Balasubramanyam 2026-06-15 12:31 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam 2026-06-15 17:05 ` Matthew Auld 2026-06-22 6:08 ` Balasubramanyam, Smitha 2026-06-22 15:21 ` Matthew Auld -- strict thread matches above, loose matches on Subject: below -- 2026-04-20 4:57 [PATCH 0/2] Negative tests for VM_BIND decompression Smitha Balasubramanyam 2026-05-25 11:40 ` [PATCH v2 0/3] " Smitha Balasubramanyam 2026-05-25 11:40 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam 2026-05-25 12:15 ` [PATCH v2 0/3] Negative tests for VM_BIND decompression Smitha Balasubramanyam 2026-05-25 12:15 ` [PATCH v2 3/3] tests/intel/xe_ccs : Add CCS corruption neg test for VM_BIND decomp Smitha Balasubramanyam
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox