* [PATCH v2 0/4] drm/xe/rtp: WA table context testing
@ 2026-05-19 19:32 Violet Monti
2026-05-19 19:32 ` [PATCH v2 1/4] drm/xe/rtp: Add struct types for RTP tables Violet Monti
` (7 more replies)
0 siblings, 8 replies; 14+ messages in thread
From: Violet Monti @ 2026-05-19 19:32 UTC (permalink / raw)
To: intel-xe; +Cc: Violet Monti
This series adds testing for existing WA lists within
drm/xe/xe_wa.c, which previously were allowed to match
rules for contexts that were not valid at their initialization
time.
These tests function by parsing each target RTP table,
checking for invalid contexts rules determined by an
enumeration of match types, and raises an expectation fail
if an improper match is found
Signed-off-by: Violet Monti <violet.monti@intel.com>
---
Changes in v2:
- Cleaned up and refined code logic as per review suggestions.
- Link to v1: https://lore.kernel.org/intel-xe/20260513212129.691628-6-violet.monti@intel.com/
---
Gustavo Sousa (1):
drm/xe/rtp: Add struct types for RTP tables
Violet Monti (3):
drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types
drm/xe/rtp: Ensure oob_was does not evaluate engine type rules
drm/xe/rtp: Ensure device_oob_was only evaluates correct rules
drivers/gpu/drm/xe/tests/Makefile | 1 +
drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 89 +++++++++++++
drivers/gpu/drm/xe/tests/xe_rtp_test.c | 126 +++++++-----------
drivers/gpu/drm/xe/xe_hw_engine.c | 14 +-
drivers/gpu/drm/xe/xe_reg_whitelist.c | 7 +-
drivers/gpu/drm/xe/xe_rtp.c | 31 ++---
drivers/gpu/drm/xe/xe_rtp.h | 16 ++-
drivers/gpu/drm/xe/xe_rtp_types.h | 10 ++
drivers/gpu/drm/xe/xe_tuning.c | 45 +++----
drivers/gpu/drm/xe/xe_wa.c | 92 +++++++------
drivers/gpu/drm/xe/xe_wa.h | 7 +
11 files changed, 266 insertions(+), 172 deletions(-)
create mode 100644 drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c
--
2.43.0
^ permalink raw reply [flat|nested] 14+ messages in thread* [PATCH v2 1/4] drm/xe/rtp: Add struct types for RTP tables 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti @ 2026-05-19 19:32 ` Violet Monti 2026-05-19 19:32 ` [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types Violet Monti ` (6 subsequent siblings) 7 siblings, 0 replies; 14+ messages in thread From: Violet Monti @ 2026-05-19 19:32 UTC (permalink / raw) To: intel-xe; +Cc: Gustavo Sousa, Violet Monti From: Gustavo Sousa <gustavo.sousa@intel.com> We currently have a mixture of styles for our RTP tables with respect of how we define the number of entries: * xe_rtp_process_to_sr() expects to receive the number of entries as arguments; * xe_rtp_process() expects the array to have a sentinel at the end of the array; * in xe_rtp_test.c, even though xe_rtp_process_to_sr() does not require a sentinel value, we need to rely on that technique to be able to count xe_rtp_entry_sr entries because simply using ARRAY_SIZE() is not possible. The style used by xe_rtp_process_to_sr() makes it hard to share the tables with other compilation units (e.g. kunit tests), since the number of entries is calculated with ARRAY_SIZE(), which is done at compile time. Since we use the size of the tables to create some bitmasks, using a sentinel style doesn't seem great either. A way to reconcile things into a single style is to have a struct type that would hold the entries array and the number of entries. Since we have xe_rtp_entry and xe_rtp_entry_sr, we would have one type for each. The advantage of the proposed approach is that now we have a nice way to share the tables directly to kunit tests with information about their size. v2: - Add compatibility with new xe_rtp_table_sr format for "bad-mcr-reg-forced-to-regular" and "bad-regular-reg-forced-to-mcr" Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> Signed-off-by: Violet Monti <violet.monti@intel.com> --- drivers/gpu/drm/xe/tests/xe_rtp_test.c | 126 ++++++++++--------------- drivers/gpu/drm/xe/xe_hw_engine.c | 14 ++- drivers/gpu/drm/xe/xe_reg_whitelist.c | 7 +- drivers/gpu/drm/xe/xe_rtp.c | 31 +++--- drivers/gpu/drm/xe/xe_rtp.h | 16 +++- drivers/gpu/drm/xe/xe_rtp_types.h | 10 ++ drivers/gpu/drm/xe/xe_tuning.c | 45 +++++---- drivers/gpu/drm/xe/xe_wa.c | 89 ++++++++--------- 8 files changed, 166 insertions(+), 172 deletions(-) diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_test.c index 5d78f2283df9..183450f921ca 100644 --- a/drivers/gpu/drm/xe/tests/xe_rtp_test.c +++ b/drivers/gpu/drm/xe/tests/xe_rtp_test.c @@ -45,13 +45,13 @@ struct rtp_to_sr_test_case { unsigned long expected_count_sr_entries; unsigned int expected_sr_errors; unsigned long expected_active; - const struct xe_rtp_entry_sr *entries; + const struct xe_rtp_table_sr table; }; struct rtp_test_case { const char *name; unsigned long expected_active; - const struct xe_rtp_entry *entries; + const struct xe_rtp_table table; }; static bool fake_xe_gt_mcr_check_reg(struct xe_gt *gt, struct xe_reg reg) @@ -92,7 +92,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0) | BIT(1), .expected_count_sr_entries = 1, /* Different bits on the same register: create a single entry */ - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -101,8 +101,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(1))) }, - {} - }, + ), }, { .name = "no-match-no-add", @@ -112,7 +111,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0), .expected_count_sr_entries = 1, /* Don't coalesce second entry since rules don't match */ - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -121,8 +120,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_no)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(1))) }, - {} - }, + ), }, { .name = "match-or", @@ -131,7 +129,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_clr_bits = REG_BIT(0) | REG_BIT(1) | REG_BIT(2), .expected_active = BIT(0) | BIT(1) | BIT(2), .expected_count_sr_entries = 1, - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("first"), XE_RTP_RULES(FUNC(match_yes), OR, FUNC(match_no)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -150,14 +148,13 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_no), OR, FUNC(match_no)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(3))) }, - {} - }, + ), }, { .name = "match-or-xfail", .expected_reg = REGULAR_REG1, .expected_count_sr_entries = 0, - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("leading-or"), XE_RTP_RULES(OR, FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -175,8 +172,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_no), OR, OR, FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(2))) }, - {} - }, + ), }, { .name = "no-match-no-add-multiple-rules", @@ -186,7 +182,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0), .expected_count_sr_entries = 1, /* Don't coalesce second entry due to one of the rules */ - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -195,8 +191,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_yes), FUNC(match_no)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(1))) }, - {} - }, + ), }, { .name = "two-regs-two-entries", @@ -206,7 +201,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0) | BIT(1), .expected_count_sr_entries = 2, /* Same bits on different registers are not coalesced */ - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -215,8 +210,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG2, REG_BIT(0))) }, - {} - }, + ), }, { .name = "clr-one-set-other", @@ -226,7 +220,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0) | BIT(1), .expected_count_sr_entries = 1, /* Check clr vs set actions on different bits */ - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -235,8 +229,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(CLR(REGULAR_REG1, REG_BIT(1))) }, - {} - }, + ), }, { #define TEMP_MASK REG_GENMASK(10, 8) @@ -248,14 +241,13 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0), .expected_count_sr_entries = 1, /* Check FIELD_SET works */ - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(FIELD_SET(REGULAR_REG1, TEMP_MASK, TEMP_FIELD)) }, - {} - }, + ), #undef TEMP_MASK #undef TEMP_FIELD }, @@ -267,7 +259,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0) | BIT(1), .expected_count_sr_entries = 1, .expected_sr_errors = 1, - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -277,8 +269,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) }, - {} - }, + ), }, { .name = "conflict-not-disjoint", @@ -288,7 +279,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0) | BIT(1), .expected_count_sr_entries = 1, .expected_sr_errors = 1, - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -298,8 +289,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(CLR(REGULAR_REG1, REG_GENMASK(1, 0))) }, - {} - }, + ), }, { .name = "conflict-reg-type", @@ -309,7 +299,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0) | BIT(1) | BIT(2), .expected_count_sr_entries = 1, .expected_sr_errors = 2, - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("basic-1"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(REGULAR_REG1, REG_BIT(0))) @@ -324,8 +314,7 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(MASKED_REG1, REG_BIT(0))) }, - {} - }, + ), }, { .name = "bad-mcr-reg-forced-to-regular", @@ -335,13 +324,13 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0), .expected_count_sr_entries = 1, .expected_sr_errors = 1, - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("bad-mcr-regular-reg"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(BAD_MCR_REG4, REG_BIT(0))) }, {} - }, + ), }, { .name = "bad-regular-reg-forced-to-mcr", @@ -351,13 +340,13 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = { .expected_active = BIT(0), .expected_count_sr_entries = 1, .expected_sr_errors = 1, - .entries = (const struct xe_rtp_entry_sr[]) { + .table = XE_RTP_TABLE_SR( { XE_RTP_NAME("bad-regular-reg"), XE_RTP_RULES(FUNC(match_yes)), XE_RTP_ACTIONS(SET(BAD_REGULAR_REG5, REG_BIT(0))) }, {} - }, + ), }, }; @@ -369,16 +358,12 @@ static void xe_rtp_process_to_sr_tests(struct kunit *test) struct xe_reg_sr *reg_sr = >->reg_sr; const struct xe_reg_sr_entry *sre, *sr_entry = NULL; struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(gt); - unsigned long idx, count_sr_entries = 0, count_rtp_entries = 0, active = 0; + unsigned long idx, count_sr_entries = 0, active = 0; xe_reg_sr_init(reg_sr, "xe_rtp_to_sr_tests", xe); - while (param->entries[count_rtp_entries].rules) - count_rtp_entries++; - - xe_rtp_process_ctx_enable_active_tracking(&ctx, &active, count_rtp_entries); - xe_rtp_process_to_sr(&ctx, param->entries, count_rtp_entries, - reg_sr, false); + xe_rtp_process_ctx_enable_active_tracking(&ctx, &active, param->table.n_entries); + xe_rtp_process_to_sr(&ctx, ¶m->table, reg_sr, false); xa_for_each(®_sr->xa, idx, sre) { if (idx == param->expected_reg.addr) @@ -411,56 +396,52 @@ static const struct rtp_test_case rtp_cases[] = { { .name = "active1", .expected_active = BIT(0), - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_yes)), }, - {} - }, + ), }, { .name = "active2", .expected_active = BIT(0) | BIT(1), - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_yes)), }, { XE_RTP_NAME("r2"), XE_RTP_RULES(FUNC(match_yes)), }, - {} - }, + ), }, { .name = "active-inactive", .expected_active = BIT(0), - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_yes)), }, { XE_RTP_NAME("r2"), XE_RTP_RULES(FUNC(match_no)), }, - {} - }, + ), }, { .name = "inactive-active", .expected_active = BIT(1), - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_no)), }, { XE_RTP_NAME("r2"), XE_RTP_RULES(FUNC(match_yes)), }, - {} - }, + ), }, { .name = "inactive-1st_or_active-inactive", .expected_active = BIT(1), - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_no)), }, @@ -471,13 +452,12 @@ static const struct rtp_test_case rtp_cases[] = { { XE_RTP_NAME("r3"), XE_RTP_RULES(FUNC(match_no)), }, - {} - }, + ), }, { .name = "inactive-2nd_or_active-inactive", .expected_active = BIT(1), - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_no)), }, @@ -488,13 +468,12 @@ static const struct rtp_test_case rtp_cases[] = { { XE_RTP_NAME("r3"), XE_RTP_RULES(FUNC(match_no)), }, - {} - }, + ), }, { .name = "inactive-last_or_active-inactive", .expected_active = BIT(1), - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_no)), }, @@ -505,13 +484,12 @@ static const struct rtp_test_case rtp_cases[] = { { XE_RTP_NAME("r3"), XE_RTP_RULES(FUNC(match_no)), }, - {} - }, + ), }, { .name = "inactive-no_or_active-inactive", .expected_active = 0, - .entries = (const struct xe_rtp_entry[]) { + .table = XE_RTP_TABLE( { XE_RTP_NAME("r1"), XE_RTP_RULES(FUNC(match_no)), }, @@ -522,8 +500,7 @@ static const struct rtp_test_case rtp_cases[] = { { XE_RTP_NAME("r3"), XE_RTP_RULES(FUNC(match_no)), }, - {} - }, + ), }, }; @@ -533,13 +510,10 @@ static void xe_rtp_process_tests(struct kunit *test) struct xe_device *xe = test->priv; struct xe_gt *gt = xe_device_get_root_tile(xe)->primary_gt; struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(gt); - unsigned long count_rtp_entries = 0, active = 0; - - while (param->entries[count_rtp_entries].rules) - count_rtp_entries++; + unsigned long active = 0; - xe_rtp_process_ctx_enable_active_tracking(&ctx, &active, count_rtp_entries); - xe_rtp_process(&ctx, param->entries); + xe_rtp_process_ctx_enable_active_tracking(&ctx, &active, param->table.n_entries); + xe_rtp_process(&ctx, ¶m->table); KUNIT_EXPECT_EQ(test, active, param->expected_active); } diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c index 8c66ff6f3d3c..98265293f2dc 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine.c +++ b/drivers/gpu/drm/xe/xe_hw_engine.c @@ -346,7 +346,7 @@ hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe) u32 blit_cctl_val = REG_FIELD_PREP(BLIT_CCTL_DST_MOCS_MASK, mocs_write_idx) | REG_FIELD_PREP(BLIT_CCTL_SRC_MOCS_MASK, mocs_read_idx); struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); - const struct xe_rtp_entry_sr lrc_setup[] = { + const struct xe_rtp_table_sr lrc_setup = XE_RTP_TABLE_SR( /* * Some blitter commands do not have a field for MOCS, those * commands will use MOCS index pointed by BLIT_CCTL. @@ -369,10 +369,9 @@ hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe) PREEMPT_GPGPU_THREAD_GROUP_LEVEL)), XE_RTP_ENTRY_FLAG(FOREACH_ENGINE) }, - }; + ); - xe_rtp_process_to_sr(&ctx, lrc_setup, ARRAY_SIZE(lrc_setup), - &hwe->reg_lrc, true); + xe_rtp_process_to_sr(&ctx, &lrc_setup, &hwe->reg_lrc, true); } void xe_hw_engine_setup_reg_lrc(struct xe_hw_engine *hwe) @@ -408,7 +407,7 @@ hw_engine_setup_default_state(struct xe_hw_engine *hwe) u32 ring_cmd_cctl_val = REG_FIELD_PREP(CMD_CCTL_WRITE_OVERRIDE_MASK, mocs_write_idx) | REG_FIELD_PREP(CMD_CCTL_READ_OVERRIDE_MASK, mocs_read_idx); struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); - const struct xe_rtp_entry_sr engine_entries[] = { + const struct xe_rtp_table_sr engine_sr = XE_RTP_TABLE_SR( { XE_RTP_NAME("RING_CMD_CCTL_default_MOCS"), XE_RTP_RULES(FUNC(xe_rtp_match_always)), XE_RTP_ACTIONS(FIELD_SET(RING_CMD_CCTL(0), @@ -465,10 +464,9 @@ hw_engine_setup_default_state(struct xe_hw_engine *hwe) XE_RTP_ACTIONS(SET(GFX_MODE(0), GFX_MSIX_INTERRUPT_ENABLE, XE_RTP_ACTION_FLAG(ENGINE_BASE))) }, - }; + ); - xe_rtp_process_to_sr(&ctx, engine_entries, ARRAY_SIZE(engine_entries), - &hwe->reg_sr, false); + xe_rtp_process_to_sr(&ctx, &engine_sr, &hwe->reg_sr, false); } static const struct engine_info *find_engine_info(enum xe_engine_class class, int instance) diff --git a/drivers/gpu/drm/xe/xe_reg_whitelist.c b/drivers/gpu/drm/xe/xe_reg_whitelist.c index fb65940848d7..2e84b1c49f37 100644 --- a/drivers/gpu/drm/xe/xe_reg_whitelist.c +++ b/drivers/gpu/drm/xe/xe_reg_whitelist.c @@ -41,7 +41,7 @@ static bool match_multi_queue_class(const struct xe_device *xe, return xe_gt_supports_multi_queue(gt, hwe->class); } -static const struct xe_rtp_entry_sr register_whitelist[] = { +static const struct xe_rtp_table_sr register_whitelist = XE_RTP_TABLE_SR( { XE_RTP_NAME("WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865"), XE_RTP_RULES(GRAPHICS_VERSION_RANGE(1200, 1210), ENGINE_CLASS(RENDER)), XE_RTP_ACTIONS(WHITELIST(PS_INVOCATION_COUNT, @@ -154,7 +154,7 @@ static const struct xe_rtp_entry_sr register_whitelist[] = { XE_RTP_RULES(FUNC(match_has_mert), ENGINE_CLASS(COPY)), XE_RTP_ACTIONS(WHITELIST_OA_MERT_MMIO_TRG) }, -}; +); static void whitelist_apply_to_hwe(struct xe_hw_engine *hwe) { @@ -202,8 +202,7 @@ void xe_reg_whitelist_process_engine(struct xe_hw_engine *hwe) { struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); - xe_rtp_process_to_sr(&ctx, register_whitelist, ARRAY_SIZE(register_whitelist), - &hwe->reg_whitelist, false); + xe_rtp_process_to_sr(&ctx, ®ister_whitelist, &hwe->reg_whitelist, false); whitelist_apply_to_hwe(hwe); } diff --git a/drivers/gpu/drm/xe/xe_rtp.c b/drivers/gpu/drm/xe/xe_rtp.c index 1a4dcbbbc176..90bbba079260 100644 --- a/drivers/gpu/drm/xe/xe_rtp.c +++ b/drivers/gpu/drm/xe/xe_rtp.c @@ -273,8 +273,7 @@ static void rtp_mark_active(struct xe_device *xe, * xe_rtp_process_to_sr - Process all rtp @entries, adding the matching ones to * the save-restore argument. * @ctx: The context for processing the table, with one of device, gt or hwe - * @entries: Table with RTP definitions - * @n_entries: Number of entries to process, usually ARRAY_SIZE(entries) + * @table: Table with RTP definitions * @sr: Save-restore struct where matching rules execute the action. This can be * viewed as the "coalesced view" of multiple the tables. The bits for each * register set are expected not to collide with previously added entries @@ -286,12 +285,10 @@ static void rtp_mark_active(struct xe_device *xe, * used to calculate the right register offset */ void xe_rtp_process_to_sr(struct xe_rtp_process_ctx *ctx, - const struct xe_rtp_entry_sr *entries, - size_t n_entries, + const struct xe_rtp_table_sr *table, struct xe_reg_sr *sr, bool process_in_vf) { - const struct xe_rtp_entry_sr *entry; struct xe_hw_engine *hwe = NULL; struct xe_gt *gt = NULL; struct xe_device *xe = NULL; @@ -301,9 +298,10 @@ void xe_rtp_process_to_sr(struct xe_rtp_process_ctx *ctx, if (!process_in_vf && IS_SRIOV_VF(xe)) return; - xe_assert(xe, entries); + xe_assert(xe, table->entries); - for (entry = entries; entry - entries < n_entries; entry++) { + for (size_t i = 0; i < table->n_entries; i++) { + const struct xe_rtp_entry_sr *entry = &table->entries[i]; bool match = false; if (entry->flags & XE_RTP_ENTRY_FLAG_FOREACH_ENGINE) { @@ -318,37 +316,40 @@ void xe_rtp_process_to_sr(struct xe_rtp_process_ctx *ctx, } if (match) - rtp_mark_active(xe, ctx, entry - entries); + rtp_mark_active(xe, ctx, i); } } EXPORT_SYMBOL_IF_KUNIT(xe_rtp_process_to_sr); /** - * xe_rtp_process - Process all rtp @entries, without running any action + * xe_rtp_process - Process all entries in rtp @table, without running any action * @ctx: The context for processing the table, with one of device, gt or hwe - * @entries: Table with RTP definitions + * @table: Table with RTP definitions * - * Walk the table pointed by @entries (with an empty sentinel), executing the + * Walk the table pointed by @table, executing the * rules. One difference from xe_rtp_process_to_sr(): there is no action * associated with each entry since this uses struct xe_rtp_entry. Its main use * is for marking active workarounds via * xe_rtp_process_ctx_enable_active_tracking(). */ void xe_rtp_process(struct xe_rtp_process_ctx *ctx, - const struct xe_rtp_entry *entries) + const struct xe_rtp_table *table) { - const struct xe_rtp_entry *entry; struct xe_hw_engine *hwe; struct xe_gt *gt; struct xe_device *xe; rtp_get_context(ctx, &hwe, >, &xe); - for (entry = entries; entry && entry->rules; entry++) { + xe_assert(xe, table->entries); + + for (size_t i = 0; i < table->n_entries; i++) { + const struct xe_rtp_entry *entry = &table->entries[i]; + if (!rule_matches(xe, gt, hwe, entry->rules, entry->n_rules)) continue; - rtp_mark_active(xe, ctx, entry - entries); + rtp_mark_active(xe, ctx, i); } } EXPORT_SYMBOL_IF_KUNIT(xe_rtp_process); diff --git a/drivers/gpu/drm/xe/xe_rtp.h b/drivers/gpu/drm/xe/xe_rtp.h index 562082b18d7b..40c41cf9304f 100644 --- a/drivers/gpu/drm/xe/xe_rtp.h +++ b/drivers/gpu/drm/xe/xe_rtp.h @@ -440,6 +440,16 @@ struct xe_reg_sr; XE_RTP_PASTE_FOREACH(ACTION_, COMMA, (__VA_ARGS__)) \ } +#define XE_RTP_TABLE_SR(...) { \ + .entries = (const struct xe_rtp_entry_sr[]){__VA_ARGS__}, \ + .n_entries = ARRAY_SIZE(((const struct xe_rtp_entry_sr[]){__VA_ARGS__})), \ +} + +#define XE_RTP_TABLE(...) { \ + .entries = (const struct xe_rtp_entry[]){__VA_ARGS__}, \ + .n_entries = ARRAY_SIZE(((const struct xe_rtp_entry[]){__VA_ARGS__})), \ +} + #define XE_RTP_PROCESS_CTX_INITIALIZER(arg__) _Generic((arg__), \ struct xe_hw_engine * : (struct xe_rtp_process_ctx){ { (void *)(arg__) }, XE_RTP_PROCESS_TYPE_ENGINE }, \ struct xe_gt * : (struct xe_rtp_process_ctx){ { (void *)(arg__) }, XE_RTP_PROCESS_TYPE_GT }, \ @@ -450,12 +460,12 @@ void xe_rtp_process_ctx_enable_active_tracking(struct xe_rtp_process_ctx *ctx, size_t n_entries); void xe_rtp_process_to_sr(struct xe_rtp_process_ctx *ctx, - const struct xe_rtp_entry_sr *entries, - size_t n_entries, struct xe_reg_sr *sr, + const struct xe_rtp_table_sr *table, + struct xe_reg_sr *sr, bool process_in_vf); void xe_rtp_process(struct xe_rtp_process_ctx *ctx, - const struct xe_rtp_entry *entries); + const struct xe_rtp_table *table); /* Match functions to be used with XE_RTP_MATCH_FUNC */ diff --git a/drivers/gpu/drm/xe/xe_rtp_types.h b/drivers/gpu/drm/xe/xe_rtp_types.h index 0265c16d2762..58018ae4f8cc 100644 --- a/drivers/gpu/drm/xe/xe_rtp_types.h +++ b/drivers/gpu/drm/xe/xe_rtp_types.h @@ -112,6 +112,16 @@ struct xe_rtp_entry { u8 n_rules; }; +struct xe_rtp_table_sr { + const struct xe_rtp_entry_sr *entries; + size_t n_entries; +}; + +struct xe_rtp_table { + const struct xe_rtp_entry *entries; + size_t n_entries; +}; + enum xe_rtp_process_type { XE_RTP_PROCESS_TYPE_DEVICE, XE_RTP_PROCESS_TYPE_GT, diff --git a/drivers/gpu/drm/xe/xe_tuning.c b/drivers/gpu/drm/xe/xe_tuning.c index 9a1b3862e192..bf3fad9cdbef 100644 --- a/drivers/gpu/drm/xe/xe_tuning.c +++ b/drivers/gpu/drm/xe/xe_tuning.c @@ -20,7 +20,7 @@ #undef XE_REG_MCR #define XE_REG_MCR(...) XE_REG(__VA_ARGS__, .mcr = 1) -static const struct xe_rtp_entry_sr gt_tunings[] = { +static const struct xe_rtp_table_sr gt_tunings = XE_RTP_TABLE_SR( { XE_RTP_NAME("Tuning: Blend Fill Caching Optimization Disable"), XE_RTP_RULES(PLATFORM(DG2)), XE_RTP_ACTIONS(SET(XEHP_L3SCQREG7, BLEND_FILL_CACHING_OPT_DIS)) @@ -100,9 +100,9 @@ static const struct xe_rtp_entry_sr gt_tunings[] = { XE_RTP_ACTIONS(FIELD_SET(GAMSTLB_CTRL, BANK_HASH_MODE, BANK_HASH_4KB_MODE)) }, -}; +); -static const struct xe_rtp_entry_sr engine_tunings[] = { +static const struct xe_rtp_table_sr engine_tunings = XE_RTP_TABLE_SR( { XE_RTP_NAME("Tuning: L3 Hashing Mask"), XE_RTP_RULES(GRAPHICS_VERSION_RANGE(1200, 1210), FUNC(xe_rtp_match_first_render_or_compute)), @@ -129,9 +129,9 @@ static const struct xe_rtp_entry_sr engine_tunings[] = { FUNC(xe_rtp_match_first_render_or_compute)), XE_RTP_ACTIONS(SET(TDL_TSL_CHICKEN2, TILEY_LOCALID)) }, -}; +); -static const struct xe_rtp_entry_sr lrc_tunings[] = { +static const struct xe_rtp_table_sr lrc_tunings = XE_RTP_TABLE_SR( { XE_RTP_NAME("Tuning: Windower HW Filtering"), XE_RTP_RULES(GRAPHICS_VERSION_RANGE(3000, 3599), ENGINE_CLASS(RENDER)), XE_RTP_ACTIONS(SET(XEHP_COMMON_SLICE_CHICKEN4, HW_FILTERING)) @@ -171,7 +171,7 @@ static const struct xe_rtp_entry_sr lrc_tunings[] = { XE_RTP_ACTIONS(FIELD_SET(FF_MODE, VS_HIT_MAX_VALUE_MASK, REG_FIELD_PREP(VS_HIT_MAX_VALUE_MASK, 0x3f))) }, -}; +); /** * xe_tuning_init - initialize gt with tunings bookkeeping @@ -185,9 +185,9 @@ int xe_tuning_init(struct xe_gt *gt) size_t n_lrc, n_engine, n_gt, total; unsigned long *p; - n_gt = BITS_TO_LONGS(ARRAY_SIZE(gt_tunings)); - n_engine = BITS_TO_LONGS(ARRAY_SIZE(engine_tunings)); - n_lrc = BITS_TO_LONGS(ARRAY_SIZE(lrc_tunings)); + n_gt = BITS_TO_LONGS(gt_tunings.n_entries); + n_engine = BITS_TO_LONGS(engine_tunings.n_entries); + n_lrc = BITS_TO_LONGS(lrc_tunings.n_entries); total = n_gt + n_engine + n_lrc; p = drmm_kzalloc(&xe->drm, sizeof(*p) * total, GFP_KERNEL); @@ -210,9 +210,8 @@ void xe_tuning_process_gt(struct xe_gt *gt) xe_rtp_process_ctx_enable_active_tracking(&ctx, gt->tuning_active.gt, - ARRAY_SIZE(gt_tunings)); - xe_rtp_process_to_sr(&ctx, gt_tunings, ARRAY_SIZE(gt_tunings), - >->reg_sr, false); + gt_tunings.n_entries); + xe_rtp_process_to_sr(&ctx, >_tunings, >->reg_sr, false); } EXPORT_SYMBOL_IF_KUNIT(xe_tuning_process_gt); @@ -222,9 +221,8 @@ void xe_tuning_process_engine(struct xe_hw_engine *hwe) xe_rtp_process_ctx_enable_active_tracking(&ctx, hwe->gt->tuning_active.engine, - ARRAY_SIZE(engine_tunings)); - xe_rtp_process_to_sr(&ctx, engine_tunings, ARRAY_SIZE(engine_tunings), - &hwe->reg_sr, false); + engine_tunings.n_entries); + xe_rtp_process_to_sr(&ctx, &engine_tunings, &hwe->reg_sr, false); } EXPORT_SYMBOL_IF_KUNIT(xe_tuning_process_engine); @@ -242,9 +240,8 @@ void xe_tuning_process_lrc(struct xe_hw_engine *hwe) xe_rtp_process_ctx_enable_active_tracking(&ctx, hwe->gt->tuning_active.lrc, - ARRAY_SIZE(lrc_tunings)); - xe_rtp_process_to_sr(&ctx, lrc_tunings, ARRAY_SIZE(lrc_tunings), - &hwe->reg_lrc, true); + lrc_tunings.n_entries); + xe_rtp_process_to_sr(&ctx, &lrc_tunings, &hwe->reg_lrc, true); } /** @@ -259,18 +256,18 @@ int xe_tuning_dump(struct xe_gt *gt, struct drm_printer *p) size_t idx; drm_printf(p, "GT Tunings\n"); - for_each_set_bit(idx, gt->tuning_active.gt, ARRAY_SIZE(gt_tunings)) - drm_printf_indent(p, 1, "%s\n", gt_tunings[idx].name); + for_each_set_bit(idx, gt->tuning_active.gt, gt_tunings.n_entries) + drm_printf_indent(p, 1, "%s\n", gt_tunings.entries[idx].name); drm_puts(p, "\n"); drm_printf(p, "Engine Tunings\n"); - for_each_set_bit(idx, gt->tuning_active.engine, ARRAY_SIZE(engine_tunings)) - drm_printf_indent(p, 1, "%s\n", engine_tunings[idx].name); + for_each_set_bit(idx, gt->tuning_active.engine, engine_tunings.n_entries) + drm_printf_indent(p, 1, "%s\n", engine_tunings.entries[idx].name); drm_puts(p, "\n"); drm_printf(p, "LRC Tunings\n"); - for_each_set_bit(idx, gt->tuning_active.lrc, ARRAY_SIZE(lrc_tunings)) - drm_printf_indent(p, 1, "%s\n", lrc_tunings[idx].name); + for_each_set_bit(idx, gt->tuning_active.lrc, lrc_tunings.n_entries) + drm_printf_indent(p, 1, "%s\n", lrc_tunings.entries[idx].name); return 0; } diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c index cb811f8a7781..b9d9fe0801aa 100644 --- a/drivers/gpu/drm/xe/xe_wa.c +++ b/drivers/gpu/drm/xe/xe_wa.c @@ -130,7 +130,7 @@ __diag_push(); __diag_ignore_all("-Woverride-init", "Allow field overrides in table"); -static const struct xe_rtp_entry_sr gt_was[] = { +static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( /* Workarounds applying over a range of IPs */ { XE_RTP_NAME("14011060649"), @@ -306,9 +306,9 @@ static const struct xe_rtp_entry_sr gt_was[] = { XE_RTP_RULES(GRAPHICS_VERSION(3510), GRAPHICS_STEP(A0, B0)), XE_RTP_ACTIONS(SET(GUC_INTR_CHICKEN, DISABLE_SIGNALING_ENGINES)) }, -}; +); -static const struct xe_rtp_entry_sr engine_was[] = { +static const struct xe_rtp_table_sr engine_was = XE_RTP_TABLE_SR( /* Workarounds applying over a range of IPs */ { XE_RTP_NAME("22010931296, 18011464164, 14010919138"), @@ -614,9 +614,9 @@ static const struct xe_rtp_entry_sr engine_was[] = { FUNC(xe_rtp_match_first_render_or_compute)), XE_RTP_ACTIONS(SET(TDL_CHICKEN, BIT_APQ_OPT_DIS)) }, -}; +); -static const struct xe_rtp_entry_sr lrc_was[] = { +static const struct xe_rtp_table_sr lrc_was = XE_RTP_TABLE_SR( { XE_RTP_NAME("16011163337"), XE_RTP_RULES(GRAPHICS_VERSION_RANGE(1200, 1210), ENGINE_CLASS(RENDER)), /* read verification is ignored due to 1608008084. */ @@ -794,21 +794,29 @@ static const struct xe_rtp_entry_sr lrc_was[] = { ENGINE_CLASS(RENDER)), XE_RTP_ACTIONS(SET(CHICKEN_RASTER_1, DIS_CLIP_NEGATIVE_BOUNDING_BOX)) }, -}; +); -static __maybe_unused const struct xe_rtp_entry oob_was[] = { +static const struct xe_rtp_entry oob_was_entries[] = { #include <generated/xe_wa_oob.c> - {} }; -static_assert(ARRAY_SIZE(oob_was) - 1 == _XE_WA_OOB_COUNT); +static_assert(ARRAY_SIZE(oob_was_entries) == _XE_WA_OOB_COUNT); -static __maybe_unused const struct xe_rtp_entry device_oob_was[] = { +static __maybe_unused const struct xe_rtp_table oob_was = { + .entries = oob_was_entries, + .n_entries = ARRAY_SIZE(oob_was_entries), +}; + +static const struct xe_rtp_entry device_oob_was_entries[] = { #include <generated/xe_device_wa_oob.c> - {} }; -static_assert(ARRAY_SIZE(device_oob_was) - 1 == _XE_DEVICE_WA_OOB_COUNT); +static_assert(ARRAY_SIZE(device_oob_was_entries) == _XE_DEVICE_WA_OOB_COUNT); + +static __maybe_unused const struct xe_rtp_table device_oob_was = { + .entries = device_oob_was_entries, + .n_entries = ARRAY_SIZE(device_oob_was_entries), +}; __diag_pop(); @@ -824,10 +832,10 @@ void xe_wa_process_device_oob(struct xe_device *xe) { struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(xe); - xe_rtp_process_ctx_enable_active_tracking(&ctx, xe->wa_active.oob, ARRAY_SIZE(device_oob_was)); + xe_rtp_process_ctx_enable_active_tracking(&ctx, xe->wa_active.oob, device_oob_was.n_entries); xe->wa_active.oob_initialized = true; - xe_rtp_process(&ctx, device_oob_was); + xe_rtp_process(&ctx, &device_oob_was); } /** @@ -842,9 +850,9 @@ void xe_wa_process_gt_oob(struct xe_gt *gt) struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(gt); xe_rtp_process_ctx_enable_active_tracking(&ctx, gt->wa_active.oob, - ARRAY_SIZE(oob_was)); + oob_was.n_entries); gt->wa_active.oob_initialized = true; - xe_rtp_process(&ctx, oob_was); + xe_rtp_process(&ctx, &oob_was); } /** @@ -859,9 +867,8 @@ void xe_wa_process_gt(struct xe_gt *gt) struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(gt); xe_rtp_process_ctx_enable_active_tracking(&ctx, gt->wa_active.gt, - ARRAY_SIZE(gt_was)); - xe_rtp_process_to_sr(&ctx, gt_was, ARRAY_SIZE(gt_was), - >->reg_sr, false); + gt_was.n_entries); + xe_rtp_process_to_sr(&ctx, >_was, >->reg_sr, false); } EXPORT_SYMBOL_IF_KUNIT(xe_wa_process_gt); @@ -878,9 +885,8 @@ void xe_wa_process_engine(struct xe_hw_engine *hwe) struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); xe_rtp_process_ctx_enable_active_tracking(&ctx, hwe->gt->wa_active.engine, - ARRAY_SIZE(engine_was)); - xe_rtp_process_to_sr(&ctx, engine_was, ARRAY_SIZE(engine_was), - &hwe->reg_sr, false); + engine_was.n_entries); + xe_rtp_process_to_sr(&ctx, &engine_was, &hwe->reg_sr, false); } /** @@ -896,9 +902,8 @@ void xe_wa_process_lrc(struct xe_hw_engine *hwe) struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); xe_rtp_process_ctx_enable_active_tracking(&ctx, hwe->gt->wa_active.lrc, - ARRAY_SIZE(lrc_was)); - xe_rtp_process_to_sr(&ctx, lrc_was, ARRAY_SIZE(lrc_was), - &hwe->reg_lrc, true); + lrc_was.n_entries); + xe_rtp_process_to_sr(&ctx, &lrc_was, &hwe->reg_lrc, true); } /** @@ -912,7 +917,7 @@ int xe_wa_device_init(struct xe_device *xe) unsigned long *p; p = drmm_kzalloc(&xe->drm, - sizeof(*p) * BITS_TO_LONGS(ARRAY_SIZE(device_oob_was)), + sizeof(*p) * BITS_TO_LONGS(device_oob_was.n_entries), GFP_KERNEL); if (!p) @@ -935,10 +940,10 @@ int xe_wa_gt_init(struct xe_gt *gt) size_t n_oob, n_lrc, n_engine, n_gt, total; unsigned long *p; - n_gt = BITS_TO_LONGS(ARRAY_SIZE(gt_was)); - n_engine = BITS_TO_LONGS(ARRAY_SIZE(engine_was)); - n_lrc = BITS_TO_LONGS(ARRAY_SIZE(lrc_was)); - n_oob = BITS_TO_LONGS(ARRAY_SIZE(oob_was)); + n_gt = BITS_TO_LONGS(gt_was.n_entries); + n_engine = BITS_TO_LONGS(engine_was.n_entries); + n_lrc = BITS_TO_LONGS(lrc_was.n_entries); + n_oob = BITS_TO_LONGS(oob_was.n_entries); total = n_gt + n_engine + n_lrc + n_oob; p = drmm_kzalloc(&xe->drm, sizeof(*p) * total, GFP_KERNEL); @@ -962,9 +967,9 @@ void xe_wa_device_dump(struct xe_device *xe, struct drm_printer *p) size_t idx; drm_printf(p, "Device OOB Workarounds\n"); - for_each_set_bit(idx, xe->wa_active.oob, ARRAY_SIZE(device_oob_was)) - if (device_oob_was[idx].name) - drm_printf_indent(p, 1, "%s\n", device_oob_was[idx].name); + for_each_set_bit(idx, xe->wa_active.oob, device_oob_was.n_entries) + if (device_oob_was.entries[idx].name) + drm_printf_indent(p, 1, "%s\n", device_oob_was.entries[idx].name); } /** @@ -979,24 +984,24 @@ int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p) size_t idx; drm_printf(p, "GT Workarounds\n"); - for_each_set_bit(idx, gt->wa_active.gt, ARRAY_SIZE(gt_was)) - drm_printf_indent(p, 1, "%s\n", gt_was[idx].name); + for_each_set_bit(idx, gt->wa_active.gt, gt_was.n_entries) + drm_printf_indent(p, 1, "%s\n", gt_was.entries[idx].name); drm_puts(p, "\n"); drm_printf(p, "Engine Workarounds\n"); - for_each_set_bit(idx, gt->wa_active.engine, ARRAY_SIZE(engine_was)) - drm_printf_indent(p, 1, "%s\n", engine_was[idx].name); + for_each_set_bit(idx, gt->wa_active.engine, engine_was.n_entries) + drm_printf_indent(p, 1, "%s\n", engine_was.entries[idx].name); drm_puts(p, "\n"); drm_printf(p, "LRC Workarounds\n"); - for_each_set_bit(idx, gt->wa_active.lrc, ARRAY_SIZE(lrc_was)) - drm_printf_indent(p, 1, "%s\n", lrc_was[idx].name); + for_each_set_bit(idx, gt->wa_active.lrc, lrc_was.n_entries) + drm_printf_indent(p, 1, "%s\n", lrc_was.entries[idx].name); drm_puts(p, "\n"); drm_printf(p, "OOB Workarounds\n"); - for_each_set_bit(idx, gt->wa_active.oob, ARRAY_SIZE(oob_was)) - if (oob_was[idx].name) - drm_printf_indent(p, 1, "%s\n", oob_was[idx].name); + for_each_set_bit(idx, gt->wa_active.oob, oob_was.n_entries) + if (oob_was.entries[idx].name) + drm_printf_indent(p, 1, "%s\n", oob_was.entries[idx].name); return 0; } -- 2.43.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti 2026-05-19 19:32 ` [PATCH v2 1/4] drm/xe/rtp: Add struct types for RTP tables Violet Monti @ 2026-05-19 19:32 ` Violet Monti 2026-05-21 20:12 ` Gustavo Sousa 2026-05-19 19:32 ` [PATCH v2 3/4] drm/xe/rtp: Ensure oob_was does not evaluate engine type rules Violet Monti ` (5 subsequent siblings) 7 siblings, 1 reply; 14+ messages in thread From: Violet Monti @ 2026-05-19 19:32 UTC (permalink / raw) To: intel-xe; +Cc: Violet Monti It is currently possible for a RTP rule, and subsequently a workaround, to expect contexts that may not be present when the workaround is applied. For example, the workarounds in the engine_was[] in drm/xe/xe_wa.c expect an engine entity to be active. Conversely, the gt_was[] is not depending on an engine entity to implement its workarounds. This kunit test addition checks the gt_was[] workaround list for any workarounds with XEP_RTP_ENGINE_CLASS() rules. If a workaround does have one of these rules, the workaround is then checked for the "FOREACH_ENGINE" flag, which ensures the workaround is implemented properly. The result of this test is an expectation failure if a workaround has an improper XE_RTP_ENGINE_CLASS() rule setup, and aims to prevent future issues of gt_was workarounds being applied without proper contexts. v2: - Moved contents of xe_rtp_tables_test.h to .c and removed file - Renamed macro RTP_KUNIT_ARRAY_PARAM to RTP_TABLE_PARAM - Removed unnecessary functions and iterative components from generated _gen_params functions and implemented usage of table name and WA number as entry name - Condensed xe_rtp_table_gt_test() to use KUNIT_EXPECT_TRUE with no message statement - Removed xe_rtp_table_test_init() and xe_rtp_table_test_exit() as fake device initialization is not necessary Signed-off-by: Violet Monti <violet.monti@intel.com> --- drivers/gpu/drm/xe/tests/Makefile | 1 + drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 55 +++++++++++++++++++ drivers/gpu/drm/xe/xe_wa.c | 3 +- drivers/gpu/drm/xe/xe_wa.h | 5 ++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c diff --git a/drivers/gpu/drm/xe/tests/Makefile b/drivers/gpu/drm/xe/tests/Makefile index 0e3408f4952c..f7aa47f11a36 100644 --- a/drivers/gpu/drm/xe/tests/Makefile +++ b/drivers/gpu/drm/xe/tests/Makefile @@ -9,5 +9,6 @@ obj-$(CONFIG_DRM_XE_KUNIT_TEST) += xe_test.o xe_test-y = xe_test_mod.o \ xe_args_test.o \ xe_pci_test.o \ + xe_rtp_tables_test.o \ xe_rtp_test.o \ xe_wa_test.o diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c new file mode 100644 index 000000000000..01d2bc6e8aad --- /dev/null +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright © 2026 Intel Corporation + */ + +#include <drm/drm_kunit_helpers.h> + +#include "xe_kunit_helpers.h" +#include "xe_pci_test.h" +#include "xe_rtp.h" +#include "xe_wa.h" + +/** + * RTP_TABLE_PARAM() - Define test parameter generator from a RTP table. + * @table: array of test parameters which includes a n_entries value + * + * Define function @table_gen_params which uses @table to generate parameters. + */ +#define RTP_TABLE_PARAM(table) \ + static const void *table##_gen_params(struct kunit *test, \ + const void *prev, char *desc) \ + { \ + typeof((table.entries)[0]) *__next = prev ? \ + ((typeof(__next))prev) + 1 : (table.entries); \ + if (__next - table.entries < table.n_entries) { \ + scnprintf(desc, KUNIT_PARAM_DESC_SIZE, #table "/%s", __next->name); \ + return __next; \ + } \ + return NULL; \ + } + +static void xe_rtp_table_gt_test(struct kunit *test) +{ + const struct xe_rtp_entry_sr *entry = test->param_value; + + for (int i = 0; i < entry->n_rules; i++) + KUNIT_EXPECT_TRUE(test, + (entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS) || + entry->flags & XE_RTP_ENTRY_FLAG_FOREACH_ENGINE); +} + +RTP_TABLE_PARAM(gt_was); + +static struct kunit_case xe_rtp_table_tests[] = { + KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), + {} +}; + +static struct kunit_suite xe_rtp_tables_test_suite = { + .name = "xe_rtp_tables_test", + .test_cases = xe_rtp_table_tests, +}; + +kunit_test_suite(xe_rtp_tables_test_suite); diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c index b9d9fe0801aa..1a1e04215f21 100644 --- a/drivers/gpu/drm/xe/xe_wa.c +++ b/drivers/gpu/drm/xe/xe_wa.c @@ -130,7 +130,7 @@ __diag_push(); __diag_ignore_all("-Woverride-init", "Allow field overrides in table"); -static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( +VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( /* Workarounds applying over a range of IPs */ { XE_RTP_NAME("14011060649"), @@ -307,6 +307,7 @@ static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( XE_RTP_ACTIONS(SET(GUC_INTR_CHICKEN, DISABLE_SIGNALING_ENGINES)) }, ); +EXPORT_SYMBOL_IF_KUNIT(gt_was); static const struct xe_rtp_table_sr engine_was = XE_RTP_TABLE_SR( /* Workarounds applying over a range of IPs */ diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h index a5f7d33c1b32..17dff615e507 100644 --- a/drivers/gpu/drm/xe/xe_wa.h +++ b/drivers/gpu/drm/xe/xe_wa.h @@ -6,6 +6,7 @@ #ifndef _XE_WA_H_ #define _XE_WA_H_ +#include <kunit/visibility.h> #include "xe_assert.h" struct drm_printer; @@ -24,6 +25,10 @@ void xe_wa_apply_tile_workarounds(struct xe_tile *tile); void xe_wa_device_dump(struct xe_device *xe, struct drm_printer *p); int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); +#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) +extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; +#endif + /** * XE_GT_WA - Out-of-band GT workarounds, to be queried and called as needed. * @gt__: gt instance -- 2.43.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types 2026-05-19 19:32 ` [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types Violet Monti @ 2026-05-21 20:12 ` Gustavo Sousa 2026-05-21 20:56 ` Violet Monti 2026-05-21 21:11 ` Gustavo Sousa 0 siblings, 2 replies; 14+ messages in thread From: Gustavo Sousa @ 2026-05-21 20:12 UTC (permalink / raw) To: Violet Monti, intel-xe; +Cc: Violet Monti Violet Monti <violet.monti@intel.com> writes: > It is currently possible for a RTP rule, and subsequently a workaround, > to expect contexts that may not be present when the workaround is > applied. For example, the workarounds in the engine_was[] in drm/xe/xe_wa.c > expect an engine entity to be active. Conversely, the gt_was[] is not > depending on an engine entity to implement its workarounds. This kunit > test addition checks the gt_was[] workaround list for any workarounds > with XEP_RTP_ENGINE_CLASS() rules. If a workaround does have one of > these rules, the workaround is then checked for the "FOREACH_ENGINE" flag, > which ensures the workaround is implemented properly. > > The result of this test is an expectation failure if a workaround has an > improper XE_RTP_ENGINE_CLASS() rule setup, and aims to prevent future > issues of gt_was workarounds being applied without proper contexts. > > v2: > - Moved contents of xe_rtp_tables_test.h to .c and removed file > - Renamed macro RTP_KUNIT_ARRAY_PARAM to RTP_TABLE_PARAM > - Removed unnecessary functions and iterative components from > generated _gen_params functions and implemented usage of table > name and WA number as entry name > - Condensed xe_rtp_table_gt_test() to use KUNIT_EXPECT_TRUE with no > message statement > - Removed xe_rtp_table_test_init() and xe_rtp_table_test_exit() as > fake device initialization is not necessary > > Signed-off-by: Violet Monti <violet.monti@intel.com> > --- > drivers/gpu/drm/xe/tests/Makefile | 1 + > drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 55 +++++++++++++++++++ > drivers/gpu/drm/xe/xe_wa.c | 3 +- > drivers/gpu/drm/xe/xe_wa.h | 5 ++ > 4 files changed, 63 insertions(+), 1 deletion(-) > create mode 100644 drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > > diff --git a/drivers/gpu/drm/xe/tests/Makefile b/drivers/gpu/drm/xe/tests/Makefile > index 0e3408f4952c..f7aa47f11a36 100644 > --- a/drivers/gpu/drm/xe/tests/Makefile > +++ b/drivers/gpu/drm/xe/tests/Makefile > @@ -9,5 +9,6 @@ obj-$(CONFIG_DRM_XE_KUNIT_TEST) += xe_test.o > xe_test-y = xe_test_mod.o \ > xe_args_test.o \ > xe_pci_test.o \ > + xe_rtp_tables_test.o \ > xe_rtp_test.o \ > xe_wa_test.o > diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > new file mode 100644 > index 000000000000..01d2bc6e8aad > --- /dev/null > +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > @@ -0,0 +1,55 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright © 2026 Intel Corporation > + */ > + > +#include <drm/drm_kunit_helpers.h> > + > +#include "xe_kunit_helpers.h" > +#include "xe_pci_test.h" > +#include "xe_rtp.h" > +#include "xe_wa.h" > + > +/** So, the macro is used only internally and simple enough that I personally think we don't need the comment. But, if you think that will be useful, I'm fine with it too (but it does not need to be a kernel-doc). > + * RTP_TABLE_PARAM() - Define test parameter generator from a RTP table. > + * @table: array of test parameters which includes a n_entries value The input is the RTP table, no? And then the function will generate the test parameters from the table. > + * > + * Define function @table_gen_params which uses @table to generate parameters. If this were to be processed by the kernel documentation generator, it would not find @table_gen_params. Not sure about what would be the alternative here. Maybe just spell out the CPP syntax here? I.e. Define function table##_gen_params(). > + */ > +#define RTP_TABLE_PARAM(table) \ > + static const void *table##_gen_params(struct kunit *test, \ > + const void *prev, char *desc) \ > + { \ > + typeof((table.entries)[0]) *__next = prev ? \ > + ((typeof(__next))prev) + 1 : (table.entries); \ > + if (__next - table.entries < table.n_entries) { \ > + scnprintf(desc, KUNIT_PARAM_DESC_SIZE, #table "/%s", __next->name); \ > + return __next; \ > + } \ > + return NULL; \ > + } > + > +static void xe_rtp_table_gt_test(struct kunit *test) > +{ > + const struct xe_rtp_entry_sr *entry = test->param_value; > + > + for (int i = 0; i < entry->n_rules; i++) > + KUNIT_EXPECT_TRUE(test, > + (entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && > + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS) || > + entry->flags & XE_RTP_ENTRY_FLAG_FOREACH_ENGINE); > +} > + > +RTP_TABLE_PARAM(gt_was); > + > +static struct kunit_case xe_rtp_table_tests[] = { > + KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), > + {} > +}; > + > +static struct kunit_suite xe_rtp_tables_test_suite = { > + .name = "xe_rtp_tables_test", > + .test_cases = xe_rtp_table_tests, > +}; > + > +kunit_test_suite(xe_rtp_tables_test_suite); > diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c > index b9d9fe0801aa..1a1e04215f21 100644 > --- a/drivers/gpu/drm/xe/xe_wa.c > +++ b/drivers/gpu/drm/xe/xe_wa.c > @@ -130,7 +130,7 @@ > __diag_push(); > __diag_ignore_all("-Woverride-init", "Allow field overrides in table"); > > -static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( > +VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( > /* Workarounds applying over a range of IPs */ > > { XE_RTP_NAME("14011060649"), > @@ -307,6 +307,7 @@ static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( > XE_RTP_ACTIONS(SET(GUC_INTR_CHICKEN, DISABLE_SIGNALING_ENGINES)) > }, > ); > +EXPORT_SYMBOL_IF_KUNIT(gt_was); > > static const struct xe_rtp_table_sr engine_was = XE_RTP_TABLE_SR( > /* Workarounds applying over a range of IPs */ > diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h > index a5f7d33c1b32..17dff615e507 100644 > --- a/drivers/gpu/drm/xe/xe_wa.h > +++ b/drivers/gpu/drm/xe/xe_wa.h > @@ -6,6 +6,7 @@ > #ifndef _XE_WA_H_ > #define _XE_WA_H_ > > +#include <kunit/visibility.h> > #include "xe_assert.h" > > struct drm_printer; > @@ -24,6 +25,10 @@ void xe_wa_apply_tile_workarounds(struct xe_tile *tile); > void xe_wa_device_dump(struct xe_device *xe, struct drm_printer *p); > int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); > > +#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) > +extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; The VISIBLE_IF_KUNIT here is unnecessary and doesn't make much sense: that macro is about adding or not the "static" keyword in the declaration and should only be part of the variable definition in the .c file. -- Gustavo Sousa > +#endif > + > /** > * XE_GT_WA - Out-of-band GT workarounds, to be queried and called as needed. > * @gt__: gt instance > -- > 2.43.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types 2026-05-21 20:12 ` Gustavo Sousa @ 2026-05-21 20:56 ` Violet Monti 2026-05-21 21:11 ` Gustavo Sousa 1 sibling, 0 replies; 14+ messages in thread From: Violet Monti @ 2026-05-21 20:56 UTC (permalink / raw) To: Gustavo Sousa; +Cc: intel-xe On Thu, May 21, 2026 at 05:12:39PM -0300, Gustavo Sousa wrote: > Violet Monti <violet.monti@intel.com> writes: > > > It is currently possible for a RTP rule, and subsequently a workaround, > > to expect contexts that may not be present when the workaround is > > applied. For example, the workarounds in the engine_was[] in drm/xe/xe_wa.c > > expect an engine entity to be active. Conversely, the gt_was[] is not > > depending on an engine entity to implement its workarounds. This kunit > > test addition checks the gt_was[] workaround list for any workarounds > > with XEP_RTP_ENGINE_CLASS() rules. If a workaround does have one of > > these rules, the workaround is then checked for the "FOREACH_ENGINE" flag, > > which ensures the workaround is implemented properly. > > > > The result of this test is an expectation failure if a workaround has an > > improper XE_RTP_ENGINE_CLASS() rule setup, and aims to prevent future > > issues of gt_was workarounds being applied without proper contexts. > > > > v2: > > - Moved contents of xe_rtp_tables_test.h to .c and removed file > > - Renamed macro RTP_KUNIT_ARRAY_PARAM to RTP_TABLE_PARAM > > - Removed unnecessary functions and iterative components from > > generated _gen_params functions and implemented usage of table > > name and WA number as entry name > > - Condensed xe_rtp_table_gt_test() to use KUNIT_EXPECT_TRUE with no > > message statement > > - Removed xe_rtp_table_test_init() and xe_rtp_table_test_exit() as > > fake device initialization is not necessary > > > > Signed-off-by: Violet Monti <violet.monti@intel.com> > > --- > > drivers/gpu/drm/xe/tests/Makefile | 1 + > > drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 55 +++++++++++++++++++ > > drivers/gpu/drm/xe/xe_wa.c | 3 +- > > drivers/gpu/drm/xe/xe_wa.h | 5 ++ > > 4 files changed, 63 insertions(+), 1 deletion(-) > > create mode 100644 drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > > > > diff --git a/drivers/gpu/drm/xe/tests/Makefile b/drivers/gpu/drm/xe/tests/Makefile > > index 0e3408f4952c..f7aa47f11a36 100644 > > --- a/drivers/gpu/drm/xe/tests/Makefile > > +++ b/drivers/gpu/drm/xe/tests/Makefile > > @@ -9,5 +9,6 @@ obj-$(CONFIG_DRM_XE_KUNIT_TEST) += xe_test.o > > xe_test-y = xe_test_mod.o \ > > xe_args_test.o \ > > xe_pci_test.o \ > > + xe_rtp_tables_test.o \ > > xe_rtp_test.o \ > > xe_wa_test.o > > diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > > new file mode 100644 > > index 000000000000..01d2bc6e8aad > > --- /dev/null > > +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > > @@ -0,0 +1,55 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Copyright © 2026 Intel Corporation > > + */ > > + > > +#include <drm/drm_kunit_helpers.h> > > + > > +#include "xe_kunit_helpers.h" > > +#include "xe_pci_test.h" > > +#include "xe_rtp.h" > > +#include "xe_wa.h" > > + > > +/** > > So, the macro is used only internally and simple enough that I > personally think we don't need the comment. But, if you think that will > be useful, I'm fine with it too (but it does not need to be a > kernel-doc). > > > + * RTP_TABLE_PARAM() - Define test parameter generator from a RTP table. > > + * @table: array of test parameters which includes a n_entries value > > The input is the RTP table, no? And then the function will generate the > test parameters from the table. > > > + * > > + * Define function @table_gen_params which uses @table to generate parameters. > > If this were to be processed by the kernel documentation generator, it > would not find @table_gen_params. Not sure about what would be the > alternative here. Maybe just spell out the CPP syntax here? I.e. Define > function table##_gen_params(). > With that added complexity and the fact this is a limited macro for this file alone, I will leave out the comment. If a maintainer or otherwise decides it should have an entry in the documentation, I can implement a similar documentation entry as the KUNIT_ARRAY_PARAM(), which uses the syntax I was basing this on. > > + */ > > +#define RTP_TABLE_PARAM(table) \ > > + static const void *table##_gen_params(struct kunit *test, \ > > + const void *prev, char *desc) \ > > + { \ > > + typeof((table.entries)[0]) *__next = prev ? \ > > + ((typeof(__next))prev) + 1 : (table.entries); \ > > + if (__next - table.entries < table.n_entries) { \ > > + scnprintf(desc, KUNIT_PARAM_DESC_SIZE, #table "/%s", __next->name); \ > > + return __next; \ > > + } \ > > + return NULL; \ > > + } > > + > > +static void xe_rtp_table_gt_test(struct kunit *test) > > +{ > > + const struct xe_rtp_entry_sr *entry = test->param_value; > > + > > + for (int i = 0; i < entry->n_rules; i++) > > + KUNIT_EXPECT_TRUE(test, > > + (entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && > > + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS) || > > + entry->flags & XE_RTP_ENTRY_FLAG_FOREACH_ENGINE); > > +} > > + > > +RTP_TABLE_PARAM(gt_was); > > + > > +static struct kunit_case xe_rtp_table_tests[] = { > > + KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), > > + {} > > +}; > > + > > +static struct kunit_suite xe_rtp_tables_test_suite = { > > + .name = "xe_rtp_tables_test", > > + .test_cases = xe_rtp_table_tests, > > +}; > > + > > +kunit_test_suite(xe_rtp_tables_test_suite); > > diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c > > index b9d9fe0801aa..1a1e04215f21 100644 > > --- a/drivers/gpu/drm/xe/xe_wa.c > > +++ b/drivers/gpu/drm/xe/xe_wa.c > > @@ -130,7 +130,7 @@ > > __diag_push(); > > __diag_ignore_all("-Woverride-init", "Allow field overrides in table"); > > > > -static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( > > +VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( > > /* Workarounds applying over a range of IPs */ > > > > { XE_RTP_NAME("14011060649"), > > @@ -307,6 +307,7 @@ static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( > > XE_RTP_ACTIONS(SET(GUC_INTR_CHICKEN, DISABLE_SIGNALING_ENGINES)) > > }, > > ); > > +EXPORT_SYMBOL_IF_KUNIT(gt_was); > > > > static const struct xe_rtp_table_sr engine_was = XE_RTP_TABLE_SR( > > /* Workarounds applying over a range of IPs */ > > diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h > > index a5f7d33c1b32..17dff615e507 100644 > > --- a/drivers/gpu/drm/xe/xe_wa.h > > +++ b/drivers/gpu/drm/xe/xe_wa.h > > @@ -6,6 +6,7 @@ > > #ifndef _XE_WA_H_ > > #define _XE_WA_H_ > > > > +#include <kunit/visibility.h> > > #include "xe_assert.h" > > > > struct drm_printer; > > @@ -24,6 +25,10 @@ void xe_wa_apply_tile_workarounds(struct xe_tile *tile); > > void xe_wa_device_dump(struct xe_device *xe, struct drm_printer *p); > > int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); > > > > +#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) > > +extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; > > The VISIBLE_IF_KUNIT here is unnecessary and doesn't make much sense: > that macro is about adding or not the "static" keyword in the > declaration and should only be part of the variable definition in the .c > file. > Understood. -- Violet Monti > > -- > Gustavo Sousa > > > +#endif > > + > > /** > > * XE_GT_WA - Out-of-band GT workarounds, to be queried and called as needed. > > * @gt__: gt instance > > -- > > 2.43.0 -- -- Violet Monti ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types 2026-05-21 20:12 ` Gustavo Sousa 2026-05-21 20:56 ` Violet Monti @ 2026-05-21 21:11 ` Gustavo Sousa 1 sibling, 0 replies; 14+ messages in thread From: Gustavo Sousa @ 2026-05-21 21:11 UTC (permalink / raw) To: Violet Monti, intel-xe; +Cc: Violet Monti Gustavo Sousa <gustavo.sousa@intel.com> writes: > Violet Monti <violet.monti@intel.com> writes: > >> It is currently possible for a RTP rule, and subsequently a workaround, >> to expect contexts that may not be present when the workaround is >> applied. For example, the workarounds in the engine_was[] in drm/xe/xe_wa.c >> expect an engine entity to be active. Conversely, the gt_was[] is not >> depending on an engine entity to implement its workarounds. This kunit >> test addition checks the gt_was[] workaround list for any workarounds >> with XEP_RTP_ENGINE_CLASS() rules. If a workaround does have one of >> these rules, the workaround is then checked for the "FOREACH_ENGINE" flag, >> which ensures the workaround is implemented properly. >> >> The result of this test is an expectation failure if a workaround has an >> improper XE_RTP_ENGINE_CLASS() rule setup, and aims to prevent future >> issues of gt_was workarounds being applied without proper contexts. >> >> v2: >> - Moved contents of xe_rtp_tables_test.h to .c and removed file >> - Renamed macro RTP_KUNIT_ARRAY_PARAM to RTP_TABLE_PARAM >> - Removed unnecessary functions and iterative components from >> generated _gen_params functions and implemented usage of table >> name and WA number as entry name >> - Condensed xe_rtp_table_gt_test() to use KUNIT_EXPECT_TRUE with no >> message statement >> - Removed xe_rtp_table_test_init() and xe_rtp_table_test_exit() as >> fake device initialization is not necessary >> >> Signed-off-by: Violet Monti <violet.monti@intel.com> >> --- >> drivers/gpu/drm/xe/tests/Makefile | 1 + >> drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 55 +++++++++++++++++++ >> drivers/gpu/drm/xe/xe_wa.c | 3 +- >> drivers/gpu/drm/xe/xe_wa.h | 5 ++ >> 4 files changed, 63 insertions(+), 1 deletion(-) >> create mode 100644 drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c >> >> diff --git a/drivers/gpu/drm/xe/tests/Makefile b/drivers/gpu/drm/xe/tests/Makefile >> index 0e3408f4952c..f7aa47f11a36 100644 >> --- a/drivers/gpu/drm/xe/tests/Makefile >> +++ b/drivers/gpu/drm/xe/tests/Makefile >> @@ -9,5 +9,6 @@ obj-$(CONFIG_DRM_XE_KUNIT_TEST) += xe_test.o >> xe_test-y = xe_test_mod.o \ >> xe_args_test.o \ >> xe_pci_test.o \ >> + xe_rtp_tables_test.o \ >> xe_rtp_test.o \ >> xe_wa_test.o >> diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c >> new file mode 100644 >> index 000000000000..01d2bc6e8aad >> --- /dev/null >> +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c >> @@ -0,0 +1,55 @@ >> +// SPDX-License-Identifier: GPL-2.0 >> +/* >> + * Copyright © 2026 Intel Corporation >> + */ >> + >> +#include <drm/drm_kunit_helpers.h> >> + >> +#include "xe_kunit_helpers.h" >> +#include "xe_pci_test.h" >> +#include "xe_rtp.h" >> +#include "xe_wa.h" >> + >> +/** > > So, the macro is used only internally and simple enough that I > personally think we don't need the comment. But, if you think that will > be useful, I'm fine with it too (but it does not need to be a > kernel-doc). > >> + * RTP_TABLE_PARAM() - Define test parameter generator from a RTP table. >> + * @table: array of test parameters which includes a n_entries value > > The input is the RTP table, no? And then the function will generate the > test parameters from the table. > >> + * >> + * Define function @table_gen_params which uses @table to generate parameters. > > If this were to be processed by the kernel documentation generator, it > would not find @table_gen_params. Not sure about what would be the > alternative here. Maybe just spell out the CPP syntax here? I.e. Define > function table##_gen_params(). > >> + */ >> +#define RTP_TABLE_PARAM(table) \ >> + static const void *table##_gen_params(struct kunit *test, \ >> + const void *prev, char *desc) \ >> + { \ >> + typeof((table.entries)[0]) *__next = prev ? \ >> + ((typeof(__next))prev) + 1 : (table.entries); \ >> + if (__next - table.entries < table.n_entries) { \ >> + scnprintf(desc, KUNIT_PARAM_DESC_SIZE, #table "/%s", __next->name); \ >> + return __next; \ >> + } \ >> + return NULL; \ >> + } >> + >> +static void xe_rtp_table_gt_test(struct kunit *test) >> +{ >> + const struct xe_rtp_entry_sr *entry = test->param_value; >> + >> + for (int i = 0; i < entry->n_rules; i++) >> + KUNIT_EXPECT_TRUE(test, >> + (entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && >> + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS) || >> + entry->flags & XE_RTP_ENTRY_FLAG_FOREACH_ENGINE); >> +} >> + >> +RTP_TABLE_PARAM(gt_was); Ah, another thing: it occurred to me that gt_tunings is also applicable for xe_rtp_table_gt_test, so we could also add RTP_TABLE_PARAM(gt_tunnings) here and add a new KUNIT_CASE_PARAM() below. I think it would be fine to add this to this same patch and reword it a bit. But if you prefer to send it as a separate patch, that would be fine as well. -- Gustavo Sousa >> + >> +static struct kunit_case xe_rtp_table_tests[] = { >> + KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), >> + {} >> +}; >> + >> +static struct kunit_suite xe_rtp_tables_test_suite = { >> + .name = "xe_rtp_tables_test", >> + .test_cases = xe_rtp_table_tests, >> +}; >> + >> +kunit_test_suite(xe_rtp_tables_test_suite); >> diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c >> index b9d9fe0801aa..1a1e04215f21 100644 >> --- a/drivers/gpu/drm/xe/xe_wa.c >> +++ b/drivers/gpu/drm/xe/xe_wa.c >> @@ -130,7 +130,7 @@ >> __diag_push(); >> __diag_ignore_all("-Woverride-init", "Allow field overrides in table"); >> >> -static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( >> +VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( >> /* Workarounds applying over a range of IPs */ >> >> { XE_RTP_NAME("14011060649"), >> @@ -307,6 +307,7 @@ static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( >> XE_RTP_ACTIONS(SET(GUC_INTR_CHICKEN, DISABLE_SIGNALING_ENGINES)) >> }, >> ); >> +EXPORT_SYMBOL_IF_KUNIT(gt_was); >> >> static const struct xe_rtp_table_sr engine_was = XE_RTP_TABLE_SR( >> /* Workarounds applying over a range of IPs */ >> diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h >> index a5f7d33c1b32..17dff615e507 100644 >> --- a/drivers/gpu/drm/xe/xe_wa.h >> +++ b/drivers/gpu/drm/xe/xe_wa.h >> @@ -6,6 +6,7 @@ >> #ifndef _XE_WA_H_ >> #define _XE_WA_H_ >> >> +#include <kunit/visibility.h> >> #include "xe_assert.h" >> >> struct drm_printer; >> @@ -24,6 +25,10 @@ void xe_wa_apply_tile_workarounds(struct xe_tile *tile); >> void xe_wa_device_dump(struct xe_device *xe, struct drm_printer *p); >> int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); >> >> +#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) >> +extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; > > The VISIBLE_IF_KUNIT here is unnecessary and doesn't make much sense: > that macro is about adding or not the "static" keyword in the > declaration and should only be part of the variable definition in the .c > file. > > > -- > Gustavo Sousa > >> +#endif >> + >> /** >> * XE_GT_WA - Out-of-band GT workarounds, to be queried and called as needed. >> * @gt__: gt instance >> -- >> 2.43.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 3/4] drm/xe/rtp: Ensure oob_was does not evaluate engine type rules 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti 2026-05-19 19:32 ` [PATCH v2 1/4] drm/xe/rtp: Add struct types for RTP tables Violet Monti 2026-05-19 19:32 ` [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types Violet Monti @ 2026-05-19 19:32 ` Violet Monti 2026-05-21 20:42 ` Gustavo Sousa 2026-05-19 19:32 ` [PATCH v2 4/4] drm/xe/rtp: Ensure device_oob_was only evaluates correct rules Violet Monti ` (4 subsequent siblings) 7 siblings, 1 reply; 14+ messages in thread From: Violet Monti @ 2026-05-19 19:32 UTC (permalink / raw) To: intel-xe; +Cc: Violet Monti This commit builds on the implementation of the GT WA testing, increasing the scope of testing to include the OOB workaround list. The added test checks for workarounds with XE_RTP_ENGINE_CLASS() rules and raises an expectation failure if any are found. Unlike the GT workarounds, there are no flags within this workaround list, so all invalid rules will fail. v2: - Changed xe_rtp_table_oob_test() to follow format of xe_rtp_table_gt_test - Changed oob_was generated params to follow format of gt_was generated params Signed-off-by: Violet Monti <violet.monti@intel.com> --- drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 13 +++++++++++++ drivers/gpu/drm/xe/xe_wa.c | 3 ++- drivers/gpu/drm/xe/xe_wa.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c index 01d2bc6e8aad..eb1b3ee075c9 100644 --- a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c @@ -42,8 +42,21 @@ static void xe_rtp_table_gt_test(struct kunit *test) RTP_TABLE_PARAM(gt_was); +static void xe_rtp_table_oob_test(struct kunit *test) +{ + const struct xe_rtp_entry *entry = test->param_value; + + for (int i = 0; i < entry->n_rules; i++) + KUNIT_EXPECT_TRUE(test, + entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS); +} + +RTP_TABLE_PARAM(oob_was); + static struct kunit_case xe_rtp_table_tests[] = { KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), + KUNIT_CASE_PARAM(xe_rtp_table_oob_test, oob_was_gen_params), {} }; diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c index 1a1e04215f21..410099545f4e 100644 --- a/drivers/gpu/drm/xe/xe_wa.c +++ b/drivers/gpu/drm/xe/xe_wa.c @@ -803,10 +803,11 @@ static const struct xe_rtp_entry oob_was_entries[] = { static_assert(ARRAY_SIZE(oob_was_entries) == _XE_WA_OOB_COUNT); -static __maybe_unused const struct xe_rtp_table oob_was = { +VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table oob_was = { .entries = oob_was_entries, .n_entries = ARRAY_SIZE(oob_was_entries), }; +EXPORT_SYMBOL_IF_KUNIT(oob_was); static const struct xe_rtp_entry device_oob_was_entries[] = { #include <generated/xe_device_wa_oob.c> diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h index 17dff615e507..7ac6d365b65f 100644 --- a/drivers/gpu/drm/xe/xe_wa.h +++ b/drivers/gpu/drm/xe/xe_wa.h @@ -27,6 +27,7 @@ int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; +extern VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table oob_was; #endif /** -- 2.43.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 3/4] drm/xe/rtp: Ensure oob_was does not evaluate engine type rules 2026-05-19 19:32 ` [PATCH v2 3/4] drm/xe/rtp: Ensure oob_was does not evaluate engine type rules Violet Monti @ 2026-05-21 20:42 ` Gustavo Sousa 0 siblings, 0 replies; 14+ messages in thread From: Gustavo Sousa @ 2026-05-21 20:42 UTC (permalink / raw) To: Violet Monti, intel-xe; +Cc: Violet Monti Violet Monti <violet.monti@intel.com> writes: > This commit builds on the implementation of the GT WA testing, increasing > the scope of testing to include the OOB workaround list. The added test > checks for workarounds with XE_RTP_ENGINE_CLASS() rules and raises an expectation > failure if any are found. Unlike the GT workarounds, there are no flags > within this workaround list, so all invalid rules will fail. > > v2: > - Changed xe_rtp_table_oob_test() to follow format of > xe_rtp_table_gt_test > - Changed oob_was generated params to follow format of gt_was > generated params > > Signed-off-by: Violet Monti <violet.monti@intel.com> > --- > drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 13 +++++++++++++ > drivers/gpu/drm/xe/xe_wa.c | 3 ++- > drivers/gpu/drm/xe/xe_wa.h | 1 + > 3 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > index 01d2bc6e8aad..eb1b3ee075c9 100644 > --- a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > @@ -42,8 +42,21 @@ static void xe_rtp_table_gt_test(struct kunit *test) > > RTP_TABLE_PARAM(gt_was); > > +static void xe_rtp_table_oob_test(struct kunit *test) > +{ > + const struct xe_rtp_entry *entry = test->param_value; > + > + for (int i = 0; i < entry->n_rules; i++) > + KUNIT_EXPECT_TRUE(test, > + entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && > + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS); > +} > + > +RTP_TABLE_PARAM(oob_was); > + > static struct kunit_case xe_rtp_table_tests[] = { > KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), > + KUNIT_CASE_PARAM(xe_rtp_table_oob_test, oob_was_gen_params), > {} > }; > > diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c > index 1a1e04215f21..410099545f4e 100644 > --- a/drivers/gpu/drm/xe/xe_wa.c > +++ b/drivers/gpu/drm/xe/xe_wa.c > @@ -803,10 +803,11 @@ static const struct xe_rtp_entry oob_was_entries[] = { > > static_assert(ARRAY_SIZE(oob_was_entries) == _XE_WA_OOB_COUNT); > > -static __maybe_unused const struct xe_rtp_table oob_was = { > +VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table oob_was = { > .entries = oob_was_entries, > .n_entries = ARRAY_SIZE(oob_was_entries), > }; > +EXPORT_SYMBOL_IF_KUNIT(oob_was); > > static const struct xe_rtp_entry device_oob_was_entries[] = { > #include <generated/xe_device_wa_oob.c> > diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h > index 17dff615e507..7ac6d365b65f 100644 > --- a/drivers/gpu/drm/xe/xe_wa.h > +++ b/drivers/gpu/drm/xe/xe_wa.h > @@ -27,6 +27,7 @@ int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); > > #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) > extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; > +extern VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table oob_was; With VISIBLE_IF_KUNIT dropped, Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com> > #endif > > /** > -- > 2.43.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 4/4] drm/xe/rtp: Ensure device_oob_was only evaluates correct rules 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti ` (2 preceding siblings ...) 2026-05-19 19:32 ` [PATCH v2 3/4] drm/xe/rtp: Ensure oob_was does not evaluate engine type rules Violet Monti @ 2026-05-19 19:32 ` Violet Monti 2026-05-21 21:00 ` Gustavo Sousa 2026-05-19 19:40 ` ✗ CI.checkpatch: warning for drm/xe/rtp: WA table context testing (rev2) Patchwork ` (3 subsequent siblings) 7 siblings, 1 reply; 14+ messages in thread From: Violet Monti @ 2026-05-19 19:32 UTC (permalink / raw) To: intel-xe; +Cc: Violet Monti This commit builds on the implementation of the GT WA testing, increasing the scope of testing to include the device OOB workaround list. As well as checking for XE_RTP_ENGINE_CLASS(), this test also checks for rules involving XE_RTP_GRAPHICS() and XE_RTP_MEDIA(), as well as their derivatives. This test will raise expectation fails for any workarounds in the device_oob_was list that has an invalid rule type, preventing evaluation or inclusion of rules that could be applied in the wrong context. v2: - Changed xe_rtp_table_dev_oob_test() to follow format of xe_rtp_table_gt_test - Changed device_oob_was generated params to follow format of gt_was Signed-off-by: Violet Monti <violet.monti@intel.com> --- drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 21 +++++++++++++++++++ drivers/gpu/drm/xe/xe_wa.c | 3 ++- drivers/gpu/drm/xe/xe_wa.h | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c index eb1b3ee075c9..669163e52ebd 100644 --- a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c @@ -54,9 +54,30 @@ static void xe_rtp_table_oob_test(struct kunit *test) RTP_TABLE_PARAM(oob_was); +static void xe_rtp_table_dev_oob_test(struct kunit *test) +{ + const struct xe_rtp_entry *entry = test->param_value; + + for (int i = 0; i < entry->n_rules; i++) + KUNIT_EXPECT_TRUE(test, + entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS && + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION && + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION_RANGE && + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION_ANY_GT && + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_STEP && + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_VERSION && + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_VERSION_RANGE && + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_VERSION_ANY_GT && + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_STEP); +} + +RTP_TABLE_PARAM(device_oob_was); + static struct kunit_case xe_rtp_table_tests[] = { KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), KUNIT_CASE_PARAM(xe_rtp_table_oob_test, oob_was_gen_params), + KUNIT_CASE_PARAM(xe_rtp_table_dev_oob_test, device_oob_was_gen_params), {} }; diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c index 410099545f4e..635d5461f712 100644 --- a/drivers/gpu/drm/xe/xe_wa.c +++ b/drivers/gpu/drm/xe/xe_wa.c @@ -815,10 +815,11 @@ static const struct xe_rtp_entry device_oob_was_entries[] = { static_assert(ARRAY_SIZE(device_oob_was_entries) == _XE_DEVICE_WA_OOB_COUNT); -static __maybe_unused const struct xe_rtp_table device_oob_was = { +VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table device_oob_was = { .entries = device_oob_was_entries, .n_entries = ARRAY_SIZE(device_oob_was_entries), }; +EXPORT_SYMBOL_IF_KUNIT(device_oob_was); __diag_pop(); diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h index 7ac6d365b65f..568e05e49bf9 100644 --- a/drivers/gpu/drm/xe/xe_wa.h +++ b/drivers/gpu/drm/xe/xe_wa.h @@ -28,6 +28,7 @@ int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; extern VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table oob_was; +extern VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table device_oob_was; #endif /** -- 2.43.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 4/4] drm/xe/rtp: Ensure device_oob_was only evaluates correct rules 2026-05-19 19:32 ` [PATCH v2 4/4] drm/xe/rtp: Ensure device_oob_was only evaluates correct rules Violet Monti @ 2026-05-21 21:00 ` Gustavo Sousa 0 siblings, 0 replies; 14+ messages in thread From: Gustavo Sousa @ 2026-05-21 21:00 UTC (permalink / raw) To: Violet Monti, intel-xe; +Cc: Violet Monti Violet Monti <violet.monti@intel.com> writes: > This commit builds on the implementation of the GT WA testing, increasing > the scope of testing to include the device OOB workaround list. As well > as checking for XE_RTP_ENGINE_CLASS(), this test also checks for rules > involving XE_RTP_GRAPHICS() and XE_RTP_MEDIA(), as well as their > derivatives. > > This test will raise expectation fails for any workarounds in the > device_oob_was list that has an invalid rule type, preventing evaluation > or inclusion of rules that could be applied in the wrong context. > > v2: > - Changed xe_rtp_table_dev_oob_test() to follow format of > xe_rtp_table_gt_test > - Changed device_oob_was generated params to follow format of > gt_was > > Signed-off-by: Violet Monti <violet.monti@intel.com> > --- > drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c | 21 +++++++++++++++++++ > drivers/gpu/drm/xe/xe_wa.c | 3 ++- > drivers/gpu/drm/xe/xe_wa.h | 1 + > 3 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > index eb1b3ee075c9..669163e52ebd 100644 > --- a/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > +++ b/drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c > @@ -54,9 +54,30 @@ static void xe_rtp_table_oob_test(struct kunit *test) > > RTP_TABLE_PARAM(oob_was); > > +static void xe_rtp_table_dev_oob_test(struct kunit *test) > +{ > + const struct xe_rtp_entry *entry = test->param_value; > + > + for (int i = 0; i < entry->n_rules; i++) > + KUNIT_EXPECT_TRUE(test, > + entry->rules[i].match_type != XE_RTP_MATCH_ENGINE_CLASS && > + entry->rules[i].match_type != XE_RTP_MATCH_NOT_ENGINE_CLASS && > + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION && > + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION_RANGE && > + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION_ANY_GT && > + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_STEP && > + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_VERSION && > + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_VERSION_RANGE && > + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_VERSION_ANY_GT && > + entry->rules[i].match_type != XE_RTP_MATCH_MEDIA_STEP); Hm... The checks themselves look correct, so, with VISIBLE_IF_KUNIT dropped from the extern variable declaration, Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com> That said, here is an optional feedback: I guess it would be easier for the developer to spot exactly what the offending match type is if we used one expectation macro for each? I.e.: enum xe_rtp_match_type match_type = entry->rules[i].match_type; KUNIT_EXPECT_NEQ(test, match_type, XE_RTP_MATCH_ENGINE_CLASS); KUNIT_EXPECT_NEQ(test, match_type, XE_RTP_MATCH_NOT_ENGINE_CLASS); ... KUNIT_EXPECT_NEQ(test, match_type, XE_RTP_MATCH_MEDIA_STEP); This would also apply to the previous patches. -- Gustavo Sousa > +} > + > +RTP_TABLE_PARAM(device_oob_was); > + > static struct kunit_case xe_rtp_table_tests[] = { > KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params), > KUNIT_CASE_PARAM(xe_rtp_table_oob_test, oob_was_gen_params), > + KUNIT_CASE_PARAM(xe_rtp_table_dev_oob_test, device_oob_was_gen_params), > {} > }; > > diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c > index 410099545f4e..635d5461f712 100644 > --- a/drivers/gpu/drm/xe/xe_wa.c > +++ b/drivers/gpu/drm/xe/xe_wa.c > @@ -815,10 +815,11 @@ static const struct xe_rtp_entry device_oob_was_entries[] = { > > static_assert(ARRAY_SIZE(device_oob_was_entries) == _XE_DEVICE_WA_OOB_COUNT); > > -static __maybe_unused const struct xe_rtp_table device_oob_was = { > +VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table device_oob_was = { > .entries = device_oob_was_entries, > .n_entries = ARRAY_SIZE(device_oob_was_entries), > }; > +EXPORT_SYMBOL_IF_KUNIT(device_oob_was); > > __diag_pop(); > > diff --git a/drivers/gpu/drm/xe/xe_wa.h b/drivers/gpu/drm/xe/xe_wa.h > index 7ac6d365b65f..568e05e49bf9 100644 > --- a/drivers/gpu/drm/xe/xe_wa.h > +++ b/drivers/gpu/drm/xe/xe_wa.h > @@ -28,6 +28,7 @@ int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p); > #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) > extern VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was; > extern VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table oob_was; > +extern VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table device_oob_was; > #endif > > /** > -- > 2.43.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe/rtp: WA table context testing (rev2) 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti ` (3 preceding siblings ...) 2026-05-19 19:32 ` [PATCH v2 4/4] drm/xe/rtp: Ensure device_oob_was only evaluates correct rules Violet Monti @ 2026-05-19 19:40 ` Patchwork 2026-05-19 19:41 ` ✓ CI.KUnit: success " Patchwork ` (2 subsequent siblings) 7 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2026-05-19 19:40 UTC (permalink / raw) To: Violet Monti; +Cc: intel-xe == Series Details == Series: drm/xe/rtp: WA table context testing (rev2) URL : https://patchwork.freedesktop.org/series/166549/ State : warning == Summary == + KERNEL=/kernel + git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt Cloning into 'mt'... warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/ + git -C mt rev-list -n1 origin/master 061140b9bc586ae7f40abc1249c97e1cc72d1b9d + cd /kernel + git config --global --add safe.directory /kernel + git log -n1 commit eb477b3f3d3fbd99ba884d82b73a439787528565 Author: Violet Monti <violet.monti@intel.com> Date: Tue May 19 12:32:16 2026 -0700 drm/xe/rtp: Ensure device_oob_was only evaluates correct rules This commit builds on the implementation of the GT WA testing, increasing the scope of testing to include the device OOB workaround list. As well as checking for XE_RTP_ENGINE_CLASS(), this test also checks for rules involving XE_RTP_GRAPHICS() and XE_RTP_MEDIA(), as well as their derivatives. This test will raise expectation fails for any workarounds in the device_oob_was list that has an invalid rule type, preventing evaluation or inclusion of rules that could be applied in the wrong context. v2: - Changed xe_rtp_table_dev_oob_test() to follow format of xe_rtp_table_gt_test - Changed device_oob_was generated params to follow format of gt_was Signed-off-by: Violet Monti <violet.monti@intel.com> + /mt/dim checkpatch 81e61a51364beae8f6e63a2d89c776a6b4b323fe drm-intel 77f5ffbb8246 drm/xe/rtp: Add struct types for RTP tables -:67: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #67: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:95: + .table = XE_RTP_TABLE_SR( -:86: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #86: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:114: + .table = XE_RTP_TABLE_SR( -:105: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #105: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:132: + .table = XE_RTP_TABLE_SR( -:122: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #122: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:157: + .table = XE_RTP_TABLE_SR( -:141: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #141: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:185: + .table = XE_RTP_TABLE_SR( -:160: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #160: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:204: + .table = XE_RTP_TABLE_SR( -:179: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #179: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:223: + .table = XE_RTP_TABLE_SR( -:198: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #198: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:244: + .table = XE_RTP_TABLE_SR( -:215: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #215: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:262: + .table = XE_RTP_TABLE_SR( -:234: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #234: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:282: + .table = XE_RTP_TABLE_SR( -:253: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #253: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:302: + .table = XE_RTP_TABLE_SR( -:272: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #272: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:327: + .table = XE_RTP_TABLE_SR( -:288: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #288: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:343: + .table = XE_RTP_TABLE_SR( -:324: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #324: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:399: + .table = XE_RTP_TABLE( -:336: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #336: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:408: + .table = XE_RTP_TABLE( -:351: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #351: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:420: + .table = XE_RTP_TABLE( -:366: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #366: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:432: + .table = XE_RTP_TABLE( -:381: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #381: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:444: + .table = XE_RTP_TABLE( -:397: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #397: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:460: + .table = XE_RTP_TABLE( -:413: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #413: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:476: + .table = XE_RTP_TABLE( -:429: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #429: FILE: drivers/gpu/drm/xe/tests/xe_rtp_test.c:492: + .table = XE_RTP_TABLE( -:469: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #469: FILE: drivers/gpu/drm/xe/xe_hw_engine.c:349: + const struct xe_rtp_table_sr lrc_setup = XE_RTP_TABLE_SR( -:491: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #491: FILE: drivers/gpu/drm/xe/xe_hw_engine.c:410: + const struct xe_rtp_table_sr engine_sr = XE_RTP_TABLE_SR( -:517: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #517: FILE: drivers/gpu/drm/xe/xe_reg_whitelist.c:44: +static const struct xe_rtp_table_sr register_whitelist = XE_RTP_TABLE_SR( -:697: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #697: FILE: drivers/gpu/drm/xe/xe_tuning.c:23: +static const struct xe_rtp_table_sr gt_tunings = XE_RTP_TABLE_SR( -:709: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #709: FILE: drivers/gpu/drm/xe/xe_tuning.c:105: +static const struct xe_rtp_table_sr engine_tunings = XE_RTP_TABLE_SR( -:721: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #721: FILE: drivers/gpu/drm/xe/xe_tuning.c:134: +static const struct xe_rtp_table_sr lrc_tunings = XE_RTP_TABLE_SR( -:817: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #817: FILE: drivers/gpu/drm/xe/xe_wa.c:133: +static const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( -:829: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #829: FILE: drivers/gpu/drm/xe/xe_wa.c:311: +static const struct xe_rtp_table_sr engine_was = XE_RTP_TABLE_SR( -:841: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #841: FILE: drivers/gpu/drm/xe/xe_wa.c:619: +static const struct xe_rtp_table_sr lrc_was = XE_RTP_TABLE_SR( -:887: WARNING:LONG_LINE: line length of 101 exceeds 100 columns #887: FILE: drivers/gpu/drm/xe/xe_wa.c:835: + xe_rtp_process_ctx_enable_active_tracking(&ctx, xe->wa_active.oob, device_oob_was.n_entries); total: 0 errors, 1 warnings, 30 checks, 874 lines checked 28b7ab0b8d14 drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types -:46: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #46: new file mode 100644 -:69: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'table' - possible side-effects? #69: FILE: drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c:19: +#define RTP_TABLE_PARAM(table) \ + static const void *table##_gen_params(struct kunit *test, \ + const void *prev, char *desc) \ + { \ + typeof((table.entries)[0]) *__next = prev ? \ + ((typeof(__next))prev) + 1 : (table.entries); \ + if (__next - table.entries < table.n_entries) { \ + scnprintf(desc, KUNIT_PARAM_DESC_SIZE, #table "/%s", __next->name); \ + return __next; \ + } \ + return NULL; \ + } -:73: CHECK:SPACING: spaces preferred around that '*' (ctx:WxV) #73: FILE: drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c:23: + typeof((table.entries)[0]) *__next = prev ? \ ^ -:115: CHECK:OPEN_ENDED_LINE: Lines should not end with a '(' #115: FILE: drivers/gpu/drm/xe/xe_wa.c:133: +VISIBLE_IF_KUNIT const struct xe_rtp_table_sr gt_was = XE_RTP_TABLE_SR( total: 0 errors, 1 warnings, 3 checks, 93 lines checked 9656308489e0 drm/xe/rtp: Ensure oob_was does not evaluate engine type rules -:9: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #9: checks for workarounds with XE_RTP_ENGINE_CLASS() rules and raises an expectation total: 0 errors, 1 warnings, 0 checks, 40 lines checked eb477b3f3d3f drm/xe/rtp: Ensure device_oob_was only evaluates correct rules -:42: WARNING:LONG_LINE: line length of 102 exceeds 100 columns #42: FILE: drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c:66: + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION_RANGE && -:43: WARNING:LONG_LINE: line length of 103 exceeds 100 columns #43: FILE: drivers/gpu/drm/xe/tests/xe_rtp_tables_test.c:67: + entry->rules[i].match_type != XE_RTP_MATCH_GRAPHICS_VERSION_ANY_GT && total: 0 errors, 2 warnings, 0 checks, 49 lines checked ^ permalink raw reply [flat|nested] 14+ messages in thread
* ✓ CI.KUnit: success for drm/xe/rtp: WA table context testing (rev2) 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti ` (4 preceding siblings ...) 2026-05-19 19:40 ` ✗ CI.checkpatch: warning for drm/xe/rtp: WA table context testing (rev2) Patchwork @ 2026-05-19 19:41 ` Patchwork 2026-05-19 20:53 ` ✓ Xe.CI.BAT: " Patchwork 2026-05-20 9:06 ` ✗ Xe.CI.FULL: failure " Patchwork 7 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2026-05-19 19:41 UTC (permalink / raw) To: Violet Monti; +Cc: intel-xe == Series Details == Series: drm/xe/rtp: WA table context testing (rev2) URL : https://patchwork.freedesktop.org/series/166549/ State : success == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [19:40:01] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [19:40:05] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [19:40:36] Starting KUnit Kernel (1/1)... [19:40:36] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [19:40:37] ================== guc_buf (11 subtests) =================== [19:40:37] [PASSED] test_smallest [19:40:37] [PASSED] test_largest [19:40:37] [PASSED] test_granular [19:40:37] [PASSED] test_unique [19:40:37] [PASSED] test_overlap [19:40:37] [PASSED] test_reusable [19:40:37] [PASSED] test_too_big [19:40:37] [PASSED] test_flush [19:40:37] [PASSED] test_lookup [19:40:37] [PASSED] test_data [19:40:37] [PASSED] test_class [19:40:37] ===================== [PASSED] guc_buf ===================== [19:40:37] =================== guc_dbm (7 subtests) =================== [19:40:37] [PASSED] test_empty [19:40:37] [PASSED] test_default [19:40:37] ======================== test_size ======================== [19:40:37] [PASSED] 4 [19:40:37] [PASSED] 8 [19:40:37] [PASSED] 32 [19:40:37] [PASSED] 256 [19:40:37] ==================== [PASSED] test_size ==================== [19:40:37] ======================= test_reuse ======================== [19:40:37] [PASSED] 4 [19:40:37] [PASSED] 8 [19:40:37] [PASSED] 32 [19:40:37] [PASSED] 256 [19:40:37] =================== [PASSED] test_reuse ==================== [19:40:37] =================== test_range_overlap ==================== [19:40:37] [PASSED] 4 [19:40:37] [PASSED] 8 [19:40:37] [PASSED] 32 [19:40:37] [PASSED] 256 [19:40:37] =============== [PASSED] test_range_overlap ================ [19:40:37] =================== test_range_compact ==================== [19:40:37] [PASSED] 4 [19:40:37] [PASSED] 8 [19:40:37] [PASSED] 32 [19:40:37] [PASSED] 256 [19:40:37] =============== [PASSED] test_range_compact ================ [19:40:37] ==================== test_range_spare ===================== [19:40:37] [PASSED] 4 [19:40:37] [PASSED] 8 [19:40:37] [PASSED] 32 [19:40:37] [PASSED] 256 [19:40:37] ================ [PASSED] test_range_spare ================= [19:40:37] ===================== [PASSED] guc_dbm ===================== [19:40:37] =================== guc_idm (6 subtests) =================== [19:40:37] [PASSED] bad_init [19:40:37] [PASSED] no_init [19:40:37] [PASSED] init_fini [19:40:37] [PASSED] check_used [19:40:37] [PASSED] check_quota [19:40:37] [PASSED] check_all [19:40:37] ===================== [PASSED] guc_idm ===================== [19:40:37] ================== no_relay (3 subtests) =================== [19:40:37] [PASSED] xe_drops_guc2pf_if_not_ready [19:40:37] [PASSED] xe_drops_guc2vf_if_not_ready [19:40:37] [PASSED] xe_rejects_send_if_not_ready [19:40:37] ==================== [PASSED] no_relay ===================== [19:40:37] ================== pf_relay (14 subtests) ================== [19:40:37] [PASSED] pf_rejects_guc2pf_too_short [19:40:37] [PASSED] pf_rejects_guc2pf_too_long [19:40:37] [PASSED] pf_rejects_guc2pf_no_payload [19:40:37] [PASSED] pf_fails_no_payload [19:40:37] [PASSED] pf_fails_bad_origin [19:40:37] [PASSED] pf_fails_bad_type [19:40:37] [PASSED] pf_txn_reports_error [19:40:37] [PASSED] pf_txn_sends_pf2guc [19:40:37] [PASSED] pf_sends_pf2guc [19:40:37] [SKIPPED] pf_loopback_nop [19:40:37] [SKIPPED] pf_loopback_echo [19:40:37] [SKIPPED] pf_loopback_fail [19:40:37] [SKIPPED] pf_loopback_busy [19:40:37] [SKIPPED] pf_loopback_retry [19:40:37] ==================== [PASSED] pf_relay ===================== [19:40:37] ================== vf_relay (3 subtests) =================== [19:40:37] [PASSED] vf_rejects_guc2vf_too_short [19:40:37] [PASSED] vf_rejects_guc2vf_too_long [19:40:37] [PASSED] vf_rejects_guc2vf_no_payload [19:40:37] ==================== [PASSED] vf_relay ===================== [19:40:37] ================ pf_gt_config (9 subtests) ================= [19:40:37] [PASSED] fair_contexts_1vf [19:40:37] [PASSED] fair_doorbells_1vf [19:40:37] [PASSED] fair_ggtt_1vf [19:40:37] ====================== fair_vram_1vf ====================== [19:40:37] [PASSED] 3.50 GiB [19:40:37] [PASSED] 11.5 GiB [19:40:37] [PASSED] 15.5 GiB [19:40:37] [PASSED] 31.5 GiB [19:40:37] [PASSED] 63.5 GiB [19:40:37] [PASSED] 1.91 GiB [19:40:37] ================== [PASSED] fair_vram_1vf ================== [19:40:37] ================ fair_vram_1vf_admin_only ================= [19:40:37] [PASSED] 3.50 GiB [19:40:37] [PASSED] 11.5 GiB [19:40:37] [PASSED] 15.5 GiB [19:40:37] [PASSED] 31.5 GiB [19:40:37] [PASSED] 63.5 GiB [19:40:37] [PASSED] 1.91 GiB [19:40:37] ============ [PASSED] fair_vram_1vf_admin_only ============= [19:40:37] ====================== fair_contexts ====================== [19:40:37] [PASSED] 1 VF [19:40:37] [PASSED] 2 VFs [19:40:37] [PASSED] 3 VFs [19:40:37] [PASSED] 4 VFs [19:40:37] [PASSED] 5 VFs [19:40:37] [PASSED] 6 VFs [19:40:37] [PASSED] 7 VFs [19:40:37] [PASSED] 8 VFs [19:40:37] [PASSED] 9 VFs [19:40:37] [PASSED] 10 VFs [19:40:37] [PASSED] 11 VFs [19:40:37] [PASSED] 12 VFs [19:40:37] [PASSED] 13 VFs [19:40:37] [PASSED] 14 VFs [19:40:37] [PASSED] 15 VFs [19:40:37] [PASSED] 16 VFs [19:40:37] [PASSED] 17 VFs [19:40:37] [PASSED] 18 VFs [19:40:37] [PASSED] 19 VFs [19:40:37] [PASSED] 20 VFs [19:40:37] [PASSED] 21 VFs [19:40:37] [PASSED] 22 VFs [19:40:37] [PASSED] 23 VFs [19:40:37] [PASSED] 24 VFs [19:40:37] [PASSED] 25 VFs [19:40:37] [PASSED] 26 VFs [19:40:37] [PASSED] 27 VFs [19:40:37] [PASSED] 28 VFs [19:40:37] [PASSED] 29 VFs [19:40:37] [PASSED] 30 VFs [19:40:37] [PASSED] 31 VFs [19:40:37] [PASSED] 32 VFs [19:40:37] [PASSED] 33 VFs [19:40:37] [PASSED] 34 VFs [19:40:37] [PASSED] 35 VFs [19:40:37] [PASSED] 36 VFs [19:40:37] [PASSED] 37 VFs [19:40:37] [PASSED] 38 VFs [19:40:37] [PASSED] 39 VFs [19:40:37] [PASSED] 40 VFs [19:40:37] [PASSED] 41 VFs [19:40:37] [PASSED] 42 VFs [19:40:37] [PASSED] 43 VFs [19:40:37] [PASSED] 44 VFs [19:40:37] [PASSED] 45 VFs [19:40:37] [PASSED] 46 VFs [19:40:37] [PASSED] 47 VFs [19:40:37] [PASSED] 48 VFs [19:40:37] [PASSED] 49 VFs [19:40:37] [PASSED] 50 VFs [19:40:37] [PASSED] 51 VFs [19:40:37] [PASSED] 52 VFs [19:40:37] [PASSED] 53 VFs [19:40:37] [PASSED] 54 VFs [19:40:37] [PASSED] 55 VFs [19:40:37] [PASSED] 56 VFs [19:40:37] [PASSED] 57 VFs [19:40:37] [PASSED] 58 VFs [19:40:37] [PASSED] 59 VFs [19:40:37] [PASSED] 60 VFs [19:40:37] [PASSED] 61 VFs [19:40:37] [PASSED] 62 VFs [19:40:37] [PASSED] 63 VFs [19:40:37] ================== [PASSED] fair_contexts ================== [19:40:37] ===================== fair_doorbells ====================== [19:40:37] [PASSED] 1 VF [19:40:37] [PASSED] 2 VFs [19:40:37] [PASSED] 3 VFs [19:40:37] [PASSED] 4 VFs [19:40:37] [PASSED] 5 VFs [19:40:37] [PASSED] 6 VFs [19:40:37] [PASSED] 7 VFs [19:40:37] [PASSED] 8 VFs [19:40:37] [PASSED] 9 VFs [19:40:37] [PASSED] 10 VFs [19:40:37] [PASSED] 11 VFs [19:40:37] [PASSED] 12 VFs [19:40:37] [PASSED] 13 VFs [19:40:37] [PASSED] 14 VFs [19:40:37] [PASSED] 15 VFs [19:40:37] [PASSED] 16 VFs [19:40:37] [PASSED] 17 VFs [19:40:37] [PASSED] 18 VFs [19:40:37] [PASSED] 19 VFs [19:40:37] [PASSED] 20 VFs [19:40:37] [PASSED] 21 VFs [19:40:37] [PASSED] 22 VFs [19:40:37] [PASSED] 23 VFs [19:40:37] [PASSED] 24 VFs [19:40:37] [PASSED] 25 VFs [19:40:37] [PASSED] 26 VFs [19:40:37] [PASSED] 27 VFs [19:40:37] [PASSED] 28 VFs [19:40:37] [PASSED] 29 VFs [19:40:37] [PASSED] 30 VFs [19:40:37] [PASSED] 31 VFs [19:40:37] [PASSED] 32 VFs [19:40:37] [PASSED] 33 VFs [19:40:37] [PASSED] 34 VFs [19:40:37] [PASSED] 35 VFs [19:40:37] [PASSED] 36 VFs [19:40:37] [PASSED] 37 VFs [19:40:37] [PASSED] 38 VFs [19:40:37] [PASSED] 39 VFs [19:40:37] [PASSED] 40 VFs [19:40:37] [PASSED] 41 VFs [19:40:37] [PASSED] 42 VFs [19:40:37] [PASSED] 43 VFs [19:40:37] [PASSED] 44 VFs [19:40:37] [PASSED] 45 VFs [19:40:37] [PASSED] 46 VFs [19:40:37] [PASSED] 47 VFs [19:40:37] [PASSED] 48 VFs [19:40:37] [PASSED] 49 VFs [19:40:37] [PASSED] 50 VFs [19:40:37] [PASSED] 51 VFs [19:40:37] [PASSED] 52 VFs [19:40:37] [PASSED] 53 VFs [19:40:37] [PASSED] 54 VFs [19:40:37] [PASSED] 55 VFs [19:40:37] [PASSED] 56 VFs [19:40:37] [PASSED] 57 VFs [19:40:37] [PASSED] 58 VFs [19:40:37] [PASSED] 59 VFs [19:40:37] [PASSED] 60 VFs [19:40:37] [PASSED] 61 VFs [19:40:37] [PASSED] 62 VFs [19:40:37] [PASSED] 63 VFs [19:40:37] ================= [PASSED] fair_doorbells ================== [19:40:37] ======================== fair_ggtt ======================== [19:40:37] [PASSED] 1 VF [19:40:37] [PASSED] 2 VFs [19:40:37] [PASSED] 3 VFs [19:40:37] [PASSED] 4 VFs [19:40:37] [PASSED] 5 VFs [19:40:37] [PASSED] 6 VFs [19:40:37] [PASSED] 7 VFs [19:40:37] [PASSED] 8 VFs [19:40:37] [PASSED] 9 VFs [19:40:37] [PASSED] 10 VFs [19:40:37] [PASSED] 11 VFs [19:40:37] [PASSED] 12 VFs [19:40:37] [PASSED] 13 VFs [19:40:37] [PASSED] 14 VFs [19:40:37] [PASSED] 15 VFs [19:40:37] [PASSED] 16 VFs [19:40:37] [PASSED] 17 VFs [19:40:37] [PASSED] 18 VFs [19:40:37] [PASSED] 19 VFs [19:40:37] [PASSED] 20 VFs [19:40:37] [PASSED] 21 VFs [19:40:37] [PASSED] 22 VFs [19:40:37] [PASSED] 23 VFs [19:40:37] [PASSED] 24 VFs [19:40:37] [PASSED] 25 VFs [19:40:37] [PASSED] 26 VFs [19:40:37] [PASSED] 27 VFs [19:40:37] [PASSED] 28 VFs [19:40:37] [PASSED] 29 VFs [19:40:37] [PASSED] 30 VFs [19:40:37] [PASSED] 31 VFs [19:40:37] [PASSED] 32 VFs [19:40:37] [PASSED] 33 VFs [19:40:37] [PASSED] 34 VFs [19:40:37] [PASSED] 35 VFs [19:40:37] [PASSED] 36 VFs [19:40:37] [PASSED] 37 VFs [19:40:37] [PASSED] 38 VFs [19:40:37] [PASSED] 39 VFs [19:40:37] [PASSED] 40 VFs [19:40:37] [PASSED] 41 VFs [19:40:37] [PASSED] 42 VFs [19:40:37] [PASSED] 43 VFs [19:40:37] [PASSED] 44 VFs [19:40:37] [PASSED] 45 VFs [19:40:37] [PASSED] 46 VFs [19:40:37] [PASSED] 47 VFs [19:40:37] [PASSED] 48 VFs [19:40:37] [PASSED] 49 VFs [19:40:37] [PASSED] 50 VFs [19:40:37] [PASSED] 51 VFs [19:40:37] [PASSED] 52 VFs [19:40:37] [PASSED] 53 VFs [19:40:37] [PASSED] 54 VFs [19:40:37] [PASSED] 55 VFs [19:40:37] [PASSED] 56 VFs [19:40:37] [PASSED] 57 VFs [19:40:37] [PASSED] 58 VFs [19:40:37] [PASSED] 59 VFs [19:40:37] [PASSED] 60 VFs [19:40:37] [PASSED] 61 VFs [19:40:37] [PASSED] 62 VFs [19:40:37] [PASSED] 63 VFs [19:40:37] ==================== [PASSED] fair_ggtt ==================== [19:40:37] ======================== fair_vram ======================== [19:40:37] [PASSED] 1 VF [19:40:37] [PASSED] 2 VFs [19:40:37] [PASSED] 3 VFs [19:40:37] [PASSED] 4 VFs [19:40:37] [PASSED] 5 VFs [19:40:37] [PASSED] 6 VFs [19:40:37] [PASSED] 7 VFs [19:40:37] [PASSED] 8 VFs [19:40:37] [PASSED] 9 VFs [19:40:37] [PASSED] 10 VFs [19:40:37] [PASSED] 11 VFs [19:40:37] [PASSED] 12 VFs [19:40:37] [PASSED] 13 VFs [19:40:37] [PASSED] 14 VFs [19:40:37] [PASSED] 15 VFs [19:40:37] [PASSED] 16 VFs [19:40:37] [PASSED] 17 VFs [19:40:37] [PASSED] 18 VFs [19:40:37] [PASSED] 19 VFs [19:40:37] [PASSED] 20 VFs [19:40:37] [PASSED] 21 VFs [19:40:37] [PASSED] 22 VFs [19:40:37] [PASSED] 23 VFs [19:40:37] [PASSED] 24 VFs [19:40:37] [PASSED] 25 VFs [19:40:37] [PASSED] 26 VFs [19:40:37] [PASSED] 27 VFs [19:40:37] [PASSED] 28 VFs [19:40:37] [PASSED] 29 VFs [19:40:37] [PASSED] 30 VFs [19:40:37] [PASSED] 31 VFs [19:40:37] [PASSED] 32 VFs [19:40:37] [PASSED] 33 VFs [19:40:37] [PASSED] 34 VFs [19:40:37] [PASSED] 35 VFs [19:40:37] [PASSED] 36 VFs [19:40:37] [PASSED] 37 VFs [19:40:37] [PASSED] 38 VFs [19:40:37] [PASSED] 39 VFs [19:40:37] [PASSED] 40 VFs [19:40:37] [PASSED] 41 VFs [19:40:37] [PASSED] 42 VFs [19:40:37] [PASSED] 43 VFs [19:40:37] [PASSED] 44 VFs [19:40:37] [PASSED] 45 VFs [19:40:37] [PASSED] 46 VFs [19:40:37] [PASSED] 47 VFs [19:40:37] [PASSED] 48 VFs [19:40:37] [PASSED] 49 VFs [19:40:37] [PASSED] 50 VFs [19:40:37] [PASSED] 51 VFs [19:40:37] [PASSED] 52 VFs [19:40:37] [PASSED] 53 VFs [19:40:37] [PASSED] 54 VFs [19:40:37] [PASSED] 55 VFs [19:40:37] [PASSED] 56 VFs [19:40:37] [PASSED] 57 VFs [19:40:37] [PASSED] 58 VFs [19:40:37] [PASSED] 59 VFs [19:40:37] [PASSED] 60 VFs [19:40:37] [PASSED] 61 VFs [19:40:37] [PASSED] 62 VFs [19:40:37] [PASSED] 63 VFs [19:40:37] ==================== [PASSED] fair_vram ==================== [19:40:37] ================== [PASSED] pf_gt_config =================== [19:40:37] ===================== lmtt (1 subtest) ===================== [19:40:37] ======================== test_ops ========================= [19:40:37] [PASSED] 2-level [19:40:37] [PASSED] multi-level [19:40:37] ==================== [PASSED] test_ops ===================== [19:40:37] ====================== [PASSED] lmtt ======================= [19:40:37] ================= pf_service (11 subtests) ================= [19:40:37] [PASSED] pf_negotiate_any [19:40:37] [PASSED] pf_negotiate_base_match [19:40:37] [PASSED] pf_negotiate_base_newer [19:40:37] [PASSED] pf_negotiate_base_next [19:40:37] [SKIPPED] pf_negotiate_base_older [19:40:37] [PASSED] pf_negotiate_base_prev [19:40:37] [PASSED] pf_negotiate_latest_match [19:40:37] [PASSED] pf_negotiate_latest_newer [19:40:37] [PASSED] pf_negotiate_latest_next [19:40:37] [SKIPPED] pf_negotiate_latest_older [19:40:37] [SKIPPED] pf_negotiate_latest_prev [19:40:37] =================== [PASSED] pf_service ==================== [19:40:37] ================= xe_guc_g2g (2 subtests) ================== [19:40:37] ============== xe_live_guc_g2g_kunit_default ============== [19:40:37] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [19:40:37] ============== xe_live_guc_g2g_kunit_allmem =============== [19:40:37] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [19:40:37] =================== [SKIPPED] xe_guc_g2g =================== [19:40:37] =================== xe_mocs (2 subtests) =================== [19:40:37] ================ xe_live_mocs_kernel_kunit ================ [19:40:37] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [19:40:37] ================ xe_live_mocs_reset_kunit ================= [19:40:37] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [19:40:37] ==================== [SKIPPED] xe_mocs ===================== [19:40:37] ================= xe_migrate (2 subtests) ================== [19:40:37] ================= xe_migrate_sanity_kunit ================= [19:40:37] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [19:40:37] ================== xe_validate_ccs_kunit ================== [19:40:37] ============= [SKIPPED] xe_validate_ccs_kunit ============== [19:40:37] =================== [SKIPPED] xe_migrate =================== [19:40:37] ================== xe_dma_buf (1 subtest) ================== [19:40:37] ==================== xe_dma_buf_kunit ===================== [19:40:37] ================ [SKIPPED] xe_dma_buf_kunit ================ [19:40:37] =================== [SKIPPED] xe_dma_buf =================== [19:40:37] ================= xe_bo_shrink (1 subtest) ================= [19:40:37] =================== xe_bo_shrink_kunit ==================== [19:40:37] =============== [SKIPPED] xe_bo_shrink_kunit =============== [19:40:37] ================== [SKIPPED] xe_bo_shrink ================== [19:40:37] ==================== xe_bo (2 subtests) ==================== [19:40:37] ================== xe_ccs_migrate_kunit =================== [19:40:37] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [19:40:37] ==================== xe_bo_evict_kunit ==================== [19:40:37] =============== [SKIPPED] xe_bo_evict_kunit ================ [19:40:37] ===================== [SKIPPED] xe_bo ====================== [19:40:37] ==================== args (13 subtests) ==================== [19:40:37] [PASSED] count_args_test [19:40:37] [PASSED] call_args_example [19:40:37] [PASSED] call_args_test [19:40:37] [PASSED] drop_first_arg_example [19:40:37] [PASSED] drop_first_arg_test [19:40:37] [PASSED] first_arg_example [19:40:37] [PASSED] first_arg_test [19:40:37] [PASSED] last_arg_example [19:40:37] [PASSED] last_arg_test [19:40:37] [PASSED] pick_arg_example [19:40:37] [PASSED] if_args_example [19:40:37] [PASSED] if_args_test [19:40:37] [PASSED] sep_comma_example [19:40:37] ====================== [PASSED] args ======================= [19:40:37] =================== xe_pci (3 subtests) ==================== [19:40:37] ==================== check_graphics_ip ==================== [19:40:37] [PASSED] 12.00 Xe_LP [19:40:37] [PASSED] 12.10 Xe_LP+ [19:40:37] [PASSED] 12.55 Xe_HPG [19:40:37] [PASSED] 12.60 Xe_HPC [19:40:37] [PASSED] 12.70 Xe_LPG [19:40:37] [PASSED] 12.71 Xe_LPG [19:40:37] [PASSED] 12.74 Xe_LPG+ [19:40:37] [PASSED] 20.01 Xe2_HPG [19:40:37] [PASSED] 20.02 Xe2_HPG [19:40:37] [PASSED] 20.04 Xe2_LPG [19:40:37] [PASSED] 30.00 Xe3_LPG [19:40:37] [PASSED] 30.01 Xe3_LPG [19:40:37] [PASSED] 30.03 Xe3_LPG [19:40:37] [PASSED] 30.04 Xe3_LPG [19:40:37] [PASSED] 30.05 Xe3_LPG [19:40:37] [PASSED] 35.10 Xe3p_LPG [19:40:37] [PASSED] 35.11 Xe3p_XPC [19:40:37] ================ [PASSED] check_graphics_ip ================ [19:40:37] ===================== check_media_ip ====================== [19:40:37] [PASSED] 12.00 Xe_M [19:40:37] [PASSED] 12.55 Xe_HPM [19:40:37] [PASSED] 13.00 Xe_LPM+ [19:40:37] [PASSED] 13.01 Xe2_HPM [19:40:37] [PASSED] 20.00 Xe2_LPM [19:40:37] [PASSED] 30.00 Xe3_LPM [19:40:37] [PASSED] 30.02 Xe3_LPM [19:40:37] [PASSED] 35.00 Xe3p_LPM [19:40:37] [PASSED] 35.03 Xe3p_HPM [19:40:37] ================= [PASSED] check_media_ip ================== [19:40:37] =================== check_platform_desc =================== [19:40:37] [PASSED] 0x9A60 (TIGERLAKE) [19:40:37] [PASSED] 0x9A68 (TIGERLAKE) [19:40:37] [PASSED] 0x9A70 (TIGERLAKE) [19:40:37] [PASSED] 0x9A40 (TIGERLAKE) [19:40:37] [PASSED] 0x9A49 (TIGERLAKE) [19:40:37] [PASSED] 0x9A59 (TIGERLAKE) [19:40:37] [PASSED] 0x9A78 (TIGERLAKE) [19:40:37] [PASSED] 0x9AC0 (TIGERLAKE) [19:40:37] [PASSED] 0x9AC9 (TIGERLAKE) [19:40:37] [PASSED] 0x9AD9 (TIGERLAKE) [19:40:37] [PASSED] 0x9AF8 (TIGERLAKE) [19:40:37] [PASSED] 0x4C80 (ROCKETLAKE) [19:40:37] [PASSED] 0x4C8A (ROCKETLAKE) [19:40:37] [PASSED] 0x4C8B (ROCKETLAKE) [19:40:37] [PASSED] 0x4C8C (ROCKETLAKE) [19:40:37] [PASSED] 0x4C90 (ROCKETLAKE) [19:40:37] [PASSED] 0x4C9A (ROCKETLAKE) [19:40:37] [PASSED] 0x4680 (ALDERLAKE_S) [19:40:37] [PASSED] 0x4682 (ALDERLAKE_S) [19:40:37] [PASSED] 0x4688 (ALDERLAKE_S) [19:40:37] [PASSED] 0x468A (ALDERLAKE_S) [19:40:37] [PASSED] 0x468B (ALDERLAKE_S) [19:40:37] [PASSED] 0x4690 (ALDERLAKE_S) [19:40:37] [PASSED] 0x4692 (ALDERLAKE_S) [19:40:37] [PASSED] 0x4693 (ALDERLAKE_S) [19:40:37] [PASSED] 0x46A0 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46A1 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46A2 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46A3 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46A6 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46A8 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46AA (ALDERLAKE_P) [19:40:37] [PASSED] 0x462A (ALDERLAKE_P) [19:40:37] [PASSED] 0x4626 (ALDERLAKE_P) [19:40:37] [PASSED] 0x4628 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46B0 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46B1 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46B2 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46B3 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46C0 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46C1 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46C2 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46C3 (ALDERLAKE_P) [19:40:37] [PASSED] 0x46D0 (ALDERLAKE_N) [19:40:37] [PASSED] 0x46D1 (ALDERLAKE_N) [19:40:37] [PASSED] 0x46D2 (ALDERLAKE_N) [19:40:37] [PASSED] 0x46D3 (ALDERLAKE_N) [19:40:37] [PASSED] 0x46D4 (ALDERLAKE_N) [19:40:37] [PASSED] 0xA721 (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7A1 (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7A9 (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7AC (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7AD (ALDERLAKE_P) [19:40:37] [PASSED] 0xA720 (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7A0 (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7A8 (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7AA (ALDERLAKE_P) [19:40:37] [PASSED] 0xA7AB (ALDERLAKE_P) [19:40:37] [PASSED] 0xA780 (ALDERLAKE_S) [19:40:37] [PASSED] 0xA781 (ALDERLAKE_S) [19:40:37] [PASSED] 0xA782 (ALDERLAKE_S) [19:40:37] [PASSED] 0xA783 (ALDERLAKE_S) [19:40:37] [PASSED] 0xA788 (ALDERLAKE_S) [19:40:37] [PASSED] 0xA789 (ALDERLAKE_S) [19:40:37] [PASSED] 0xA78A (ALDERLAKE_S) [19:40:37] [PASSED] 0xA78B (ALDERLAKE_S) [19:40:37] [PASSED] 0x4905 (DG1) [19:40:37] [PASSED] 0x4906 (DG1) [19:40:37] [PASSED] 0x4907 (DG1) [19:40:37] [PASSED] 0x4908 (DG1) [19:40:37] [PASSED] 0x4909 (DG1) [19:40:37] [PASSED] 0x56C0 (DG2) [19:40:37] [PASSED] 0x56C2 (DG2) [19:40:37] [PASSED] 0x56C1 (DG2) [19:40:37] [PASSED] 0x7D51 (METEORLAKE) [19:40:37] [PASSED] 0x7DD1 (METEORLAKE) [19:40:37] [PASSED] 0x7D41 (METEORLAKE) [19:40:37] [PASSED] 0x7D67 (METEORLAKE) [19:40:37] [PASSED] 0xB640 (METEORLAKE) [19:40:37] [PASSED] 0x56A0 (DG2) [19:40:37] [PASSED] 0x56A1 (DG2) [19:40:37] [PASSED] 0x56A2 (DG2) [19:40:37] [PASSED] 0x56BE (DG2) [19:40:37] [PASSED] 0x56BF (DG2) [19:40:37] [PASSED] 0x5690 (DG2) [19:40:37] [PASSED] 0x5691 (DG2) [19:40:37] [PASSED] 0x5692 (DG2) [19:40:37] [PASSED] 0x56A5 (DG2) [19:40:37] [PASSED] 0x56A6 (DG2) [19:40:37] [PASSED] 0x56B0 (DG2) [19:40:37] [PASSED] 0x56B1 (DG2) [19:40:37] [PASSED] 0x56BA (DG2) [19:40:37] [PASSED] 0x56BB (DG2) [19:40:37] [PASSED] 0x56BC (DG2) [19:40:37] [PASSED] 0x56BD (DG2) [19:40:37] [PASSED] 0x5693 (DG2) [19:40:37] [PASSED] 0x5694 (DG2) [19:40:37] [PASSED] 0x5695 (DG2) [19:40:37] [PASSED] 0x56A3 (DG2) [19:40:37] [PASSED] 0x56A4 (DG2) [19:40:37] [PASSED] 0x56B2 (DG2) [19:40:37] [PASSED] 0x56B3 (DG2) [19:40:37] [PASSED] 0x5696 (DG2) [19:40:37] [PASSED] 0x5697 (DG2) [19:40:37] [PASSED] 0xB69 (PVC) [19:40:37] [PASSED] 0xB6E (PVC) [19:40:37] [PASSED] 0xBD4 (PVC) [19:40:37] [PASSED] 0xBD5 (PVC) [19:40:37] [PASSED] 0xBD6 (PVC) [19:40:37] [PASSED] 0xBD7 (PVC) [19:40:37] [PASSED] 0xBD8 (PVC) [19:40:37] [PASSED] 0xBD9 (PVC) [19:40:37] [PASSED] 0xBDA (PVC) [19:40:37] [PASSED] 0xBDB (PVC) [19:40:37] [PASSED] 0xBE0 (PVC) [19:40:37] [PASSED] 0xBE1 (PVC) [19:40:37] [PASSED] 0xBE5 (PVC) [19:40:37] [PASSED] 0x7D40 (METEORLAKE) [19:40:37] [PASSED] 0x7D45 (METEORLAKE) [19:40:37] [PASSED] 0x7D55 (METEORLAKE) [19:40:37] [PASSED] 0x7D60 (METEORLAKE) [19:40:37] [PASSED] 0x7DD5 (METEORLAKE) [19:40:37] [PASSED] 0x6420 (LUNARLAKE) [19:40:37] [PASSED] 0x64A0 (LUNARLAKE) [19:40:37] [PASSED] 0x64B0 (LUNARLAKE) [19:40:37] [PASSED] 0xE202 (BATTLEMAGE) [19:40:37] [PASSED] 0xE209 (BATTLEMAGE) [19:40:37] [PASSED] 0xE20B (BATTLEMAGE) [19:40:37] [PASSED] 0xE20C (BATTLEMAGE) [19:40:37] [PASSED] 0xE20D (BATTLEMAGE) [19:40:37] [PASSED] 0xE210 (BATTLEMAGE) [19:40:37] [PASSED] 0xE211 (BATTLEMAGE) [19:40:37] [PASSED] 0xE212 (BATTLEMAGE) [19:40:37] [PASSED] 0xE216 (BATTLEMAGE) [19:40:37] [PASSED] 0xE220 (BATTLEMAGE) [19:40:37] [PASSED] 0xE221 (BATTLEMAGE) [19:40:37] [PASSED] 0xE222 (BATTLEMAGE) [19:40:37] [PASSED] 0xE223 (BATTLEMAGE) [19:40:37] [PASSED] 0xB080 (PANTHERLAKE) [19:40:37] [PASSED] 0xB081 (PANTHERLAKE) [19:40:37] [PASSED] 0xB082 (PANTHERLAKE) [19:40:37] [PASSED] 0xB083 (PANTHERLAKE) [19:40:37] [PASSED] 0xB084 (PANTHERLAKE) [19:40:37] [PASSED] 0xB085 (PANTHERLAKE) [19:40:37] [PASSED] 0xB086 (PANTHERLAKE) [19:40:37] [PASSED] 0xB087 (PANTHERLAKE) [19:40:37] [PASSED] 0xB08F (PANTHERLAKE) [19:40:37] [PASSED] 0xB090 (PANTHERLAKE) [19:40:37] [PASSED] 0xB0A0 (PANTHERLAKE) [19:40:37] [PASSED] 0xB0B0 (PANTHERLAKE) [19:40:37] [PASSED] 0xFD80 (PANTHERLAKE) [19:40:37] [PASSED] 0xFD81 (PANTHERLAKE) [19:40:37] [PASSED] 0xD740 (NOVALAKE_S) [19:40:37] [PASSED] 0xD741 (NOVALAKE_S) [19:40:37] [PASSED] 0xD742 (NOVALAKE_S) [19:40:37] [PASSED] 0xD743 (NOVALAKE_S) [19:40:37] [PASSED] 0xD744 (NOVALAKE_S) [19:40:37] [PASSED] 0xD745 (NOVALAKE_S) [19:40:37] [PASSED] 0x674C (CRESCENTISLAND) [19:40:37] [PASSED] 0x674D (CRESCENTISLAND) [19:40:37] [PASSED] 0x674E (CRESCENTISLAND) [19:40:37] [PASSED] 0x674F (CRESCENTISLAND) [19:40:37] [PASSED] 0x6750 (CRESCENTISLAND) [19:40:37] [PASSED] 0xD750 (NOVALAKE_P) [19:40:37] [PASSED] 0xD751 (NOVALAKE_P) [19:40:37] [PASSED] 0xD752 (NOVALAKE_P) [19:40:37] [PASSED] 0xD753 (NOVALAKE_P) [19:40:37] [PASSED] 0xD754 (NOVALAKE_P) [19:40:37] [PASSED] 0xD755 (NOVALAKE_P) [19:40:37] [PASSED] 0xD756 (NOVALAKE_P) [19:40:37] [PASSED] 0xD757 (NOVALAKE_P) [19:40:37] [PASSED] 0xD75F (NOVALAKE_P) [19:40:37] =============== [PASSED] check_platform_desc =============== [19:40:37] ===================== [PASSED] xe_pci ====================== [19:40:37] ============= xe_rtp_tables_test (3 subtests) ============== [19:40:37] ================== xe_rtp_table_gt_test =================== [19:40:37] [PASSED] gt_was/14011060649 [19:40:37] [PASSED] gt_was/14011059788 [19:40:37] [PASSED] gt_was/14015795083 [19:40:37] [PASSED] gt_was/16021867713 [19:40:37] [PASSED] gt_was/14019449301 [19:40:37] [PASSED] gt_was/16028005424 [19:40:37] [PASSED] gt_was/14026578760 [19:40:37] [PASSED] gt_was/1409420604 [19:40:37] [PASSED] gt_was/1408615072 [19:40:37] [PASSED] gt_was/22010523718 [19:40:37] [PASSED] gt_was/14011006942 [19:40:37] [PASSED] gt_was/14014830051 [19:40:37] [PASSED] gt_was/18018781329 [19:40:37] [PASSED] gt_was/1509235366 [19:40:37] [PASSED] gt_was/18018781329 [19:40:37] [PASSED] gt_was/16016694945 [19:40:37] [PASSED] gt_was/14018575942 [19:40:37] [PASSED] gt_was/22016670082 [19:40:37] [PASSED] gt_was/22016670082 [19:40:37] [PASSED] gt_was/14017421178 [19:40:37] [PASSED] gt_was/16025250150 [19:40:37] [PASSED] gt_was/14021871409 [19:40:37] [PASSED] gt_was/16021865536 [19:40:37] [PASSED] gt_was/14021486841 [19:40:37] [PASSED] gt_was/14025160223 [19:40:37] [PASSED] gt_was/14026144927, 16029437861 [19:40:37] [PASSED] gt_was/14025635424 [19:40:37] [PASSED] gt_was/16028005424 [19:40:37] ============== [PASSED] xe_rtp_table_gt_test =============== [19:40:37] ================== xe_rtp_table_oob_test ================== [19:40:37] [PASSED] oob_was/1607983814 [19:40:37] [PASSED] oob_was/16010904313 [19:40:37] [PASSED] oob_was/18022495364 [19:40:37] [PASSED] oob_was/22012773006 [19:40:37] [PASSED] oob_was/14014475959 [19:40:37] [PASSED] oob_was/22011391025 [19:40:37] [PASSED] oob_was/22012727170 [19:40:37] [PASSED] oob_was/22012727685 [19:40:37] [PASSED] oob_was/22016596838 [19:40:37] [PASSED] oob_was/18020744125 [19:40:37] [PASSED] oob_was/1409600907 [19:40:37] [PASSED] oob_was/22014953428 [19:40:37] [PASSED] oob_was/16017236439 [19:40:37] [PASSED] oob_was/14019821291 [19:40:37] [PASSED] oob_was/14015076503 [19:40:37] [PASSED] oob_was/14018913170 [19:40:37] [PASSED] oob_was/14018094691 [19:40:37] [PASSED] oob_was/18024947630 [19:40:37] [PASSED] oob_was/16022287689 [19:40:37] [PASSED] oob_was/13011645652 [19:40:37] [PASSED] oob_was/14022293748 [19:40:37] [PASSED] oob_was/22019794406 [19:40:37] [PASSED] oob_was/22019338487 [19:40:37] [PASSED] oob_was/16023588340 [19:40:37] [PASSED] oob_was/14019789679 [19:40:37] [PASSED] oob_was/14022866841 [19:40:37] [PASSED] oob_was/16021333562 [19:40:37] [PASSED] oob_was/14016712196 [19:40:37] [PASSED] oob_was/14015568240 [19:40:37] [PASSED] oob_was/18013179988 [19:40:37] [PASSED] oob_was/1508761755 [19:40:37] [PASSED] oob_was/16023105232 [19:40:37] [PASSED] oob_was/16026508708 [19:40:37] [PASSED] oob_was/14020001231 [19:40:37] [PASSED] oob_was/16023683509 [19:40:37] [PASSED] oob_was/14025515070 [19:40:37] [PASSED] oob_was/15015404425_disable [19:40:37] [PASSED] oob_was/16026007364 [19:40:37] [PASSED] oob_was/14020316580 [19:40:37] [PASSED] oob_was/14025883347 [19:40:37] ============== [PASSED] xe_rtp_table_oob_test ============== [19:40:37] ================ xe_rtp_table_dev_oob_test ================ [19:40:37] [PASSED] device_oob_was/22010954014 [19:40:37] [PASSED] device_oob_was/15015404425 [19:40:37] [PASSED] device_oob_was/22019338487_display [19:40:37] [PASSED] device_oob_was/14022085890 [19:40:37] [PASSED] device_oob_was/14026539277 [19:40:37] [PASSED] device_oob_was/14026633728 [19:40:37] [PASSED] device_oob_was/14026746987 [19:40:37] [PASSED] device_oob_was/14026779378 [19:40:37] ============ [PASSED] xe_rtp_table_dev_oob_test ============ [19:40:37] =============== [PASSED] xe_rtp_tables_test ================ [19:40:37] =================== xe_rtp (2 subtests) ==================== [19:40:37] =============== xe_rtp_process_to_sr_tests ================ [19:40:37] [PASSED] coalesce-same-reg [19:40:37] [PASSED] no-match-no-add [19:40:37] [PASSED] match-or [19:40:37] [PASSED] match-or-xfail [19:40:37] [PASSED] no-match-no-add-multiple-rules [19:40:37] [PASSED] two-regs-two-entries [19:40:37] [PASSED] clr-one-set-other [19:40:37] [PASSED] set-field [19:40:37] [PASSED] conflict-duplicate [19:40:37] [PASSED] conflict-not-disjoint [19:40:37] [PASSED] conflict-reg-type [19:40:37] [PASSED] bad-mcr-reg-forced-to-regular [19:40:37] [PASSED] bad-regular-reg-forced-to-mcr [19:40:37] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [19:40:37] ================== xe_rtp_process_tests =================== [19:40:37] [PASSED] active1 [19:40:37] [PASSED] active2 [19:40:37] [PASSED] active-inactive [19:40:37] [PASSED] inactive-active [19:40:37] [PASSED] inactive-1st_or_active-inactive [19:40:37] [PASSED] inactive-2nd_or_active-inactive [19:40:37] [PASSED] inactive-last_or_active-inactive [19:40:37] [PASSED] inactive-no_or_active-inactive [19:40:37] ============== [PASSED] xe_rtp_process_tests =============== [19:40:37] ===================== [PASSED] xe_rtp ====================== [19:40:37] ==================== xe_wa (1 subtest) ===================== [19:40:37] ======================== xe_wa_gt ========================= [19:40:37] [PASSED] TIGERLAKE B0 [19:40:37] [PASSED] DG1 A0 [19:40:37] [PASSED] DG1 B0 [19:40:37] [PASSED] ALDERLAKE_S A0 [19:40:37] [PASSED] ALDERLAKE_S B0 [19:40:37] [PASSED] ALDERLAKE_S C0 [19:40:37] [PASSED] ALDERLAKE_S D0 [19:40:37] [PASSED] ALDERLAKE_P A0 [19:40:37] [PASSED] ALDERLAKE_P B0 [19:40:37] [PASSED] ALDERLAKE_P C0 [19:40:37] [PASSED] ALDERLAKE_S RPLS D0 [19:40:37] [PASSED] ALDERLAKE_P RPLU E0 [19:40:37] [PASSED] DG2 G10 C0 [19:40:37] [PASSED] DG2 G11 B1 [19:40:37] [PASSED] DG2 G12 A1 [19:40:37] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [19:40:37] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [19:40:37] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [19:40:37] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [19:40:37] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [19:40:37] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [19:40:37] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [19:40:37] ==================== [PASSED] xe_wa_gt ===================== [19:40:37] ====================== [PASSED] xe_wa ====================== [19:40:37] ============================================================ [19:40:37] Testing complete. Ran 679 tests: passed: 661, skipped: 18 [19:40:37] Elapsed time: 36.302s total, 4.233s configuring, 31.403s building, 0.621s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [19:40:37] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [19:40:39] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [19:41:03] Starting KUnit Kernel (1/1)... [19:41:03] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [19:41:03] ============ drm_test_pick_cmdline (2 subtests) ============ [19:41:03] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [19:41:03] =============== drm_test_pick_cmdline_named =============== [19:41:03] [PASSED] NTSC [19:41:03] [PASSED] NTSC-J [19:41:03] [PASSED] PAL [19:41:03] [PASSED] PAL-M [19:41:03] =========== [PASSED] drm_test_pick_cmdline_named =========== [19:41:03] ============== [PASSED] drm_test_pick_cmdline ============== [19:41:03] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [19:41:03] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [19:41:03] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [19:41:03] =========== drm_validate_clone_mode (2 subtests) =========== [19:41:03] ============== drm_test_check_in_clone_mode =============== [19:41:03] [PASSED] in_clone_mode [19:41:03] [PASSED] not_in_clone_mode [19:41:03] ========== [PASSED] drm_test_check_in_clone_mode =========== [19:41:03] =============== drm_test_check_valid_clones =============== [19:41:03] [PASSED] not_in_clone_mode [19:41:03] [PASSED] valid_clone [19:41:03] [PASSED] invalid_clone [19:41:03] =========== [PASSED] drm_test_check_valid_clones =========== [19:41:03] ============= [PASSED] drm_validate_clone_mode ============= [19:41:03] ============= drm_validate_modeset (1 subtest) ============= [19:41:03] [PASSED] drm_test_check_connector_changed_modeset [19:41:03] ============== [PASSED] drm_validate_modeset =============== [19:41:03] ====== drm_test_bridge_get_current_state (2 subtests) ====== [19:41:03] [PASSED] drm_test_drm_bridge_get_current_state_atomic [19:41:03] [PASSED] drm_test_drm_bridge_get_current_state_legacy [19:41:03] ======== [PASSED] drm_test_bridge_get_current_state ======== [19:41:03] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [19:41:03] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [19:41:03] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [19:41:03] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [19:41:03] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [19:41:03] ============== drm_bridge_alloc (2 subtests) =============== [19:41:03] [PASSED] drm_test_drm_bridge_alloc_basic [19:41:03] [PASSED] drm_test_drm_bridge_alloc_get_put [19:41:03] ================ [PASSED] drm_bridge_alloc ================= [19:41:03] ============= drm_cmdline_parser (40 subtests) ============= [19:41:03] [PASSED] drm_test_cmdline_force_d_only [19:41:03] [PASSED] drm_test_cmdline_force_D_only_dvi [19:41:03] [PASSED] drm_test_cmdline_force_D_only_hdmi [19:41:03] [PASSED] drm_test_cmdline_force_D_only_not_digital [19:41:03] [PASSED] drm_test_cmdline_force_e_only [19:41:03] [PASSED] drm_test_cmdline_res [19:41:03] [PASSED] drm_test_cmdline_res_vesa [19:41:03] [PASSED] drm_test_cmdline_res_vesa_rblank [19:41:03] [PASSED] drm_test_cmdline_res_rblank [19:41:03] [PASSED] drm_test_cmdline_res_bpp [19:41:03] [PASSED] drm_test_cmdline_res_refresh [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [19:41:03] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [19:41:03] [PASSED] drm_test_cmdline_res_margins_force_on [19:41:03] [PASSED] drm_test_cmdline_res_vesa_margins [19:41:03] [PASSED] drm_test_cmdline_name [19:41:03] [PASSED] drm_test_cmdline_name_bpp [19:41:03] [PASSED] drm_test_cmdline_name_option [19:41:03] [PASSED] drm_test_cmdline_name_bpp_option [19:41:03] [PASSED] drm_test_cmdline_rotate_0 [19:41:03] [PASSED] drm_test_cmdline_rotate_90 [19:41:03] [PASSED] drm_test_cmdline_rotate_180 [19:41:03] [PASSED] drm_test_cmdline_rotate_270 [19:41:03] [PASSED] drm_test_cmdline_hmirror [19:41:03] [PASSED] drm_test_cmdline_vmirror [19:41:03] [PASSED] drm_test_cmdline_margin_options [19:41:03] [PASSED] drm_test_cmdline_multiple_options [19:41:03] [PASSED] drm_test_cmdline_bpp_extra_and_option [19:41:03] [PASSED] drm_test_cmdline_extra_and_option [19:41:03] [PASSED] drm_test_cmdline_freestanding_options [19:41:03] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [19:41:03] [PASSED] drm_test_cmdline_panel_orientation [19:41:03] ================ drm_test_cmdline_invalid ================= [19:41:03] [PASSED] margin_only [19:41:03] [PASSED] interlace_only [19:41:03] [PASSED] res_missing_x [19:41:03] [PASSED] res_missing_y [19:41:03] [PASSED] res_bad_y [19:41:03] [PASSED] res_missing_y_bpp [19:41:03] [PASSED] res_bad_bpp [19:41:03] [PASSED] res_bad_refresh [19:41:03] [PASSED] res_bpp_refresh_force_on_off [19:41:03] [PASSED] res_invalid_mode [19:41:03] [PASSED] res_bpp_wrong_place_mode [19:41:03] [PASSED] name_bpp_refresh [19:41:03] [PASSED] name_refresh [19:41:03] [PASSED] name_refresh_wrong_mode [19:41:03] [PASSED] name_refresh_invalid_mode [19:41:03] [PASSED] rotate_multiple [19:41:03] [PASSED] rotate_invalid_val [19:41:03] [PASSED] rotate_truncated [19:41:03] [PASSED] invalid_option [19:41:03] [PASSED] invalid_tv_option [19:41:03] [PASSED] truncated_tv_option [19:41:03] ============ [PASSED] drm_test_cmdline_invalid ============= [19:41:03] =============== drm_test_cmdline_tv_options =============== [19:41:03] [PASSED] NTSC [19:41:03] [PASSED] NTSC_443 [19:41:03] [PASSED] NTSC_J [19:41:03] [PASSED] PAL [19:41:03] [PASSED] PAL_M [19:41:03] [PASSED] PAL_N [19:41:03] [PASSED] SECAM [19:41:03] [PASSED] MONO_525 [19:41:03] [PASSED] MONO_625 [19:41:03] =========== [PASSED] drm_test_cmdline_tv_options =========== [19:41:03] =============== [PASSED] drm_cmdline_parser ================ [19:41:03] ========== drmm_connector_hdmi_init (20 subtests) ========== [19:41:03] [PASSED] drm_test_connector_hdmi_init_valid [19:41:03] [PASSED] drm_test_connector_hdmi_init_bpc_8 [19:41:03] [PASSED] drm_test_connector_hdmi_init_bpc_10 [19:41:03] [PASSED] drm_test_connector_hdmi_init_bpc_12 [19:41:03] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [19:41:03] [PASSED] drm_test_connector_hdmi_init_bpc_null [19:41:03] [PASSED] drm_test_connector_hdmi_init_formats_empty [19:41:03] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [19:41:03] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [19:41:03] [PASSED] supported_formats=0x9 yuv420_allowed=1 [19:41:03] [PASSED] supported_formats=0x9 yuv420_allowed=0 [19:41:03] [PASSED] supported_formats=0x5 yuv420_allowed=1 [19:41:03] [PASSED] supported_formats=0x5 yuv420_allowed=0 [19:41:03] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [19:41:03] [PASSED] drm_test_connector_hdmi_init_null_ddc [19:41:03] [PASSED] drm_test_connector_hdmi_init_null_product [19:41:03] [PASSED] drm_test_connector_hdmi_init_null_vendor [19:41:03] [PASSED] drm_test_connector_hdmi_init_product_length_exact [19:41:03] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [19:41:03] [PASSED] drm_test_connector_hdmi_init_product_valid [19:41:03] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [19:41:03] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [19:41:03] [PASSED] drm_test_connector_hdmi_init_vendor_valid [19:41:03] ========= drm_test_connector_hdmi_init_type_valid ========= [19:41:03] [PASSED] HDMI-A [19:41:03] [PASSED] HDMI-B [19:41:03] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [19:41:03] ======== drm_test_connector_hdmi_init_type_invalid ======== [19:41:03] [PASSED] Unknown [19:41:03] [PASSED] VGA [19:41:03] [PASSED] DVI-I [19:41:03] [PASSED] DVI-D [19:41:03] [PASSED] DVI-A [19:41:03] [PASSED] Composite [19:41:03] [PASSED] SVIDEO [19:41:03] [PASSED] LVDS [19:41:03] [PASSED] Component [19:41:03] [PASSED] DIN [19:41:03] [PASSED] DP [19:41:03] [PASSED] TV [19:41:03] [PASSED] eDP [19:41:03] [PASSED] Virtual [19:41:03] [PASSED] DSI [19:41:03] [PASSED] DPI [19:41:03] [PASSED] Writeback [19:41:03] [PASSED] SPI [19:41:03] [PASSED] USB [19:41:03] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [19:41:03] ============ [PASSED] drmm_connector_hdmi_init ============= [19:41:03] ============= drmm_connector_init (3 subtests) ============= [19:41:03] [PASSED] drm_test_drmm_connector_init [19:41:03] [PASSED] drm_test_drmm_connector_init_null_ddc [19:41:03] ========= drm_test_drmm_connector_init_type_valid ========= [19:41:03] [PASSED] Unknown [19:41:03] [PASSED] VGA [19:41:03] [PASSED] DVI-I [19:41:03] [PASSED] DVI-D [19:41:03] [PASSED] DVI-A [19:41:03] [PASSED] Composite [19:41:03] [PASSED] SVIDEO [19:41:03] [PASSED] LVDS [19:41:03] [PASSED] Component [19:41:03] [PASSED] DIN [19:41:03] [PASSED] DP [19:41:03] [PASSED] HDMI-A [19:41:03] [PASSED] HDMI-B [19:41:03] [PASSED] TV [19:41:03] [PASSED] eDP [19:41:03] [PASSED] Virtual [19:41:03] [PASSED] DSI [19:41:03] [PASSED] DPI [19:41:03] [PASSED] Writeback [19:41:03] [PASSED] SPI [19:41:03] [PASSED] USB [19:41:03] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [19:41:03] =============== [PASSED] drmm_connector_init =============== [19:41:03] ========= drm_connector_dynamic_init (6 subtests) ========== [19:41:03] [PASSED] drm_test_drm_connector_dynamic_init [19:41:03] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [19:41:03] [PASSED] drm_test_drm_connector_dynamic_init_not_added [19:41:03] [PASSED] drm_test_drm_connector_dynamic_init_properties [19:41:03] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [19:41:03] [PASSED] Unknown [19:41:03] [PASSED] VGA [19:41:03] [PASSED] DVI-I [19:41:03] [PASSED] DVI-D [19:41:03] [PASSED] DVI-A [19:41:03] [PASSED] Composite [19:41:03] [PASSED] SVIDEO [19:41:03] [PASSED] LVDS [19:41:03] [PASSED] Component [19:41:03] [PASSED] DIN [19:41:03] [PASSED] DP [19:41:03] [PASSED] HDMI-A [19:41:03] [PASSED] HDMI-B [19:41:03] [PASSED] TV [19:41:03] [PASSED] eDP [19:41:03] [PASSED] Virtual [19:41:03] [PASSED] DSI [19:41:03] [PASSED] DPI [19:41:03] [PASSED] Writeback [19:41:03] [PASSED] SPI [19:41:03] [PASSED] USB [19:41:03] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [19:41:03] ======== drm_test_drm_connector_dynamic_init_name ========= [19:41:03] [PASSED] Unknown [19:41:03] [PASSED] VGA [19:41:03] [PASSED] DVI-I [19:41:03] [PASSED] DVI-D [19:41:03] [PASSED] DVI-A [19:41:03] [PASSED] Composite [19:41:03] [PASSED] SVIDEO [19:41:03] [PASSED] LVDS [19:41:03] [PASSED] Component [19:41:03] [PASSED] DIN [19:41:03] [PASSED] DP [19:41:03] [PASSED] HDMI-A [19:41:03] [PASSED] HDMI-B [19:41:03] [PASSED] TV [19:41:03] [PASSED] eDP [19:41:03] [PASSED] Virtual [19:41:03] [PASSED] DSI [19:41:03] [PASSED] DPI [19:41:03] [PASSED] Writeback [19:41:03] [PASSED] SPI [19:41:03] [PASSED] USB [19:41:03] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [19:41:03] =========== [PASSED] drm_connector_dynamic_init ============ [19:41:03] ==== drm_connector_dynamic_register_early (4 subtests) ===== [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [19:41:03] ====== [PASSED] drm_connector_dynamic_register_early ======= [19:41:03] ======= drm_connector_dynamic_register (7 subtests) ======== [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_on_list [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_no_init [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [19:41:03] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [19:41:03] ========= [PASSED] drm_connector_dynamic_register ========== [19:41:03] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [19:41:03] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [19:41:03] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [19:41:03] === [PASSED] drm_connector_attach_broadcast_rgb_property === [19:41:03] ========== drm_get_tv_mode_from_name (2 subtests) ========== [19:41:03] ========== drm_test_get_tv_mode_from_name_valid =========== [19:41:03] [PASSED] NTSC [19:41:03] [PASSED] NTSC-443 [19:41:03] [PASSED] NTSC-J [19:41:03] [PASSED] PAL [19:41:03] [PASSED] PAL-M [19:41:03] [PASSED] PAL-N [19:41:03] [PASSED] SECAM [19:41:03] [PASSED] Mono [19:41:03] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [19:41:03] [PASSED] drm_test_get_tv_mode_from_name_truncated [19:41:03] ============ [PASSED] drm_get_tv_mode_from_name ============ [19:41:03] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [19:41:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [19:41:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [19:41:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [19:41:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [19:41:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [19:41:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [19:41:03] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [19:41:03] [PASSED] VIC 96 [19:41:03] [PASSED] VIC 97 [19:41:03] [PASSED] VIC 101 [19:41:03] [PASSED] VIC 102 [19:41:03] [PASSED] VIC 106 [19:41:03] [PASSED] VIC 107 [19:41:03] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [19:41:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [19:41:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [19:41:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [19:41:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [19:41:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [19:41:03] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [19:41:03] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [19:41:03] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [19:41:03] [PASSED] Automatic [19:41:03] [PASSED] Full [19:41:03] [PASSED] Limited 16:235 [19:41:03] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [19:41:03] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [19:41:03] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [19:41:03] == drm_hdmi_connector_get_output_format_name (2 subtests) == [19:41:03] === drm_test_drm_hdmi_connector_get_output_format_name ==== [19:41:03] [PASSED] RGB [19:41:03] [PASSED] YUV 4:2:0 [19:41:03] [PASSED] YUV 4:2:2 [19:41:03] [PASSED] YUV 4:4:4 [19:41:03] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [19:41:03] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [19:41:03] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [19:41:03] ============= drm_damage_helper (21 subtests) ============== [19:41:03] [PASSED] drm_test_damage_iter_no_damage [19:41:03] [PASSED] drm_test_damage_iter_no_damage_fractional_src [19:41:03] [PASSED] drm_test_damage_iter_no_damage_src_moved [19:41:03] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [19:41:03] [PASSED] drm_test_damage_iter_no_damage_not_visible [19:41:03] [PASSED] drm_test_damage_iter_no_damage_no_crtc [19:41:03] [PASSED] drm_test_damage_iter_no_damage_no_fb [19:41:03] [PASSED] drm_test_damage_iter_simple_damage [19:41:03] [PASSED] drm_test_damage_iter_single_damage [19:41:03] [PASSED] drm_test_damage_iter_single_damage_intersect_src [19:41:03] [PASSED] drm_test_damage_iter_single_damage_outside_src [19:41:03] [PASSED] drm_test_damage_iter_single_damage_fractional_src [19:41:03] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [19:41:03] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [19:41:03] [PASSED] drm_test_damage_iter_single_damage_src_moved [19:41:03] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [19:41:03] [PASSED] drm_test_damage_iter_damage [19:41:03] [PASSED] drm_test_damage_iter_damage_one_intersect [19:41:03] [PASSED] drm_test_damage_iter_damage_one_outside [19:41:03] [PASSED] drm_test_damage_iter_damage_src_moved [19:41:03] [PASSED] drm_test_damage_iter_damage_not_visible [19:41:03] ================ [PASSED] drm_damage_helper ================ [19:41:03] ============== drm_dp_mst_helper (3 subtests) ============== [19:41:03] ============== drm_test_dp_mst_calc_pbn_mode ============== [19:41:03] [PASSED] Clock 154000 BPP 30 DSC disabled [19:41:03] [PASSED] Clock 234000 BPP 30 DSC disabled [19:41:03] [PASSED] Clock 297000 BPP 24 DSC disabled [19:41:03] [PASSED] Clock 332880 BPP 24 DSC enabled [19:41:03] [PASSED] Clock 324540 BPP 24 DSC enabled [19:41:03] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [19:41:03] ============== drm_test_dp_mst_calc_pbn_div =============== [19:41:03] [PASSED] Link rate 2000000 lane count 4 [19:41:03] [PASSED] Link rate 2000000 lane count 2 [19:41:03] [PASSED] Link rate 2000000 lane count 1 [19:41:03] [PASSED] Link rate 1350000 lane count 4 [19:41:03] [PASSED] Link rate 1350000 lane count 2 [19:41:03] [PASSED] Link rate 1350000 lane count 1 [19:41:03] [PASSED] Link rate 1000000 lane count 4 [19:41:03] [PASSED] Link rate 1000000 lane count 2 [19:41:03] [PASSED] Link rate 1000000 lane count 1 [19:41:03] [PASSED] Link rate 810000 lane count 4 [19:41:03] [PASSED] Link rate 810000 lane count 2 [19:41:03] [PASSED] Link rate 810000 lane count 1 [19:41:03] [PASSED] Link rate 540000 lane count 4 [19:41:03] [PASSED] Link rate 540000 lane count 2 [19:41:03] [PASSED] Link rate 540000 lane count 1 [19:41:03] [PASSED] Link rate 270000 lane count 4 [19:41:03] [PASSED] Link rate 270000 lane count 2 [19:41:03] [PASSED] Link rate 270000 lane count 1 [19:41:03] [PASSED] Link rate 162000 lane count 4 [19:41:03] [PASSED] Link rate 162000 lane count 2 [19:41:03] [PASSED] Link rate 162000 lane count 1 [19:41:03] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [19:41:03] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [19:41:03] [PASSED] DP_ENUM_PATH_RESOURCES with port number [19:41:03] [PASSED] DP_POWER_UP_PHY with port number [19:41:03] [PASSED] DP_POWER_DOWN_PHY with port number [19:41:03] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [19:41:03] [PASSED] DP_ALLOCATE_PAYLOAD with port number [19:41:03] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [19:41:03] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [19:41:03] [PASSED] DP_QUERY_PAYLOAD with port number [19:41:03] [PASSED] DP_QUERY_PAYLOAD with VCPI [19:41:03] [PASSED] DP_REMOTE_DPCD_READ with port number [19:41:03] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [19:41:03] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [19:41:03] [PASSED] DP_REMOTE_DPCD_WRITE with port number [19:41:03] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [19:41:03] [PASSED] DP_REMOTE_DPCD_WRITE with data array [19:41:03] [PASSED] DP_REMOTE_I2C_READ with port number [19:41:03] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [19:41:03] [PASSED] DP_REMOTE_I2C_READ with transactions array [19:41:03] [PASSED] DP_REMOTE_I2C_WRITE with port number [19:41:03] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [19:41:03] [PASSED] DP_REMOTE_I2C_WRITE with data array [19:41:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [19:41:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [19:41:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [19:41:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [19:41:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [19:41:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [19:41:03] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [19:41:03] ================ [PASSED] drm_dp_mst_helper ================ [19:41:03] ================== drm_exec (7 subtests) =================== [19:41:03] [PASSED] sanitycheck [19:41:03] [PASSED] test_lock [19:41:03] [PASSED] test_lock_unlock [19:41:03] [PASSED] test_duplicates [19:41:03] [PASSED] test_prepare [19:41:03] [PASSED] test_prepare_array [19:41:03] [PASSED] test_multiple_loops [19:41:03] ==================== [PASSED] drm_exec ===================== [19:41:03] =========== drm_format_helper_test (17 subtests) =========== [19:41:03] ============== drm_test_fb_xrgb8888_to_gray8 ============== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [19:41:03] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [19:41:03] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [19:41:03] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [19:41:03] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [19:41:03] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [19:41:03] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [19:41:03] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [19:41:03] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [19:41:03] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [19:41:03] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [19:41:03] ============== drm_test_fb_xrgb8888_to_mono =============== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [19:41:03] ==================== drm_test_fb_swab ===================== [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ================ [PASSED] drm_test_fb_swab ================= [19:41:03] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [19:41:03] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [19:41:03] [PASSED] single_pixel_source_buffer [19:41:03] [PASSED] single_pixel_clip_rectangle [19:41:03] [PASSED] well_known_colors [19:41:03] [PASSED] destination_pitch [19:41:03] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [19:41:03] ================= drm_test_fb_clip_offset ================= [19:41:03] [PASSED] pass through [19:41:03] [PASSED] horizontal offset [19:41:03] [PASSED] vertical offset [19:41:03] [PASSED] horizontal and vertical offset [19:41:03] [PASSED] horizontal offset (custom pitch) [19:41:03] [PASSED] vertical offset (custom pitch) [19:41:03] [PASSED] horizontal and vertical offset (custom pitch) [19:41:03] ============= [PASSED] drm_test_fb_clip_offset ============= [19:41:03] =================== drm_test_fb_memcpy ==================== [19:41:03] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [19:41:03] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [19:41:03] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [19:41:03] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [19:41:03] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [19:41:03] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [19:41:03] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [19:41:03] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [19:41:03] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [19:41:03] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [19:41:03] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [19:41:03] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [19:41:03] =============== [PASSED] drm_test_fb_memcpy ================ [19:41:03] ============= [PASSED] drm_format_helper_test ============== [19:41:03] ================= drm_format (18 subtests) ================= [19:41:03] [PASSED] drm_test_format_block_width_invalid [19:41:03] [PASSED] drm_test_format_block_width_one_plane [19:41:03] [PASSED] drm_test_format_block_width_two_plane [19:41:03] [PASSED] drm_test_format_block_width_three_plane [19:41:03] [PASSED] drm_test_format_block_width_tiled [19:41:03] [PASSED] drm_test_format_block_height_invalid [19:41:03] [PASSED] drm_test_format_block_height_one_plane [19:41:03] [PASSED] drm_test_format_block_height_two_plane [19:41:03] [PASSED] drm_test_format_block_height_three_plane [19:41:03] [PASSED] drm_test_format_block_height_tiled [19:41:03] [PASSED] drm_test_format_min_pitch_invalid [19:41:03] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [19:41:03] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [19:41:03] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [19:41:03] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [19:41:03] [PASSED] drm_test_format_min_pitch_two_plane [19:41:03] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [19:41:03] [PASSED] drm_test_format_min_pitch_tiled [19:41:03] =================== [PASSED] drm_format ==================== [19:41:03] ============== drm_framebuffer (10 subtests) =============== [19:41:03] ========== drm_test_framebuffer_check_src_coords ========== [19:41:03] [PASSED] Success: source fits into fb [19:41:03] [PASSED] Fail: overflowing fb with x-axis coordinate [19:41:03] [PASSED] Fail: overflowing fb with y-axis coordinate [19:41:03] [PASSED] Fail: overflowing fb with source width [19:41:03] [PASSED] Fail: overflowing fb with source height [19:41:03] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [19:41:03] [PASSED] drm_test_framebuffer_cleanup [19:41:03] =============== drm_test_framebuffer_create =============== [19:41:03] [PASSED] ABGR8888 normal sizes [19:41:03] [PASSED] ABGR8888 max sizes [19:41:03] [PASSED] ABGR8888 pitch greater than min required [19:41:03] [PASSED] ABGR8888 pitch less than min required [19:41:03] [PASSED] ABGR8888 Invalid width [19:41:03] [PASSED] ABGR8888 Invalid buffer handle [19:41:03] [PASSED] No pixel format [19:41:03] [PASSED] ABGR8888 Width 0 [19:41:03] [PASSED] ABGR8888 Height 0 [19:41:03] [PASSED] ABGR8888 Out of bound height * pitch combination [19:41:03] [PASSED] ABGR8888 Large buffer offset [19:41:03] [PASSED] ABGR8888 Buffer offset for inexistent plane [19:41:03] [PASSED] ABGR8888 Invalid flag [19:41:03] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [19:41:03] [PASSED] ABGR8888 Valid buffer modifier [19:41:03] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [19:41:03] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [19:41:03] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [19:41:03] [PASSED] NV12 Normal sizes [19:41:03] [PASSED] NV12 Max sizes [19:41:03] [PASSED] NV12 Invalid pitch [19:41:03] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [19:41:03] [PASSED] NV12 different modifier per-plane [19:41:03] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [19:41:03] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [19:41:03] [PASSED] NV12 Modifier for inexistent plane [19:41:03] [PASSED] NV12 Handle for inexistent plane [19:41:03] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [19:41:03] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [19:41:03] [PASSED] YVU420 Normal sizes [19:41:03] [PASSED] YVU420 Max sizes [19:41:03] [PASSED] YVU420 Invalid pitch [19:41:03] [PASSED] YVU420 Different pitches [19:41:03] [PASSED] YVU420 Different buffer offsets/pitches [19:41:03] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [19:41:03] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [19:41:03] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [19:41:03] [PASSED] YVU420 Valid modifier [19:41:03] [PASSED] YVU420 Different modifiers per plane [19:41:03] [PASSED] YVU420 Modifier for inexistent plane [19:41:03] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [19:41:03] [PASSED] X0L2 Normal sizes [19:41:03] [PASSED] X0L2 Max sizes [19:41:03] [PASSED] X0L2 Invalid pitch [19:41:03] [PASSED] X0L2 Pitch greater than minimum required [19:41:03] [PASSED] X0L2 Handle for inexistent plane [19:41:03] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [19:41:03] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [19:41:03] [PASSED] X0L2 Valid modifier [19:41:03] [PASSED] X0L2 Modifier for inexistent plane [19:41:03] =========== [PASSED] drm_test_framebuffer_create =========== [19:41:03] [PASSED] drm_test_framebuffer_free [19:41:03] [PASSED] drm_test_framebuffer_init [19:41:03] [PASSED] drm_test_framebuffer_init_bad_format [19:41:03] [PASSED] drm_test_framebuffer_init_dev_mismatch [19:41:03] [PASSED] drm_test_framebuffer_lookup [19:41:03] [PASSED] drm_test_framebuffer_lookup_inexistent [19:41:03] [PASSED] drm_test_framebuffer_modifiers_not_supported [19:41:03] ================= [PASSED] drm_framebuffer ================= [19:41:03] ================ drm_gem_shmem (8 subtests) ================ [19:41:03] [PASSED] drm_gem_shmem_test_obj_create [19:41:03] [PASSED] drm_gem_shmem_test_obj_create_private [19:41:03] [PASSED] drm_gem_shmem_test_pin_pages [19:41:03] [PASSED] drm_gem_shmem_test_vmap [19:41:03] [PASSED] drm_gem_shmem_test_get_sg_table [19:41:03] [PASSED] drm_gem_shmem_test_get_pages_sgt [19:41:03] [PASSED] drm_gem_shmem_test_madvise [19:41:03] [PASSED] drm_gem_shmem_test_purge [19:41:03] ================== [PASSED] drm_gem_shmem ================== [19:41:03] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [19:41:03] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [19:41:03] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [19:41:03] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [19:41:03] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [19:41:03] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [19:41:03] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [19:41:03] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [19:41:03] [PASSED] Automatic [19:41:03] [PASSED] Full [19:41:03] [PASSED] Limited 16:235 [19:41:03] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [19:41:03] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [19:41:03] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [19:41:03] [PASSED] drm_test_check_disable_connector [19:41:03] [PASSED] drm_test_check_hdmi_funcs_reject_rate [19:41:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [19:41:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [19:41:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [19:41:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [19:41:03] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [19:41:03] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [19:41:03] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [19:41:03] [PASSED] drm_test_check_output_bpc_dvi [19:41:03] [PASSED] drm_test_check_output_bpc_format_vic_1 [19:41:03] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [19:41:03] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [19:41:03] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [19:41:03] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [19:41:03] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [19:41:03] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [19:41:03] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [19:41:03] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [19:41:03] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [19:41:03] [PASSED] drm_test_check_broadcast_rgb_value [19:41:03] [PASSED] drm_test_check_bpc_8_value [19:41:03] [PASSED] drm_test_check_bpc_10_value [19:41:03] [PASSED] drm_test_check_bpc_12_value [19:41:03] [PASSED] drm_test_check_format_value [19:41:03] [PASSED] drm_test_check_tmds_char_value [19:41:03] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [19:41:03] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [19:41:03] [PASSED] drm_test_check_mode_valid [19:41:03] [PASSED] drm_test_check_mode_valid_reject [19:41:03] [PASSED] drm_test_check_mode_valid_reject_rate [19:41:03] [PASSED] drm_test_check_mode_valid_reject_max_clock [19:41:03] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [19:41:03] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) = [19:41:03] [PASSED] drm_test_check_infoframes [19:41:03] [PASSED] drm_test_check_reject_avi_infoframe [19:41:03] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8 [19:41:03] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10 [19:41:03] [PASSED] drm_test_check_reject_audio_infoframe [19:41:03] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes === [19:41:03] ================= drm_managed (2 subtests) ================= [19:41:03] [PASSED] drm_test_managed_release_action [19:41:03] [PASSED] drm_test_managed_run_action [19:41:03] =================== [PASSED] drm_managed =================== [19:41:03] =================== drm_mm (6 subtests) ==================== [19:41:03] [PASSED] drm_test_mm_init [19:41:03] [PASSED] drm_test_mm_debug [19:41:03] [PASSED] drm_test_mm_align32 [19:41:03] [PASSED] drm_test_mm_align64 [19:41:03] [PASSED] drm_test_mm_lowest [19:41:03] [PASSED] drm_test_mm_highest [19:41:03] ===================== [PASSED] drm_mm ====================== [19:41:03] ============= drm_modes_analog_tv (5 subtests) ============= [19:41:03] [PASSED] drm_test_modes_analog_tv_mono_576i [19:41:03] [PASSED] drm_test_modes_analog_tv_ntsc_480i [19:41:03] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [19:41:03] [PASSED] drm_test_modes_analog_tv_pal_576i [19:41:03] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [19:41:03] =============== [PASSED] drm_modes_analog_tv =============== [19:41:03] ============== drm_plane_helper (2 subtests) =============== [19:41:03] =============== drm_test_check_plane_state ================ [19:41:03] [PASSED] clipping_simple [19:41:03] [PASSED] clipping_rotate_reflect [19:41:03] [PASSED] positioning_simple [19:41:03] [PASSED] upscaling [19:41:03] [PASSED] downscaling [19:41:03] [PASSED] rounding1 [19:41:03] [PASSED] rounding2 [19:41:03] [PASSED] rounding3 [19:41:03] [PASSED] rounding4 [19:41:03] =========== [PASSED] drm_test_check_plane_state ============ [19:41:03] =========== drm_test_check_invalid_plane_state ============ [19:41:03] [PASSED] positioning_invalid [19:41:03] [PASSED] upscaling_invalid [19:41:03] [PASSED] downscaling_invalid [19:41:03] ======= [PASSED] drm_test_check_invalid_plane_state ======== [19:41:03] ================ [PASSED] drm_plane_helper ================= [19:41:03] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [19:41:03] ====== drm_test_connector_helper_tv_get_modes_check ======= [19:41:03] [PASSED] None [19:41:03] [PASSED] PAL [19:41:03] [PASSED] NTSC [19:41:03] [PASSED] Both, NTSC Default [19:41:03] [PASSED] Both, PAL Default [19:41:03] [PASSED] Both, NTSC Default, with PAL on command-line [19:41:03] [PASSED] Both, PAL Default, with NTSC on command-line [19:41:03] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [19:41:03] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [19:41:03] ================== drm_rect (9 subtests) =================== [19:41:03] [PASSED] drm_test_rect_clip_scaled_div_by_zero [19:41:03] [PASSED] drm_test_rect_clip_scaled_not_clipped [19:41:03] [PASSED] drm_test_rect_clip_scaled_clipped [19:41:03] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [19:41:03] ================= drm_test_rect_intersect ================= [19:41:03] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [19:41:03] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [19:41:03] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [19:41:03] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [19:41:03] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [19:41:03] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [19:41:03] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [19:41:03] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [19:41:03] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [19:41:03] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [19:41:03] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [19:41:03] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [19:41:03] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [19:41:03] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [19:41:03] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [19:41:03] ============= [PASSED] drm_test_rect_intersect ============= [19:41:03] ================ drm_test_rect_calc_hscale ================ [19:41:03] [PASSED] normal use [19:41:03] [PASSED] out of max range [19:41:03] [PASSED] out of min range [19:41:03] [PASSED] zero dst [19:41:03] [PASSED] negative src [19:41:03] [PASSED] negative dst [19:41:03] ============ [PASSED] drm_test_rect_calc_hscale ============ [19:41:03] ================ drm_test_rect_calc_vscale ================ [19:41:03] [PASSED] normal use [19:41:03] [PASSED] out of max range [19:41:03] [PASSED] out of min range [19:41:03] [PASSED] zero dst [19:41:03] [PASSED] negative src [19:41:03] [PASSED] negative dst [19:41:03] ============ [PASSED] drm_test_rect_calc_vscale ============ [19:41:03] ================== drm_test_rect_rotate =================== [19:41:03] [PASSED] reflect-x [19:41:03] [PASSED] reflect-y [19:41:03] [PASSED] rotate-0 [19:41:03] [PASSED] rotate-90 [19:41:03] [PASSED] rotate-180 [19:41:03] [PASSED] rotate-270 [19:41:03] ============== [PASSED] drm_test_rect_rotate =============== [19:41:03] ================ drm_test_rect_rotate_inv ================= [19:41:03] [PASSED] reflect-x [19:41:03] [PASSED] reflect-y [19:41:03] [PASSED] rotate-0 [19:41:03] [PASSED] rotate-90 [19:41:03] [PASSED] rotate-180 [19:41:03] [PASSED] rotate-270 [19:41:03] ============ [PASSED] drm_test_rect_rotate_inv ============= [19:41:03] ==================== [PASSED] drm_rect ===================== [19:41:03] ============ drm_sysfb_modeset_test (1 subtest) ============ [19:41:03] ============ drm_test_sysfb_build_fourcc_list ============= [19:41:03] [PASSED] no native formats [19:41:03] [PASSED] XRGB8888 as native format [19:41:03] [PASSED] remove duplicates [19:41:03] [PASSED] convert alpha formats [19:41:03] [PASSED] random formats [19:41:03] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [19:41:03] ============= [PASSED] drm_sysfb_modeset_test ============== [19:41:03] ================== drm_fixp (2 subtests) =================== [19:41:03] [PASSED] drm_test_int2fixp [19:41:03] [PASSED] drm_test_sm2fixp [19:41:03] ==================== [PASSED] drm_fixp ===================== [19:41:03] ============================================================ [19:41:03] Testing complete. Ran 621 tests: passed: 621 [19:41:03] Elapsed time: 25.914s total, 1.775s configuring, 23.972s building, 0.134s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [19:41:03] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [19:41:05] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [19:41:14] Starting KUnit Kernel (1/1)... [19:41:14] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [19:41:15] ================= ttm_device (5 subtests) ================== [19:41:15] [PASSED] ttm_device_init_basic [19:41:15] [PASSED] ttm_device_init_multiple [19:41:15] [PASSED] ttm_device_fini_basic [19:41:15] [PASSED] ttm_device_init_no_vma_man [19:41:15] ================== ttm_device_init_pools ================== [19:41:15] [PASSED] No DMA allocations, no DMA32 required [19:41:15] [PASSED] DMA allocations, DMA32 required [19:41:15] [PASSED] No DMA allocations, DMA32 required [19:41:15] [PASSED] DMA allocations, no DMA32 required [19:41:15] ============== [PASSED] ttm_device_init_pools ============== [19:41:15] =================== [PASSED] ttm_device ==================== [19:41:15] ================== ttm_pool (8 subtests) =================== [19:41:15] ================== ttm_pool_alloc_basic =================== [19:41:15] [PASSED] One page [19:41:15] [PASSED] More than one page [19:41:15] [PASSED] Above the allocation limit [19:41:15] [PASSED] One page, with coherent DMA mappings enabled [19:41:15] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [19:41:15] ============== [PASSED] ttm_pool_alloc_basic =============== [19:41:15] ============== ttm_pool_alloc_basic_dma_addr ============== [19:41:15] [PASSED] One page [19:41:15] [PASSED] More than one page [19:41:15] [PASSED] Above the allocation limit [19:41:15] [PASSED] One page, with coherent DMA mappings enabled [19:41:15] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [19:41:15] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [19:41:15] [PASSED] ttm_pool_alloc_order_caching_match [19:41:15] [PASSED] ttm_pool_alloc_caching_mismatch [19:41:15] [PASSED] ttm_pool_alloc_order_mismatch [19:41:15] [PASSED] ttm_pool_free_dma_alloc [19:41:15] [PASSED] ttm_pool_free_no_dma_alloc [19:41:15] [PASSED] ttm_pool_fini_basic [19:41:15] ==================== [PASSED] ttm_pool ===================== [19:41:15] ================ ttm_resource (8 subtests) ================= [19:41:15] ================= ttm_resource_init_basic ================= [19:41:15] [PASSED] Init resource in TTM_PL_SYSTEM [19:41:15] [PASSED] Init resource in TTM_PL_VRAM [19:41:15] [PASSED] Init resource in a private placement [19:41:15] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [19:41:15] ============= [PASSED] ttm_resource_init_basic ============= [19:41:15] [PASSED] ttm_resource_init_pinned [19:41:15] [PASSED] ttm_resource_fini_basic [19:41:15] [PASSED] ttm_resource_manager_init_basic [19:41:15] [PASSED] ttm_resource_manager_usage_basic [19:41:15] [PASSED] ttm_resource_manager_set_used_basic [19:41:15] [PASSED] ttm_sys_man_alloc_basic [19:41:15] [PASSED] ttm_sys_man_free_basic [19:41:15] ================== [PASSED] ttm_resource =================== [19:41:15] =================== ttm_tt (15 subtests) =================== [19:41:15] ==================== ttm_tt_init_basic ==================== [19:41:15] [PASSED] Page-aligned size [19:41:15] [PASSED] Extra pages requested [19:41:15] ================ [PASSED] ttm_tt_init_basic ================ [19:41:15] [PASSED] ttm_tt_init_misaligned [19:41:15] [PASSED] ttm_tt_fini_basic [19:41:15] [PASSED] ttm_tt_fini_sg [19:41:15] [PASSED] ttm_tt_fini_shmem [19:41:15] [PASSED] ttm_tt_create_basic [19:41:15] [PASSED] ttm_tt_create_invalid_bo_type [19:41:15] [PASSED] ttm_tt_create_ttm_exists [19:41:15] [PASSED] ttm_tt_create_failed [19:41:15] [PASSED] ttm_tt_destroy_basic [19:41:15] [PASSED] ttm_tt_populate_null_ttm [19:41:15] [PASSED] ttm_tt_populate_populated_ttm [19:41:15] [PASSED] ttm_tt_unpopulate_basic [19:41:15] [PASSED] ttm_tt_unpopulate_empty_ttm [19:41:15] [PASSED] ttm_tt_swapin_basic [19:41:15] ===================== [PASSED] ttm_tt ====================== [19:41:15] =================== ttm_bo (14 subtests) =================== [19:41:15] =========== ttm_bo_reserve_optimistic_no_ticket =========== [19:41:15] [PASSED] Cannot be interrupted and sleeps [19:41:15] [PASSED] Cannot be interrupted, locks straight away [19:41:15] [PASSED] Can be interrupted, sleeps [19:41:15] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [19:41:15] [PASSED] ttm_bo_reserve_locked_no_sleep [19:41:15] [PASSED] ttm_bo_reserve_no_wait_ticket [19:41:15] [PASSED] ttm_bo_reserve_double_resv [19:41:15] [PASSED] ttm_bo_reserve_interrupted [19:41:15] [PASSED] ttm_bo_reserve_deadlock [19:41:15] [PASSED] ttm_bo_unreserve_basic [19:41:15] [PASSED] ttm_bo_unreserve_pinned [19:41:15] [PASSED] ttm_bo_unreserve_bulk [19:41:15] [PASSED] ttm_bo_fini_basic [19:41:15] [PASSED] ttm_bo_fini_shared_resv [19:41:15] [PASSED] ttm_bo_pin_basic [19:41:15] [PASSED] ttm_bo_pin_unpin_resource [19:41:15] [PASSED] ttm_bo_multiple_pin_one_unpin [19:41:15] ===================== [PASSED] ttm_bo ====================== [19:41:15] ============== ttm_bo_validate (22 subtests) =============== [19:41:15] ============== ttm_bo_init_reserved_sys_man =============== [19:41:15] [PASSED] Buffer object for userspace [19:41:15] [PASSED] Kernel buffer object [19:41:15] [PASSED] Shared buffer object [19:41:15] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [19:41:15] ============== ttm_bo_init_reserved_mock_man ============== [19:41:15] [PASSED] Buffer object for userspace [19:41:15] [PASSED] Kernel buffer object [19:41:15] [PASSED] Shared buffer object [19:41:15] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [19:41:15] [PASSED] ttm_bo_init_reserved_resv [19:41:15] ================== ttm_bo_validate_basic ================== [19:41:15] [PASSED] Buffer object for userspace [19:41:15] [PASSED] Kernel buffer object [19:41:15] [PASSED] Shared buffer object [19:41:15] ============== [PASSED] ttm_bo_validate_basic ============== [19:41:15] [PASSED] ttm_bo_validate_invalid_placement [19:41:15] ============= ttm_bo_validate_same_placement ============== [19:41:15] [PASSED] System manager [19:41:15] [PASSED] VRAM manager [19:41:15] ========= [PASSED] ttm_bo_validate_same_placement ========== [19:41:15] [PASSED] ttm_bo_validate_failed_alloc [19:41:15] [PASSED] ttm_bo_validate_pinned [19:41:15] [PASSED] ttm_bo_validate_busy_placement [19:41:15] ================ ttm_bo_validate_multihop ================= [19:41:15] [PASSED] Buffer object for userspace [19:41:15] [PASSED] Kernel buffer object [19:41:15] [PASSED] Shared buffer object [19:41:15] ============ [PASSED] ttm_bo_validate_multihop ============= [19:41:15] ========== ttm_bo_validate_no_placement_signaled ========== [19:41:15] [PASSED] Buffer object in system domain, no page vector [19:41:15] [PASSED] Buffer object in system domain with an existing page vector [19:41:15] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [19:41:15] ======== ttm_bo_validate_no_placement_not_signaled ======== [19:41:15] [PASSED] Buffer object for userspace [19:41:15] [PASSED] Kernel buffer object [19:41:15] [PASSED] Shared buffer object [19:41:15] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [19:41:15] [PASSED] ttm_bo_validate_move_fence_signaled [19:41:15] ========= ttm_bo_validate_move_fence_not_signaled ========= [19:41:15] [PASSED] Waits for GPU [19:41:15] [PASSED] Tries to lock straight away [19:41:15] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [19:41:15] [PASSED] ttm_bo_validate_swapout [19:41:15] [PASSED] ttm_bo_validate_happy_evict [19:41:15] [PASSED] ttm_bo_validate_all_pinned_evict [19:41:15] [PASSED] ttm_bo_validate_allowed_only_evict [19:41:15] [PASSED] ttm_bo_validate_deleted_evict [19:41:15] [PASSED] ttm_bo_validate_busy_domain_evict [19:41:15] [PASSED] ttm_bo_validate_evict_gutting [19:41:15] [PASSED] ttm_bo_validate_recrusive_evict [19:41:15] ================= [PASSED] ttm_bo_validate ================= [19:41:15] ============================================================ [19:41:15] Testing complete. Ran 102 tests: passed: 102 [19:41:15] Elapsed time: 11.369s total, 1.694s configuring, 9.460s building, 0.182s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 14+ messages in thread
* ✓ Xe.CI.BAT: success for drm/xe/rtp: WA table context testing (rev2) 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti ` (5 preceding siblings ...) 2026-05-19 19:41 ` ✓ CI.KUnit: success " Patchwork @ 2026-05-19 20:53 ` Patchwork 2026-05-20 9:06 ` ✗ Xe.CI.FULL: failure " Patchwork 7 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2026-05-19 20:53 UTC (permalink / raw) To: Violet Monti; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 866 bytes --] == Series Details == Series: drm/xe/rtp: WA table context testing (rev2) URL : https://patchwork.freedesktop.org/series/166549/ State : success == Summary == CI Bug Log - changes from xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8_BAT -> xe-pw-166549v2_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (13 -> 13) ------------------------------ No changes in participating hosts Changes ------- No changes found Build changes ------------- * Linux: xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8 -> xe-pw-166549v2 IGT_8921: 8921 xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8: d6f1da57da786bff18677325ed3672fd15f1f5f8 xe-pw-166549v2: 166549v2 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/index.html [-- Attachment #2: Type: text/html, Size: 1414 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* ✗ Xe.CI.FULL: failure for drm/xe/rtp: WA table context testing (rev2) 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti ` (6 preceding siblings ...) 2026-05-19 20:53 ` ✓ Xe.CI.BAT: " Patchwork @ 2026-05-20 9:06 ` Patchwork 7 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2026-05-20 9:06 UTC (permalink / raw) To: Violet Monti; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 34712 bytes --] == Series Details == Series: drm/xe/rtp: WA table context testing (rev2) URL : https://patchwork.freedesktop.org/series/166549/ State : failure == Summary == CI Bug Log - changes from xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8_FULL -> xe-pw-166549v2_FULL ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with xe-pw-166549v2_FULL absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in xe-pw-166549v2_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 xe-pw-166549v2_FULL: ### IGT changes ### #### Possible regressions #### * igt@device_reset@unbind-reset-rebind: - shard-bmg: [PASS][1] -> [SKIP][2] [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@device_reset@unbind-reset-rebind.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@device_reset@unbind-reset-rebind.html * igt@kms_async_flips@test-cursor@pipe-a-hdmi-a-3: - shard-bmg: [PASS][3] -> [ABORT][4] [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-8/igt@kms_async_flips@test-cursor@pipe-a-hdmi-a-3.html [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_async_flips@test-cursor@pipe-a-hdmi-a-3.html Known issues ------------ Here are the changes found in xe-pw-166549v2_FULL that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_async_flips@test-cursor: - shard-bmg: [PASS][5] -> [ABORT][6] ([Intel XE#7774]) [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-8/igt@kms_async_flips@test-cursor.html [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_async_flips@test-cursor.html * igt@kms_async_flips@test-cursor@pipe-a-dp-2: - shard-bmg: [PASS][7] -> [DMESG-WARN][8] ([Intel XE#7774]) [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-8/igt@kms_async_flips@test-cursor@pipe-a-dp-2.html [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_async_flips@test-cursor@pipe-a-dp-2.html * igt@kms_big_fb@4-tiled-64bpp-rotate-90: - shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2327]) [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html * igt@kms_big_fb@yf-tiled-16bpp-rotate-270: - shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#1124]) +1 other test skip [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html * igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p: - shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#7679]) [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p.html * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc: - shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2887]) +1 other test skip [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html * igt@kms_chamelium_color@ctm-green-to-red: - shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2325] / [Intel XE#7358]) [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_chamelium_color@ctm-green-to-red.html * igt@kms_chamelium_frames@hdmi-cmp-planar-formats: - shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2252]) [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html * igt@kms_content_protection@dp-mst-lic-type-0: - shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#2390] / [Intel XE#6974]) [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_content_protection@dp-mst-lic-type-0.html * igt@kms_cursor_crc@cursor-onscreen-512x170: - shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2321] / [Intel XE#7355]) [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_cursor_crc@cursor-onscreen-512x170.html * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions: - shard-bmg: [PASS][17] -> [SKIP][18] ([Intel XE#6703] / [Intel XE#7935]) [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html * igt@kms_flip@2x-nonexisting-fb: - shard-bmg: [PASS][19] -> [SKIP][20] ([Intel XE#6703]) +148 other tests skip [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_flip@2x-nonexisting-fb.html [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_flip@2x-nonexisting-fb.html * igt@kms_flip@flip-vs-panning-interruptible: - shard-bmg: [PASS][21] -> [DMESG-FAIL][22] ([Intel XE#5208]) [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_flip@flip-vs-panning-interruptible.html [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_flip@flip-vs-panning-interruptible.html * igt@kms_flip@flip-vs-panning-interruptible@c-hdmi-a3: - shard-bmg: [PASS][23] -> [DMESG-FAIL][24] ([Intel XE#7774]) [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_flip@flip-vs-panning-interruptible@c-hdmi-a3.html [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_flip@flip-vs-panning-interruptible@c-hdmi-a3.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt: - shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#4141]) +2 other tests skip [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-blt: - shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#2311]) +10 other tests skip [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt: - shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-move: - shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#2313]) +10 other tests skip [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-move.html * igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-mmap-wc: - shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#7061]) [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-mmap-wc.html * igt@kms_hdr@static-swap@pipe-a-hdmi-a-3-xrgb2101010: - shard-bmg: [PASS][30] -> [SKIP][31] ([Intel XE#7915]) +1 other test skip [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-9/igt@kms_hdr@static-swap@pipe-a-hdmi-a-3-xrgb2101010.html [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-7/igt@kms_hdr@static-swap@pipe-a-hdmi-a-3-xrgb2101010.html * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-a-plane-5: - shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#7130]) +1 other test skip [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-a-plane-5.html * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier: - shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#7283]) [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb: - shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#1489]) +1 other test skip [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html * igt@kms_psr@psr-sprite-render: - shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_psr@psr-sprite-render.html * igt@xe_eudebug@basic-vm-bind-vm-destroy-discovery: - shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#7636]) [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_eudebug@basic-vm-bind-vm-destroy-discovery.html * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate-race: - shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate-race.html * igt@xe_exec_compute_mode@twice-basic: - shard-bmg: [PASS][38] -> [SKIP][39] ([Intel XE#6557] / [Intel XE#6703]) +1 other test skip [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_exec_compute_mode@twice-basic.html [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_exec_compute_mode@twice-basic.html * igt@xe_exec_fault_mode@once-multi-queue: - shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#7136]) [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_exec_fault_mode@once-multi-queue.html * igt@xe_exec_multi_queue@max-queues-basic: - shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#6874]) +6 other tests skip [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_exec_multi_queue@max-queues-basic.html * igt@xe_exec_reset@cm-multi-queue-cat-error: - shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#7866]) +1 other test skip [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_exec_reset@cm-multi-queue-cat-error.html * igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr: - shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#7138]) +1 other test skip [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr.html * igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch: - shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#6964]) [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch.html * igt@xe_page_reclaim@pat-index-xd: - shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#7793]) [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_page_reclaim@pat-index-xd.html * igt@xe_query@multigpu-query-uc-fw-version-guc: - shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#944]) [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@xe_query@multigpu-query-uc-fw-version-guc.html #### Possible fixes #### * igt@kms_async_flips@alternate-sync-async-flip: - shard-lnl: [FAIL][47] ([Intel XE#3718] / [Intel XE#7265]) -> [PASS][48] [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-lnl-7/igt@kms_async_flips@alternate-sync-async-flip.html [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-lnl-4/igt@kms_async_flips@alternate-sync-async-flip.html * igt@kms_async_flips@alternate-sync-async-flip@pipe-c-edp-1: - shard-lnl: [FAIL][49] ([Intel XE#7265]) -> [PASS][50] [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-lnl-7/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-edp-1.html [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-lnl-4/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-edp-1.html * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs: - shard-bmg: [INCOMPLETE][51] ([Intel XE#7084]) -> [PASS][52] +1 other test pass [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-7/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html * igt@kms_cursor_edge_walk@256x256-top-edge: - shard-bmg: [FAIL][53] ([Intel XE#6841]) -> [PASS][54] +1 other test pass [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-2/igt@kms_cursor_edge_walk@256x256-top-edge.html [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-8/igt@kms_cursor_edge_walk@256x256-top-edge.html * igt@kms_flip@flip-vs-expired-vblank@a-edp1: - shard-lnl: [FAIL][55] ([Intel XE#301]) -> [PASS][56] +3 other tests pass [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html * igt@kms_hdr@invalid-hdr: - shard-bmg: [SKIP][57] ([Intel XE#1503]) -> [PASS][58] [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-2/igt@kms_hdr@invalid-hdr.html [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-3/igt@kms_hdr@invalid-hdr.html * igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010: - shard-bmg: [SKIP][59] ([Intel XE#7922]) -> [PASS][60] +1 other test pass [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-2/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-3/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html * igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f: - shard-bmg: [SKIP][61] ([Intel XE#7915]) -> [PASS][62] +5 other tests pass [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-8/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html * igt@xe_evict@evict-beng-mixed-many-threads-small: - shard-bmg: [INCOMPLETE][63] ([Intel XE#6321]) -> [PASS][64] [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-9/igt@xe_evict@evict-beng-mixed-many-threads-small.html [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-7/igt@xe_evict@evict-beng-mixed-many-threads-small.html * igt@xe_exec_system_allocator@fault-benchmark: - shard-bmg: [FAIL][65] -> [PASS][66] [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-10/igt@xe_exec_system_allocator@fault-benchmark.html [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-10/igt@xe_exec_system_allocator@fault-benchmark.html #### Warnings #### * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip: - shard-bmg: [SKIP][67] ([Intel XE#7059] / [Intel XE#7085]) -> [SKIP][68] ([Intel XE#6703]) [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html * igt@kms_big_fb@y-tiled-16bpp-rotate-180: - shard-bmg: [SKIP][69] ([Intel XE#1124]) -> [SKIP][70] ([Intel XE#6703]) +2 other tests skip [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html * igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p: - shard-bmg: [SKIP][71] ([Intel XE#7679]) -> [SKIP][72] ([Intel XE#6703]) [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p.html [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p.html * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs: - shard-bmg: [SKIP][73] ([Intel XE#2887]) -> [SKIP][74] ([Intel XE#6703]) +2 other tests skip [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs.html [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs.html * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc: - shard-bmg: [SKIP][75] ([Intel XE#3432]) -> [SKIP][76] ([Intel XE#6703]) [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc.html [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc.html * igt@kms_chamelium_hpd@hdmi-hpd-after-suspend: - shard-bmg: [SKIP][77] ([Intel XE#2252]) -> [SKIP][78] ([Intel XE#6703]) [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html * igt@kms_content_protection@lic-type-1: - shard-bmg: [SKIP][79] ([Intel XE#7642]) -> [SKIP][80] ([Intel XE#6703]) [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_content_protection@lic-type-1.html [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_content_protection@lic-type-1.html * igt@kms_cursor_crc@cursor-sliding-512x170: - shard-bmg: [SKIP][81] ([Intel XE#2321] / [Intel XE#7355]) -> [SKIP][82] ([Intel XE#6703]) [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_cursor_crc@cursor-sliding-512x170.html [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_cursor_crc@cursor-sliding-512x170.html * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions: - shard-lnl: [SKIP][83] ([Intel XE#309] / [Intel XE#7343]) -> [SKIP][84] ([Intel XE#309] / [Intel XE#7343] / [Intel XE#7935]) [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-lnl-3/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling: - shard-bmg: [SKIP][85] ([Intel XE#7178] / [Intel XE#7351]) -> [SKIP][86] ([Intel XE#6703]) [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt: - shard-bmg: [SKIP][87] ([Intel XE#4141]) -> [SKIP][88] ([Intel XE#6703]) +1 other test skip [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt.html [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt.html * igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-shrfb-plflip-blt: - shard-bmg: [SKIP][89] ([Intel XE#2311]) -> [SKIP][90] ([Intel XE#6703]) +15 other tests skip [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-shrfb-plflip-blt.html [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-shrfb-plflip-blt.html * igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-mmap-wc: - shard-bmg: [SKIP][91] ([Intel XE#7061]) -> [SKIP][92] ([Intel XE#6703]) [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-mmap-wc.html [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-render: - shard-bmg: [SKIP][93] ([Intel XE#2313]) -> [SKIP][94] ([Intel XE#6703]) +12 other tests skip [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-render.html [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-render.html * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier: - shard-bmg: [SKIP][95] ([Intel XE#7283]) -> [SKIP][96] ([Intel XE#6703]) [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html * igt@kms_plane_multiple@tiling-y: - shard-bmg: [SKIP][97] ([Intel XE#5020] / [Intel XE#7348]) -> [SKIP][98] ([Intel XE#6703]) [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_plane_multiple@tiling-y.html [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_plane_multiple@tiling-y.html * igt@kms_pm_dc@dc5-retention-flops: - shard-bmg: [SKIP][99] ([Intel XE#3309] / [Intel XE#7368]) -> [SKIP][100] ([Intel XE#6703]) [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_pm_dc@dc5-retention-flops.html [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_pm_dc@dc5-retention-flops.html * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf: - shard-bmg: [SKIP][101] ([Intel XE#1489]) -> [SKIP][102] ([Intel XE#6703]) +1 other test skip [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html * igt@kms_psr@pr-suspend: - shard-bmg: [SKIP][103] ([Intel XE#2234] / [Intel XE#2850]) -> [SKIP][104] ([Intel XE#6703]) +1 other test skip [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_psr@pr-suspend.html [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_psr@pr-suspend.html * igt@kms_tiled_display@basic-test-pattern-with-chamelium: - shard-bmg: [SKIP][105] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][106] ([Intel XE#6703]) [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html * igt@xe_eudebug@attach-debug-metadata: - shard-bmg: [SKIP][107] ([Intel XE#7636]) -> [SKIP][108] ([Intel XE#6703]) +2 other tests skip [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_eudebug@attach-debug-metadata.html [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_eudebug@attach-debug-metadata.html * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate-race: - shard-bmg: [SKIP][109] ([Intel XE#2322] / [Intel XE#7372]) -> [SKIP][110] ([Intel XE#6703]) [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate-race.html [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate-race.html * igt@xe_exec_fault_mode@many-execqueues-multi-queue-rebind-prefetch: - shard-bmg: [SKIP][111] ([Intel XE#7136]) -> [SKIP][112] ([Intel XE#6703]) +2 other tests skip [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_exec_fault_mode@many-execqueues-multi-queue-rebind-prefetch.html [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_exec_fault_mode@many-execqueues-multi-queue-rebind-prefetch.html * igt@xe_exec_multi_queue@few-execs-preempt-mode-priority: - shard-bmg: [SKIP][113] ([Intel XE#6874]) -> [SKIP][114] ([Intel XE#6703]) +6 other tests skip [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_exec_multi_queue@few-execs-preempt-mode-priority.html [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_exec_multi_queue@few-execs-preempt-mode-priority.html * igt@xe_exec_reset@multi-queue-cat-error-on-secondary: - shard-bmg: [SKIP][115] ([Intel XE#7866]) -> [SKIP][116] ([Intel XE#6703]) [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_exec_reset@multi-queue-cat-error-on-secondary.html [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_exec_reset@multi-queue-cat-error-on-secondary.html * igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-rebind: - shard-bmg: [SKIP][117] ([Intel XE#7138]) -> [SKIP][118] ([Intel XE#6703]) +2 other tests skip [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-rebind.html [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-rebind.html * igt@xe_pm@d3cold-basic-exec: - shard-bmg: [SKIP][119] ([Intel XE#2284] / [Intel XE#7370]) -> [SKIP][120] ([Intel XE#6703]) [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_pm@d3cold-basic-exec.html [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_pm@d3cold-basic-exec.html * igt@xe_query@multigpu-query-invalid-extension: - shard-bmg: [SKIP][121] ([Intel XE#944]) -> [SKIP][122] ([Intel XE#6703]) [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8/shard-bmg-1/igt@xe_query@multigpu-query-invalid-extension.html [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/shard-bmg-2/igt@xe_query@multigpu-query-invalid-extension.html [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124 [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489 [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503 [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234 [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#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#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327 [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390 [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426 [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#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301 [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309 [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309 [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432 [Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718 [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141 [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020 [Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208 [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848 [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321 [Intel XE#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557 [Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703 [Intel XE#6841]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6841 [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874 [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#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059 [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061 [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084 [Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085 [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#7265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7265 [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283 [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343 [Intel XE#7348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7348 [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#7368]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7368 [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#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636 [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642 [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679 [Intel XE#7774]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7774 [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793 [Intel XE#7866]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7866 [Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915 [Intel XE#7922]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7922 [Intel XE#7935]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7935 [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944 Build changes ------------- * Linux: xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8 -> xe-pw-166549v2 IGT_8921: 8921 xe-5098-d6f1da57da786bff18677325ed3672fd15f1f5f8: d6f1da57da786bff18677325ed3672fd15f1f5f8 xe-pw-166549v2: 166549v2 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166549v2/index.html [-- Attachment #2: Type: text/html, Size: 41006 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-05-21 21:12 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-19 19:32 [PATCH v2 0/4] drm/xe/rtp: WA table context testing Violet Monti 2026-05-19 19:32 ` [PATCH v2 1/4] drm/xe/rtp: Add struct types for RTP tables Violet Monti 2026-05-19 19:32 ` [PATCH v2 2/4] drm/xe/rtp: Ensure gt_was doesn't evaluate rules with engine types Violet Monti 2026-05-21 20:12 ` Gustavo Sousa 2026-05-21 20:56 ` Violet Monti 2026-05-21 21:11 ` Gustavo Sousa 2026-05-19 19:32 ` [PATCH v2 3/4] drm/xe/rtp: Ensure oob_was does not evaluate engine type rules Violet Monti 2026-05-21 20:42 ` Gustavo Sousa 2026-05-19 19:32 ` [PATCH v2 4/4] drm/xe/rtp: Ensure device_oob_was only evaluates correct rules Violet Monti 2026-05-21 21:00 ` Gustavo Sousa 2026-05-19 19:40 ` ✗ CI.checkpatch: warning for drm/xe/rtp: WA table context testing (rev2) Patchwork 2026-05-19 19:41 ` ✓ CI.KUnit: success " Patchwork 2026-05-19 20:53 ` ✓ Xe.CI.BAT: " Patchwork 2026-05-20 9:06 ` ✗ Xe.CI.FULL: failure " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox