* [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing
@ 2024-11-17 18:43 Alan Previn
2024-11-17 18:44 ` [PATCH 1/1] drm/xe/guc/capture: " Alan Previn
` (8 more replies)
0 siblings, 9 replies; 12+ messages in thread
From: Alan Previn @ 2024-11-17 18:43 UTC (permalink / raw)
To: intel-xe
Cc: Alan Previn, dri-devel, Daniele Ceraolo Spurio, John Harrison,
Matthew Brost, Zhanjun Dong
The GuC-Error-Capture is currently reaching into xe_devcoredump
structure to store its own place-holder snaphot to workaround
the race between G2H-Error-Capture-Notification vs Drm-Scheduler
triggering GuC-Submission-exec-queue-timeout/kill.
Part of that race workaround design included GuC-Error-Capture taking
on some of the front-end functions for xe_hw_engine_snapshot
generation because of the orthogonal debugfs for raw dumps of engine
registers without any job association. We want this to also be handled,
even if indirectly, by GuC-Error-Capture since there is a lot to manage
when it comes to reading and printing the register lists.
However, logically speaking, GuC-Error-Capture node management,
despite being the majority of an engine-snapshot work, is still
a subset of xe_hw_engine_snapshot.
This series intends to re-design the plumbing for future
maintenence and scalability, rearranging the layering
back to what its should be (xe_devcoredump_snapshot owns
xe_hw_engine_snapshot owns xe_guc_capture_snapshot)..
Alan Previn (1):
drm/xe/guc/capture: Maintenence of devcoredump <-> GuC-Err-Capture
plumbing
drivers/gpu/drm/xe/xe_devcoredump.c | 3 -
drivers/gpu/drm/xe/xe_devcoredump_types.h | 6 -
drivers/gpu/drm/xe/xe_guc_capture.c | 397 ++++++++----------
drivers/gpu/drm/xe/xe_guc_capture.h | 10 +-
.../drm/xe/xe_guc_capture_snapshot_types.h | 68 +++
drivers/gpu/drm/xe/xe_guc_submit.c | 21 +-
drivers/gpu/drm/xe/xe_hw_engine.c | 117 ++++--
drivers/gpu/drm/xe/xe_hw_engine.h | 4 +-
drivers/gpu/drm/xe/xe_hw_engine_types.h | 13 +-
9 files changed, 353 insertions(+), 286 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h
base-commit: 2d4993e163401c81e138c6e0e6223752c2e90402
--
2.34.1
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH 1/1] drm/xe/guc/capture: Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn @ 2024-11-17 18:44 ` Alan Previn 2024-11-26 17:09 ` Dong, Zhanjun 2024-11-18 2:22 ` ✓ CI.Patch_applied: success for " Patchwork ` (7 subsequent siblings) 8 siblings, 1 reply; 12+ messages in thread From: Alan Previn @ 2024-11-17 18:44 UTC (permalink / raw) To: intel-xe Cc: Alan Previn, dri-devel, Daniele Ceraolo Spurio, John Harrison, Matthew Brost, Zhanjun Dong The order of the devcoredump event flow is: drm-scheduler -> guc-submission-execq-timed-out-job -> guc-submission-kill-job -> xe-devcoredump (once the work is confirmed to have been killed). As we are aware, the GuC-FW IRQ for error-capture delivery and extraction could have happenned before the start of guc-execq-timed-out-job or the middle of it (before or during the explicit kill) or not at all. Thus, today, the above flow takes a manual capture first before triggering the kill-job just in case we need it. The structure layering of devcoredump internals are: xe_devcoredump_snapshot -> xe_foo_snapshot (where foo can be any data dump associated to the job was killed). Foo includes the xe_hw_engine_snapshot. Since GuC-Error-Capture provides just the register dump of an engine, GuC-Err-Capture snapshots should be managed by the xe_hw_engine_snapshot. That isn't the case today. Furthermode, neither xe_devcoredump_snapshot nor xe_hw_engine_snapshot even exists at the start of guc-submission-execq-timed-out-job. Thus, the first manual capture node has no home. However, today, GuC-Error-Capture stores capture snapshots off the top-level xe_devcoredump_snapshot's matched_node. GuC-Error-Capture also had absorbed the function for xe_hw_engine_snapshot generation. NOTE: Existing code isn't broken because xe_devcoredump is not dynamically allocated and designed to hold a single event at a time (i.e. single engine dump). But it's not scalable for future improvement. Thus this patch: 1. Moves "matched_node" from xe_devcoredump_snapshot to xe_hw_engine_snapshot. 2. Relocates the functions for xe_hw_engine_snapshot generation and printing back to xe_hw_engine.c. However, split out the register dump printing so it stays within GuC-Error-Capture (so we don't need to maintain two sets of register lists). 3. Keep both the manual and firmware capture nodes within GuC-Error-Capture subsystem's linked list until xe_hw_engine_snapshot gets and puts them later. 4. Give xe_hw_engine_snapshot the control and ability to query GuC-Error-Capture for matching snapshots while choosing between manual vs firmware capture getting/putting node. 5. While at it, relocate (and rename) key structures, enums and function protos to xe_guc_capture_snapshot_types.h (as an inter-module header) for xe_hw_engine_snapshot to use. 6. Since xe_hw_engine_snapshot can also be called by via debugfs without a job, create a new function that does a manual capture of engine registers without any associated job. Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com> --- drivers/gpu/drm/xe/xe_devcoredump.c | 3 - drivers/gpu/drm/xe/xe_devcoredump_types.h | 6 - drivers/gpu/drm/xe/xe_guc_capture.c | 397 ++++++++---------- drivers/gpu/drm/xe/xe_guc_capture.h | 10 +- .../drm/xe/xe_guc_capture_snapshot_types.h | 68 +++ drivers/gpu/drm/xe/xe_guc_submit.c | 21 +- drivers/gpu/drm/xe/xe_hw_engine.c | 117 ++++-- drivers/gpu/drm/xe/xe_hw_engine.h | 4 +- drivers/gpu/drm/xe/xe_hw_engine_types.h | 13 +- 9 files changed, 353 insertions(+), 286 deletions(-) create mode 100644 drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c index 0e5edf14a241..b98d71e670ca 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump.c +++ b/drivers/gpu/drm/xe/xe_devcoredump.c @@ -144,9 +144,6 @@ static void xe_devcoredump_snapshot_free(struct xe_devcoredump_snapshot *ss) xe_guc_ct_snapshot_free(ss->guc.ct); ss->guc.ct = NULL; - xe_guc_capture_put_matched_nodes(&ss->gt->uc.guc); - ss->matched_node = NULL; - xe_guc_exec_queue_snapshot_free(ss->ge); ss->ge = NULL; diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h index be4d59ea9ac8..06ac75ce63dd 100644 --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h @@ -49,12 +49,6 @@ struct xe_devcoredump_snapshot { struct xe_hw_engine_snapshot *hwe[XE_NUM_HW_ENGINES]; /** @job: Snapshot of job state */ struct xe_sched_job_snapshot *job; - /** - * @matched_node: The matched capture node for timedout job - * this single-node tracker works because devcoredump will always only - * produce one hw-engine capture per devcoredump event - */ - struct __guc_capture_parsed_output *matched_node; /** @vm: Snapshot of VM state */ struct xe_vm_snapshot *vm; diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c index f87755af545f..691fc72a5c9e 100644 --- a/drivers/gpu/drm/xe/xe_guc_capture.c +++ b/drivers/gpu/drm/xe/xe_guc_capture.c @@ -26,6 +26,7 @@ #include "xe_guc_ads.h" #include "xe_guc_capture.h" #include "xe_guc_capture_types.h" +#include "xe_guc_capture_snapshot_types.h" #include "xe_guc_ct.h" #include "xe_guc_exec_queue_types.h" #include "xe_guc_log.h" @@ -53,40 +54,6 @@ struct __guc_capture_bufstate { u32 wr; }; -/* - * struct __guc_capture_parsed_output - extracted error capture node - * - * A single unit of extracted error-capture output data grouped together - * at an engine-instance level. We keep these nodes in a linked list. - * See cachelist and outlist below. - */ -struct __guc_capture_parsed_output { - /* - * A single set of 3 capture lists: a global-list - * an engine-class-list and an engine-instance list. - * outlist in __guc_capture_parsed_output will keep - * a linked list of these nodes that will eventually - * be detached from outlist and attached into to - * xe_codedump in response to a context reset - */ - struct list_head link; - bool is_partial; - u32 eng_class; - u32 eng_inst; - u32 guc_id; - u32 lrca; - u32 type; - bool locked; - enum xe_hw_engine_snapshot_source_id source; - struct gcap_reg_list_info { - u32 vfid; - u32 num_regs; - struct guc_mmio_reg *regs; - } reginfo[GUC_STATE_CAPTURE_TYPE_MAX]; -#define GCAP_PARSED_REGLIST_INDEX_GLOBAL BIT(GUC_STATE_CAPTURE_TYPE_GLOBAL) -#define GCAP_PARSED_REGLIST_INDEX_ENGCLASS BIT(GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS) -}; - /* * Define all device tables of GuC error capture register lists * NOTE: @@ -286,7 +253,7 @@ struct xe_guc_state_capture { static void guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, - struct __guc_capture_parsed_output *node); + struct xe_guc_capture_snapshot *node); static const struct __guc_mmio_reg_descr_group * guc_capture_get_device_reglist(struct xe_device *xe) @@ -840,7 +807,7 @@ static void check_guc_capture_size(struct xe_guc *guc) } static void -guc_capture_add_node_to_list(struct __guc_capture_parsed_output *node, +guc_capture_add_node_to_list(struct xe_guc_capture_snapshot *node, struct list_head *list) { list_add(&node->link, list); @@ -848,7 +815,7 @@ guc_capture_add_node_to_list(struct __guc_capture_parsed_output *node, static void guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc, - struct __guc_capture_parsed_output *node) + struct xe_guc_capture_snapshot *node) { guc_capture_remove_stale_matches_from_list(gc, node); guc_capture_add_node_to_list(node, &gc->outlist); @@ -856,17 +823,17 @@ guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc, static void guc_capture_add_node_to_cachelist(struct xe_guc_state_capture *gc, - struct __guc_capture_parsed_output *node) + struct xe_guc_capture_snapshot *node) { guc_capture_add_node_to_list(node, &gc->cachelist); } static void guc_capture_free_outlist_node(struct xe_guc_state_capture *gc, - struct __guc_capture_parsed_output *n) + struct xe_guc_capture_snapshot *n) { if (n) { - n->locked = 0; + n->locked = false; list_del(&n->link); /* put node back to cache list */ guc_capture_add_node_to_cachelist(gc, n); @@ -875,9 +842,9 @@ guc_capture_free_outlist_node(struct xe_guc_state_capture *gc, static void guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, - struct __guc_capture_parsed_output *node) + struct xe_guc_capture_snapshot *node) { - struct __guc_capture_parsed_output *n, *ntmp; + struct xe_guc_capture_snapshot *n, *ntmp; int guc_id = node->guc_id; list_for_each_entry_safe(n, ntmp, &gc->outlist, link) { @@ -887,7 +854,7 @@ guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, } static void -guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *node) +guc_capture_init_node(struct xe_guc *guc, struct xe_guc_capture_snapshot *node) { struct guc_mmio_reg *tmp[GUC_STATE_CAPTURE_TYPE_MAX]; int i; @@ -934,24 +901,31 @@ guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *no * This node is created from a pre-allocated list of blank nodes in * guc->capture->cachelist and populated with the error-capture * data from GuC and then it's added into guc->capture->outlist linked - * list. This list is used for matchup and printout by xe_devcoredump_read - * and xe_engine_snapshot_print, (when user invokes the devcoredump sysfs). + * list. This node (dumped-register-lists) will be requested later by + * xe_hwe_engine_snapshot creation. * - * GUC --> notify context reset: - * ----------------------------- + * DRM Scheduler job-timeout OR GuC-notify guc-id reset: + * ----------------------------------------------------- * --> guc_exec_queue_timedout_job - * L--> xe_devcoredump - * L--> devcoredump_snapshot - * --> xe_hw_engine_snapshot_capture - * --> xe_engine_manual_capture(For manual capture) + * L--> alloc D: xe_guc_capture_snapshot_store_manual_job + * (only if "alloc C" above didn't happen) + * L--> devcoredump_snapshot + * --> xe_engine_snapshot_capture_for_queue(q) .. + * --> xe_guc_capture_snapshot_get(q) + * use "alloc C" or else "alloc D" + * --> store in xe_hw_engine_snapshot->matched_node * - * User Sysfs / Debugfs - * -------------------- - * --> xe_devcoredump_read-> + * User Devcoredump Sysfs + * ---------------------- + * --> xe_devcoredump_read-> (user cats devcoredump) * L--> xxx_snapshot_print * L--> xe_engine_snapshot_print - * Print register lists values saved at - * guc->capture->outlist + * L --> xe_guc_capture_snapshot_print (for printing register + * lists values of xe_hw_engine_snapshot->matched_node) + * --> xe_devcoredump_free (user clears devcoredump) + * L--> xe_devcoredump_free -> xe_devcoredump_snapshot_free + * L--> xe_hw_engine_snapshot_free + * L--> xe_guc_capture_snapshot_put(matched_node) * */ @@ -1066,13 +1040,13 @@ guc_capture_log_get_register(struct xe_guc *guc, struct __guc_capture_bufstate * return 0; } -static struct __guc_capture_parsed_output * +static struct xe_guc_capture_snapshot * guc_capture_get_prealloc_node(struct xe_guc *guc) { - struct __guc_capture_parsed_output *found = NULL; + struct xe_guc_capture_snapshot *found = NULL; if (!list_empty(&guc->capture->cachelist)) { - struct __guc_capture_parsed_output *n, *ntmp; + struct xe_guc_capture_snapshot *n, *ntmp; /* get first avail node from the cache list */ list_for_each_entry_safe(n, ntmp, &guc->capture->cachelist, link) { @@ -1080,7 +1054,7 @@ guc_capture_get_prealloc_node(struct xe_guc *guc) break; } } else { - struct __guc_capture_parsed_output *n, *ntmp; + struct xe_guc_capture_snapshot *n, *ntmp; /* * traverse reversed and steal back the oldest node already @@ -1099,11 +1073,11 @@ guc_capture_get_prealloc_node(struct xe_guc *guc) return found; } -static struct __guc_capture_parsed_output * -guc_capture_clone_node(struct xe_guc *guc, struct __guc_capture_parsed_output *original, +static struct xe_guc_capture_snapshot * +guc_capture_clone_node(struct xe_guc *guc, struct xe_guc_capture_snapshot *original, u32 keep_reglist_mask) { - struct __guc_capture_parsed_output *new; + struct xe_guc_capture_snapshot *new; int i; new = guc_capture_get_prealloc_node(guc); @@ -1145,7 +1119,7 @@ guc_capture_extract_reglists(struct xe_guc *guc, struct __guc_capture_bufstate * struct xe_gt *gt = guc_to_gt(guc); struct guc_state_capture_group_header_t ghdr = {0}; struct guc_state_capture_header_t hdr = {0}; - struct __guc_capture_parsed_output *node = NULL; + struct xe_guc_capture_snapshot *node = NULL; struct guc_mmio_reg *regs = NULL; int i, numlists, numregs, ret = 0; enum guc_state_capture_type datatype; @@ -1438,11 +1412,11 @@ void xe_guc_capture_process(struct xe_guc *guc) __guc_capture_process_output(guc); } -static struct __guc_capture_parsed_output * +static struct xe_guc_capture_snapshot * guc_capture_alloc_one_node(struct xe_guc *guc) { struct drm_device *drm = guc_to_drm(guc); - struct __guc_capture_parsed_output *new; + struct xe_guc_capture_snapshot *new; int i; new = drmm_kzalloc(drm, sizeof(*new), GFP_KERNEL); @@ -1467,7 +1441,7 @@ guc_capture_alloc_one_node(struct xe_guc *guc) static void __guc_capture_create_prealloc_nodes(struct xe_guc *guc) { - struct __guc_capture_parsed_output *node = NULL; + struct xe_guc_capture_snapshot *node = NULL; int i; for (i = 0; i < PREALLOC_NODES_MAX_COUNT; ++i) { @@ -1564,35 +1538,18 @@ read_reg_to_node(struct xe_hw_engine *hwe, const struct __guc_mmio_reg_descr_gro } } -/** - * xe_engine_manual_capture - Take a manual engine snapshot from engine. - * @hwe: Xe HW Engine. - * @snapshot: The engine snapshot - * - * Take engine snapshot from engine read. - * - * Returns: None - */ -void -xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot) +static struct xe_guc_capture_snapshot * +guc_capture_get_manual_snapshot(struct xe_guc *guc, struct xe_hw_engine *hwe) { struct xe_gt *gt = hwe->gt; - struct xe_device *xe = gt_to_xe(gt); - struct xe_guc *guc = >->uc.guc; - struct xe_devcoredump *devcoredump = &xe->devcoredump; enum guc_capture_list_class_type capture_class; const struct __guc_mmio_reg_descr_group *list; - struct __guc_capture_parsed_output *new; + struct xe_guc_capture_snapshot *new; enum guc_state_capture_type type; - u16 guc_id = 0; - u32 lrca = 0; - - if (IS_SRIOV_VF(xe)) - return; new = guc_capture_get_prealloc_node(guc); if (!new) - return; + return NULL; capture_class = xe_engine_class_to_guc_capture_class(hwe->class); for (type = GUC_STATE_CAPTURE_TYPE_GLOBAL; type < GUC_STATE_CAPTURE_TYPE_MAX; type++) { @@ -1626,26 +1583,83 @@ xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot } } - if (devcoredump && devcoredump->captured) { - struct xe_guc_submit_exec_queue_snapshot *ge = devcoredump->snapshot.ge; + new->eng_class = xe_engine_class_to_guc_class(hwe->class); + new->eng_inst = hwe->instance; - if (ge) { - guc_id = ge->guc.id; - if (ge->lrc[0]) - lrca = ge->lrc[0]->context_desc; - } + return new; +} + +/** + * xe_guc_capture_snapshot_store_and_get_manual_hwe - Generate and get manual engine register dump + * @guc: Target GuC for manual capture + * @hwe: The engine instance to capture from + * + * Generate a manual GuC-Error-Capture snapshot of engine instance + engine class registers + * without any queue association. This capture node is not stored in outlist or cachelist, + * Returns: New capture node and caller must "put" + */ +struct xe_guc_capture_snapshot * +xe_guc_capture_snapshot_store_and_get_manual_hwe(struct xe_guc *guc, struct xe_hw_engine *hwe) +{ + struct xe_guc_capture_snapshot *new; + + new = guc_capture_get_manual_snapshot(guc, hwe); + if (!new) + return NULL; + + new->guc_id = 0; + new->lrca = 0; + new->is_partial = 0; + new->source = XE_ENGINE_CAPTURE_SOURCE_MANUAL; + + return new; +} + +/** + * xe_guc_capture_snapshot_store_manual_job - Generate and store a manual engine register dump + * @guc: Target GuC for manual capture + * @q: Associated xe_exec_queue to simulate a manual capture on its behalf. + * + * Generate a manual GuC-Error-Capture snapshot of engine instance + engine class registers + * for the engine of the given exec queue. Stores this node in internal outlist for future + * retrieval with the ability to match up against the same queue. + * + * Returns: None + */ +void +xe_guc_capture_snapshot_store_manual_job(struct xe_guc *guc, struct xe_exec_queue *q) +{ + struct xe_guc_capture_snapshot *new; + struct xe_gt *gt = guc_to_gt(guc); + struct xe_hw_engine *hwe; + enum xe_hw_engine_id id; + + if (q) { + xe_gt_warn(gt, "Manual GuC Error capture requested with invalid job\n"); + return; } - new->eng_class = xe_engine_class_to_guc_class(hwe->class); - new->eng_inst = hwe->instance; - new->guc_id = guc_id; - new->lrca = lrca; + /* Find hwe for the queue */ + for_each_hw_engine(hwe, gt, id) { + if (hwe != q->hwe) + continue; + break; + } + + new = guc_capture_get_manual_snapshot(guc, hwe); + if (!new) + return; + + new->guc_id = q->guc->id; + new->lrca = xe_lrc_ggtt_addr(q->lrc[0]); new->is_partial = 0; - new->locked = 1; + /* lock manual captures until devcoredump-engine puts it */ + new->locked = true; new->source = XE_ENGINE_CAPTURE_SOURCE_MANUAL; guc_capture_add_node_to_outlist(guc->capture, new); - devcoredump->snapshot.matched_node = new; + + return; } static struct guc_mmio_reg * @@ -1666,24 +1680,16 @@ guc_capture_find_reg(struct gcap_reg_list_info *reginfo, u32 addr, u32 flags) } static void -snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p, - u32 type, const struct __guc_mmio_reg_descr_group *list) +print_noderegs_by_list_order(struct xe_guc *guc, struct gcap_reg_list_info *reginfo, + const struct __guc_mmio_reg_descr_group *list, struct drm_printer *p) { - struct xe_gt *gt = snapshot->hwe->gt; - struct xe_device *xe = gt_to_xe(gt); - struct xe_guc *guc = >->uc.guc; - struct xe_devcoredump *devcoredump = &xe->devcoredump; - struct xe_devcoredump_snapshot *devcore_snapshot = &devcoredump->snapshot; - struct gcap_reg_list_info *reginfo = NULL; u32 last_value, i; bool is_ext; if (!list || list->num_regs == 0) return; - XE_WARN_ON(!devcore_snapshot->matched_node); is_ext = list == guc->capture->extlists; - reginfo = &devcore_snapshot->matched_node->reginfo[type]; /* * loop through descriptor first and find the register in the node @@ -1717,7 +1723,7 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_ group = FIELD_GET(GUC_REGSET_STEERING_GROUP, reg_desc->flags); instance = FIELD_GET(GUC_REGSET_STEERING_INSTANCE, reg_desc->flags); - dss = xe_gt_mcr_steering_info_to_dss_id(gt, group, instance); + dss = xe_gt_mcr_steering_info_to_dss_id(guc_to_gt(guc), group, instance); drm_printf(p, "\t%s[%u]: 0x%08x\n", reg_desc->regname, dss, value); } else { @@ -1727,74 +1733,65 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_ } /** - * xe_engine_snapshot_print - Print out a given Xe HW Engine snapshot. - * @snapshot: Xe HW Engine snapshot object. + * xe_guc_capture_snapshot_print - Print out a the contents of a provided Guc-Err-Capture node + * @guc : Target GuC for operation. + * @node: GuC Error Capture register dump node. * @p: drm_printer where it will be printed out. * - * This function prints out a given Xe HW Engine snapshot object. + * This function prints out a register dump of a GuC-Err-Capture node that was retrieved + * earlier either by GuC-FW reporting or by manual capture depending on how the + * caller (typically xe_hw_engine_snapshot) was invoked and used. */ -void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p) + +void xe_guc_capture_snapshot_print(struct xe_guc *guc, struct xe_guc_capture_snapshot *node, + struct drm_printer *p) { const char *grptype[GUC_STATE_CAPTURE_GROUP_TYPE_MAX] = { "full-capture", "partial-capture" }; - int type; const struct __guc_mmio_reg_descr_group *list; - enum guc_capture_list_class_type capture_class; - struct xe_gt *gt; - struct xe_device *xe; - struct xe_devcoredump *devcoredump; - struct xe_devcoredump_snapshot *devcore_snapshot; + int type; - if (!snapshot) + if (!guc) return; - - gt = snapshot->hwe->gt; - xe = gt_to_xe(gt); - devcoredump = &xe->devcoredump; - devcore_snapshot = &devcoredump->snapshot; - - if (!devcore_snapshot->matched_node) + gt = guc_to_gt(guc); + if (!node) { + xe_gt_warn(gt, "GuC Capture printing without node!\n"); return; + } + if (!p) { + xe_gt_warn(gt, "GuC Capture printing without printer!\n"); + return; + } - xe_gt_assert(gt, snapshot->hwe); - - capture_class = xe_engine_class_to_guc_capture_class(snapshot->hwe->class); - - drm_printf(p, "%s (physical), logical instance=%d\n", - snapshot->name ? snapshot->name : "", - snapshot->logical_instance); drm_printf(p, "\tCapture_source: %s\n", - devcore_snapshot->matched_node->source == XE_ENGINE_CAPTURE_SOURCE_GUC ? + node->source == XE_ENGINE_CAPTURE_SOURCE_GUC ? "GuC" : "Manual"); - drm_printf(p, "\tCoverage: %s\n", grptype[devcore_snapshot->matched_node->is_partial]); - drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", - snapshot->forcewake.domain, snapshot->forcewake.ref); - drm_printf(p, "\tReserved: %s\n", - str_yes_no(snapshot->kernel_reserved)); + drm_printf(p, "\tCoverage: %s\n", grptype[node->is_partial]); for (type = GUC_STATE_CAPTURE_TYPE_GLOBAL; type < GUC_STATE_CAPTURE_TYPE_MAX; type++) { list = xe_guc_capture_get_reg_desc_list(gt, GUC_CAPTURE_LIST_INDEX_PF, type, - capture_class, false); - snapshot_print_by_list_order(snapshot, p, type, list); + node->eng_class, false); + print_noderegs_by_list_order(guc, &node->reginfo[type], list, p); } - if (capture_class == GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE) { + if (node->eng_class == GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE) { + type = GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS; list = xe_guc_capture_get_reg_desc_list(gt, GUC_CAPTURE_LIST_INDEX_PF, - GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS, - capture_class, true); - snapshot_print_by_list_order(snapshot, p, GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS, - list); + type, node->eng_class, true); + print_noderegs_by_list_order(guc, &node->reginfo[type], list, p); } - drm_puts(p, "\n"); } /** - * xe_guc_capture_get_matching_and_lock - Matching GuC capture for the queue. - * @q: The exec queue object + * xe_guc_capture_snapshot_get - Matching GuC capture for the queue. + * + * @guc: The GuC being searched for a matching guc-error-capture snapshot. + * @q: The exec queue object that provides engine, guc-id and lrca to match (can be NULL!) + * @src: The source of the GuC-error-Capture snapshot to retrieve; * * Search within the capture outlist for the queue, could be used for check if * GuC capture is ready for the queue. @@ -1802,28 +1799,31 @@ void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm * * Returns: found guc-capture node ptr else NULL */ -struct __guc_capture_parsed_output * -xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) +struct xe_guc_capture_snapshot * +xe_guc_capture_snapshot_get(struct xe_guc *guc, struct xe_exec_queue *q, + enum xe_guc_capture_snapshot_source src) { struct xe_hw_engine *hwe; enum xe_hw_engine_id id; + struct xe_gt *gt; struct xe_device *xe; u16 guc_class = GUC_LAST_ENGINE_CLASS + 1; - struct xe_devcoredump_snapshot *ss; - if (!q || !q->gt) + if (!guc) return NULL; - xe = gt_to_xe(q->gt); - if (xe->wedged.mode >= 2 || !xe_device_uc_enabled(xe) || IS_SRIOV_VF(xe)) + gt = guc_to_gt(guc); + if (q && q->gt != gt) { + xe_gt_warn(gt, "Guc-Err-Capture being querried with incorrect queue's GT!"); return NULL; + } - ss = &xe->devcoredump.snapshot; - if (ss->matched_node && ss->matched_node->source == XE_ENGINE_CAPTURE_SOURCE_GUC) - return ss->matched_node; + xe = gt_to_xe(gt); + if (xe->wedged.mode >= 2 || !xe_device_uc_enabled(xe) || IS_SRIOV_VF(xe)) + return NULL; /* Find hwe for the queue */ - for_each_hw_engine(hwe, q->gt, id) { + for_each_hw_engine(hwe, gt, id) { if (hwe != q->hwe) continue; guc_class = xe_engine_class_to_guc_class(hwe->class); @@ -1831,8 +1831,7 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) } if (guc_class <= GUC_LAST_ENGINE_CLASS) { - struct __guc_capture_parsed_output *n, *ntmp; - struct xe_guc *guc = &q->gt->uc.guc; + struct xe_guc_capture_snapshot *n, *ntmp; u16 guc_id = q->guc->id; u32 lrca = xe_lrc_ggtt_addr(q->lrc[0]); @@ -1844,8 +1843,8 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) { if (n->eng_class == guc_class && n->eng_inst == hwe->instance && n->guc_id == guc_id && n->lrca == lrca && - n->source == XE_ENGINE_CAPTURE_SOURCE_GUC) { - n->locked = 1; + n->source == src) { + n->locked = true; return n; } } @@ -1853,77 +1852,19 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) return NULL; } -/** - * xe_engine_snapshot_capture_for_queue - Take snapshot of associated engine - * @q: The exec queue object - * - * Take snapshot of associated HW Engine - * - * Returns: None. - */ -void -xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q) -{ - struct xe_device *xe = gt_to_xe(q->gt); - struct xe_devcoredump *coredump = &xe->devcoredump; - struct xe_hw_engine *hwe; - enum xe_hw_engine_id id; - u32 adj_logical_mask = q->logical_mask; - - if (IS_SRIOV_VF(xe)) - return; - - for_each_hw_engine(hwe, q->gt, id) { - if (hwe->class != q->hwe->class || - !(BIT(hwe->logical_instance) & adj_logical_mask)) { - coredump->snapshot.hwe[id] = NULL; - continue; - } - - if (!coredump->snapshot.hwe[id]) { - coredump->snapshot.hwe[id] = - xe_hw_engine_snapshot_capture(hwe, q); - } else { - struct __guc_capture_parsed_output *new; - - new = xe_guc_capture_get_matching_and_lock(q); - if (new) { - struct xe_guc *guc = &q->gt->uc.guc; - - /* - * If we are in here, it means we found a fresh - * GuC-err-capture node for this engine after - * previously failing to find a match in the - * early part of guc_exec_queue_timedout_job. - * Thus we must free the manually captured node - */ - guc_capture_free_outlist_node(guc->capture, - coredump->snapshot.matched_node); - coredump->snapshot.matched_node = new; - } - } - - break; - } -} - /* - * xe_guc_capture_put_matched_nodes - Cleanup macthed nodes + * xe_guc_capture_snapshot_put - Release GuC Capture matched node from a prior snapshot_get * @guc: The GuC object + * @node: The node to release back to GuC * * Free matched node and all nodes with the equal guc_id from * GuC captured outlist */ -void xe_guc_capture_put_matched_nodes(struct xe_guc *guc) +void xe_guc_capture_snapshot_put(struct xe_guc *guc, struct xe_guc_capture_snapshot *n) { - struct xe_device *xe = guc_to_xe(guc); - struct xe_devcoredump *devcoredump = &xe->devcoredump; - struct __guc_capture_parsed_output *n = devcoredump->snapshot.matched_node; - if (n) { guc_capture_remove_stale_matches_from_list(guc->capture, n); guc_capture_free_outlist_node(guc->capture, n); - devcoredump->snapshot.matched_node = NULL; } } diff --git a/drivers/gpu/drm/xe/xe_guc_capture.h b/drivers/gpu/drm/xe/xe_guc_capture.h index 20a078dc4b85..e85af277be9c 100644 --- a/drivers/gpu/drm/xe/xe_guc_capture.h +++ b/drivers/gpu/drm/xe/xe_guc_capture.h @@ -11,10 +11,7 @@ #include "xe_guc.h" #include "xe_guc_fwif.h" -struct xe_exec_queue; struct xe_guc; -struct xe_hw_engine; -struct xe_hw_engine_snapshot; static inline enum guc_capture_list_class_type xe_guc_class_to_capture_class(u16 class) { @@ -44,18 +41,13 @@ void xe_guc_capture_process(struct xe_guc *guc); int xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, enum guc_capture_list_class_type capture_class, void **outptr); int xe_guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, - enum guc_capture_list_class_type capture_class, size_t *size); + enum guc_capture_list_class_type capture_class, size_t *size); int xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size); size_t xe_guc_capture_ads_input_worst_size(struct xe_guc *guc); const struct __guc_mmio_reg_descr_group * xe_guc_capture_get_reg_desc_list(struct xe_gt *gt, u32 owner, u32 type, enum guc_capture_list_class_type capture_class, bool is_ext); -struct __guc_capture_parsed_output *xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q); -void xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot); -void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p); -void xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q); void xe_guc_capture_steered_list_init(struct xe_guc *guc); -void xe_guc_capture_put_matched_nodes(struct xe_guc *guc); int xe_guc_capture_init(struct xe_guc *guc); #endif diff --git a/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h b/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h new file mode 100644 index 000000000000..76159cb8fcab --- /dev/null +++ b/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h @@ -0,0 +1,68 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2021-2024 Intel Corporation + */ + +#ifndef _XE_GUC_CAPTURE_SNAPSHOT_TYPES_H +#define _XE_GUC_CAPTURE_SNAPSHOT_TYPES_H + +#include <linux/types.h> +#include <abi/guc_capture_abi.h> +#include "xe_guc_fwif.h" + +struct drm_printer; +struct guc_mmio_reg; +struct xe_guc; +struct xe_exec_queue; +struct xe_hw_engine; + +enum xe_guc_capture_snapshot_source { + XE_ENGINE_CAPTURE_SOURCE_MANUAL, + XE_ENGINE_CAPTURE_SOURCE_GUC +}; + +/* + * struct xe_guc_capture_snapshot - extracted error capture node + * + * A single unit of extracted error-capture output data grouped together + * at an engine-instance level. We keep these nodes in a linked list. + * See cachelist and outlist below. + */ +struct xe_guc_capture_snapshot { + /* + * A single set of 3 capture lists: a global-list + * an engine-class-list and an engine-instance list. + * outlist in __guc_capture_parsed_output will keep + * a linked list of these nodes that will eventually + * be detached from outlist and attached into to + * xe_codedump in response to a context reset + */ + struct list_head link; + bool is_partial; + u32 eng_class; + u32 eng_inst; + u32 guc_id; + u32 lrca; + u32 type; + bool locked; + enum xe_guc_capture_snapshot_source source; + struct gcap_reg_list_info { + u32 vfid; + u32 num_regs; + struct guc_mmio_reg *regs; + } reginfo[GUC_STATE_CAPTURE_TYPE_MAX]; +#define GCAP_PARSED_REGLIST_INDEX_GLOBAL BIT(GUC_STATE_CAPTURE_TYPE_GLOBAL) +#define GCAP_PARSED_REGLIST_INDEX_ENGCLASS BIT(GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS) +}; + +struct xe_guc_capture_snapshot * +xe_guc_capture_snapshot_get(struct xe_guc *guc, struct xe_exec_queue *q, + enum xe_guc_capture_snapshot_source src); +void xe_guc_capture_snapshot_print(struct xe_guc *guc, struct xe_guc_capture_snapshot *node, + struct drm_printer *p); +void xe_guc_capture_snapshot_put(struct xe_guc *guc, struct xe_guc_capture_snapshot *snapshot); +void xe_guc_capture_snapshot_store_manual_job(struct xe_guc *guc, struct xe_exec_queue *q); +struct xe_guc_capture_snapshot * +xe_guc_capture_snapshot_store_and_get_manual_hwe(struct xe_guc *guc, struct xe_hw_engine *hwe); + +#endif diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index f9ecee5364d8..30c2bdf51958 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -28,6 +28,7 @@ #include "xe_gt_printk.h" #include "xe_guc.h" #include "xe_guc_capture.h" +#include "xe_guc_capture_snapshot_types.h" #include "xe_guc_ct.h" #include "xe_guc_exec_queue_types.h" #include "xe_guc_id_mgr.h" @@ -1033,7 +1034,6 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) struct xe_gpu_scheduler *sched = &q->guc->sched; struct xe_guc *guc = exec_queue_to_guc(q); const char *process_name = "no process"; - struct xe_device *xe = guc_to_xe(guc); unsigned int fw_ref; int err = -ETIME; pid_t pid = -1; @@ -1062,18 +1062,23 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) exec_queue_destroyed(q); /* - * If devcoredump not captured and GuC capture for the job is not ready - * do manual capture first and decide later if we need to use it + * If the queue has't been killed yet or we do not have a firmware-reported + * GuC-Error-Capture node for the matching job, request GuC-Error-Capture to + * store a manual capture within its internal list with a job-match. + * xe_hw_engine_snapshot will decide later if it's needed. */ - if (!exec_queue_killed(q) && !xe->devcoredump.captured && - !xe_guc_capture_get_matching_and_lock(q)) { + if (!exec_queue_killed(q) || + !xe_guc_capture_snapshot_get(guc, q, XE_ENGINE_CAPTURE_SOURCE_GUC)) { /* take force wake before engine register manual capture */ fw_ref = xe_force_wake_get(gt_to_fw(q->gt), XE_FORCEWAKE_ALL); if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) xe_gt_info(q->gt, "failed to get forcewake for coredump capture\n"); - - xe_engine_snapshot_capture_for_queue(q); - + /* + * This will generate a manual capture node and store it in + * This GuC Error Capture link-list as if it came from GuC + * but with a source-id == manual-capture + */ + xe_guc_capture_snapshot_store_manual_job(guc, q); xe_force_wake_put(gt_to_fw(q->gt), fw_ref); } diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c index c4b0dc3be39c..ddd91627e623 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine.c +++ b/drivers/gpu/drm/xe/xe_hw_engine.c @@ -24,7 +24,8 @@ #include "xe_gt_printk.h" #include "xe_gt_mcr.h" #include "xe_gt_topology.h" -#include "xe_guc_capture.h" +//#include "xe_guc_capture.h" +#include "xe_guc_capture_snapshot_types.h" #include "xe_hw_engine_group.h" #include "xe_hw_fence.h" #include "xe_irq.h" @@ -827,9 +828,9 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec) } /** - * xe_hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine. + * hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine. * @hwe: Xe HW Engine. - * @q: The exec queue object. + * @q: The exec queue object. (can be NULL for debugfs engine-register dump) * * This can be printed out in a later stage like during dev_coredump * analysis. @@ -837,11 +838,12 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec) * Returns: a Xe HW Engine snapshot object that must be freed by the * caller, using `xe_hw_engine_snapshot_free`. */ -struct xe_hw_engine_snapshot * -xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) +static struct xe_hw_engine_snapshot * +hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) { struct xe_hw_engine_snapshot *snapshot; - struct __guc_capture_parsed_output *node; + struct xe_guc_capture_snapshot *manual_node; + struct xe_guc *guc; if (!xe_hw_engine_is_valid(hwe)) return NULL; @@ -865,25 +867,66 @@ xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) return snapshot; if (q) { - /* If got guc capture, set source to GuC */ - node = xe_guc_capture_get_matching_and_lock(q); - if (node) { - struct xe_device *xe = gt_to_xe(hwe->gt); - struct xe_devcoredump *coredump = &xe->devcoredump; - - coredump->snapshot.matched_node = node; - xe_gt_dbg(hwe->gt, "Found and locked GuC-err-capture node"); - return snapshot; + guc = &q->gt->uc.guc; + /* First find the pre-kill manual GuC-Err-Capture node for this job */ + manual_node = xe_guc_capture_snapshot_get(guc, q, + XE_ENGINE_CAPTURE_SOURCE_MANUAL); + + /* Next, look for the GuC-Firmware reported node for this job */ + snapshot->matched_node = xe_guc_capture_snapshot_get(guc, q, + XE_ENGINE_CAPTURE_SOURCE_GUC); + if (!snapshot->matched_node) { + xe_gt_dbg(hwe->gt, "Can't find GUC-Sourced err-capture node"); + snapshot->matched_node = manual_node; + } else if (manual_node) { + /* looks like we don't need the manually-captured node, return it */ + xe_guc_capture_snapshot_put(guc, manual_node); } } - /* otherwise, do manual capture */ - xe_engine_manual_capture(hwe, snapshot); - xe_gt_dbg(hwe->gt, "Proceeding with manual engine snapshot"); + if (!snapshot->matched_node) { + guc = &hwe->gt->uc.guc; + /* + * Fallback path - do an immediate jobless manual engine capture. + * This will happen when debugfs is triggered to force an engine dump. + */ + snapshot->matched_node = xe_guc_capture_snapshot_store_and_get_manual_hwe(guc, hwe); + xe_gt_dbg(hwe->gt, "Fallback to jobless-manual-err-capture node"); + } return snapshot; } +/** + * xe_engine_snapshot_capture_for_queue - Take snapshot of associated engine + * @q: The exec queue object + * + * Take snapshot of associated HW Engine + * + * Returns: None. + */ +void +xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q) +{ + struct xe_device *xe = gt_to_xe(q->gt); + struct xe_devcoredump *coredump = &xe->devcoredump; + struct xe_hw_engine *hwe; + enum xe_hw_engine_id id; + u32 adj_logical_mask = q->logical_mask; + + if (IS_SRIOV_VF(xe)) + return; + + for_each_hw_engine(hwe, q->gt, id) { + if (hwe->class != q->hwe->class || + !(BIT(hwe->logical_instance) & adj_logical_mask)) { + coredump->snapshot.hwe[id] = NULL; + continue; + } + coredump->snapshot.hwe[id] = hw_engine_snapshot_capture(hwe, q); + } +} + /** * xe_hw_engine_snapshot_free - Free all allocated objects for a given snapshot. * @snapshot: Xe HW Engine snapshot object. @@ -898,17 +941,41 @@ void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot) return; gt = snapshot->hwe->gt; - /* - * xe_guc_capture_put_matched_nodes is called here and from - * xe_devcoredump_snapshot_free, to cover the 2 calling paths - * of hw_engines - debugfs and devcoredump free. - */ - xe_guc_capture_put_matched_nodes(>->uc.guc); + xe_guc_capture_snapshot_put(>->uc.guc, snapshot->matched_node); + snapshot->matched_node = NULL; kfree(snapshot->name); kfree(snapshot); } +/** + * xe_engine_snapshot_print - Print out a given Xe HW Engine snapshot. + * @snapshot: Xe HW Engine snapshot object. + * @p: drm_printer where it will be printed out. + * + * This function prints out a given Xe HW Engine snapshot object. + */ +void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p) +{ + struct xe_gt *gt; + + if (!snapshot) + return; + + gt = snapshot->hwe->gt; + + drm_printf(p, "%s (physical), logical instance=%d\n", + snapshot->name ? snapshot->name : "", + snapshot->logical_instance); + drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", + snapshot->forcewake.domain, snapshot->forcewake.ref); + drm_printf(p, "\tReserved: %s\n", + str_yes_no(snapshot->kernel_reserved)); + drm_puts(p, "\n"); + + xe_guc_capture_snapshot_print(>->uc.guc, snapshot->matched_node, p); +} + /** * xe_hw_engine_print - Xe HW Engine Print. * @hwe: Hardware Engine. @@ -920,7 +987,7 @@ void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p) { struct xe_hw_engine_snapshot *snapshot; - snapshot = xe_hw_engine_snapshot_capture(hwe, NULL); + snapshot = hw_engine_snapshot_capture(hwe, NULL); xe_engine_snapshot_print(snapshot, p); xe_hw_engine_snapshot_free(snapshot); } diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h index 6b5f9fa2a594..845153fbc149 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine.h +++ b/drivers/gpu/drm/xe/xe_hw_engine.h @@ -55,9 +55,9 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe); u32 xe_hw_engine_mask_per_class(struct xe_gt *gt, enum xe_engine_class engine_class); -struct xe_hw_engine_snapshot * -xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q); +void xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q); void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot); +void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p); void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p); void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe); diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h index e14bee95e364..ea6b60c819d4 100644 --- a/drivers/gpu/drm/xe/xe_hw_engine_types.h +++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h @@ -152,11 +152,7 @@ struct xe_hw_engine { struct xe_hw_engine_group *hw_engine_group; }; -enum xe_hw_engine_snapshot_source_id { - XE_ENGINE_CAPTURE_SOURCE_MANUAL, - XE_ENGINE_CAPTURE_SOURCE_GUC -}; - +struct xe_guc_capture_snapshot; /** * struct xe_hw_engine_snapshot - Hardware engine snapshot * @@ -180,6 +176,13 @@ struct xe_hw_engine_snapshot { u32 mmio_base; /** @kernel_reserved: Engine reserved, can't be used by userspace */ bool kernel_reserved; + /** + * @matched_node: GuC Capture snapshot: + * The matched capture node for the timedout job + * this single-node tracker works because devcoredump will always only + * produce one hw-engine capture per devcoredump event + */ + struct xe_guc_capture_snapshot *matched_node; }; #endif -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] drm/xe/guc/capture: Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:44 ` [PATCH 1/1] drm/xe/guc/capture: " Alan Previn @ 2024-11-26 17:09 ` Dong, Zhanjun 2024-12-03 3:12 ` Teres Alexis, Alan Previn 0 siblings, 1 reply; 12+ messages in thread From: Dong, Zhanjun @ 2024-11-26 17:09 UTC (permalink / raw) To: Alan Previn, intel-xe Cc: dri-devel, Daniele Ceraolo Spurio, John Harrison, Matthew Brost See my comments inline below: Regards, Zhanjun On 2024-11-17 1:44 p.m., Alan Previn wrote: > The order of the devcoredump event flow is: > drm-scheduler -> guc-submission-execq-timed-out-job -> > guc-submission-kill-job -> xe-devcoredump (once the work > is confirmed to have been killed). > > As we are aware, the GuC-FW IRQ for error-capture delivery > and extraction could have happenned before the start of happened? > guc-execq-timed-out-job or the middle of it (before or > during the explicit kill) or not at all. Thus, today, the > above flow takes a manual capture first before triggering > the kill-job just in case we need it. > > The structure layering of devcoredump internals are: > xe_devcoredump_snapshot -> xe_foo_snapshot (where foo > can be any data dump associated to the job was killed). > Foo includes the xe_hw_engine_snapshot. Since GuC-Error-Capture > provides just the register dump of an engine, GuC-Err-Capture > snapshots should be managed by the xe_hw_engine_snapshot. > That isn't the case today. > > Furthermode, neither xe_devcoredump_snapshot nor Furthermore? > xe_hw_engine_snapshot even exists at the start of > guc-submission-execq-timed-out-job. Thus, the first > manual capture node has no home. However, today, > GuC-Error-Capture stores capture snapshots off the > top-level xe_devcoredump_snapshot's matched_node. > GuC-Error-Capture also had absorbed the function for > xe_hw_engine_snapshot generation. > NOTE: Existing code isn't broken because xe_devcoredump > is not dynamically allocated and designed to hold a > single event at a time (i.e. single engine dump). > But it's not scalable for future improvement. > > Thus this patch: > 1. Moves "matched_node" from xe_devcoredump_snapshot to > xe_hw_engine_snapshot. > 2. Relocates the functions for xe_hw_engine_snapshot generation > and printing back to xe_hw_engine.c. However, split out the > register dump printing so it stays within GuC-Error-Capture > (so we don't need to maintain two sets of register lists). > 3. Keep both the manual and firmware capture nodes within > GuC-Error-Capture subsystem's linked list until > xe_hw_engine_snapshot gets and puts them later. > 4. Give xe_hw_engine_snapshot the control and ability to > query GuC-Error-Capture for matching snapshots while choosing > between manual vs firmware capture getting/putting node. > 5. While at it, relocate (and rename) key structures, enums > and function protos to xe_guc_capture_snapshot_types.h > (as an inter-module header) for xe_hw_engine_snapshot to use. > 6. Since xe_hw_engine_snapshot can also be called by via debugfs > without a job, create a new function that does a manual capture > of engine registers without any associated job. > > Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com> > --- > drivers/gpu/drm/xe/xe_devcoredump.c | 3 - > drivers/gpu/drm/xe/xe_devcoredump_types.h | 6 - > drivers/gpu/drm/xe/xe_guc_capture.c | 397 ++++++++---------- > drivers/gpu/drm/xe/xe_guc_capture.h | 10 +- > .../drm/xe/xe_guc_capture_snapshot_types.h | 68 +++ > drivers/gpu/drm/xe/xe_guc_submit.c | 21 +- > drivers/gpu/drm/xe/xe_hw_engine.c | 117 ++++-- > drivers/gpu/drm/xe/xe_hw_engine.h | 4 +- > drivers/gpu/drm/xe/xe_hw_engine_types.h | 13 +- > 9 files changed, 353 insertions(+), 286 deletions(-) > create mode 100644 drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h > > diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c > index 0e5edf14a241..b98d71e670ca 100644 > --- a/drivers/gpu/drm/xe/xe_devcoredump.c > +++ b/drivers/gpu/drm/xe/xe_devcoredump.c > @@ -144,9 +144,6 @@ static void xe_devcoredump_snapshot_free(struct xe_devcoredump_snapshot *ss) > xe_guc_ct_snapshot_free(ss->guc.ct); > ss->guc.ct = NULL; > > - xe_guc_capture_put_matched_nodes(&ss->gt->uc.guc); > - ss->matched_node = NULL; > - > xe_guc_exec_queue_snapshot_free(ss->ge); > ss->ge = NULL; > > diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h > index be4d59ea9ac8..06ac75ce63dd 100644 > --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h > +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h > @@ -49,12 +49,6 @@ struct xe_devcoredump_snapshot { > struct xe_hw_engine_snapshot *hwe[XE_NUM_HW_ENGINES]; > /** @job: Snapshot of job state */ > struct xe_sched_job_snapshot *job; > - /** > - * @matched_node: The matched capture node for timedout job > - * this single-node tracker works because devcoredump will always only > - * produce one hw-engine capture per devcoredump event > - */ > - struct __guc_capture_parsed_output *matched_node; > /** @vm: Snapshot of VM state */ > struct xe_vm_snapshot *vm; > > diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c > index f87755af545f..691fc72a5c9e 100644 > --- a/drivers/gpu/drm/xe/xe_guc_capture.c > +++ b/drivers/gpu/drm/xe/xe_guc_capture.c > @@ -26,6 +26,7 @@ > #include "xe_guc_ads.h" > #include "xe_guc_capture.h" > #include "xe_guc_capture_types.h" > +#include "xe_guc_capture_snapshot_types.h" > #include "xe_guc_ct.h" > #include "xe_guc_exec_queue_types.h" > #include "xe_guc_log.h" > @@ -53,40 +54,6 @@ struct __guc_capture_bufstate { > u32 wr; > }; > > -/* > - * struct __guc_capture_parsed_output - extracted error capture node > - * > - * A single unit of extracted error-capture output data grouped together > - * at an engine-instance level. We keep these nodes in a linked list. > - * See cachelist and outlist below. > - */ > -struct __guc_capture_parsed_output { > - /* > - * A single set of 3 capture lists: a global-list > - * an engine-class-list and an engine-instance list. > - * outlist in __guc_capture_parsed_output will keep > - * a linked list of these nodes that will eventually > - * be detached from outlist and attached into to > - * xe_codedump in response to a context reset > - */ > - struct list_head link; > - bool is_partial; > - u32 eng_class; > - u32 eng_inst; > - u32 guc_id; > - u32 lrca; > - u32 type; > - bool locked; > - enum xe_hw_engine_snapshot_source_id source; > - struct gcap_reg_list_info { > - u32 vfid; > - u32 num_regs; > - struct guc_mmio_reg *regs; > - } reginfo[GUC_STATE_CAPTURE_TYPE_MAX]; > -#define GCAP_PARSED_REGLIST_INDEX_GLOBAL BIT(GUC_STATE_CAPTURE_TYPE_GLOBAL) > -#define GCAP_PARSED_REGLIST_INDEX_ENGCLASS BIT(GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS) > -}; > - > /* > * Define all device tables of GuC error capture register lists > * NOTE: > @@ -286,7 +253,7 @@ struct xe_guc_state_capture { > > static void > guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, > - struct __guc_capture_parsed_output *node); > + struct xe_guc_capture_snapshot *node); > > static const struct __guc_mmio_reg_descr_group * > guc_capture_get_device_reglist(struct xe_device *xe) > @@ -840,7 +807,7 @@ static void check_guc_capture_size(struct xe_guc *guc) > } > > static void > -guc_capture_add_node_to_list(struct __guc_capture_parsed_output *node, > +guc_capture_add_node_to_list(struct xe_guc_capture_snapshot *node, > struct list_head *list) > { > list_add(&node->link, list); > @@ -848,7 +815,7 @@ guc_capture_add_node_to_list(struct __guc_capture_parsed_output *node, > > static void > guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc, > - struct __guc_capture_parsed_output *node) > + struct xe_guc_capture_snapshot *node) > { > guc_capture_remove_stale_matches_from_list(gc, node); > guc_capture_add_node_to_list(node, &gc->outlist); > @@ -856,17 +823,17 @@ guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc, > > static void > guc_capture_add_node_to_cachelist(struct xe_guc_state_capture *gc, > - struct __guc_capture_parsed_output *node) > + struct xe_guc_capture_snapshot *node) > { > guc_capture_add_node_to_list(node, &gc->cachelist); > } > > static void > guc_capture_free_outlist_node(struct xe_guc_state_capture *gc, > - struct __guc_capture_parsed_output *n) > + struct xe_guc_capture_snapshot *n) > { > if (n) { > - n->locked = 0; > + n->locked = false; > list_del(&n->link); > /* put node back to cache list */ > guc_capture_add_node_to_cachelist(gc, n); > @@ -875,9 +842,9 @@ guc_capture_free_outlist_node(struct xe_guc_state_capture *gc, > > static void > guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, > - struct __guc_capture_parsed_output *node) > + struct xe_guc_capture_snapshot *node) > { > - struct __guc_capture_parsed_output *n, *ntmp; > + struct xe_guc_capture_snapshot *n, *ntmp; > int guc_id = node->guc_id; > > list_for_each_entry_safe(n, ntmp, &gc->outlist, link) { > @@ -887,7 +854,7 @@ guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, > } > > static void > -guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *node) > +guc_capture_init_node(struct xe_guc *guc, struct xe_guc_capture_snapshot *node) > { > struct guc_mmio_reg *tmp[GUC_STATE_CAPTURE_TYPE_MAX]; > int i; > @@ -934,24 +901,31 @@ guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *no > * This node is created from a pre-allocated list of blank nodes in > * guc->capture->cachelist and populated with the error-capture > * data from GuC and then it's added into guc->capture->outlist linked > - * list. This list is used for matchup and printout by xe_devcoredump_read > - * and xe_engine_snapshot_print, (when user invokes the devcoredump sysfs). > + * list. This node (dumped-register-lists) will be requested later by > + * xe_hwe_engine_snapshot creation. > * > - * GUC --> notify context reset: > - * ----------------------------- > + * DRM Scheduler job-timeout OR GuC-notify guc-id reset: > + * ----------------------------------------------------- > * --> guc_exec_queue_timedout_job > - * L--> xe_devcoredump > - * L--> devcoredump_snapshot > - * --> xe_hw_engine_snapshot_capture > - * --> xe_engine_manual_capture(For manual capture) > + * L--> alloc D: xe_guc_capture_snapshot_store_manual_job > + * (only if "alloc C" above didn't happen) > + * L--> devcoredump_snapshot > + * --> xe_engine_snapshot_capture_for_queue(q) .. > + * --> xe_guc_capture_snapshot_get(q) > + * use "alloc C" or else "alloc D" > + * --> store in xe_hw_engine_snapshot->matched_node > * > - * User Sysfs / Debugfs > - * -------------------- > - * --> xe_devcoredump_read-> > + * User Devcoredump Sysfs > + * ---------------------- > + * --> xe_devcoredump_read-> (user cats devcoredump) > * L--> xxx_snapshot_print > * L--> xe_engine_snapshot_print > - * Print register lists values saved at > - * guc->capture->outlist > + * L --> xe_guc_capture_snapshot_print (for printing register > + * lists values of xe_hw_engine_snapshot->matched_node) > + * --> xe_devcoredump_free (user clears devcoredump) > + * L--> xe_devcoredump_free -> xe_devcoredump_snapshot_free > + * L--> xe_hw_engine_snapshot_free > + * L--> xe_guc_capture_snapshot_put(matched_node) > * > */ > > @@ -1066,13 +1040,13 @@ guc_capture_log_get_register(struct xe_guc *guc, struct __guc_capture_bufstate * > return 0; > } > > -static struct __guc_capture_parsed_output * > +static struct xe_guc_capture_snapshot * > guc_capture_get_prealloc_node(struct xe_guc *guc) > { > - struct __guc_capture_parsed_output *found = NULL; > + struct xe_guc_capture_snapshot *found = NULL; > > if (!list_empty(&guc->capture->cachelist)) { > - struct __guc_capture_parsed_output *n, *ntmp; > + struct xe_guc_capture_snapshot *n, *ntmp; > > /* get first avail node from the cache list */ > list_for_each_entry_safe(n, ntmp, &guc->capture->cachelist, link) { > @@ -1080,7 +1054,7 @@ guc_capture_get_prealloc_node(struct xe_guc *guc) > break; > } > } else { > - struct __guc_capture_parsed_output *n, *ntmp; > + struct xe_guc_capture_snapshot *n, *ntmp; > > /* > * traverse reversed and steal back the oldest node already > @@ -1099,11 +1073,11 @@ guc_capture_get_prealloc_node(struct xe_guc *guc) > return found; > } > > -static struct __guc_capture_parsed_output * > -guc_capture_clone_node(struct xe_guc *guc, struct __guc_capture_parsed_output *original, > +static struct xe_guc_capture_snapshot * > +guc_capture_clone_node(struct xe_guc *guc, struct xe_guc_capture_snapshot *original, > u32 keep_reglist_mask) > { > - struct __guc_capture_parsed_output *new; > + struct xe_guc_capture_snapshot *new; > int i; > > new = guc_capture_get_prealloc_node(guc); > @@ -1145,7 +1119,7 @@ guc_capture_extract_reglists(struct xe_guc *guc, struct __guc_capture_bufstate * > struct xe_gt *gt = guc_to_gt(guc); > struct guc_state_capture_group_header_t ghdr = {0}; > struct guc_state_capture_header_t hdr = {0}; > - struct __guc_capture_parsed_output *node = NULL; > + struct xe_guc_capture_snapshot *node = NULL; > struct guc_mmio_reg *regs = NULL; > int i, numlists, numregs, ret = 0; > enum guc_state_capture_type datatype; > @@ -1438,11 +1412,11 @@ void xe_guc_capture_process(struct xe_guc *guc) > __guc_capture_process_output(guc); > } > > -static struct __guc_capture_parsed_output * > +static struct xe_guc_capture_snapshot * > guc_capture_alloc_one_node(struct xe_guc *guc) > { > struct drm_device *drm = guc_to_drm(guc); > - struct __guc_capture_parsed_output *new; > + struct xe_guc_capture_snapshot *new; > int i; > > new = drmm_kzalloc(drm, sizeof(*new), GFP_KERNEL); > @@ -1467,7 +1441,7 @@ guc_capture_alloc_one_node(struct xe_guc *guc) > static void > __guc_capture_create_prealloc_nodes(struct xe_guc *guc) > { > - struct __guc_capture_parsed_output *node = NULL; > + struct xe_guc_capture_snapshot *node = NULL; > int i; > > for (i = 0; i < PREALLOC_NODES_MAX_COUNT; ++i) { All above is about renaming structure or comments, that's fine. > @@ -1564,35 +1538,18 @@ read_reg_to_node(struct xe_hw_engine *hwe, const struct __guc_mmio_reg_descr_gro > } > } > > -/** > - * xe_engine_manual_capture - Take a manual engine snapshot from engine. > - * @hwe: Xe HW Engine. > - * @snapshot: The engine snapshot > - * > - * Take engine snapshot from engine read. > - * > - * Returns: None > - */ > -void > -xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot) > +static struct xe_guc_capture_snapshot * > +guc_capture_get_manual_snapshot(struct xe_guc *guc, struct xe_hw_engine *hwe) > { > struct xe_gt *gt = hwe->gt; > - struct xe_device *xe = gt_to_xe(gt); > - struct xe_guc *guc = >->uc.guc; > - struct xe_devcoredump *devcoredump = &xe->devcoredump; > enum guc_capture_list_class_type capture_class; > const struct __guc_mmio_reg_descr_group *list; > - struct __guc_capture_parsed_output *new; > + struct xe_guc_capture_snapshot *new; > enum guc_state_capture_type type; > - u16 guc_id = 0; > - u32 lrca = 0; > - > - if (IS_SRIOV_VF(xe)) > - return; > > new = guc_capture_get_prealloc_node(guc); > if (!new) > - return; > + return NULL; > > capture_class = xe_engine_class_to_guc_capture_class(hwe->class); > for (type = GUC_STATE_CAPTURE_TYPE_GLOBAL; type < GUC_STATE_CAPTURE_TYPE_MAX; type++) { > @@ -1626,26 +1583,83 @@ xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot > } > } > > - if (devcoredump && devcoredump->captured) { > - struct xe_guc_submit_exec_queue_snapshot *ge = devcoredump->snapshot.ge; > + new->eng_class = xe_engine_class_to_guc_class(hwe->class); > + new->eng_inst = hwe->instance; > > - if (ge) { > - guc_id = ge->guc.id; > - if (ge->lrc[0]) > - lrca = ge->lrc[0]->context_desc; > - } > + return new; > +} > + > +/** > + * xe_guc_capture_snapshot_store_and_get_manual_hwe - Generate and get manual engine register dump > + * @guc: Target GuC for manual capture > + * @hwe: The engine instance to capture from > + * > + * Generate a manual GuC-Error-Capture snapshot of engine instance + engine class registers > + * without any queue association. This capture node is not stored in outlist or cachelist, > + * Returns: New capture node and caller must "put" > + */ > +struct xe_guc_capture_snapshot * > +xe_guc_capture_snapshot_store_and_get_manual_hwe(struct xe_guc *guc, struct xe_hw_engine *hwe) > +{ > + struct xe_guc_capture_snapshot *new; > + > + new = guc_capture_get_manual_snapshot(guc, hwe); > + if (!new) > + return NULL; > + > + new->guc_id = 0; > + new->lrca = 0; > + new->is_partial = 0; > + new->source = XE_ENGINE_CAPTURE_SOURCE_MANUAL; > + > + return new; > +} > + > +/** > + * xe_guc_capture_snapshot_store_manual_job - Generate and store a manual engine register dump > + * @guc: Target GuC for manual capture > + * @q: Associated xe_exec_queue to simulate a manual capture on its behalf. > + * > + * Generate a manual GuC-Error-Capture snapshot of engine instance + engine class registers > + * for the engine of the given exec queue. Stores this node in internal outlist for future > + * retrieval with the ability to match up against the same queue. > + * > + * Returns: None > + */ > +void > +xe_guc_capture_snapshot_store_manual_job(struct xe_guc *guc, struct xe_exec_queue *q) > +{ > + struct xe_guc_capture_snapshot *new; > + struct xe_gt *gt = guc_to_gt(guc); > + struct xe_hw_engine *hwe; > + enum xe_hw_engine_id id; > + > + if (q) { > + xe_gt_warn(gt, "Manual GuC Error capture requested with invalid job\n"); > + return; > } Need to do SRIOV check here or at timedout job if (IS_SRIOV_VF(xe)) return; for compareration, the existing implementation is guc_exec_queue_timedout_job xe_engine_snapshot_capture_for_queue which did the SRIOV check. > > - new->eng_class = xe_engine_class_to_guc_class(hwe->class); > - new->eng_inst = hwe->instance; > - new->guc_id = guc_id; > - new->lrca = lrca; > + /* Find hwe for the queue */ > + for_each_hw_engine(hwe, gt, id) { > + if (hwe != q->hwe) > + continue; > + break; > + } > + > + new = guc_capture_get_manual_snapshot(guc, hwe); > + if (!new) > + return; > + > + new->guc_id = q->guc->id; > + new->lrca = xe_lrc_ggtt_addr(q->lrc[0]); > new->is_partial = 0; > - new->locked = 1; > + /* lock manual captures until devcoredump-engine puts it */ > + new->locked = true; > new->source = XE_ENGINE_CAPTURE_SOURCE_MANUAL; > > guc_capture_add_node_to_outlist(guc->capture, new); > - devcoredump->snapshot.matched_node = new; > + > + return; > } > > static struct guc_mmio_reg * > @@ -1666,24 +1680,16 @@ guc_capture_find_reg(struct gcap_reg_list_info *reginfo, u32 addr, u32 flags) > } > > static void > -snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p, > - u32 type, const struct __guc_mmio_reg_descr_group *list) > +print_noderegs_by_list_order(struct xe_guc *guc, struct gcap_reg_list_info *reginfo, > + const struct __guc_mmio_reg_descr_group *list, struct drm_printer *p) > { > - struct xe_gt *gt = snapshot->hwe->gt; > - struct xe_device *xe = gt_to_xe(gt); > - struct xe_guc *guc = >->uc.guc; > - struct xe_devcoredump *devcoredump = &xe->devcoredump; > - struct xe_devcoredump_snapshot *devcore_snapshot = &devcoredump->snapshot; > - struct gcap_reg_list_info *reginfo = NULL; > u32 last_value, i; > bool is_ext; > > if (!list || list->num_regs == 0) > return; > - XE_WARN_ON(!devcore_snapshot->matched_node); > > is_ext = list == guc->capture->extlists; > - reginfo = &devcore_snapshot->matched_node->reginfo[type]; > > /* > * loop through descriptor first and find the register in the node > @@ -1717,7 +1723,7 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_ > > group = FIELD_GET(GUC_REGSET_STEERING_GROUP, reg_desc->flags); > instance = FIELD_GET(GUC_REGSET_STEERING_INSTANCE, reg_desc->flags); > - dss = xe_gt_mcr_steering_info_to_dss_id(gt, group, instance); > + dss = xe_gt_mcr_steering_info_to_dss_id(guc_to_gt(guc), group, instance); > > drm_printf(p, "\t%s[%u]: 0x%08x\n", reg_desc->regname, dss, value); > } else { > @@ -1727,74 +1733,65 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_ > } > > /** > - * xe_engine_snapshot_print - Print out a given Xe HW Engine snapshot. > - * @snapshot: Xe HW Engine snapshot object. > + * xe_guc_capture_snapshot_print - Print out a the contents of a provided Guc-Err-Capture node > + * @guc : Target GuC for operation. > + * @node: GuC Error Capture register dump node. > * @p: drm_printer where it will be printed out. > * > - * This function prints out a given Xe HW Engine snapshot object. > + * This function prints out a register dump of a GuC-Err-Capture node that was retrieved > + * earlier either by GuC-FW reporting or by manual capture depending on how the > + * caller (typically xe_hw_engine_snapshot) was invoked and used. > */ > -void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p) > + > +void xe_guc_capture_snapshot_print(struct xe_guc *guc, struct xe_guc_capture_snapshot *node, > + struct drm_printer *p) > { > const char *grptype[GUC_STATE_CAPTURE_GROUP_TYPE_MAX] = { > "full-capture", > "partial-capture" > }; > - int type; > const struct __guc_mmio_reg_descr_group *list; > - enum guc_capture_list_class_type capture_class; > - > struct xe_gt *gt; > - struct xe_device *xe; > - struct xe_devcoredump *devcoredump; > - struct xe_devcoredump_snapshot *devcore_snapshot; > + int type; > > - if (!snapshot) > + if (!guc) > return; > - > - gt = snapshot->hwe->gt; > - xe = gt_to_xe(gt); > - devcoredump = &xe->devcoredump; > - devcore_snapshot = &devcoredump->snapshot; > - > - if (!devcore_snapshot->matched_node) > + gt = guc_to_gt(guc); > + if (!node) { > + xe_gt_warn(gt, "GuC Capture printing without node!\n"); > return; > + } > + if (!p) { > + xe_gt_warn(gt, "GuC Capture printing without printer!\n"); > + return; > + } > > - xe_gt_assert(gt, snapshot->hwe); > - > - capture_class = xe_engine_class_to_guc_capture_class(snapshot->hwe->class); > - > - drm_printf(p, "%s (physical), logical instance=%d\n", > - snapshot->name ? snapshot->name : "", > - snapshot->logical_instance); > drm_printf(p, "\tCapture_source: %s\n", > - devcore_snapshot->matched_node->source == XE_ENGINE_CAPTURE_SOURCE_GUC ? > + node->source == XE_ENGINE_CAPTURE_SOURCE_GUC ? > "GuC" : "Manual"); > - drm_printf(p, "\tCoverage: %s\n", grptype[devcore_snapshot->matched_node->is_partial]); > - drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", > - snapshot->forcewake.domain, snapshot->forcewake.ref); > - drm_printf(p, "\tReserved: %s\n", > - str_yes_no(snapshot->kernel_reserved)); I see this change seperate capture related print into this function. I like this idea. > + drm_printf(p, "\tCoverage: %s\n", grptype[node->is_partial]); > > for (type = GUC_STATE_CAPTURE_TYPE_GLOBAL; type < GUC_STATE_CAPTURE_TYPE_MAX; type++) { > list = xe_guc_capture_get_reg_desc_list(gt, GUC_CAPTURE_LIST_INDEX_PF, type, > - capture_class, false); > - snapshot_print_by_list_order(snapshot, p, type, list); > + node->eng_class, false); > + print_noderegs_by_list_order(guc, &node->reginfo[type], list, p); > } > > - if (capture_class == GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE) { > + if (node->eng_class == GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE) { > + type = GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS; > list = xe_guc_capture_get_reg_desc_list(gt, GUC_CAPTURE_LIST_INDEX_PF, > - GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS, > - capture_class, true); > - snapshot_print_by_list_order(snapshot, p, GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS, > - list); > + type, node->eng_class, true); > + print_noderegs_by_list_order(guc, &node->reginfo[type], list, p); > } > - > drm_puts(p, "\n"); > } > > /** > - * xe_guc_capture_get_matching_and_lock - Matching GuC capture for the queue. > - * @q: The exec queue object > + * xe_guc_capture_snapshot_get - Matching GuC capture for the queue. > + * > + * @guc: The GuC being searched for a matching guc-error-capture snapshot. > + * @q: The exec queue object that provides engine, guc-id and lrca to match (can be NULL!) > + * @src: The source of the GuC-error-Capture snapshot to retrieve; > * > * Search within the capture outlist for the queue, could be used for check if > * GuC capture is ready for the queue. > @@ -1802,28 +1799,31 @@ void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm > * > * Returns: found guc-capture node ptr else NULL > */ > -struct __guc_capture_parsed_output * > -xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > +struct xe_guc_capture_snapshot * > +xe_guc_capture_snapshot_get(struct xe_guc *guc, struct xe_exec_queue *q, > + enum xe_guc_capture_snapshot_source src) > { > struct xe_hw_engine *hwe; > enum xe_hw_engine_id id; > + struct xe_gt *gt; > struct xe_device *xe; > u16 guc_class = GUC_LAST_ENGINE_CLASS + 1; > - struct xe_devcoredump_snapshot *ss; > > - if (!q || !q->gt) > + if (!guc) > return NULL; > > - xe = gt_to_xe(q->gt); > - if (xe->wedged.mode >= 2 || !xe_device_uc_enabled(xe) || IS_SRIOV_VF(xe)) > + gt = guc_to_gt(guc); > + if (q && q->gt != gt) { > + xe_gt_warn(gt, "Guc-Err-Capture being querried with incorrect queue's GT!"); > return NULL; > + } > > - ss = &xe->devcoredump.snapshot; > - if (ss->matched_node && ss->matched_node->source == XE_ENGINE_CAPTURE_SOURCE_GUC) > - return ss->matched_node; > + xe = gt_to_xe(gt); > + if (xe->wedged.mode >= 2 || !xe_device_uc_enabled(xe) || IS_SRIOV_VF(xe)) > + return NULL; > > /* Find hwe for the queue */ > - for_each_hw_engine(hwe, q->gt, id) { > + for_each_hw_engine(hwe, gt, id) { > if (hwe != q->hwe) > continue; > guc_class = xe_engine_class_to_guc_class(hwe->class); > @@ -1831,8 +1831,7 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > } > > if (guc_class <= GUC_LAST_ENGINE_CLASS) { > - struct __guc_capture_parsed_output *n, *ntmp; > - struct xe_guc *guc = &q->gt->uc.guc; > + struct xe_guc_capture_snapshot *n, *ntmp; > u16 guc_id = q->guc->id; > u32 lrca = xe_lrc_ggtt_addr(q->lrc[0]); > > @@ -1844,8 +1843,8 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) { > if (n->eng_class == guc_class && n->eng_inst == hwe->instance && > n->guc_id == guc_id && n->lrca == lrca && > - n->source == XE_ENGINE_CAPTURE_SOURCE_GUC) { > - n->locked = 1; > + n->source == src) { > + n->locked = true; > return n; > } > } > @@ -1853,77 +1852,19 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > return NULL; > } > > -/** > - * xe_engine_snapshot_capture_for_queue - Take snapshot of associated engine > - * @q: The exec queue object > - * > - * Take snapshot of associated HW Engine > - * > - * Returns: None. > - */ > -void > -xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q) > -{ > - struct xe_device *xe = gt_to_xe(q->gt); > - struct xe_devcoredump *coredump = &xe->devcoredump; > - struct xe_hw_engine *hwe; > - enum xe_hw_engine_id id; > - u32 adj_logical_mask = q->logical_mask; > - > - if (IS_SRIOV_VF(xe)) > - return; > - > - for_each_hw_engine(hwe, q->gt, id) { > - if (hwe->class != q->hwe->class || > - !(BIT(hwe->logical_instance) & adj_logical_mask)) { > - coredump->snapshot.hwe[id] = NULL; > - continue; > - } > - > - if (!coredump->snapshot.hwe[id]) { > - coredump->snapshot.hwe[id] = > - xe_hw_engine_snapshot_capture(hwe, q); > - } else { > - struct __guc_capture_parsed_output *new; > - > - new = xe_guc_capture_get_matching_and_lock(q); > - if (new) { > - struct xe_guc *guc = &q->gt->uc.guc; > - > - /* > - * If we are in here, it means we found a fresh > - * GuC-err-capture node for this engine after > - * previously failing to find a match in the > - * early part of guc_exec_queue_timedout_job. > - * Thus we must free the manually captured node > - */ > - guc_capture_free_outlist_node(guc->capture, > - coredump->snapshot.matched_node); > - coredump->snapshot.matched_node = new; > - } > - } > - > - break; > - } > -} > - > /* > - * xe_guc_capture_put_matched_nodes - Cleanup macthed nodes > + * xe_guc_capture_snapshot_put - Release GuC Capture matched node from a prior snapshot_get > * @guc: The GuC object > + * @node: The node to release back to GuC > * > * Free matched node and all nodes with the equal guc_id from > * GuC captured outlist > */ > -void xe_guc_capture_put_matched_nodes(struct xe_guc *guc) > +void xe_guc_capture_snapshot_put(struct xe_guc *guc, struct xe_guc_capture_snapshot *n) > { > - struct xe_device *xe = guc_to_xe(guc); > - struct xe_devcoredump *devcoredump = &xe->devcoredump; > - struct __guc_capture_parsed_output *n = devcoredump->snapshot.matched_node; > - > if (n) { > guc_capture_remove_stale_matches_from_list(guc->capture, n); > guc_capture_free_outlist_node(guc->capture, n); > - devcoredump->snapshot.matched_node = NULL; > } > } > > diff --git a/drivers/gpu/drm/xe/xe_guc_capture.h b/drivers/gpu/drm/xe/xe_guc_capture.h > index 20a078dc4b85..e85af277be9c 100644 > --- a/drivers/gpu/drm/xe/xe_guc_capture.h > +++ b/drivers/gpu/drm/xe/xe_guc_capture.h > @@ -11,10 +11,7 @@ > #include "xe_guc.h" > #include "xe_guc_fwif.h" > > -struct xe_exec_queue; > struct xe_guc; > -struct xe_hw_engine; > -struct xe_hw_engine_snapshot; > > static inline enum guc_capture_list_class_type xe_guc_class_to_capture_class(u16 class) > { > @@ -44,18 +41,13 @@ void xe_guc_capture_process(struct xe_guc *guc); > int xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, > enum guc_capture_list_class_type capture_class, void **outptr); > int xe_guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, > - enum guc_capture_list_class_type capture_class, size_t *size); > + enum guc_capture_list_class_type capture_class, size_t *size); > int xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size); > size_t xe_guc_capture_ads_input_worst_size(struct xe_guc *guc); > const struct __guc_mmio_reg_descr_group * > xe_guc_capture_get_reg_desc_list(struct xe_gt *gt, u32 owner, u32 type, > enum guc_capture_list_class_type capture_class, bool is_ext); > -struct __guc_capture_parsed_output *xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q); > -void xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot); > -void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p); > -void xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q); > void xe_guc_capture_steered_list_init(struct xe_guc *guc); > -void xe_guc_capture_put_matched_nodes(struct xe_guc *guc); > int xe_guc_capture_init(struct xe_guc *guc); > > #endif > diff --git a/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h b/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h > new file mode 100644 > index 000000000000..76159cb8fcab > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h > @@ -0,0 +1,68 @@ > +/* SPDX-License-Identifier: MIT */ > +/* > + * Copyright © 2021-2024 Intel Corporation > + */ > + > +#ifndef _XE_GUC_CAPTURE_SNAPSHOT_TYPES_H > +#define _XE_GUC_CAPTURE_SNAPSHOT_TYPES_H > + > +#include <linux/types.h> > +#include <abi/guc_capture_abi.h> > +#include "xe_guc_fwif.h" > + > +struct drm_printer; > +struct guc_mmio_reg; > +struct xe_guc; > +struct xe_exec_queue; > +struct xe_hw_engine; > + > +enum xe_guc_capture_snapshot_source { > + XE_ENGINE_CAPTURE_SOURCE_MANUAL, > + XE_ENGINE_CAPTURE_SOURCE_GUC > +}; > + > +/* > + * struct xe_guc_capture_snapshot - extracted error capture node > + * > + * A single unit of extracted error-capture output data grouped together > + * at an engine-instance level. We keep these nodes in a linked list. > + * See cachelist and outlist below. > + */ > +struct xe_guc_capture_snapshot { > + /* > + * A single set of 3 capture lists: a global-list > + * an engine-class-list and an engine-instance list. > + * outlist in __guc_capture_parsed_output will keep > + * a linked list of these nodes that will eventually > + * be detached from outlist and attached into to > + * xe_codedump in response to a context reset > + */ > + struct list_head link; > + bool is_partial; > + u32 eng_class; > + u32 eng_inst; > + u32 guc_id; > + u32 lrca; > + u32 type; > + bool locked; > + enum xe_guc_capture_snapshot_source source; > + struct gcap_reg_list_info { > + u32 vfid; > + u32 num_regs; > + struct guc_mmio_reg *regs; > + } reginfo[GUC_STATE_CAPTURE_TYPE_MAX]; > +#define GCAP_PARSED_REGLIST_INDEX_GLOBAL BIT(GUC_STATE_CAPTURE_TYPE_GLOBAL) > +#define GCAP_PARSED_REGLIST_INDEX_ENGCLASS BIT(GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS) > +}; > + > +struct xe_guc_capture_snapshot * > +xe_guc_capture_snapshot_get(struct xe_guc *guc, struct xe_exec_queue *q, > + enum xe_guc_capture_snapshot_source src); > +void xe_guc_capture_snapshot_print(struct xe_guc *guc, struct xe_guc_capture_snapshot *node, > + struct drm_printer *p); > +void xe_guc_capture_snapshot_put(struct xe_guc *guc, struct xe_guc_capture_snapshot *snapshot); > +void xe_guc_capture_snapshot_store_manual_job(struct xe_guc *guc, struct xe_exec_queue *q); > +struct xe_guc_capture_snapshot * > +xe_guc_capture_snapshot_store_and_get_manual_hwe(struct xe_guc *guc, struct xe_hw_engine *hwe); > + > +#endif > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c > index f9ecee5364d8..30c2bdf51958 100644 > --- a/drivers/gpu/drm/xe/xe_guc_submit.c > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c > @@ -28,6 +28,7 @@ > #include "xe_gt_printk.h" > #include "xe_guc.h" > #include "xe_guc_capture.h" > +#include "xe_guc_capture_snapshot_types.h" > #include "xe_guc_ct.h" > #include "xe_guc_exec_queue_types.h" > #include "xe_guc_id_mgr.h" > @@ -1033,7 +1034,6 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) > struct xe_gpu_scheduler *sched = &q->guc->sched; > struct xe_guc *guc = exec_queue_to_guc(q); > const char *process_name = "no process"; > - struct xe_device *xe = guc_to_xe(guc); > unsigned int fw_ref; > int err = -ETIME; > pid_t pid = -1; > @@ -1062,18 +1062,23 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) > exec_queue_destroyed(q); > > /* > - * If devcoredump not captured and GuC capture for the job is not ready > - * do manual capture first and decide later if we need to use it > + * If the queue has't been killed yet or we do not have a firmware-reported > + * GuC-Error-Capture node for the matching job, request GuC-Error-Capture to > + * store a manual capture within its internal list with a job-match. > + * xe_hw_engine_snapshot will decide later if it's needed. > */ > - if (!exec_queue_killed(q) && !xe->devcoredump.captured && > - !xe_guc_capture_get_matching_and_lock(q)) { > + if (!exec_queue_killed(q) || || or && ? If we already got GuC capture, no need for manual capture > + !xe_guc_capture_snapshot_get(guc, q, XE_ENGINE_CAPTURE_SOURCE_GUC)) { I see !xe->devcoredump.captured check is missing, any concerns? Right now, if devcoredump already captured, we don't need the manual capture. > /* take force wake before engine register manual capture */ > fw_ref = xe_force_wake_get(gt_to_fw(q->gt), XE_FORCEWAKE_ALL); > if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) > xe_gt_info(q->gt, "failed to get forcewake for coredump capture\n"); > - > - xe_engine_snapshot_capture_for_queue(q); > - > + /* > + * This will generate a manual capture node and store it in > + * This GuC Error Capture link-list as if it came from GuC > + * but with a source-id == manual-capture > + */ > + xe_guc_capture_snapshot_store_manual_job(guc, q); > xe_force_wake_put(gt_to_fw(q->gt), fw_ref); > } > > diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c > index c4b0dc3be39c..ddd91627e623 100644 > --- a/drivers/gpu/drm/xe/xe_hw_engine.c > +++ b/drivers/gpu/drm/xe/xe_hw_engine.c > @@ -24,7 +24,8 @@ > #include "xe_gt_printk.h" > #include "xe_gt_mcr.h" > #include "xe_gt_topology.h" > -#include "xe_guc_capture.h" > +//#include "xe_guc_capture.h" > +#include "xe_guc_capture_snapshot_types.h" > #include "xe_hw_engine_group.h" > #include "xe_hw_fence.h" > #include "xe_irq.h" > @@ -827,9 +828,9 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec) > } > > /** > - * xe_hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine. > + * hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine. > * @hwe: Xe HW Engine. > - * @q: The exec queue object. > + * @q: The exec queue object. (can be NULL for debugfs engine-register dump) > * > * This can be printed out in a later stage like during dev_coredump > * analysis. > @@ -837,11 +838,12 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec) > * Returns: a Xe HW Engine snapshot object that must be freed by the > * caller, using `xe_hw_engine_snapshot_free`. > */ > -struct xe_hw_engine_snapshot * > -xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) > +static struct xe_hw_engine_snapshot * > +hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) > { > struct xe_hw_engine_snapshot *snapshot; > - struct __guc_capture_parsed_output *node; > + struct xe_guc_capture_snapshot *manual_node; > + struct xe_guc *guc; > > if (!xe_hw_engine_is_valid(hwe)) > return NULL; > @@ -865,25 +867,66 @@ xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) > return snapshot; > > if (q) { > - /* If got guc capture, set source to GuC */ > - node = xe_guc_capture_get_matching_and_lock(q); > - if (node) { > - struct xe_device *xe = gt_to_xe(hwe->gt); > - struct xe_devcoredump *coredump = &xe->devcoredump; > - > - coredump->snapshot.matched_node = node; > - xe_gt_dbg(hwe->gt, "Found and locked GuC-err-capture node"); > - return snapshot; > + guc = &q->gt->uc.guc; > + /* First find the pre-kill manual GuC-Err-Capture node for this job */ > + manual_node = xe_guc_capture_snapshot_get(guc, q, > + XE_ENGINE_CAPTURE_SOURCE_MANUAL); > + > + /* Next, look for the GuC-Firmware reported node for this job */ > + snapshot->matched_node = xe_guc_capture_snapshot_get(guc, q, > + XE_ENGINE_CAPTURE_SOURCE_GUC); > + if (!snapshot->matched_node) { > + xe_gt_dbg(hwe->gt, "Can't find GUC-Sourced err-capture node"); > + snapshot->matched_node = manual_node; > + } else if (manual_node) { > + /* looks like we don't need the manually-captured node, return it */ > + xe_guc_capture_snapshot_put(guc, manual_node); > } > } > > - /* otherwise, do manual capture */ > - xe_engine_manual_capture(hwe, snapshot); > - xe_gt_dbg(hwe->gt, "Proceeding with manual engine snapshot"); > + if (!snapshot->matched_node) { > + guc = &hwe->gt->uc.guc; > + /* > + * Fallback path - do an immediate jobless manual engine capture. > + * This will happen when debugfs is triggered to force an engine dump. > + */ > + snapshot->matched_node = xe_guc_capture_snapshot_store_and_get_manual_hwe(guc, hwe); > + xe_gt_dbg(hwe->gt, "Fallback to jobless-manual-err-capture node"); > + } > > return snapshot; > } > > +/** > + * xe_engine_snapshot_capture_for_queue - Take snapshot of associated engine > + * @q: The exec queue object > + * > + * Take snapshot of associated HW Engine > + * > + * Returns: None. > + */ > +void > +xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q) > +{ > + struct xe_device *xe = gt_to_xe(q->gt); > + struct xe_devcoredump *coredump = &xe->devcoredump; > + struct xe_hw_engine *hwe; > + enum xe_hw_engine_id id; > + u32 adj_logical_mask = q->logical_mask; > + > + if (IS_SRIOV_VF(xe)) > + return; > + > + for_each_hw_engine(hwe, q->gt, id) { > + if (hwe->class != q->hwe->class || > + !(BIT(hwe->logical_instance) & adj_logical_mask)) { > + coredump->snapshot.hwe[id] = NULL; > + continue; > + } > + coredump->snapshot.hwe[id] = hw_engine_snapshot_capture(hwe, q); > + } > +} > + > /** > * xe_hw_engine_snapshot_free - Free all allocated objects for a given snapshot. > * @snapshot: Xe HW Engine snapshot object. > @@ -898,17 +941,41 @@ void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot) > return; > > gt = snapshot->hwe->gt; > - /* > - * xe_guc_capture_put_matched_nodes is called here and from > - * xe_devcoredump_snapshot_free, to cover the 2 calling paths > - * of hw_engines - debugfs and devcoredump free. > - */ > - xe_guc_capture_put_matched_nodes(>->uc.guc); > + xe_guc_capture_snapshot_put(>->uc.guc, snapshot->matched_node); > + snapshot->matched_node = NULL; > > kfree(snapshot->name); > kfree(snapshot); > } > > +/** > + * xe_engine_snapshot_print - Print out a given Xe HW Engine snapshot. > + * @snapshot: Xe HW Engine snapshot object. > + * @p: drm_printer where it will be printed out. > + * > + * This function prints out a given Xe HW Engine snapshot object. > + */ > +void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p) > +{ > + struct xe_gt *gt; > + > + if (!snapshot) > + return; > + > + gt = snapshot->hwe->gt; > + > + drm_printf(p, "%s (physical), logical instance=%d\n", > + snapshot->name ? snapshot->name : "", > + snapshot->logical_instance); > + drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", > + snapshot->forcewake.domain, snapshot->forcewake.ref); > + drm_printf(p, "\tReserved: %s\n", > + str_yes_no(snapshot->kernel_reserved)); > + drm_puts(p, "\n"); > + > + xe_guc_capture_snapshot_print(>->uc.guc, snapshot->matched_node, p); > +} > + > /** > * xe_hw_engine_print - Xe HW Engine Print. > * @hwe: Hardware Engine. > @@ -920,7 +987,7 @@ void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p) > { > struct xe_hw_engine_snapshot *snapshot; > > - snapshot = xe_hw_engine_snapshot_capture(hwe, NULL); > + snapshot = hw_engine_snapshot_capture(hwe, NULL); > xe_engine_snapshot_print(snapshot, p); > xe_hw_engine_snapshot_free(snapshot); > } > diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h > index 6b5f9fa2a594..845153fbc149 100644 > --- a/drivers/gpu/drm/xe/xe_hw_engine.h > +++ b/drivers/gpu/drm/xe/xe_hw_engine.h > @@ -55,9 +55,9 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); > void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe); > u32 xe_hw_engine_mask_per_class(struct xe_gt *gt, > enum xe_engine_class engine_class); > -struct xe_hw_engine_snapshot * > -xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q); > +void xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q); > void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot); > +void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p); > void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p); > void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe); > > diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h > index e14bee95e364..ea6b60c819d4 100644 > --- a/drivers/gpu/drm/xe/xe_hw_engine_types.h > +++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h > @@ -152,11 +152,7 @@ struct xe_hw_engine { > struct xe_hw_engine_group *hw_engine_group; > }; > > -enum xe_hw_engine_snapshot_source_id { > - XE_ENGINE_CAPTURE_SOURCE_MANUAL, > - XE_ENGINE_CAPTURE_SOURCE_GUC > -}; > - > +struct xe_guc_capture_snapshot; > /** > * struct xe_hw_engine_snapshot - Hardware engine snapshot > * > @@ -180,6 +176,13 @@ struct xe_hw_engine_snapshot { > u32 mmio_base; > /** @kernel_reserved: Engine reserved, can't be used by userspace */ > bool kernel_reserved; > + /** > + * @matched_node: GuC Capture snapshot: > + * The matched capture node for the timedout job > + * this single-node tracker works because devcoredump will always only > + * produce one hw-engine capture per devcoredump event > + */ > + struct xe_guc_capture_snapshot *matched_node; > }; > > #endif ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] drm/xe/guc/capture: Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-26 17:09 ` Dong, Zhanjun @ 2024-12-03 3:12 ` Teres Alexis, Alan Previn 0 siblings, 0 replies; 12+ messages in thread From: Teres Alexis, Alan Previn @ 2024-12-03 3:12 UTC (permalink / raw) To: Dong, Zhanjun, intel-xe@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, Harrison, John C, Brost, Matthew, Ceraolo Spurio, Daniele On Tue, 2024-11-26 at 12:09 -0500, Dong, Zhanjun wrote: > See my comments inline below: > > Regards, > Zhanjun > > On 2024-11-17 1:44 p.m., Alan Previn wrote: > > The order of the devcoredump event flow is: > > drm-scheduler -> guc-submission-execq-timed-out-job -> > > guc-submission-kill-job -> xe-devcoredump (once the work > > is confirmed to have been killed). > > > > As we are aware, the GuC-FW IRQ for error-capture delivery > > and extraction could have happenned before the start of > happened? alan: will fix. > > guc-execq-timed-out-job or the middle of it (before or > > during the explicit kill) or not at all. Thus, today, the > > above flow takes a manual capture first before triggering > > the kill-job just in case we need it. > > > > The structure layering of devcoredump internals are: > > xe_devcoredump_snapshot -> xe_foo_snapshot (where foo > > can be any data dump associated to the job was killed). > > Foo includes the xe_hw_engine_snapshot. Since GuC-Error-Capture > > provides just the register dump of an engine, GuC-Err-Capture > > snapshots should be managed by the xe_hw_engine_snapshot. > > That isn't the case today. > > > > Furthermode, neither xe_devcoredump_snapshot nor > Furthermore? alan: will fix > > xe_hw_engine_snapshot even exists at the start of > > guc-submission-execq-timed-out-job. Thus, the first > > manual capture node has no home. However, today, > > GuC-Error-Capture stores capture snapshots off the > > top-level xe_devcoredump_snapshot's matched_node. > > GuC-Error-Capture also had absorbed the function for > > xe_hw_engine_snapshot generation. > > NOTE: Existing code isn't broken because xe_devcoredump > > is not dynamically allocated and designed to hold a > > single event at a time (i.e. single engine dump). > > But it's not scalable for future improvement. > > > > Thus this patch: > > 1. Moves "matched_node" from xe_devcoredump_snapshot to > > xe_hw_engine_snapshot. > > 2. Relocates the functions for xe_hw_engine_snapshot generation > > and printing back to xe_hw_engine.c. However, split out the > > register dump printing so it stays within GuC-Error-Capture > > (so we don't need to maintain two sets of register lists). > > 3. Keep both the manual and firmware capture nodes within > > GuC-Error-Capture subsystem's linked list until > > xe_hw_engine_snapshot gets and puts them later. > > 4. Give xe_hw_engine_snapshot the control and ability to > > query GuC-Error-Capture for matching snapshots while choosing > > between manual vs firmware capture getting/putting node. > > 5. While at it, relocate (and rename) key structures, enums > > and function protos to xe_guc_capture_snapshot_types.h > > (as an inter-module header) for xe_hw_engine_snapshot to use. > > 6. Since xe_hw_engine_snapshot can also be called by via debugfs > > without a job, create a new function that does a manual capture > > of engine registers without any associated job. > > > > Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com> > > --- > > drivers/gpu/drm/xe/xe_devcoredump.c | 3 - > > drivers/gpu/drm/xe/xe_devcoredump_types.h | 6 - > > drivers/gpu/drm/xe/xe_guc_capture.c | 397 ++++++++---------- > > drivers/gpu/drm/xe/xe_guc_capture.h | 10 +- > > .../drm/xe/xe_guc_capture_snapshot_types.h | 68 +++ > > drivers/gpu/drm/xe/xe_guc_submit.c | 21 +- > > drivers/gpu/drm/xe/xe_hw_engine.c | 117 ++++-- > > drivers/gpu/drm/xe/xe_hw_engine.h | 4 +- > > drivers/gpu/drm/xe/xe_hw_engine_types.h | 13 +- > > 9 files changed, 353 insertions(+), 286 deletions(-) > > create mode 100644 drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h > > > > diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c > > index 0e5edf14a241..b98d71e670ca 100644 > > --- a/drivers/gpu/drm/xe/xe_devcoredump.c > > +++ b/drivers/gpu/drm/xe/xe_devcoredump.c > > @@ -144,9 +144,6 @@ static void xe_devcoredump_snapshot_free(struct xe_devcoredump_snapshot *ss) > > xe_guc_ct_snapshot_free(ss->guc.ct); > > ss->guc.ct = NULL; > > > > - xe_guc_capture_put_matched_nodes(&ss->gt->uc.guc); > > - ss->matched_node = NULL; > > - > > xe_guc_exec_queue_snapshot_free(ss->ge); > > ss->ge = NULL; > > > > diff --git a/drivers/gpu/drm/xe/xe_devcoredump_types.h b/drivers/gpu/drm/xe/xe_devcoredump_types.h > > index be4d59ea9ac8..06ac75ce63dd 100644 > > --- a/drivers/gpu/drm/xe/xe_devcoredump_types.h > > +++ b/drivers/gpu/drm/xe/xe_devcoredump_types.h > > @@ -49,12 +49,6 @@ struct xe_devcoredump_snapshot { > > struct xe_hw_engine_snapshot *hwe[XE_NUM_HW_ENGINES]; > > /** @job: Snapshot of job state */ > > struct xe_sched_job_snapshot *job; > > - /** > > - * @matched_node: The matched capture node for timedout job > > - * this single-node tracker works because devcoredump will always only > > - * produce one hw-engine capture per devcoredump event > > - */ > > - struct __guc_capture_parsed_output *matched_node; > > /** @vm: Snapshot of VM state */ > > struct xe_vm_snapshot *vm; > > > > diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c > > index f87755af545f..691fc72a5c9e 100644 > > --- a/drivers/gpu/drm/xe/xe_guc_capture.c > > +++ b/drivers/gpu/drm/xe/xe_guc_capture.c > > @@ -26,6 +26,7 @@ > > #include "xe_guc_ads.h" > > #include "xe_guc_capture.h" > > #include "xe_guc_capture_types.h" > > +#include "xe_guc_capture_snapshot_types.h" > > #include "xe_guc_ct.h" > > #include "xe_guc_exec_queue_types.h" > > #include "xe_guc_log.h" > > @@ -53,40 +54,6 @@ struct __guc_capture_bufstate { > > u32 wr; > > }; > > > > -/* > > - * struct __guc_capture_parsed_output - extracted error capture node > > - * > > - * A single unit of extracted error-capture output data grouped together > > - * at an engine-instance level. We keep these nodes in a linked list. > > - * See cachelist and outlist below. > > - */ > > -struct __guc_capture_parsed_output { > > - /* > > - * A single set of 3 capture lists: a global-list > > - * an engine-class-list and an engine-instance list. > > - * outlist in __guc_capture_parsed_output will keep > > - * a linked list of these nodes that will eventually > > - * be detached from outlist and attached into to > > - * xe_codedump in response to a context reset > > - */ > > - struct list_head link; > > - bool is_partial; > > - u32 eng_class; > > - u32 eng_inst; > > - u32 guc_id; > > - u32 lrca; > > - u32 type; > > - bool locked; > > - enum xe_hw_engine_snapshot_source_id source; > > - struct gcap_reg_list_info { > > - u32 vfid; > > - u32 num_regs; > > - struct guc_mmio_reg *regs; > > - } reginfo[GUC_STATE_CAPTURE_TYPE_MAX]; > > -#define GCAP_PARSED_REGLIST_INDEX_GLOBAL BIT(GUC_STATE_CAPTURE_TYPE_GLOBAL) > > -#define GCAP_PARSED_REGLIST_INDEX_ENGCLASS BIT(GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS) > > -}; > > - > > /* > > * Define all device tables of GuC error capture register lists > > * NOTE: > > @@ -286,7 +253,7 @@ struct xe_guc_state_capture { > > > > static void > > guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, > > - struct __guc_capture_parsed_output *node); > > + struct xe_guc_capture_snapshot *node); > > > > static const struct __guc_mmio_reg_descr_group * > > guc_capture_get_device_reglist(struct xe_device *xe) > > @@ -840,7 +807,7 @@ static void check_guc_capture_size(struct xe_guc *guc) > > } > > > > static void > > -guc_capture_add_node_to_list(struct __guc_capture_parsed_output *node, > > +guc_capture_add_node_to_list(struct xe_guc_capture_snapshot *node, > > struct list_head *list) > > { > > list_add(&node->link, list); > > @@ -848,7 +815,7 @@ guc_capture_add_node_to_list(struct __guc_capture_parsed_output *node, > > > > static void > > guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc, > > - struct __guc_capture_parsed_output *node) > > + struct xe_guc_capture_snapshot *node) > > { > > guc_capture_remove_stale_matches_from_list(gc, node); > > guc_capture_add_node_to_list(node, &gc->outlist); > > @@ -856,17 +823,17 @@ guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc, > > > > static void > > guc_capture_add_node_to_cachelist(struct xe_guc_state_capture *gc, > > - struct __guc_capture_parsed_output *node) > > + struct xe_guc_capture_snapshot *node) > > { > > guc_capture_add_node_to_list(node, &gc->cachelist); > > } > > > > static void > > guc_capture_free_outlist_node(struct xe_guc_state_capture *gc, > > - struct __guc_capture_parsed_output *n) > > + struct xe_guc_capture_snapshot *n) > > { > > if (n) { > > - n->locked = 0; > > + n->locked = false; > > list_del(&n->link); > > /* put node back to cache list */ > > guc_capture_add_node_to_cachelist(gc, n); > > @@ -875,9 +842,9 @@ guc_capture_free_outlist_node(struct xe_guc_state_capture *gc, > > > > static void > > guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, > > - struct __guc_capture_parsed_output *node) > > + struct xe_guc_capture_snapshot *node) > > { > > - struct __guc_capture_parsed_output *n, *ntmp; > > + struct xe_guc_capture_snapshot *n, *ntmp; > > int guc_id = node->guc_id; > > > > list_for_each_entry_safe(n, ntmp, &gc->outlist, link) { > > @@ -887,7 +854,7 @@ guc_capture_remove_stale_matches_from_list(struct xe_guc_state_capture *gc, > > } > > > > static void > > -guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *node) > > +guc_capture_init_node(struct xe_guc *guc, struct xe_guc_capture_snapshot *node) > > { > > struct guc_mmio_reg *tmp[GUC_STATE_CAPTURE_TYPE_MAX]; > > int i; > > @@ -934,24 +901,31 @@ guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *no > > * This node is created from a pre-allocated list of blank nodes in > > * guc->capture->cachelist and populated with the error-capture > > * data from GuC and then it's added into guc->capture->outlist linked > > - * list. This list is used for matchup and printout by xe_devcoredump_read > > - * and xe_engine_snapshot_print, (when user invokes the devcoredump sysfs). > > + * list. This node (dumped-register-lists) will be requested later by > > + * xe_hwe_engine_snapshot creation. > > * > > - * GUC --> notify context reset: > > - * ----------------------------- > > + * DRM Scheduler job-timeout OR GuC-notify guc-id reset: > > + * ----------------------------------------------------- > > * --> guc_exec_queue_timedout_job > > - * L--> xe_devcoredump > > - * L--> devcoredump_snapshot > > - * --> xe_hw_engine_snapshot_capture > > - * --> xe_engine_manual_capture(For manual capture) > > + * L--> alloc D: xe_guc_capture_snapshot_store_manual_job > > + * (only if "alloc C" above didn't happen) > > + * L--> devcoredump_snapshot > > + * --> xe_engine_snapshot_capture_for_queue(q) .. > > + * --> xe_guc_capture_snapshot_get(q) > > + * use "alloc C" or else "alloc D" > > + * --> store in xe_hw_engine_snapshot->matched_node > > * > > - * User Sysfs / Debugfs > > - * -------------------- > > - * --> xe_devcoredump_read-> > > + * User Devcoredump Sysfs > > + * ---------------------- > > + * --> xe_devcoredump_read-> (user cats devcoredump) > > * L--> xxx_snapshot_print > > * L--> xe_engine_snapshot_print > > - * Print register lists values saved at > > - * guc->capture->outlist > > + * L --> xe_guc_capture_snapshot_print (for printing register > > + * lists values of xe_hw_engine_snapshot->matched_node) > > + * --> xe_devcoredump_free (user clears devcoredump) > > + * L--> xe_devcoredump_free -> xe_devcoredump_snapshot_free > > + * L--> xe_hw_engine_snapshot_free > > + * L--> xe_guc_capture_snapshot_put(matched_node) > > * > > */ > > > > @@ -1066,13 +1040,13 @@ guc_capture_log_get_register(struct xe_guc *guc, struct __guc_capture_bufstate * > > return 0; > > } > > > > -static struct __guc_capture_parsed_output * > > +static struct xe_guc_capture_snapshot * > > guc_capture_get_prealloc_node(struct xe_guc *guc) > > { > > - struct __guc_capture_parsed_output *found = NULL; > > + struct xe_guc_capture_snapshot *found = NULL; > > > > if (!list_empty(&guc->capture->cachelist)) { > > - struct __guc_capture_parsed_output *n, *ntmp; > > + struct xe_guc_capture_snapshot *n, *ntmp; > > > > /* get first avail node from the cache list */ > > list_for_each_entry_safe(n, ntmp, &guc->capture->cachelist, link) { > > @@ -1080,7 +1054,7 @@ guc_capture_get_prealloc_node(struct xe_guc *guc) > > break; > > } > > } else { > > - struct __guc_capture_parsed_output *n, *ntmp; > > + struct xe_guc_capture_snapshot *n, *ntmp; > > > > /* > > * traverse reversed and steal back the oldest node already > > @@ -1099,11 +1073,11 @@ guc_capture_get_prealloc_node(struct xe_guc *guc) > > return found; > > } > > > > -static struct __guc_capture_parsed_output * > > -guc_capture_clone_node(struct xe_guc *guc, struct __guc_capture_parsed_output *original, > > +static struct xe_guc_capture_snapshot * > > +guc_capture_clone_node(struct xe_guc *guc, struct xe_guc_capture_snapshot *original, > > u32 keep_reglist_mask) > > { > > - struct __guc_capture_parsed_output *new; > > + struct xe_guc_capture_snapshot *new; > > int i; > > > > new = guc_capture_get_prealloc_node(guc); > > @@ -1145,7 +1119,7 @@ guc_capture_extract_reglists(struct xe_guc *guc, struct __guc_capture_bufstate * > > struct xe_gt *gt = guc_to_gt(guc); > > struct guc_state_capture_group_header_t ghdr = {0}; > > struct guc_state_capture_header_t hdr = {0}; > > - struct __guc_capture_parsed_output *node = NULL; > > + struct xe_guc_capture_snapshot *node = NULL; > > struct guc_mmio_reg *regs = NULL; > > int i, numlists, numregs, ret = 0; > > enum guc_state_capture_type datatype; > > @@ -1438,11 +1412,11 @@ void xe_guc_capture_process(struct xe_guc *guc) > > __guc_capture_process_output(guc); > > } > > > > -static struct __guc_capture_parsed_output * > > +static struct xe_guc_capture_snapshot * > > guc_capture_alloc_one_node(struct xe_guc *guc) > > { > > struct drm_device *drm = guc_to_drm(guc); > > - struct __guc_capture_parsed_output *new; > > + struct xe_guc_capture_snapshot *new; > > int i; > > > > new = drmm_kzalloc(drm, sizeof(*new), GFP_KERNEL); > > @@ -1467,7 +1441,7 @@ guc_capture_alloc_one_node(struct xe_guc *guc) > > static void > > __guc_capture_create_prealloc_nodes(struct xe_guc *guc) > > { > > - struct __guc_capture_parsed_output *node = NULL; > > + struct xe_guc_capture_snapshot *node = NULL; > > int i; > > > > for (i = 0; i < PREALLOC_NODES_MAX_COUNT; ++i) { > All above is about renaming structure or comments, that's fine. alan: yes, thats right, this plumbing refactor allows the xe_hw_engine_capture to get and put a guc-matching-node or manual-capture-node and exposing a handle type to an external subsystem means we should prefix it with the standard naming "xe_guc" in front. > > > @@ -1564,35 +1538,18 @@ read_reg_to_node(struct xe_hw_engine *hwe, const struct __guc_mmio_reg_descr_gro > > } > > } > > > > -/** > > - * xe_engine_manual_capture - Take a manual engine snapshot from engine. > > - * @hwe: Xe HW Engine. > > - * @snapshot: The engine snapshot > > - * > > - * Take engine snapshot from engine read. > > - * > > - * Returns: None > > - */ > > -void > > -xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot) > > +static struct xe_guc_capture_snapshot * > > +guc_capture_get_manual_snapshot(struct xe_guc *guc, struct xe_hw_engine *hwe) > > { > > struct xe_gt *gt = hwe->gt; > > - struct xe_device *xe = gt_to_xe(gt); > > - struct xe_guc *guc = >->uc.guc; > > - struct xe_devcoredump *devcoredump = &xe->devcoredump; > > enum guc_capture_list_class_type capture_class; > > const struct __guc_mmio_reg_descr_group *list; > > - struct __guc_capture_parsed_output *new; > > + struct xe_guc_capture_snapshot *new; > > enum guc_state_capture_type type; > > - u16 guc_id = 0; > > - u32 lrca = 0; > > - > > - if (IS_SRIOV_VF(xe)) > > - return; > > > > new = guc_capture_get_prealloc_node(guc); > > if (!new) > > - return; > > + return NULL; > > > > capture_class = xe_engine_class_to_guc_capture_class(hwe->class); > > for (type = GUC_STATE_CAPTURE_TYPE_GLOBAL; type < GUC_STATE_CAPTURE_TYPE_MAX; type++) { > > @@ -1626,26 +1583,83 @@ xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot > > } > > } > > > > - if (devcoredump && devcoredump->captured) { > > - struct xe_guc_submit_exec_queue_snapshot *ge = devcoredump->snapshot.ge; > > + new->eng_class = xe_engine_class_to_guc_class(hwe->class); > > + new->eng_inst = hwe->instance; > > > > - if (ge) { > > - guc_id = ge->guc.id; > > - if (ge->lrc[0]) > > - lrca = ge->lrc[0]->context_desc; > > - } > > + return new; > > +} > > + > > +/** > > + * xe_guc_capture_snapshot_store_and_get_manual_hwe - Generate and get manual engine register dump > > + * @guc: Target GuC for manual capture > > + * @hwe: The engine instance to capture from > > + * > > + * Generate a manual GuC-Error-Capture snapshot of engine instance + engine class registers > > + * without any queue association. This capture node is not stored in outlist or cachelist, > > + * Returns: New capture node and caller must "put" > > + */ > > +struct xe_guc_capture_snapshot * > > +xe_guc_capture_snapshot_store_and_get_manual_hwe(struct xe_guc *guc, struct xe_hw_engine *hwe) > > +{ > > + struct xe_guc_capture_snapshot *new; > > + > > + new = guc_capture_get_manual_snapshot(guc, hwe); > > + if (!new) > > + return NULL; > > + > > + new->guc_id = 0; > > + new->lrca = 0; > > + new->is_partial = 0; > > + new->source = XE_ENGINE_CAPTURE_SOURCE_MANUAL; > > + > > + return new; > > +} > > + > > +/** > > + * xe_guc_capture_snapshot_store_manual_job - Generate and store a manual engine register dump > > + * @guc: Target GuC for manual capture > > + * @q: Associated xe_exec_queue to simulate a manual capture on its behalf. > > + * > > + * Generate a manual GuC-Error-Capture snapshot of engine instance + engine class registers > > + * for the engine of the given exec queue. Stores this node in internal outlist for future > > + * retrieval with the ability to match up against the same queue. > > + * > > + * Returns: None > > + */ > > +void > > +xe_guc_capture_snapshot_store_manual_job(struct xe_guc *guc, struct xe_exec_queue *q) > > +{ > > + struct xe_guc_capture_snapshot *new; > > + struct xe_gt *gt = guc_to_gt(guc); > > + struct xe_hw_engine *hwe; > > + enum xe_hw_engine_id id; > > + > > + if (q) { > > + xe_gt_warn(gt, "Manual GuC Error capture requested with invalid job\n"); > > + return; > > } > Need to do SRIOV check here or at timedout job > if (IS_SRIOV_VF(xe)) > return; > for compareration, the existing implementation is > guc_exec_queue_timedout_job > xe_engine_snapshot_capture_for_queue > which did the SRIOV check. > alan: good catch - thanks - I'll add that bailout. > > > > - new->eng_class = xe_engine_class_to_guc_class(hwe->class); > > - new->eng_inst = hwe->instance; > > - new->guc_id = guc_id; > > - new->lrca = lrca; > > + /* Find hwe for the queue */ > > + for_each_hw_engine(hwe, gt, id) { > > + if (hwe != q->hwe) > > + continue; > > + break; > > + } > > + > > + new = guc_capture_get_manual_snapshot(guc, hwe); > > + if (!new) > > + return; > > + > > + new->guc_id = q->guc->id; > > + new->lrca = xe_lrc_ggtt_addr(q->lrc[0]); > > new->is_partial = 0; > > - new->locked = 1; > > + /* lock manual captures until devcoredump-engine puts it */ > > + new->locked = true; > > new->source = XE_ENGINE_CAPTURE_SOURCE_MANUAL; > > > > guc_capture_add_node_to_outlist(guc->capture, new); > > - devcoredump->snapshot.matched_node = new; > > + > > + return; > > } > > > > static struct guc_mmio_reg * > > @@ -1666,24 +1680,16 @@ guc_capture_find_reg(struct gcap_reg_list_info *reginfo, u32 addr, u32 flags) > > } > > > > static void > > -snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p, > > - u32 type, const struct __guc_mmio_reg_descr_group *list) > > +print_noderegs_by_list_order(struct xe_guc *guc, struct gcap_reg_list_info *reginfo, > > + const struct __guc_mmio_reg_descr_group *list, struct drm_printer *p) > > { > > - struct xe_gt *gt = snapshot->hwe->gt; > > - struct xe_device *xe = gt_to_xe(gt); > > - struct xe_guc *guc = >->uc.guc; > > - struct xe_devcoredump *devcoredump = &xe->devcoredump; > > - struct xe_devcoredump_snapshot *devcore_snapshot = &devcoredump->snapshot; > > - struct gcap_reg_list_info *reginfo = NULL; > > u32 last_value, i; > > bool is_ext; > > > > if (!list || list->num_regs == 0) > > return; > > - XE_WARN_ON(!devcore_snapshot->matched_node); > > > > is_ext = list == guc->capture->extlists; > > - reginfo = &devcore_snapshot->matched_node->reginfo[type]; > > > > /* > > * loop through descriptor first and find the register in the node > > @@ -1717,7 +1723,7 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_ > > > > group = FIELD_GET(GUC_REGSET_STEERING_GROUP, reg_desc->flags); > > instance = FIELD_GET(GUC_REGSET_STEERING_INSTANCE, reg_desc->flags); > > - dss = xe_gt_mcr_steering_info_to_dss_id(gt, group, instance); > > + dss = xe_gt_mcr_steering_info_to_dss_id(guc_to_gt(guc), group, instance); > > > > drm_printf(p, "\t%s[%u]: 0x%08x\n", reg_desc->regname, dss, value); > > } else { > > @@ -1727,74 +1733,65 @@ snapshot_print_by_list_order(struct xe_hw_engine_snapshot *snapshot, struct drm_ > > } > > > > /** > > - * xe_engine_snapshot_print - Print out a given Xe HW Engine snapshot. > > - * @snapshot: Xe HW Engine snapshot object. > > + * xe_guc_capture_snapshot_print - Print out a the contents of a provided Guc-Err-Capture node > > + * @guc : Target GuC for operation. > > + * @node: GuC Error Capture register dump node. > > * @p: drm_printer where it will be printed out. > > * > > - * This function prints out a given Xe HW Engine snapshot object. > > + * This function prints out a register dump of a GuC-Err-Capture node that was retrieved > > + * earlier either by GuC-FW reporting or by manual capture depending on how the > > + * caller (typically xe_hw_engine_snapshot) was invoked and used. > > */ > > -void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p) > > + > > +void xe_guc_capture_snapshot_print(struct xe_guc *guc, struct xe_guc_capture_snapshot *node, > > + struct drm_printer *p) > > { > > const char *grptype[GUC_STATE_CAPTURE_GROUP_TYPE_MAX] = { > > "full-capture", > > "partial-capture" > > }; > > - int type; > > const struct __guc_mmio_reg_descr_group *list; > > - enum guc_capture_list_class_type capture_class; > > - > > struct xe_gt *gt; > > - struct xe_device *xe; > > - struct xe_devcoredump *devcoredump; > > - struct xe_devcoredump_snapshot *devcore_snapshot; > > + int type; > > > > - if (!snapshot) > > + if (!guc) > > return; > > - > > - gt = snapshot->hwe->gt; > > - xe = gt_to_xe(gt); > > - devcoredump = &xe->devcoredump; > > - devcore_snapshot = &devcoredump->snapshot; > > - > > - if (!devcore_snapshot->matched_node) > > + gt = guc_to_gt(guc); > > + if (!node) { > > + xe_gt_warn(gt, "GuC Capture printing without node!\n"); > > return; > > + } > > + if (!p) { > > + xe_gt_warn(gt, "GuC Capture printing without printer!\n"); > > + return; > > + } > > > > - xe_gt_assert(gt, snapshot->hwe); > > - > > - capture_class = xe_engine_class_to_guc_capture_class(snapshot->hwe->class); > > - > > - drm_printf(p, "%s (physical), logical instance=%d\n", > > - snapshot->name ? snapshot->name : "", > > - snapshot->logical_instance); > > drm_printf(p, "\tCapture_source: %s\n", > > - devcore_snapshot->matched_node->source == XE_ENGINE_CAPTURE_SOURCE_GUC ? > > + node->source == XE_ENGINE_CAPTURE_SOURCE_GUC ? > > "GuC" : "Manual"); > > - drm_printf(p, "\tCoverage: %s\n", grptype[devcore_snapshot->matched_node->is_partial]); > > - drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", > > - snapshot->forcewake.domain, snapshot->forcewake.ref); > > - drm_printf(p, "\tReserved: %s\n", > > - str_yes_no(snapshot->kernel_reserved)); > I see this change seperate capture related print into this function. > I like this idea. alan: yeah, it makes it better for the layering design while allowing xe_hw_engine_snapshot to be the owner of guc-error-capture node get/print/put. > > > + drm_printf(p, "\tCoverage: %s\n", grptype[node->is_partial]); > > > > for (type = GUC_STATE_CAPTURE_TYPE_GLOBAL; type < GUC_STATE_CAPTURE_TYPE_MAX; type++) { > > list = xe_guc_capture_get_reg_desc_list(gt, GUC_CAPTURE_LIST_INDEX_PF, type, > > - capture_class, false); > > - snapshot_print_by_list_order(snapshot, p, type, list); > > + node->eng_class, false); > > + print_noderegs_by_list_order(guc, &node->reginfo[type], list, p); > > } > > > > - if (capture_class == GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE) { > > + if (node->eng_class == GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE) { > > + type = GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS; > > list = xe_guc_capture_get_reg_desc_list(gt, GUC_CAPTURE_LIST_INDEX_PF, > > - GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS, > > - capture_class, true); > > - snapshot_print_by_list_order(snapshot, p, GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS, > > - list); > > + type, node->eng_class, true); > > + print_noderegs_by_list_order(guc, &node->reginfo[type], list, p); > > } > > - > > drm_puts(p, "\n"); > > } > > > > /** > > - * xe_guc_capture_get_matching_and_lock - Matching GuC capture for the queue. > > - * @q: The exec queue object > > + * xe_guc_capture_snapshot_get - Matching GuC capture for the queue. > > + * > > + * @guc: The GuC being searched for a matching guc-error-capture snapshot. > > + * @q: The exec queue object that provides engine, guc-id and lrca to match (can be NULL!) > > + * @src: The source of the GuC-error-Capture snapshot to retrieve; > > * > > * Search within the capture outlist for the queue, could be used for check if > > * GuC capture is ready for the queue. > > @@ -1802,28 +1799,31 @@ void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm > > * > > * Returns: found guc-capture node ptr else NULL > > */ > > -struct __guc_capture_parsed_output * > > -xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > > +struct xe_guc_capture_snapshot * > > +xe_guc_capture_snapshot_get(struct xe_guc *guc, struct xe_exec_queue *q, > > + enum xe_guc_capture_snapshot_source src) > > { > > struct xe_hw_engine *hwe; > > enum xe_hw_engine_id id; > > + struct xe_gt *gt; > > struct xe_device *xe; > > u16 guc_class = GUC_LAST_ENGINE_CLASS + 1; > > - struct xe_devcoredump_snapshot *ss; > > > > - if (!q || !q->gt) > > + if (!guc) > > return NULL; > > > > - xe = gt_to_xe(q->gt); > > - if (xe->wedged.mode >= 2 || !xe_device_uc_enabled(xe) || IS_SRIOV_VF(xe)) > > + gt = guc_to_gt(guc); > > + if (q && q->gt != gt) { > > + xe_gt_warn(gt, "Guc-Err-Capture being querried with incorrect queue's GT!"); > > return NULL; > > + } > > > > - ss = &xe->devcoredump.snapshot; > > - if (ss->matched_node && ss->matched_node->source == XE_ENGINE_CAPTURE_SOURCE_GUC) > > - return ss->matched_node; > > + xe = gt_to_xe(gt); > > + if (xe->wedged.mode >= 2 || !xe_device_uc_enabled(xe) || IS_SRIOV_VF(xe)) > > + return NULL; > > > > /* Find hwe for the queue */ > > - for_each_hw_engine(hwe, q->gt, id) { > > + for_each_hw_engine(hwe, gt, id) { > > if (hwe != q->hwe) > > continue; > > guc_class = xe_engine_class_to_guc_class(hwe->class); > > @@ -1831,8 +1831,7 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > > } > > > > if (guc_class <= GUC_LAST_ENGINE_CLASS) { > > - struct __guc_capture_parsed_output *n, *ntmp; > > - struct xe_guc *guc = &q->gt->uc.guc; > > + struct xe_guc_capture_snapshot *n, *ntmp; > > u16 guc_id = q->guc->id; > > u32 lrca = xe_lrc_ggtt_addr(q->lrc[0]); > > > > @@ -1844,8 +1843,8 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > > list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) { > > if (n->eng_class == guc_class && n->eng_inst == hwe->instance && > > n->guc_id == guc_id && n->lrca == lrca && > > - n->source == XE_ENGINE_CAPTURE_SOURCE_GUC) { > > - n->locked = 1; > > + n->source == src) { > > + n->locked = true; > > return n; > > } > > } > > @@ -1853,77 +1852,19 @@ xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q) > > return NULL; > > } > > > > -/** > > - * xe_engine_snapshot_capture_for_queue - Take snapshot of associated engine > > - * @q: The exec queue object > > - * > > - * Take snapshot of associated HW Engine > > - * > > - * Returns: None. > > - */ > > -void > > -xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q) > > -{ > > - struct xe_device *xe = gt_to_xe(q->gt); > > - struct xe_devcoredump *coredump = &xe->devcoredump; > > - struct xe_hw_engine *hwe; > > - enum xe_hw_engine_id id; > > - u32 adj_logical_mask = q->logical_mask; > > - > > - if (IS_SRIOV_VF(xe)) > > - return; > > - > > - for_each_hw_engine(hwe, q->gt, id) { > > - if (hwe->class != q->hwe->class || > > - !(BIT(hwe->logical_instance) & adj_logical_mask)) { > > - coredump->snapshot.hwe[id] = NULL; > > - continue; > > - } > > - > > - if (!coredump->snapshot.hwe[id]) { > > - coredump->snapshot.hwe[id] = > > - xe_hw_engine_snapshot_capture(hwe, q); > > - } else { > > - struct __guc_capture_parsed_output *new; > > - > > - new = xe_guc_capture_get_matching_and_lock(q); > > - if (new) { > > - struct xe_guc *guc = &q->gt->uc.guc; > > - > > - /* > > - * If we are in here, it means we found a fresh > > - * GuC-err-capture node for this engine after > > - * previously failing to find a match in the > > - * early part of guc_exec_queue_timedout_job. > > - * Thus we must free the manually captured node > > - */ > > - guc_capture_free_outlist_node(guc->capture, > > - coredump->snapshot.matched_node); > > - coredump->snapshot.matched_node = new; > > - } > > - } > > - > > - break; > > - } > > -} > > - > > /* > > - * xe_guc_capture_put_matched_nodes - Cleanup macthed nodes > > + * xe_guc_capture_snapshot_put - Release GuC Capture matched node from a prior snapshot_get > > * @guc: The GuC object > > + * @node: The node to release back to GuC > > * > > * Free matched node and all nodes with the equal guc_id from > > * GuC captured outlist > > */ > > -void xe_guc_capture_put_matched_nodes(struct xe_guc *guc) > > +void xe_guc_capture_snapshot_put(struct xe_guc *guc, struct xe_guc_capture_snapshot *n) > > { > > - struct xe_device *xe = guc_to_xe(guc); > > - struct xe_devcoredump *devcoredump = &xe->devcoredump; > > - struct __guc_capture_parsed_output *n = devcoredump->snapshot.matched_node; > > - > > if (n) { > > guc_capture_remove_stale_matches_from_list(guc->capture, n); > > guc_capture_free_outlist_node(guc->capture, n); > > - devcoredump->snapshot.matched_node = NULL; > > } > > } > > > > diff --git a/drivers/gpu/drm/xe/xe_guc_capture.h b/drivers/gpu/drm/xe/xe_guc_capture.h > > index 20a078dc4b85..e85af277be9c 100644 > > --- a/drivers/gpu/drm/xe/xe_guc_capture.h > > +++ b/drivers/gpu/drm/xe/xe_guc_capture.h > > @@ -11,10 +11,7 @@ > > #include "xe_guc.h" > > #include "xe_guc_fwif.h" > > > > -struct xe_exec_queue; > > struct xe_guc; > > -struct xe_hw_engine; > > -struct xe_hw_engine_snapshot; > > > > static inline enum guc_capture_list_class_type xe_guc_class_to_capture_class(u16 class) > > { > > @@ -44,18 +41,13 @@ void xe_guc_capture_process(struct xe_guc *guc); > > int xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, > > enum guc_capture_list_class_type capture_class, void **outptr); > > int xe_guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, > > - enum guc_capture_list_class_type capture_class, size_t *size); > > + enum guc_capture_list_class_type capture_class, size_t *size); > > int xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size); > > size_t xe_guc_capture_ads_input_worst_size(struct xe_guc *guc); > > const struct __guc_mmio_reg_descr_group * > > xe_guc_capture_get_reg_desc_list(struct xe_gt *gt, u32 owner, u32 type, > > enum guc_capture_list_class_type capture_class, bool is_ext); > > -struct __guc_capture_parsed_output *xe_guc_capture_get_matching_and_lock(struct xe_exec_queue *q); > > -void xe_engine_manual_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot); > > -void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p); > > -void xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q); > > void xe_guc_capture_steered_list_init(struct xe_guc *guc); > > -void xe_guc_capture_put_matched_nodes(struct xe_guc *guc); > > int xe_guc_capture_init(struct xe_guc *guc); > > > > #endif > > diff --git a/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h b/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h > > new file mode 100644 > > index 000000000000..76159cb8fcab > > --- /dev/null > > +++ b/drivers/gpu/drm/xe/xe_guc_capture_snapshot_types.h > > @@ -0,0 +1,68 @@ > > +/* SPDX-License-Identifier: MIT */ > > +/* > > + * Copyright © 2021-2024 Intel Corporation > > + */ > > + > > +#ifndef _XE_GUC_CAPTURE_SNAPSHOT_TYPES_H > > +#define _XE_GUC_CAPTURE_SNAPSHOT_TYPES_H > > + > > +#include <linux/types.h> > > +#include <abi/guc_capture_abi.h> > > +#include "xe_guc_fwif.h" > > + > > +struct drm_printer; > > +struct guc_mmio_reg; > > +struct xe_guc; > > +struct xe_exec_queue; > > +struct xe_hw_engine; > > + > > +enum xe_guc_capture_snapshot_source { > > + XE_ENGINE_CAPTURE_SOURCE_MANUAL, > > + XE_ENGINE_CAPTURE_SOURCE_GUC > > +}; > > + > > +/* > > + * struct xe_guc_capture_snapshot - extracted error capture node > > + * > > + * A single unit of extracted error-capture output data grouped together > > + * at an engine-instance level. We keep these nodes in a linked list. > > + * See cachelist and outlist below. > > + */ > > +struct xe_guc_capture_snapshot { > > + /* > > + * A single set of 3 capture lists: a global-list > > + * an engine-class-list and an engine-instance list. > > + * outlist in __guc_capture_parsed_output will keep > > + * a linked list of these nodes that will eventually > > + * be detached from outlist and attached into to > > + * xe_codedump in response to a context reset > > + */ > > + struct list_head link; > > + bool is_partial; > > + u32 eng_class; > > + u32 eng_inst; > > + u32 guc_id; > > + u32 lrca; > > + u32 type; > > + bool locked; > > + enum xe_guc_capture_snapshot_source source; > > + struct gcap_reg_list_info { > > + u32 vfid; > > + u32 num_regs; > > + struct guc_mmio_reg *regs; > > + } reginfo[GUC_STATE_CAPTURE_TYPE_MAX]; > > +#define GCAP_PARSED_REGLIST_INDEX_GLOBAL BIT(GUC_STATE_CAPTURE_TYPE_GLOBAL) > > +#define GCAP_PARSED_REGLIST_INDEX_ENGCLASS BIT(GUC_STATE_CAPTURE_TYPE_ENGINE_CLASS) > > +}; > > + > > +struct xe_guc_capture_snapshot * > > +xe_guc_capture_snapshot_get(struct xe_guc *guc, struct xe_exec_queue *q, > > + enum xe_guc_capture_snapshot_source src); > > +void xe_guc_capture_snapshot_print(struct xe_guc *guc, struct xe_guc_capture_snapshot *node, > > + struct drm_printer *p); > > +void xe_guc_capture_snapshot_put(struct xe_guc *guc, struct xe_guc_capture_snapshot *snapshot); > > +void xe_guc_capture_snapshot_store_manual_job(struct xe_guc *guc, struct xe_exec_queue *q); > > +struct xe_guc_capture_snapshot * > > +xe_guc_capture_snapshot_store_and_get_manual_hwe(struct xe_guc *guc, struct xe_hw_engine *hwe); > > + > > +#endif > > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c > > index f9ecee5364d8..30c2bdf51958 100644 > > --- a/drivers/gpu/drm/xe/xe_guc_submit.c > > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c > > @@ -28,6 +28,7 @@ > > #include "xe_gt_printk.h" > > #include "xe_guc.h" > > #include "xe_guc_capture.h" > > +#include "xe_guc_capture_snapshot_types.h" > > #include "xe_guc_ct.h" > > #include "xe_guc_exec_queue_types.h" > > #include "xe_guc_id_mgr.h" > > @@ -1033,7 +1034,6 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) > > struct xe_gpu_scheduler *sched = &q->guc->sched; > > struct xe_guc *guc = exec_queue_to_guc(q); > > const char *process_name = "no process"; > > - struct xe_device *xe = guc_to_xe(guc); > > unsigned int fw_ref; > > int err = -ETIME; > > pid_t pid = -1; > > @@ -1062,18 +1062,23 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) > > exec_queue_destroyed(q); > > > > /* > > - * If devcoredump not captured and GuC capture for the job is not ready > > - * do manual capture first and decide later if we need to use it > > + * If the queue has't been killed yet or we do not have a firmware-reported > > + * GuC-Error-Capture node for the matching job, request GuC-Error-Capture to > > + * store a manual capture within its internal list with a job-match. > > + * xe_hw_engine_snapshot will decide later if it's needed. > > */ > > - if (!exec_queue_killed(q) && !xe->devcoredump.captured && > > - !xe_guc_capture_get_matching_and_lock(q)) { > > + if (!exec_queue_killed(q) || > > > or && ? > If we already got GuC capture, no need for manual capture > > > + !xe_guc_capture_snapshot_get(guc, q, XE_ENGINE_CAPTURE_SOURCE_GUC)) { > I see !xe->devcoredump.captured check is missing, any concerns? > Right now, if devcoredump already captured, we don't need the manual > capture. > alan: I was attempting to clean up the logic to make guc-error-capture logic modular and agnostic, but on second thoughts, i realize its a very quick and simple optimization that you have already done due diligence in testing and verifying. That said, i will fix this and revert back to the original logic. > > /* take force wake before engine register manual capture */ > > fw_ref = xe_force_wake_get(gt_to_fw(q->gt), XE_FORCEWAKE_ALL); > > if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) > > xe_gt_info(q->gt, "failed to get forcewake for coredump capture\n"); > > - > > - xe_engine_snapshot_capture_for_queue(q); > > - > > + /* > > + * This will generate a manual capture node and store it in > > + * This GuC Error Capture link-list as if it came from GuC > > + * but with a source-id == manual-capture > > + */ > > + xe_guc_capture_snapshot_store_manual_job(guc, q); > > xe_force_wake_put(gt_to_fw(q->gt), fw_ref); > > } > > > > diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c > > index c4b0dc3be39c..ddd91627e623 100644 > > --- a/drivers/gpu/drm/xe/xe_hw_engine.c > > +++ b/drivers/gpu/drm/xe/xe_hw_engine.c > > @@ -24,7 +24,8 @@ > > #include "xe_gt_printk.h" > > #include "xe_gt_mcr.h" > > #include "xe_gt_topology.h" > > -#include "xe_guc_capture.h" > > +//#include "xe_guc_capture.h" > > +#include "xe_guc_capture_snapshot_types.h" > > #include "xe_hw_engine_group.h" > > #include "xe_hw_fence.h" > > #include "xe_irq.h" > > @@ -827,9 +828,9 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec) > > } > > > > /** > > - * xe_hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine. > > + * hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine. > > * @hwe: Xe HW Engine. > > - * @q: The exec queue object. > > + * @q: The exec queue object. (can be NULL for debugfs engine-register dump) > > * > > * This can be printed out in a later stage like during dev_coredump > > * analysis. > > @@ -837,11 +838,12 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec) > > * Returns: a Xe HW Engine snapshot object that must be freed by the > > * caller, using `xe_hw_engine_snapshot_free`. > > */ > > -struct xe_hw_engine_snapshot * > > -xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) > > +static struct xe_hw_engine_snapshot * > > +hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) > > { > > struct xe_hw_engine_snapshot *snapshot; > > - struct __guc_capture_parsed_output *node; > > + struct xe_guc_capture_snapshot *manual_node; > > + struct xe_guc *guc; > > > > if (!xe_hw_engine_is_valid(hwe)) > > return NULL; > > @@ -865,25 +867,66 @@ xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q) > > return snapshot; > > > > if (q) { > > - /* If got guc capture, set source to GuC */ > > - node = xe_guc_capture_get_matching_and_lock(q); > > - if (node) { > > - struct xe_device *xe = gt_to_xe(hwe->gt); > > - struct xe_devcoredump *coredump = &xe->devcoredump; > > - > > - coredump->snapshot.matched_node = node; > > - xe_gt_dbg(hwe->gt, "Found and locked GuC-err-capture node"); > > - return snapshot; > > + guc = &q->gt->uc.guc; > > + /* First find the pre-kill manual GuC-Err-Capture node for this job */ > > + manual_node = xe_guc_capture_snapshot_get(guc, q, > > + XE_ENGINE_CAPTURE_SOURCE_MANUAL); > > + > > + /* Next, look for the GuC-Firmware reported node for this job */ > > + snapshot->matched_node = xe_guc_capture_snapshot_get(guc, q, > > + XE_ENGINE_CAPTURE_SOURCE_GUC); > > + if (!snapshot->matched_node) { > > + xe_gt_dbg(hwe->gt, "Can't find GUC-Sourced err-capture node"); > > + snapshot->matched_node = manual_node; > > + } else if (manual_node) { > > + /* looks like we don't need the manually-captured node, return it */ > > + xe_guc_capture_snapshot_put(guc, manual_node); > > } > > } > > > > - /* otherwise, do manual capture */ > > - xe_engine_manual_capture(hwe, snapshot); > > - xe_gt_dbg(hwe->gt, "Proceeding with manual engine snapshot"); > > + if (!snapshot->matched_node) { > > + guc = &hwe->gt->uc.guc; > > + /* > > + * Fallback path - do an immediate jobless manual engine capture. > > + * This will happen when debugfs is triggered to force an engine dump. > > + */ > > + snapshot->matched_node = xe_guc_capture_snapshot_store_and_get_manual_hwe(guc, hwe); > > + xe_gt_dbg(hwe->gt, "Fallback to jobless-manual-err-capture node"); > > + } > > > > return snapshot; > > } > > > > +/** > > + * xe_engine_snapshot_capture_for_queue - Take snapshot of associated engine > > + * @q: The exec queue object > > + * > > + * Take snapshot of associated HW Engine > > + * > > + * Returns: None. > > + */ > > +void > > +xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q) > > +{ > > + struct xe_device *xe = gt_to_xe(q->gt); > > + struct xe_devcoredump *coredump = &xe->devcoredump; > > + struct xe_hw_engine *hwe; > > + enum xe_hw_engine_id id; > > + u32 adj_logical_mask = q->logical_mask; > > + > > + if (IS_SRIOV_VF(xe)) > > + return; > > + > > + for_each_hw_engine(hwe, q->gt, id) { > > + if (hwe->class != q->hwe->class || > > + !(BIT(hwe->logical_instance) & adj_logical_mask)) { > > + coredump->snapshot.hwe[id] = NULL; > > + continue; > > + } > > + coredump->snapshot.hwe[id] = hw_engine_snapshot_capture(hwe, q); > > + } > > +} > > + > > /** > > * xe_hw_engine_snapshot_free - Free all allocated objects for a given snapshot. > > * @snapshot: Xe HW Engine snapshot object. > > @@ -898,17 +941,41 @@ void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot) > > return; > > > > gt = snapshot->hwe->gt; > > - /* > > - * xe_guc_capture_put_matched_nodes is called here and from > > - * xe_devcoredump_snapshot_free, to cover the 2 calling paths > > - * of hw_engines - debugfs and devcoredump free. > > - */ > > - xe_guc_capture_put_matched_nodes(>->uc.guc); > > + xe_guc_capture_snapshot_put(>->uc.guc, snapshot->matched_node); > > + snapshot->matched_node = NULL; > > > > kfree(snapshot->name); > > kfree(snapshot); > > } > > > > +/** > > + * xe_engine_snapshot_print - Print out a given Xe HW Engine snapshot. > > + * @snapshot: Xe HW Engine snapshot object. > > + * @p: drm_printer where it will be printed out. > > + * > > + * This function prints out a given Xe HW Engine snapshot object. > > + */ > > +void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p) > > +{ > > + struct xe_gt *gt; > > + > > + if (!snapshot) > > + return; > > + > > + gt = snapshot->hwe->gt; > > + > > + drm_printf(p, "%s (physical), logical instance=%d\n", > > + snapshot->name ? snapshot->name : "", > > + snapshot->logical_instance); > > + drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n", > > + snapshot->forcewake.domain, snapshot->forcewake.ref); > > + drm_printf(p, "\tReserved: %s\n", > > + str_yes_no(snapshot->kernel_reserved)); > > + drm_puts(p, "\n"); > > + > > + xe_guc_capture_snapshot_print(>->uc.guc, snapshot->matched_node, p); > > +} > > + > > /** > > * xe_hw_engine_print - Xe HW Engine Print. > > * @hwe: Hardware Engine. > > @@ -920,7 +987,7 @@ void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p) > > { > > struct xe_hw_engine_snapshot *snapshot; > > > > - snapshot = xe_hw_engine_snapshot_capture(hwe, NULL); > > + snapshot = hw_engine_snapshot_capture(hwe, NULL); > > xe_engine_snapshot_print(snapshot, p); > > xe_hw_engine_snapshot_free(snapshot); > > } > > diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h > > index 6b5f9fa2a594..845153fbc149 100644 > > --- a/drivers/gpu/drm/xe/xe_hw_engine.h > > +++ b/drivers/gpu/drm/xe/xe_hw_engine.h > > @@ -55,9 +55,9 @@ void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); > > void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe); > > u32 xe_hw_engine_mask_per_class(struct xe_gt *gt, > > enum xe_engine_class engine_class); > > -struct xe_hw_engine_snapshot * > > -xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q); > > +void xe_engine_snapshot_capture_for_queue(struct xe_exec_queue *q); > > void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot); > > +void xe_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot, struct drm_printer *p); > > void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p); > > void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe); > > > > diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h > > index e14bee95e364..ea6b60c819d4 100644 > > --- a/drivers/gpu/drm/xe/xe_hw_engine_types.h > > +++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h > > @@ -152,11 +152,7 @@ struct xe_hw_engine { > > struct xe_hw_engine_group *hw_engine_group; > > }; > > > > -enum xe_hw_engine_snapshot_source_id { > > - XE_ENGINE_CAPTURE_SOURCE_MANUAL, > > - XE_ENGINE_CAPTURE_SOURCE_GUC > > -}; > > - > > +struct xe_guc_capture_snapshot; > > /** > > * struct xe_hw_engine_snapshot - Hardware engine snapshot > > * > > @@ -180,6 +176,13 @@ struct xe_hw_engine_snapshot { > > u32 mmio_base; > > /** @kernel_reserved: Engine reserved, can't be used by userspace */ > > bool kernel_reserved; > > + /** > > + * @matched_node: GuC Capture snapshot: > > + * The matched capture node for the timedout job > > + * this single-node tracker works because devcoredump will always only > > + * produce one hw-engine capture per devcoredump event > > + */ > > + struct xe_guc_capture_snapshot *matched_node; > > }; > > > > #endif > ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ CI.Patch_applied: success for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn 2024-11-17 18:44 ` [PATCH 1/1] drm/xe/guc/capture: " Alan Previn @ 2024-11-18 2:22 ` Patchwork 2024-11-18 2:22 ` ✗ CI.checkpatch: warning " Patchwork ` (6 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 2:22 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ State : success == Summary == === Applying kernel patches on branch 'drm-tip' with base: === Base commit: 5b1f614ccf10 drm-tip: 2024y-11m-18d-00h-28m-21s UTC integration manifest === git am output follows === Applying: drm/xe/guc/capture: Maintenence of devcoredump <-> GuC-Err-Capture plumbing ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ CI.checkpatch: warning for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn 2024-11-17 18:44 ` [PATCH 1/1] drm/xe/guc/capture: " Alan Previn 2024-11-18 2:22 ` ✓ CI.Patch_applied: success for " Patchwork @ 2024-11-18 2:22 ` Patchwork 2024-11-18 2:23 ` ✓ CI.KUnit: success " Patchwork ` (5 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 2:22 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ 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 30ab6715fc09baee6cc14cb3c89ad8858688d474 + cd /kernel + git config --global --add safe.directory /kernel + git log -n1 commit 2ba721d8f074aae6da1556e90e73acbd668399d8 Author: Alan Previn <alan.previn.teres.alexis@intel.com> Date: Sun Nov 17 10:44:00 2024 -0800 drm/xe/guc/capture: Maintenence of devcoredump <-> GuC-Err-Capture plumbing The order of the devcoredump event flow is: drm-scheduler -> guc-submission-execq-timed-out-job -> guc-submission-kill-job -> xe-devcoredump (once the work is confirmed to have been killed). As we are aware, the GuC-FW IRQ for error-capture delivery and extraction could have happenned before the start of guc-execq-timed-out-job or the middle of it (before or during the explicit kill) or not at all. Thus, today, the above flow takes a manual capture first before triggering the kill-job just in case we need it. The structure layering of devcoredump internals are: xe_devcoredump_snapshot -> xe_foo_snapshot (where foo can be any data dump associated to the job was killed). Foo includes the xe_hw_engine_snapshot. Since GuC-Error-Capture provides just the register dump of an engine, GuC-Err-Capture snapshots should be managed by the xe_hw_engine_snapshot. That isn't the case today. Furthermode, neither xe_devcoredump_snapshot nor xe_hw_engine_snapshot even exists at the start of guc-submission-execq-timed-out-job. Thus, the first manual capture node has no home. However, today, GuC-Error-Capture stores capture snapshots off the top-level xe_devcoredump_snapshot's matched_node. GuC-Error-Capture also had absorbed the function for xe_hw_engine_snapshot generation. NOTE: Existing code isn't broken because xe_devcoredump is not dynamically allocated and designed to hold a single event at a time (i.e. single engine dump). But it's not scalable for future improvement. Thus this patch: 1. Moves "matched_node" from xe_devcoredump_snapshot to xe_hw_engine_snapshot. 2. Relocates the functions for xe_hw_engine_snapshot generation and printing back to xe_hw_engine.c. However, split out the register dump printing so it stays within GuC-Error-Capture (so we don't need to maintain two sets of register lists). 3. Keep both the manual and firmware capture nodes within GuC-Error-Capture subsystem's linked list until xe_hw_engine_snapshot gets and puts them later. 4. Give xe_hw_engine_snapshot the control and ability to query GuC-Error-Capture for matching snapshots while choosing between manual vs firmware capture getting/putting node. 5. While at it, relocate (and rename) key structures, enums and function protos to xe_guc_capture_snapshot_types.h (as an inter-module header) for xe_hw_engine_snapshot to use. 6. Since xe_hw_engine_snapshot can also be called by via debugfs without a job, create a new function that does a manual capture of engine registers without any associated job. Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com> + /mt/dim checkpatch 5b1f614ccf1008e7aee531bf76bb639802e0df88 drm-intel 2ba721d8f074 drm/xe/guc/capture: Maintenence of devcoredump <-> GuC-Err-Capture plumbing -:793: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #793: new file mode 100644 total: 0 errors, 1 warnings, 0 checks, 1002 lines checked ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ CI.KUnit: success for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn ` (2 preceding siblings ...) 2024-11-18 2:22 ` ✗ CI.checkpatch: warning " Patchwork @ 2024-11-18 2:23 ` Patchwork 2024-11-18 2:41 ` ✓ CI.Build: " Patchwork ` (4 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 2:23 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ State : success == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [02:22:45] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [02:22:49] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json ARCH=um O=.kunit --jobs=48 ../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes] 156 | u64 ioread64_lo_hi(const void __iomem *addr) | ^~~~~~~~~~~~~~ ../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes] 163 | u64 ioread64_hi_lo(const void __iomem *addr) | ^~~~~~~~~~~~~~ ../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes] 170 | u64 ioread64be_lo_hi(const void __iomem *addr) | ^~~~~~~~~~~~~~~~ ../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes] 178 | u64 ioread64be_hi_lo(const void __iomem *addr) | ^~~~~~~~~~~~~~~~ ../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes] 264 | void iowrite64_lo_hi(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~ ../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes] 272 | void iowrite64_hi_lo(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~ ../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes] 280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~~~ ../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes] 288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~~~ [02:23:17] Starting KUnit Kernel (1/1)... [02:23:17] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [02:23:18] =================== guc_dbm (7 subtests) =================== [02:23:18] [PASSED] test_empty [02:23:18] [PASSED] test_default [02:23:18] ======================== test_size ======================== [02:23:18] [PASSED] 4 [02:23:18] [PASSED] 8 [02:23:18] [PASSED] 32 [02:23:18] [PASSED] 256 [02:23:18] ==================== [PASSED] test_size ==================== [02:23:18] ======================= test_reuse ======================== [02:23:18] [PASSED] 4 [02:23:18] [PASSED] 8 [02:23:18] [PASSED] 32 [02:23:18] [PASSED] 256 [02:23:18] =================== [PASSED] test_reuse ==================== [02:23:18] =================== test_range_overlap ==================== [02:23:18] [PASSED] 4 [02:23:18] [PASSED] 8 [02:23:18] [PASSED] 32 [02:23:18] [PASSED] 256 [02:23:18] =============== [PASSED] test_range_overlap ================ [02:23:18] =================== test_range_compact ==================== [02:23:18] [PASSED] 4 [02:23:18] [PASSED] 8 [02:23:18] [PASSED] 32 [02:23:18] [PASSED] 256 [02:23:18] =============== [PASSED] test_range_compact ================ [02:23:18] ==================== test_range_spare ===================== [02:23:18] [PASSED] 4 [02:23:18] [PASSED] 8 [02:23:18] [PASSED] 32 [02:23:18] [PASSED] 256 [02:23:18] ================ [PASSED] test_range_spare ================= [02:23:18] ===================== [PASSED] guc_dbm ===================== [02:23:18] =================== guc_idm (6 subtests) =================== [02:23:18] [PASSED] bad_init [02:23:18] [PASSED] no_init [02:23:18] [PASSED] init_fini [02:23:18] [PASSED] check_used [02:23:18] [PASSED] check_quota [02:23:18] [PASSED] check_all [02:23:18] ===================== [PASSED] guc_idm ===================== [02:23:18] ================== no_relay (3 subtests) =================== [02:23:18] [PASSED] xe_drops_guc2pf_if_not_ready [02:23:18] [PASSED] xe_drops_guc2vf_if_not_ready [02:23:18] [PASSED] xe_rejects_send_if_not_ready [02:23:18] ==================== [PASSED] no_relay ===================== [02:23:18] ================== pf_relay (14 subtests) ================== [02:23:18] [PASSED] pf_rejects_guc2pf_too_short [02:23:18] [PASSED] pf_rejects_guc2pf_too_long [02:23:18] [PASSED] pf_rejects_guc2pf_no_payload [02:23:18] [PASSED] pf_fails_no_payload [02:23:18] [PASSED] pf_fails_bad_origin [02:23:18] [PASSED] pf_fails_bad_type [02:23:18] [PASSED] pf_txn_reports_error [02:23:18] [PASSED] pf_txn_sends_pf2guc [02:23:18] [PASSED] pf_sends_pf2guc [02:23:18] [SKIPPED] pf_loopback_nop [02:23:18] [SKIPPED] pf_loopback_echo [02:23:18] [SKIPPED] pf_loopback_fail [02:23:18] [SKIPPED] pf_loopback_busy [02:23:18] [SKIPPED] pf_loopback_retry [02:23:18] ==================== [PASSED] pf_relay ===================== [02:23:18] ================== vf_relay (3 subtests) =================== [02:23:18] [PASSED] vf_rejects_guc2vf_too_short [02:23:18] [PASSED] vf_rejects_guc2vf_too_long [02:23:18] [PASSED] vf_rejects_guc2vf_no_payload [02:23:18] ==================== [PASSED] vf_relay ===================== [02:23:18] ================= pf_service (11 subtests) ================= [02:23:18] [PASSED] pf_negotiate_any [02:23:18] [PASSED] pf_negotiate_base_match [02:23:18] [PASSED] pf_negotiate_base_newer [02:23:18] [PASSED] pf_negotiate_base_next [02:23:18] [SKIPPED] pf_negotiate_base_older [02:23:18] [PASSED] pf_negotiate_base_prev [02:23:18] [PASSED] pf_negotiate_latest_match [02:23:18] [PASSED] pf_negotiate_latest_newer [02:23:18] [PASSED] pf_negotiate_latest_next [02:23:18] [SKIPPED] pf_negotiate_latest_older [02:23:18] [SKIPPED] pf_negotiate_latest_prev [02:23:18] =================== [PASSED] pf_service ==================== [02:23:18] ===================== lmtt (1 subtest) ===================== [02:23:18] ======================== test_ops ========================= [02:23:18] [PASSED] 2-level [02:23:18] [PASSED] multi-level [02:23:18] ==================== [PASSED] test_ops ===================== [02:23:18] ====================== [PASSED] lmtt ======================= [02:23:18] =================== xe_mocs (2 subtests) =================== [02:23:18] ================ xe_live_mocs_kernel_kunit ================ [02:23:18] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [02:23:18] ================ xe_live_mocs_reset_kunit ================= [02:23:18] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [02:23:18] ==================== [SKIPPED] xe_mocs ===================== [02:23:18] ================= xe_migrate (2 subtests) ================== [02:23:18] ================= xe_migrate_sanity_kunit ================= [02:23:18] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [02:23:18] ================== xe_validate_ccs_kunit ================== [02:23:18] ============= [SKIPPED] xe_validate_ccs_kunit ============== [02:23:18] =================== [SKIPPED] xe_migrate =================== [02:23:18] ================== xe_dma_buf (1 subtest) ================== [02:23:18] ==================== xe_dma_buf_kunit ===================== [02:23:18] ================ [SKIPPED] xe_dma_buf_kunit ================ [02:23:18] =================== [SKIPPED] xe_dma_buf =================== [02:23:18] ==================== xe_bo (3 subtests) ==================== [02:23:18] ================== xe_ccs_migrate_kunit =================== [02:23:18] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [02:23:18] ==================== xe_bo_evict_kunit ==================== [02:23:18] =============== [SKIPPED] xe_bo_evict_kunit ================ [02:23:18] =================== xe_bo_shrink_kunit ==================== [02:23:18] =============== [SKIPPED] xe_bo_shrink_kunit =============== [02:23:18] ===================== [SKIPPED] xe_bo ====================== [02:23:18] ==================== args (11 subtests) ==================== [02:23:18] [PASSED] count_args_test [02:23:18] [PASSED] call_args_example [02:23:18] [PASSED] call_args_test [02:23:18] [PASSED] drop_first_arg_example [02:23:18] [PASSED] drop_first_arg_test [02:23:18] [PASSED] first_arg_example [02:23:18] [PASSED] first_arg_test [02:23:18] [PASSED] last_arg_example [02:23:18] [PASSED] last_arg_test [02:23:18] [PASSED] pick_arg_example [02:23:18] [PASSED] sep_comma_examplestty: 'standard input': Inappropriate ioctl for device [02:23:18] ====================== [PASSED] args ======================= [02:23:18] =================== xe_pci (2 subtests) ==================== [02:23:18] [PASSED] xe_gmdid_graphics_ip [02:23:18] [PASSED] xe_gmdid_media_ip [02:23:18] ===================== [PASSED] xe_pci ====================== [02:23:18] =================== xe_rtp (2 subtests) ==================== [02:23:18] =============== xe_rtp_process_to_sr_tests ================ [02:23:18] [PASSED] coalesce-same-reg [02:23:18] [PASSED] no-match-no-add [02:23:18] [PASSED] match-or [02:23:18] [PASSED] match-or-xfail [02:23:18] [PASSED] no-match-no-add-multiple-rules [02:23:18] [PASSED] two-regs-two-entries [02:23:18] [PASSED] clr-one-set-other [02:23:18] [PASSED] set-field [02:23:18] [PASSED] conflict-duplicate [02:23:18] [PASSED] conflict-not-disjoint [02:23:18] [PASSED] conflict-reg-type [02:23:18] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [02:23:18] ================== xe_rtp_process_tests =================== [02:23:18] [PASSED] active1 [02:23:18] [PASSED] active2 [02:23:18] [PASSED] active-inactive [02:23:18] [PASSED] inactive-active [02:23:18] [PASSED] inactive-1st_or_active-inactive [02:23:18] [PASSED] inactive-2nd_or_active-inactive [02:23:18] [PASSED] inactive-last_or_active-inactive [02:23:18] [PASSED] inactive-no_or_active-inactive [02:23:18] ============== [PASSED] xe_rtp_process_tests =============== [02:23:18] ===================== [PASSED] xe_rtp ====================== [02:23:18] ==================== xe_wa (1 subtest) ===================== [02:23:18] ======================== xe_wa_gt ========================= [02:23:18] [PASSED] TIGERLAKE (B0) [02:23:18] [PASSED] DG1 (A0) [02:23:18] [PASSED] DG1 (B0) [02:23:18] [PASSED] ALDERLAKE_S (A0) [02:23:18] [PASSED] ALDERLAKE_S (B0) [02:23:18] [PASSED] ALDERLAKE_S (C0) [02:23:18] [PASSED] ALDERLAKE_S (D0) [02:23:18] [PASSED] ALDERLAKE_P (A0) [02:23:18] [PASSED] ALDERLAKE_P (B0) [02:23:18] [PASSED] ALDERLAKE_P (C0) [02:23:18] [PASSED] ALDERLAKE_S_RPLS (D0) [02:23:18] [PASSED] ALDERLAKE_P_RPLU (E0) [02:23:18] [PASSED] DG2_G10 (C0) [02:23:18] [PASSED] DG2_G11 (B1) [02:23:18] [PASSED] DG2_G12 (A1) [02:23:18] [PASSED] METEORLAKE (g:A0, m:A0) [02:23:18] [PASSED] METEORLAKE (g:A0, m:A0) [02:23:18] [PASSED] METEORLAKE (g:A0, m:A0) [02:23:18] [PASSED] LUNARLAKE (g:A0, m:A0) [02:23:18] [PASSED] LUNARLAKE (g:B0, m:A0) [02:23:18] [PASSED] BATTLEMAGE (g:A0, m:A1) [02:23:18] ==================== [PASSED] xe_wa_gt ===================== [02:23:18] ====================== [PASSED] xe_wa ====================== [02:23:18] ============================================================ [02:23:18] Testing complete. Ran 122 tests: passed: 106, skipped: 16 [02:23:18] Elapsed time: 32.626s total, 4.425s configuring, 27.985s building, 0.210s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [02:23:18] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [02:23:19] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json ARCH=um O=.kunit --jobs=48 ../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes] 156 | u64 ioread64_lo_hi(const void __iomem *addr) | ^~~~~~~~~~~~~~ ../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes] 163 | u64 ioread64_hi_lo(const void __iomem *addr) | ^~~~~~~~~~~~~~ ../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes] 170 | u64 ioread64be_lo_hi(const void __iomem *addr) | ^~~~~~~~~~~~~~~~ ../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes] 178 | u64 ioread64be_hi_lo(const void __iomem *addr) | ^~~~~~~~~~~~~~~~ ../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes] 264 | void iowrite64_lo_hi(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~ ../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes] 272 | void iowrite64_hi_lo(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~ ../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes] 280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~~~ ../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes] 288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr) | ^~~~~~~~~~~~~~~~~ [02:23:42] Starting KUnit Kernel (1/1)... [02:23:42] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [02:23:42] ================== drm_buddy (7 subtests) ================== [02:23:42] [PASSED] drm_test_buddy_alloc_limit [02:23:42] [PASSED] drm_test_buddy_alloc_optimistic [02:23:42] [PASSED] drm_test_buddy_alloc_pessimistic [02:23:42] [PASSED] drm_test_buddy_alloc_pathological [02:23:42] [PASSED] drm_test_buddy_alloc_contiguous [02:23:42] [PASSED] drm_test_buddy_alloc_clear [02:23:42] [PASSED] drm_test_buddy_alloc_range_bias [02:23:42] ==================== [PASSED] drm_buddy ==================== [02:23:42] ============= drm_cmdline_parser (40 subtests) ============= [02:23:42] [PASSED] drm_test_cmdline_force_d_only [02:23:42] [PASSED] drm_test_cmdline_force_D_only_dvi [02:23:42] [PASSED] drm_test_cmdline_force_D_only_hdmi [02:23:42] [PASSED] drm_test_cmdline_force_D_only_not_digital [02:23:42] [PASSED] drm_test_cmdline_force_e_only [02:23:42] [PASSED] drm_test_cmdline_res [02:23:42] [PASSED] drm_test_cmdline_res_vesa [02:23:42] [PASSED] drm_test_cmdline_res_vesa_rblank [02:23:42] [PASSED] drm_test_cmdline_res_rblank [02:23:42] [PASSED] drm_test_cmdline_res_bpp [02:23:42] [PASSED] drm_test_cmdline_res_refresh [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [02:23:42] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [02:23:42] [PASSED] drm_test_cmdline_res_margins_force_on [02:23:42] [PASSED] drm_test_cmdline_res_vesa_margins [02:23:42] [PASSED] drm_test_cmdline_name [02:23:42] [PASSED] drm_test_cmdline_name_bpp [02:23:42] [PASSED] drm_test_cmdline_name_option [02:23:42] [PASSED] drm_test_cmdline_name_bpp_option [02:23:42] [PASSED] drm_test_cmdline_rotate_0 [02:23:42] [PASSED] drm_test_cmdline_rotate_90 [02:23:42] [PASSED] drm_test_cmdline_rotate_180 [02:23:42] [PASSED] drm_test_cmdline_rotate_270 [02:23:42] [PASSED] drm_test_cmdline_hmirror [02:23:42] [PASSED] drm_test_cmdline_vmirror [02:23:42] [PASSED] drm_test_cmdline_margin_options [02:23:42] [PASSED] drm_test_cmdline_multiple_options [02:23:42] [PASSED] drm_test_cmdline_bpp_extra_and_option [02:23:42] [PASSED] drm_test_cmdline_extra_and_option [02:23:42] [PASSED] drm_test_cmdline_freestanding_options [02:23:42] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [02:23:42] [PASSED] drm_test_cmdline_panel_orientation [02:23:42] ================ drm_test_cmdline_invalid ================= [02:23:42] [PASSED] margin_only [02:23:42] [PASSED] interlace_only [02:23:42] [PASSED] res_missing_x [02:23:42] [PASSED] res_missing_y [02:23:42] [PASSED] res_bad_y [02:23:42] [PASSED] res_missing_y_bpp [02:23:42] [PASSED] res_bad_bpp [02:23:42] [PASSED] res_bad_refresh [02:23:42] [PASSED] res_bpp_refresh_force_on_off [02:23:42] [PASSED] res_invalid_mode [02:23:42] [PASSED] res_bpp_wrong_place_mode [02:23:42] [PASSED] name_bpp_refresh [02:23:42] [PASSED] name_refresh [02:23:42] [PASSED] name_refresh_wrong_mode [02:23:42] [PASSED] name_refresh_invalid_mode [02:23:42] [PASSED] rotate_multiple [02:23:42] [PASSED] rotate_invalid_val [02:23:42] [PASSED] rotate_truncated [02:23:42] [PASSED] invalid_option [02:23:42] [PASSED] invalid_tv_option [02:23:42] [PASSED] truncated_tv_option [02:23:42] ============ [PASSED] drm_test_cmdline_invalid ============= [02:23:42] =============== drm_test_cmdline_tv_options =============== [02:23:42] [PASSED] NTSC [02:23:42] [PASSED] NTSC_443 [02:23:42] [PASSED] NTSC_J [02:23:42] [PASSED] PAL [02:23:42] [PASSED] PAL_M [02:23:42] [PASSED] PAL_N [02:23:42] [PASSED] SECAM [02:23:42] [PASSED] MONO_525 [02:23:42] [PASSED] MONO_625 [02:23:42] =========== [PASSED] drm_test_cmdline_tv_options =========== [02:23:42] =============== [PASSED] drm_cmdline_parser ================ [02:23:42] ========== drmm_connector_hdmi_init (19 subtests) ========== [02:23:42] [PASSED] drm_test_connector_hdmi_init_valid [02:23:42] [PASSED] drm_test_connector_hdmi_init_bpc_8 [02:23:42] [PASSED] drm_test_connector_hdmi_init_bpc_10 [02:23:42] [PASSED] drm_test_connector_hdmi_init_bpc_12 [02:23:42] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [02:23:42] [PASSED] drm_test_connector_hdmi_init_bpc_null [02:23:42] [PASSED] drm_test_connector_hdmi_init_formats_empty [02:23:42] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [02:23:42] [PASSED] drm_test_connector_hdmi_init_null_ddc [02:23:42] [PASSED] drm_test_connector_hdmi_init_null_product [02:23:42] [PASSED] drm_test_connector_hdmi_init_null_vendor [02:23:42] [PASSED] drm_test_connector_hdmi_init_product_length_exact [02:23:42] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [02:23:42] [PASSED] drm_test_connector_hdmi_init_product_valid [02:23:42] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [02:23:42] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [02:23:42] [PASSED] drm_test_connector_hdmi_init_vendor_valid [02:23:42] ========= drm_test_connector_hdmi_init_type_valid ========= [02:23:42] [PASSED] HDMI-A [02:23:42] [PASSED] HDMI-B [02:23:42] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [02:23:42] ======== drm_test_connector_hdmi_init_type_invalid ======== [02:23:42] [PASSED] Unknown [02:23:42] [PASSED] VGA [02:23:42] [PASSED] DVI-I [02:23:42] [PASSED] DVI-D [02:23:42] [PASSED] DVI-A [02:23:42] [PASSED] Composite [02:23:42] [PASSED] SVIDEO [02:23:42] [PASSED] LVDS [02:23:42] [PASSED] Component [02:23:42] [PASSED] DIN [02:23:42] [PASSED] DP [02:23:42] [PASSED] TV [02:23:42] [PASSED] eDP [02:23:42] [PASSED] Virtual [02:23:42] [PASSED] DSI [02:23:42] [PASSED] DPI [02:23:42] [PASSED] Writeback [02:23:42] [PASSED] SPI [02:23:42] [PASSED] USB [02:23:42] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [02:23:42] ============ [PASSED] drmm_connector_hdmi_init ============= [02:23:42] ============= drmm_connector_init (3 subtests) ============= [02:23:42] [PASSED] drm_test_drmm_connector_init [02:23:42] [PASSED] drm_test_drmm_connector_init_null_ddc [02:23:42] ========= drm_test_drmm_connector_init_type_valid ========= [02:23:42] [PASSED] Unknown [02:23:42] [PASSED] VGA [02:23:42] [PASSED] DVI-I [02:23:42] [PASSED] DVI-D [02:23:42] [PASSED] DVI-A [02:23:42] [PASSED] Composite [02:23:42] [PASSED] SVIDEO [02:23:42] [PASSED] LVDS [02:23:42] [PASSED] Component [02:23:42] [PASSED] DIN [02:23:42] [PASSED] DP [02:23:42] [PASSED] HDMI-A [02:23:42] [PASSED] HDMI-B [02:23:42] [PASSED] TV [02:23:42] [PASSED] eDP [02:23:42] [PASSED] Virtual [02:23:42] [PASSED] DSI [02:23:42] [PASSED] DPI [02:23:42] [PASSED] Writeback [02:23:42] [PASSED] SPI [02:23:42] [PASSED] USB [02:23:42] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [02:23:42] =============== [PASSED] drmm_connector_init =============== [02:23:42] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [02:23:42] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [02:23:42] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [02:23:42] === [PASSED] drm_connector_attach_broadcast_rgb_property === [02:23:42] ========== drm_get_tv_mode_from_name (2 subtests) ========== [02:23:42] ========== drm_test_get_tv_mode_from_name_valid =========== [02:23:42] [PASSED] NTSC [02:23:42] [PASSED] NTSC-443 [02:23:42] [PASSED] NTSC-J [02:23:42] [PASSED] PAL [02:23:42] [PASSED] PAL-M [02:23:42] [PASSED] PAL-N [02:23:42] [PASSED] SECAM [02:23:42] [PASSED] Mono [02:23:42] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [02:23:42] [PASSED] drm_test_get_tv_mode_from_name_truncated [02:23:42] ============ [PASSED] drm_get_tv_mode_from_name ============ [02:23:42] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [02:23:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [02:23:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [02:23:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [02:23:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [02:23:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [02:23:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [02:23:42] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [02:23:42] [PASSED] VIC 96 [02:23:42] [PASSED] VIC 97 [02:23:42] [PASSED] VIC 101 [02:23:42] [PASSED] VIC 102 [02:23:42] [PASSED] VIC 106 [02:23:42] [PASSED] VIC 107 [02:23:42] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [02:23:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [02:23:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [02:23:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [02:23:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [02:23:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [02:23:42] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [02:23:42] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [02:23:42] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [02:23:42] [PASSED] Automatic [02:23:42] [PASSED] Full [02:23:42] [PASSED] Limited 16:235 [02:23:42] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [02:23:42] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [02:23:42] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [02:23:42] == drm_hdmi_connector_get_output_format_name (2 subtests) == [02:23:42] === drm_test_drm_hdmi_connector_get_output_format_name ==== [02:23:42] [PASSED] RGB [02:23:42] [PASSED] YUV 4:2:0 [02:23:42] [PASSED] YUV 4:2:2 [02:23:42] [PASSED] YUV 4:4:4 [02:23:42] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [02:23:42] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [02:23:42] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [02:23:42] ============= drm_damage_helper (21 subtests) ============== [02:23:42] [PASSED] drm_test_damage_iter_no_damage [02:23:42] [PASSED] drm_test_damage_iter_no_damage_fractional_src [02:23:42] [PASSED] drm_test_damage_iter_no_damage_src_moved [02:23:42] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [02:23:42] [PASSED] drm_test_damage_iter_no_damage_not_visible [02:23:42] [PASSED] drm_test_damage_iter_no_damage_no_crtc [02:23:42] [PASSED] drm_test_damage_iter_no_damage_no_fb [02:23:42] [PASSED] drm_test_damage_iter_simple_damage [02:23:42] [PASSED] drm_test_damage_iter_single_damage [02:23:42] [PASSED] drm_test_damage_iter_single_damage_intersect_src [02:23:42] [PASSED] drm_test_damage_iter_single_damage_outside_src [02:23:42] [PASSED] drm_test_damage_iter_single_damage_fractional_src [02:23:42] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [02:23:42] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [02:23:42] [PASSED] drm_test_damage_iter_single_damage_src_moved [02:23:42] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [02:23:42] [PASSED] drm_test_damage_iter_damage [02:23:42] [PASSED] drm_test_damage_iter_damage_one_intersect [02:23:42] [PASSED] drm_test_damage_iter_damage_one_outside [02:23:42] [PASSED] drm_test_damage_iter_damage_src_moved [02:23:42] [PASSED] drm_test_damage_iter_damage_not_visible [02:23:42] ================ [PASSED] drm_damage_helper ================ [02:23:42] ============== drm_dp_mst_helper (3 subtests) ============== [02:23:42] ============== drm_test_dp_mst_calc_pbn_mode ============== [02:23:42] [PASSED] Clock 154000 BPP 30 DSC disabled [02:23:42] [PASSED] Clock 234000 BPP 30 DSC disabled [02:23:42] [PASSED] Clock 297000 BPP 24 DSC disabled [02:23:42] [PASSED] Clock 332880 BPP 24 DSC enabled [02:23:42] [PASSED] Clock 324540 BPP 24 DSC enabled [02:23:42] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [02:23:42] ============== drm_test_dp_mst_calc_pbn_div =============== [02:23:42] [PASSED] Link rate 2000000 lane count 4 [02:23:42] [PASSED] Link rate 2000000 lane count 2 [02:23:42] [PASSED] Link rate 2000000 lane count 1 [02:23:42] [PASSED] Link rate 1350000 lane count 4 [02:23:42] [PASSED] Link rate 1350000 lane count 2 [02:23:42] [PASSED] Link rate 1350000 lane count 1 [02:23:42] [PASSED] Link rate 1000000 lane count 4 [02:23:42] [PASSED] Link rate 1000000 lane count 2 [02:23:42] [PASSED] Link rate 1000000 lane count 1 [02:23:42] [PASSED] Link rate 810000 lane count 4 [02:23:42] [PASSED] Link rate 810000 lane count 2 [02:23:42] [PASSED] Link rate 810000 lane count 1 [02:23:42] [PASSED] Link rate 540000 lane count 4 [02:23:42] [PASSED] Link rate 540000 lane count 2 [02:23:42] [PASSED] Link rate 540000 lane count 1 [02:23:42] [PASSED] Link rate 270000 lane count 4 [02:23:42] [PASSED] Link rate 270000 lane count 2 [02:23:42] [PASSED] Link rate 270000 lane count 1 [02:23:42] [PASSED] Link rate 162000 lane count 4 [02:23:42] [PASSED] Link rate 162000 lane count 2 [02:23:42] [PASSED] Link rate 162000 lane count 1 [02:23:42] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [02:23:42] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [02:23:42] [PASSED] DP_ENUM_PATH_RESOURCES with port number [02:23:42] [PASSED] DP_POWER_UP_PHY with port number [02:23:42] [PASSED] DP_POWER_DOWN_PHY with port number [02:23:42] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [02:23:42] [PASSED] DP_ALLOCATE_PAYLOAD with port number [02:23:42] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [02:23:42] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [02:23:42] [PASSED] DP_QUERY_PAYLOAD with port number [02:23:42] [PASSED] DP_QUERY_PAYLOAD with VCPI [02:23:42] [PASSED] DP_REMOTE_DPCD_READ with port number [02:23:42] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [02:23:42] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [02:23:42] [PASSED] DP_REMOTE_DPCD_WRITE with port number [02:23:42] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [02:23:42] [PASSED] DP_REMOTE_DPCD_WRITE with data array [02:23:42] [PASSED] DP_REMOTE_I2C_READ with port number [02:23:42] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [02:23:42] [PASSED] DP_REMOTE_I2C_READ with transactions array [02:23:42] [PASSED] DP_REMOTE_I2C_WRITE with port number [02:23:42] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [02:23:42] [PASSED] DP_REMOTE_I2C_WRITE with data array [02:23:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [02:23:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [02:23:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [02:23:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [02:23:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [02:23:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [02:23:42] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [02:23:42] ================ [PASSED] drm_dp_mst_helper ================ [02:23:42] ================== drm_exec (7 subtests) =================== [02:23:42] [PASSED] sanitycheck [02:23:42] [PASSED] test_lock [02:23:42] [PASSED] test_lock_unlock [02:23:42] [PASSED] test_duplicates [02:23:42] [PASSED] test_prepare [02:23:42] [PASSED] test_prepare_array [02:23:42] [PASSED] test_multiple_loops [02:23:42] ==================== [PASSED] drm_exec ===================== [02:23:42] =========== drm_format_helper_test (17 subtests) =========== [02:23:42] ============== drm_test_fb_xrgb8888_to_gray8 ============== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [02:23:42] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [02:23:42] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [02:23:42] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [02:23:42] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [02:23:42] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [02:23:42] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [02:23:42] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [02:23:42] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [02:23:42] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [02:23:42] ============== drm_test_fb_xrgb8888_to_mono =============== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [02:23:42] ==================== drm_test_fb_swab ===================== [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ================ [PASSED] drm_test_fb_swab ================= [02:23:42] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [02:23:42] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [02:23:42] [PASSED] single_pixel_source_buffer [02:23:42] [PASSED] single_pixel_clip_rectangle [02:23:42] [PASSED] well_known_colors [02:23:42] [PASSED] destination_pitch [02:23:42] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [02:23:42] ================= drm_test_fb_clip_offset ================= [02:23:42] [PASSED] pass through [02:23:42] [PASSED] horizontal offset [02:23:42] [PASSED] vertical offset [02:23:42] [PASSED] horizontal and vertical offset [02:23:42] [PASSED] horizontal offset (custom pitch) [02:23:42] [PASSED] vertical offset (custom pitch) [02:23:42] [PASSED] horizontal and vertical offset (custom pitch) [02:23:42] ============= [PASSED] drm_test_fb_clip_offset ============= [02:23:42] ============== drm_test_fb_build_fourcc_list ============== [02:23:42] [PASSED] no native formats [02:23:42] [PASSED] XRGB8888 as native format [02:23:42] [PASSED] remove duplicates [02:23:42] [PASSED] convert alpha formats [02:23:42] [PASSED] random formats [02:23:42] ========== [PASSED] drm_test_fb_build_fourcc_list ========== [02:23:42] =================== drm_test_fb_memcpy ==================== [02:23:42] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [02:23:42] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [02:23:42] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [02:23:42] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [02:23:42] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [02:23:42] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [02:23:42] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [02:23:42] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [02:23:42] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [02:23:42] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [02:23:42] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [02:23:42] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [02:23:42] =============== [PASSED] drm_test_fb_memcpy ================ [02:23:42] ============= [PASSED] drm_format_helper_test ============== [02:23:42] ================= drm_format (18 subtests) ================= [02:23:42] [PASSED] drm_test_format_block_width_invalid [02:23:42] [PASSED] drm_test_format_block_width_one_plane [02:23:42] [PASSED] drm_test_format_block_width_two_plane [02:23:42] [PASSED] drm_test_format_block_width_three_plane [02:23:42] [PASSED] drm_test_format_block_width_tiled [02:23:42] [PASSED] drm_test_format_block_height_invalid [02:23:42] [PASSED] drm_test_format_block_height_one_plane [02:23:42] [PASSED] drm_test_format_block_height_two_plane [02:23:42] [PASSED] drm_test_format_block_height_three_plane [02:23:42] [PASSED] drm_test_format_block_height_tiled [02:23:42] [PASSED] drm_test_format_min_pitch_invalid [02:23:42] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [02:23:42] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [02:23:42] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [02:23:42] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [02:23:42] [PASSED] drm_test_format_min_pitch_two_plane [02:23:42] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [02:23:42] [PASSED] drm_test_format_min_pitch_tiled [02:23:42] =================== [PASSED] drm_format ==================== [02:23:42] ============== drm_framebuffer (10 subtests) =============== [02:23:42] ========== drm_test_framebuffer_check_src_coords ========== [02:23:42] [PASSED] Success: source fits into fb [02:23:42] [PASSED] Fail: overflowing fb with x-axis coordinate [02:23:42] [PASSED] Fail: overflowing fb with y-axis coordinate [02:23:42] [PASSED] Fail: overflowing fb with source width [02:23:42] [PASSED] Fail: overflowing fb with source height [02:23:42] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [02:23:42] [PASSED] drm_test_framebuffer_cleanup [02:23:42] =============== drm_test_framebuffer_create =============== [02:23:42] [PASSED] ABGR8888 normal sizes [02:23:42] [PASSED] ABGR8888 max sizes [02:23:42] [PASSED] ABGR8888 pitch greater than min required [02:23:42] [PASSED] ABGR8888 pitch less than min required [02:23:42] [PASSED] ABGR8888 Invalid width [02:23:42] [PASSED] ABGR8888 Invalid buffer handle [02:23:42] [PASSED] No pixel format [02:23:42] [PASSED] ABGR8888 Width 0 [02:23:42] [PASSED] ABGR8888 Height 0 [02:23:42] [PASSED] ABGR8888 Out of bound height * pitch combination [02:23:42] [PASSED] ABGR8888 Large buffer offset [02:23:42] [PASSED] ABGR8888 Buffer offset for inexistent plane [02:23:42] [PASSED] ABGR8888 Invalid flag [02:23:42] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [02:23:42] [PASSED] ABGR8888 Valid buffer modifier [02:23:42] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [02:23:42] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [02:23:42] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [02:23:42] [PASSED] NV12 Normal sizes [02:23:42] [PASSED] NV12 Max sizes [02:23:42] [PASSED] NV12 Invalid pitch [02:23:42] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [02:23:42] [PASSED] NV12 different modifier per-plane [02:23:42] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [02:23:42] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [02:23:42] [PASSED] NV12 Modifier for inexistent plane [02:23:42] [PASSED] NV12 Handle for inexistent plane [02:23:42] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [02:23:42] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [02:23:42] [PASSED] YVU420 Normal sizes [02:23:42] [PASSED] YVU420 Max sizes [02:23:42] [PASSED] YVU420 Invalid pitch [02:23:42] [PASSED] YVU420 Different pitches [02:23:42] [PASSED] YVU420 Different buffer offsets/pitches [02:23:42] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [02:23:42] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [02:23:42] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [02:23:42] [PASSED] YVU420 Valid modifier [02:23:42] [PASSED] YVU420 Different modifiers per plane [02:23:42] [PASSED] YVU420 Modifier for inexistent plane [02:23:42] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [02:23:42] [PASSED] X0L2 Normal sizes [02:23:42] [PASSED] X0L2 Max sizes [02:23:42] [PASSED] X0L2 Invalid pitch [02:23:42] [PASSED] X0L2 Pitch greater than minimum required [02:23:42] [PASSED] X0L2 Handle for inexistent plane [02:23:42] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [02:23:42] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [02:23:42] [PASSED] X0L2 Valid modifier [02:23:42] [PASSED] X0L2 Modifier for inexistent plane [02:23:42] =========== [PASSED] drm_test_framebuffer_create =========== [02:23:42] [PASSED] drm_test_framebuffer_free [02:23:42] [PASSED] drm_test_framebuffer_init [02:23:42] [PASSED] drm_test_framebuffer_init_bad_format [02:23:42] [PASSED] drm_test_framebuffer_init_dev_mismatch [02:23:42] [PASSED] drm_test_framebuffer_lookup [02:23:42] [PASSED] drm_test_framebuffer_lookup_inexistent [02:23:42] [PASSED] drm_test_framebuffer_modifiers_not_supported [02:23:42] ================= [PASSED] drm_framebuffer ================= [02:23:42] ================ drm_gem_shmem (8 subtests) ================ [02:23:42] [PASSED] drm_gem_shmem_test_obj_create [02:23:42] [PASSED] drm_gem_shmem_test_obj_create_private [02:23:42] [PASSED] drm_gem_shmem_test_pin_pages [02:23:42] [PASSED] drm_gem_shmem_test_vmap [02:23:42] [PASSED] drm_gem_shmem_test_get_pages_sgt [02:23:42] [PASSED] drm_gem_shmem_test_get_sg_table [02:23:42] [PASSED] drm_gem_shmem_test_madvise [02:23:42] [PASSED] drm_gem_shmem_test_purge [02:23:42] ================== [PASSED] drm_gem_shmem ================== [02:23:42] === drm_atomic_helper_connector_hdmi_check (22 subtests) === [02:23:42] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [02:23:42] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [02:23:42] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [02:23:42] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [02:23:42] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [02:23:42] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [02:23:42] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [02:23:42] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [02:23:42] [PASSED] drm_test_check_hdmi_funcs_reject_rate [02:23:42] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback [02:23:42] [PASSED] drm_test_check_max_tmds_rate_format_fallback [02:23:42] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [02:23:42] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [02:23:42] [PASSED] drm_test_check_output_bpc_dvi [02:23:42] [PASSED] drm_test_check_output_bpc_format_vic_1 [02:23:42] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [02:23:42] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [02:23:42] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [02:23:42] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [02:23:42] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [02:23:42] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [02:23:42] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [02:23:42] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [02:23:42] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [02:23:42] [PASSED] drm_test_check_broadcast_rgb_value [02:23:42] [PASSED] drm_test_check_bpc_8_value [02:23:42] [PASSED] drm_test_check_bpc_10_value [02:23:42] [PASSED] drm_test_check_bpc_12_value [02:23:42] [PASSED] drm_test_check_format_value [02:23:42] [PASSED] drm_test_check_tmds_char_value [02:23:42] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [02:23:42] ================= drm_managed (2 subtests) ================= [02:23:42] [PASSED] drm_test_managed_release_action [02:23:42] [PASSED] drm_test_managed_run_action [02:23:42] =================== [PASSED] drm_managed =================== [02:23:42] =================== drm_mm (6 subtests) ==================== [02:23:42] [PASSED] drm_test_mm_init [02:23:42] [PASSED] drm_test_mm_debug [02:23:42] [PASSED] drm_test_mm_align32 [02:23:42] [PASSED] drm_test_mm_align64 [02:23:42] [PASSED] drm_test_mm_lowest [02:23:42] [PASSED] drm_test_mm_highest [02:23:42] ===================== [PASSED] drm_mm ====================== [02:23:42] ============= drm_modes_analog_tv (5 subtests) ============= [02:23:42] [PASSED] drm_test_modes_analog_tv_mono_576i [02:23:42] [PASSED] drm_test_modes_analog_tv_ntsc_480i [02:23:42] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [02:23:42] [PASSED] drm_test_modes_analog_tv_pal_576i [02:23:42] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [02:23:42] =============== [PASSED] drm_modes_analog_tv =============== stty: 'standard input': Inappropriate ioctl for device [02:23:42] ============== drm_plane_helper (2 subtests) =============== [02:23:42] =============== drm_test_check_plane_state ================ [02:23:42] [PASSED] clipping_simple [02:23:42] [PASSED] clipping_rotate_reflect [02:23:42] [PASSED] positioning_simple [02:23:42] [PASSED] upscaling [02:23:42] [PASSED] downscaling [02:23:42] [PASSED] rounding1 [02:23:42] [PASSED] rounding2 [02:23:42] [PASSED] rounding3 [02:23:42] [PASSED] rounding4 [02:23:42] =========== [PASSED] drm_test_check_plane_state ============ [02:23:42] =========== drm_test_check_invalid_plane_state ============ [02:23:42] [PASSED] positioning_invalid [02:23:42] [PASSED] upscaling_invalid [02:23:42] [PASSED] downscaling_invalid [02:23:42] ======= [PASSED] drm_test_check_invalid_plane_state ======== [02:23:42] ================ [PASSED] drm_plane_helper ================= [02:23:42] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [02:23:42] ====== drm_test_connector_helper_tv_get_modes_check ======= [02:23:42] [PASSED] None [02:23:42] [PASSED] PAL [02:23:42] [PASSED] NTSC [02:23:42] [PASSED] Both, NTSC Default [02:23:42] [PASSED] Both, PAL Default [02:23:42] [PASSED] Both, NTSC Default, with PAL on command-line [02:23:42] [PASSED] Both, PAL Default, with NTSC on command-line [02:23:42] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [02:23:42] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [02:23:42] ================== drm_rect (9 subtests) =================== [02:23:42] [PASSED] drm_test_rect_clip_scaled_div_by_zero [02:23:42] [PASSED] drm_test_rect_clip_scaled_not_clipped [02:23:42] [PASSED] drm_test_rect_clip_scaled_clipped [02:23:42] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [02:23:42] ================= drm_test_rect_intersect ================= [02:23:42] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [02:23:42] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [02:23:42] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [02:23:42] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [02:23:42] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [02:23:42] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [02:23:42] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [02:23:42] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [02:23:42] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [02:23:42] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [02:23:42] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [02:23:42] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [02:23:42] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [02:23:42] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [02:23:42] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [02:23:42] ============= [PASSED] drm_test_rect_intersect ============= [02:23:42] ================ drm_test_rect_calc_hscale ================ [02:23:42] [PASSED] normal use [02:23:42] [PASSED] out of max range [02:23:42] [PASSED] out of min range [02:23:42] [PASSED] zero dst [02:23:42] [PASSED] negative src [02:23:42] [PASSED] negative dst [02:23:42] ============ [PASSED] drm_test_rect_calc_hscale ============ [02:23:42] ================ drm_test_rect_calc_vscale ================ [02:23:42] [PASSED] normal use [02:23:42] [PASSED] out of max range [02:23:42] [PASSED] out of min range [02:23:42] [PASSED] zero dst [02:23:42] [PASSED] negative src [02:23:42] [PASSED] negative dst [02:23:42] ============ [PASSED] drm_test_rect_calc_vscale ============ [02:23:42] ================== drm_test_rect_rotate =================== [02:23:42] [PASSED] reflect-x [02:23:42] [PASSED] reflect-y [02:23:42] [PASSED] rotate-0 [02:23:42] [PASSED] rotate-90 [02:23:42] [PASSED] rotate-180 [02:23:42] [PASSED] rotate-270 [02:23:42] ============== [PASSED] drm_test_rect_rotate =============== [02:23:42] ================ drm_test_rect_rotate_inv ================= [02:23:42] [PASSED] reflect-x [02:23:42] [PASSED] reflect-y [02:23:42] [PASSED] rotate-0 [02:23:42] [PASSED] rotate-90 [02:23:42] [PASSED] rotate-180 [02:23:42] [PASSED] rotate-270 [02:23:42] ============ [PASSED] drm_test_rect_rotate_inv ============= [02:23:42] ==================== [PASSED] drm_rect ===================== [02:23:42] ============================================================ [02:23:42] Testing complete. Ran 526 tests: passed: 526 [02:23:42] Elapsed time: 24.733s total, 1.636s configuring, 22.923s building, 0.171s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [02:23:43] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [02:23:44] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json ARCH=um O=.kunit --jobs=48 [02:23:52] Starting KUnit Kernel (1/1)... [02:23:52] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [02:23:52] ================= ttm_device (5 subtests) ================== [02:23:52] [PASSED] ttm_device_init_basic [02:23:52] [PASSED] ttm_device_init_multiple [02:23:52] [PASSED] ttm_device_fini_basic [02:23:52] [PASSED] ttm_device_init_no_vma_man [02:23:52] ================== ttm_device_init_pools ================== [02:23:52] [PASSED] No DMA allocations, no DMA32 required [02:23:52] [PASSED] DMA allocations, DMA32 required [02:23:52] [PASSED] No DMA allocations, DMA32 required [02:23:52] [PASSED] DMA allocations, no DMA32 required [02:23:52] ============== [PASSED] ttm_device_init_pools ============== [02:23:52] =================== [PASSED] ttm_device ==================== [02:23:52] ================== ttm_pool (8 subtests) =================== [02:23:52] ================== ttm_pool_alloc_basic =================== [02:23:52] [PASSED] One page [02:23:52] [PASSED] More than one page [02:23:52] [PASSED] Above the allocation limit [02:23:52] [PASSED] One page, with coherent DMA mappings enabled [02:23:52] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [02:23:52] ============== [PASSED] ttm_pool_alloc_basic =============== [02:23:52] ============== ttm_pool_alloc_basic_dma_addr ============== [02:23:52] [PASSED] One page [02:23:52] [PASSED] More than one page [02:23:52] [PASSED] Above the allocation limit [02:23:52] [PASSED] One page, with coherent DMA mappings enabled [02:23:52] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [02:23:52] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [02:23:52] [PASSED] ttm_pool_alloc_order_caching_match [02:23:52] [PASSED] ttm_pool_alloc_caching_mismatch [02:23:52] [PASSED] ttm_pool_alloc_order_mismatch [02:23:52] [PASSED] ttm_pool_free_dma_alloc [02:23:52] [PASSED] ttm_pool_free_no_dma_alloc [02:23:52] [PASSED] ttm_pool_fini_basic [02:23:52] ==================== [PASSED] ttm_pool ===================== [02:23:52] ================ ttm_resource (8 subtests) ================= [02:23:52] ================= ttm_resource_init_basic ================= [02:23:52] [PASSED] Init resource in TTM_PL_SYSTEM [02:23:52] [PASSED] Init resource in TTM_PL_VRAM [02:23:52] [PASSED] Init resource in a private placement [02:23:52] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [02:23:52] ============= [PASSED] ttm_resource_init_basic ============= [02:23:52] [PASSED] ttm_resource_init_pinned [02:23:52] [PASSED] ttm_resource_fini_basic [02:23:52] [PASSED] ttm_resource_manager_init_basic [02:23:52] [PASSED] ttm_resource_manager_usage_basic [02:23:52] [PASSED] ttm_resource_manager_set_used_basic [02:23:52] [PASSED] ttm_sys_man_alloc_basic [02:23:52] [PASSED] ttm_sys_man_free_basic [02:23:52] ================== [PASSED] ttm_resource =================== [02:23:52] =================== ttm_tt (15 subtests) =================== [02:23:52] ==================== ttm_tt_init_basic ==================== [02:23:52] [PASSED] Page-aligned size [02:23:52] [PASSED] Extra pages requested [02:23:52] ================ [PASSED] ttm_tt_init_basic ================ [02:23:52] [PASSED] ttm_tt_init_misaligned [02:23:52] [PASSED] ttm_tt_fini_basic [02:23:52] [PASSED] ttm_tt_fini_sg [02:23:52] [PASSED] ttm_tt_fini_shmem [02:23:52] [PASSED] ttm_tt_create_basic [02:23:52] [PASSED] ttm_tt_create_invalid_bo_type [02:23:52] [PASSED] ttm_tt_create_ttm_exists [02:23:52] [PASSED] ttm_tt_create_failed [02:23:52] [PASSED] ttm_tt_destroy_basic [02:23:52] [PASSED] ttm_tt_populate_null_ttm [02:23:52] [PASSED] ttm_tt_populate_populated_ttm [02:23:52] [PASSED] ttm_tt_unpopulate_basic [02:23:52] [PASSED] ttm_tt_unpopulate_empty_ttm [02:23:52] [PASSED] ttm_tt_swapin_basic [02:23:52] ===================== [PASSED] ttm_tt ====================== [02:23:52] =================== ttm_bo (14 subtests) =================== [02:23:52] =========== ttm_bo_reserve_optimistic_no_ticket =========== [02:23:52] [PASSED] Cannot be interrupted and sleeps [02:23:52] [PASSED] Cannot be interrupted, locks straight away [02:23:52] [PASSED] Can be interrupted, sleeps [02:23:52] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [02:23:52] [PASSED] ttm_bo_reserve_locked_no_sleep [02:23:52] [PASSED] ttm_bo_reserve_no_wait_ticket [02:23:52] [PASSED] ttm_bo_reserve_double_resv [02:23:52] [PASSED] ttm_bo_reserve_interrupted [02:23:52] [PASSED] ttm_bo_reserve_deadlock [02:23:52] [PASSED] ttm_bo_unreserve_basic [02:23:52] [PASSED] ttm_bo_unreserve_pinned [02:23:52] [PASSED] ttm_bo_unreserve_bulk [02:23:52] [PASSED] ttm_bo_put_basic [02:23:52] [PASSED] ttm_bo_put_shared_resv [02:23:52] [PASSED] ttm_bo_pin_basic [02:23:52] [PASSED] ttm_bo_pin_unpin_resource [02:23:52] [PASSED] ttm_bo_multiple_pin_one_unpin [02:23:52] ===================== [PASSED] ttm_bo ====================== [02:23:52] ============== ttm_bo_validate (22 subtests) =============== [02:23:52] ============== ttm_bo_init_reserved_sys_man =============== [02:23:52] [PASSED] Buffer object for userspace [02:23:52] [PASSED] Kernel buffer object [02:23:52] [PASSED] Shared buffer object [02:23:52] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [02:23:52] ============== ttm_bo_init_reserved_mock_man ============== [02:23:52] [PASSED] Buffer object for userspace [02:23:52] [PASSED] Kernel buffer object [02:23:52] [PASSED] Shared buffer object [02:23:52] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [02:23:52] [PASSED] ttm_bo_init_reserved_resv [02:23:52] ================== ttm_bo_validate_basic ================== [02:23:52] [PASSED] Buffer object for userspace [02:23:52] [PASSED] Kernel buffer object [02:23:52] [PASSED] Shared buffer object [02:23:52] ============== [PASSED] ttm_bo_validate_basic ============== [02:23:52] [PASSED] ttm_bo_validate_invalid_placement [02:23:52] ============= ttm_bo_validate_same_placement ============== [02:23:52] [PASSED] System manager [02:23:52] [PASSED] VRAM manager [02:23:52] ========= [PASSED] ttm_bo_validate_same_placement ========== [02:23:52] [PASSED] ttm_bo_validate_failed_alloc [02:23:52] [PASSED] ttm_bo_validate_pinned [02:23:52] [PASSED] ttm_bo_validate_busy_placement [02:23:52] ================ ttm_bo_validate_multihop ================= [02:23:52] [PASSED] Buffer object for userspace [02:23:52] [PASSED] Kernel buffer object [02:23:52] [PASSED] Shared buffer object [02:23:52] ============ [PASSED] ttm_bo_validate_multihop ============= [02:23:52] ========== ttm_bo_validate_no_placement_signaled ========== [02:23:52] [PASSED] Buffer object in system domain, no page vector [02:23:52] [PASSED] Buffer object in system domain with an existing page vector [02:23:52] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [02:23:52] ======== ttm_bo_validate_no_placement_not_signaled ======== [02:23:52] [PASSED] Buffer object for userspace [02:23:52] [PASSED] Kernel buffer object [02:23:52] [PASSED] Shared buffer object [02:23:52] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [02:23:52] [PASSED] ttm_bo_validate_move_fence_signaled [02:23:52] ========= ttm_bo_validate_move_fence_not_signaled ========= [02:23:52] [PASSED] Waits for GPU [02:23:52] [PASSED] Tries to lock straight away [02:23:52] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [02:23:52] [PASSED] ttm_bo_validate_swapout [02:23:52] [PASSED] ttm_bo_validate_happy_evict [02:23:52] [PASSED] ttm_bo_validate_all_pinned_evict [02:23:52] [PASSED] ttm_bo_validate_allowed_only_evict [02:23:52] [PASSED] ttm_bo_validate_deleted_evict [02:23:52] [PASSED] ttm_bo_validate_busy_domain_evict [02:23:52] [PASSED] ttm_bo_validate_evict_gutting [02:23:52] [PASSED] ttm_bo_validate_recrusive_evict stty: 'standard input': Inappropriate ioctl for device [02:23:52] ================= [PASSED] ttm_bo_validate ================= [02:23:52] ============================================================ [02:23:52] Testing complete. Ran 102 tests: passed: 102 [02:23:52] Elapsed time: 9.839s total, 1.633s configuring, 7.588s building, 0.540s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ CI.Build: success for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn ` (3 preceding siblings ...) 2024-11-18 2:23 ` ✓ CI.KUnit: success " Patchwork @ 2024-11-18 2:41 ` Patchwork 2024-11-18 2:42 ` ✗ CI.Hooks: failure " Patchwork ` (3 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 2:41 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ State : success == Summary == lib/modules/6.12.0-xe/kernel/arch/x86/events/rapl.ko lib/modules/6.12.0-xe/kernel/arch/x86/kvm/ lib/modules/6.12.0-xe/kernel/arch/x86/kvm/kvm.ko lib/modules/6.12.0-xe/kernel/arch/x86/kvm/kvm-intel.ko lib/modules/6.12.0-xe/kernel/arch/x86/kvm/kvm-amd.ko lib/modules/6.12.0-xe/kernel/kernel/ lib/modules/6.12.0-xe/kernel/kernel/kheaders.ko lib/modules/6.12.0-xe/kernel/crypto/ lib/modules/6.12.0-xe/kernel/crypto/ecrdsa_generic.ko lib/modules/6.12.0-xe/kernel/crypto/xcbc.ko lib/modules/6.12.0-xe/kernel/crypto/serpent_generic.ko lib/modules/6.12.0-xe/kernel/crypto/aria_generic.ko lib/modules/6.12.0-xe/kernel/crypto/crypto_simd.ko lib/modules/6.12.0-xe/kernel/crypto/adiantum.ko lib/modules/6.12.0-xe/kernel/crypto/tcrypt.ko lib/modules/6.12.0-xe/kernel/crypto/crypto_engine.ko lib/modules/6.12.0-xe/kernel/crypto/zstd.ko lib/modules/6.12.0-xe/kernel/crypto/asymmetric_keys/ lib/modules/6.12.0-xe/kernel/crypto/asymmetric_keys/pkcs7_test_key.ko lib/modules/6.12.0-xe/kernel/crypto/asymmetric_keys/pkcs8_key_parser.ko lib/modules/6.12.0-xe/kernel/crypto/des_generic.ko lib/modules/6.12.0-xe/kernel/crypto/xctr.ko lib/modules/6.12.0-xe/kernel/crypto/authenc.ko lib/modules/6.12.0-xe/kernel/crypto/sm4_generic.ko lib/modules/6.12.0-xe/kernel/crypto/keywrap.ko lib/modules/6.12.0-xe/kernel/crypto/camellia_generic.ko lib/modules/6.12.0-xe/kernel/crypto/sm3.ko lib/modules/6.12.0-xe/kernel/crypto/pcrypt.ko lib/modules/6.12.0-xe/kernel/crypto/aegis128.ko lib/modules/6.12.0-xe/kernel/crypto/af_alg.ko lib/modules/6.12.0-xe/kernel/crypto/algif_aead.ko lib/modules/6.12.0-xe/kernel/crypto/cmac.ko lib/modules/6.12.0-xe/kernel/crypto/sm3_generic.ko lib/modules/6.12.0-xe/kernel/crypto/aes_ti.ko lib/modules/6.12.0-xe/kernel/crypto/chacha_generic.ko lib/modules/6.12.0-xe/kernel/crypto/poly1305_generic.ko lib/modules/6.12.0-xe/kernel/crypto/nhpoly1305.ko lib/modules/6.12.0-xe/kernel/crypto/crc32_generic.ko lib/modules/6.12.0-xe/kernel/crypto/essiv.ko lib/modules/6.12.0-xe/kernel/crypto/ccm.ko lib/modules/6.12.0-xe/kernel/crypto/wp512.ko lib/modules/6.12.0-xe/kernel/crypto/streebog_generic.ko lib/modules/6.12.0-xe/kernel/crypto/authencesn.ko lib/modules/6.12.0-xe/kernel/crypto/echainiv.ko lib/modules/6.12.0-xe/kernel/crypto/lrw.ko lib/modules/6.12.0-xe/kernel/crypto/cryptd.ko lib/modules/6.12.0-xe/kernel/crypto/crypto_user.ko lib/modules/6.12.0-xe/kernel/crypto/algif_hash.ko lib/modules/6.12.0-xe/kernel/crypto/vmac.ko lib/modules/6.12.0-xe/kernel/crypto/polyval-generic.ko lib/modules/6.12.0-xe/kernel/crypto/hctr2.ko lib/modules/6.12.0-xe/kernel/crypto/842.ko lib/modules/6.12.0-xe/kernel/crypto/pcbc.ko lib/modules/6.12.0-xe/kernel/crypto/ansi_cprng.ko lib/modules/6.12.0-xe/kernel/crypto/cast6_generic.ko lib/modules/6.12.0-xe/kernel/crypto/twofish_common.ko lib/modules/6.12.0-xe/kernel/crypto/twofish_generic.ko lib/modules/6.12.0-xe/kernel/crypto/lz4hc.ko lib/modules/6.12.0-xe/kernel/crypto/blowfish_generic.ko lib/modules/6.12.0-xe/kernel/crypto/md4.ko lib/modules/6.12.0-xe/kernel/crypto/chacha20poly1305.ko lib/modules/6.12.0-xe/kernel/crypto/curve25519-generic.ko lib/modules/6.12.0-xe/kernel/crypto/lz4.ko lib/modules/6.12.0-xe/kernel/crypto/rmd160.ko lib/modules/6.12.0-xe/kernel/crypto/algif_skcipher.ko lib/modules/6.12.0-xe/kernel/crypto/cast5_generic.ko lib/modules/6.12.0-xe/kernel/crypto/fcrypt.ko lib/modules/6.12.0-xe/kernel/crypto/ecdsa_generic.ko lib/modules/6.12.0-xe/kernel/crypto/sm4.ko lib/modules/6.12.0-xe/kernel/crypto/cast_common.ko lib/modules/6.12.0-xe/kernel/crypto/blowfish_common.ko lib/modules/6.12.0-xe/kernel/crypto/michael_mic.ko lib/modules/6.12.0-xe/kernel/crypto/async_tx/ lib/modules/6.12.0-xe/kernel/crypto/async_tx/async_xor.ko lib/modules/6.12.0-xe/kernel/crypto/async_tx/async_tx.ko lib/modules/6.12.0-xe/kernel/crypto/async_tx/async_memcpy.ko lib/modules/6.12.0-xe/kernel/crypto/async_tx/async_pq.ko lib/modules/6.12.0-xe/kernel/crypto/async_tx/async_raid6_recov.ko lib/modules/6.12.0-xe/kernel/crypto/algif_rng.ko lib/modules/6.12.0-xe/kernel/block/ lib/modules/6.12.0-xe/kernel/block/bfq.ko lib/modules/6.12.0-xe/kernel/block/kyber-iosched.ko lib/modules/6.12.0-xe/build lib/modules/6.12.0-xe/modules.alias.bin lib/modules/6.12.0-xe/modules.builtin lib/modules/6.12.0-xe/modules.softdep lib/modules/6.12.0-xe/modules.alias lib/modules/6.12.0-xe/modules.order lib/modules/6.12.0-xe/modules.symbols lib/modules/6.12.0-xe/modules.dep.bin + mv kernel-nodebug.tar.gz .. + cd .. + rm -rf archive ++ date +%s + echo -e '\e[0Ksection_end:1731897694:package_x86_64_nodebug\r\e[0K' ^[[0Ksection_end:1731897694:package_x86_64_nodebug ^[[0K + sync + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ CI.Hooks: failure for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn ` (4 preceding siblings ...) 2024-11-18 2:41 ` ✓ CI.Build: " Patchwork @ 2024-11-18 2:42 ` Patchwork 2024-11-18 2:43 ` ✓ CI.checksparse: success " Patchwork ` (2 subsequent siblings) 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 2:42 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ State : failure == Summary == run-parts: executing /workspace/ci/hooks/00-showenv + grep -Ei '(^|\W)CI_' + export declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default" declare -x CI_KERNEL_SRC_DIR="/workspace/kernel" declare -x CI_TOOLS_SRC_DIR="/workspace/ci" declare -x CI_WORKSPACE_DIR="/workspace" run-parts: executing /workspace/ci/hooks/10-build-W1 + SRC_DIR=/workspace/kernel + RESTORE_DISPLAY_CONFIG=0 + '[' -n /workspace/kernel/build64-default ']' + BUILD_DIR=/workspace/kernel/build64-default + cd /workspace/kernel ++ nproc + make -j48 O=/workspace/kernel/build64-default modules_prepare make[1]: Entering directory '/workspace/kernel/build64-default' GEN Makefile UPD include/config/kernel.release mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool UPD include/generated/utsrelease.h CALL ../scripts/checksyscalls.sh INSTALL libsubcmd_headers CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o LD /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o AR /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a CC /workspace/kernel/build64-default/tools/objtool/weak.o CC /workspace/kernel/build64-default/tools/objtool/check.o CC /workspace/kernel/build64-default/tools/objtool/special.o CC /workspace/kernel/build64-default/tools/objtool/builtin-check.o CC /workspace/kernel/build64-default/tools/objtool/elf.o CC /workspace/kernel/build64-default/tools/objtool/objtool.o CC /workspace/kernel/build64-default/tools/objtool/orc_gen.o CC /workspace/kernel/build64-default/tools/objtool/orc_dump.o CC /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o CC /workspace/kernel/build64-default/tools/objtool/libstring.o CC /workspace/kernel/build64-default/tools/objtool/libctype.o CC /workspace/kernel/build64-default/tools/objtool/str_error_r.o CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o CC /workspace/kernel/build64-default/tools/objtool/librbtree.o CC /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o LD /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o LD /workspace/kernel/build64-default/tools/objtool/objtool-in.o LINK /workspace/kernel/build64-default/tools/objtool/objtool make[1]: Leaving directory '/workspace/kernel/build64-default' ++ nproc + make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe make[1]: Entering directory '/workspace/kernel/build64-default' make[2]: Nothing to be done for 'drivers/gpu/drm/xe'. make[1]: Leaving directory '/workspace/kernel/build64-default' run-parts: executing /workspace/ci/hooks/11-build-32b +++ realpath /workspace/ci/hooks/11-build-32b ++ dirname /workspace/ci/hooks/11-build-32b + THIS_SCRIPT_DIR=/workspace/ci/hooks + SRC_DIR=/workspace/kernel + TOOLS_SRC_DIR=/workspace/ci + '[' -n /workspace/kernel/build64-default ']' + BUILD_DIR=/workspace/kernel/build64-default + BUILD_DIR=/workspace/kernel/build64-default/build32 + cd /workspace/kernel + mkdir -p /workspace/kernel/build64-default/build32 ++ nproc + make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig make[1]: Entering directory '/workspace/kernel/build64-default/build32' GEN Makefile HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/confdata.o HOSTCC scripts/kconfig/expr.o LEX scripts/kconfig/lexer.lex.c YACC scripts/kconfig/parser.tab.[ch] HOSTCC scripts/kconfig/menu.o HOSTCC scripts/kconfig/preprocess.o HOSTCC scripts/kconfig/symbol.o HOSTCC scripts/kconfig/util.o HOSTCC scripts/kconfig/lexer.lex.o HOSTCC scripts/kconfig/parser.tab.o HOSTLD scripts/kconfig/conf *** Default configuration is based on 'i386_defconfig' # # configuration written to .config # make[1]: Leaving directory '/workspace/kernel/build64-default/build32' + cd /workspace/kernel/build64-default/build32 + /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/10-xe.fragment Using .config as base Merging /workspace/ci/kernel/10-xe.fragment The merge file '/workspace/ci/kernel/10-xe.fragment' does not exist. Exit. run-parts: /workspace/ci/hooks/11-build-32b exited with return code 1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ CI.checksparse: success for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn ` (5 preceding siblings ...) 2024-11-18 2:42 ` ✗ CI.Hooks: failure " Patchwork @ 2024-11-18 2:43 ` Patchwork 2024-11-18 3:02 ` ✓ CI.BAT: " Patchwork 2024-11-18 4:03 ` ✗ CI.FULL: failure " Patchwork 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 2:43 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ State : success == Summary == + trap cleanup EXIT + KERNEL=/kernel + MT=/root/linux/maintainer-tools + git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools Cloning into '/root/linux/maintainer-tools'... warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/ + make -C /root/linux/maintainer-tools make: Entering directory '/root/linux/maintainer-tools' cc -O2 -g -Wextra -o remap-log remap-log.c make: Leaving directory '/root/linux/maintainer-tools' + cd /kernel + git config --global --add safe.directory /kernel + /root/linux/maintainer-tools/dim sparse --fast 5b1f614ccf1008e7aee531bf76bb639802e0df88 /root/linux/maintainer-tools/dim: line 2068: sparse: command not found Sparse version: Fast mode used, each commit won't be checked separately. Okay! + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ CI.BAT: success for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn ` (6 preceding siblings ...) 2024-11-18 2:43 ` ✓ CI.checksparse: success " Patchwork @ 2024-11-18 3:02 ` Patchwork 2024-11-18 4:03 ` ✗ CI.FULL: failure " Patchwork 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 3:02 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 11786 bytes --] == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ State : success == Summary == CI Bug Log - changes from xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88_BAT -> xe-pw-141459v1_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (9 -> 9) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in xe-pw-141459v1_BAT that come from known issues: ### IGT changes ### #### Issues hit #### * igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit: - bat-adlp-vf: NOTRUN -> [SKIP][1] ([Intel XE#2229] / [Intel XE#455]) +1 other test skip [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-adlp-vf/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html * igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit: - bat-dg2-oem2: NOTRUN -> [SKIP][2] ([Intel XE#2229]) [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html - bat-adlp-vf: NOTRUN -> [SKIP][3] ([Intel XE#2229]) [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-adlp-vf/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html #### Possible fixes #### * igt@core_hotunplug@unbind-rebind: - bat-dg2-oem2: [SKIP][4] ([Intel XE#1885]) -> [PASS][5] [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@core_hotunplug@unbind-rebind.html [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@core_hotunplug@unbind-rebind.html * igt@fbdev@nullptr: - bat-dg2-oem2: [SKIP][6] ([Intel XE#2134]) -> [PASS][7] +4 other tests pass [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@fbdev@nullptr.html [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@fbdev@nullptr.html * igt@kms_addfb_basic@bad-pitch-128: - bat-dg2-oem2: [SKIP][8] ([i915#2575]) -> [PASS][9] +50 other tests pass [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@kms_addfb_basic@bad-pitch-128.html [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@kms_addfb_basic@bad-pitch-128.html * igt@kms_frontbuffer_tracking@basic: - bat-dg2-oem2: [SKIP][10] ([Intel XE#2231]) -> [PASS][11] [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@kms_frontbuffer_tracking@basic.html [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@kms_frontbuffer_tracking@basic.html * igt@xe_live_ktest@xe_migrate: - bat-dg2-oem2: [SKIP][12] ([Intel XE#1192]) -> [PASS][13] +2 other tests pass [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_live_ktest@xe_migrate.html [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_live_ktest@xe_migrate.html - bat-adlp-vf: [SKIP][14] ([Intel XE#1192]) -> [PASS][15] +1 other test pass [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html * igt@xe_module_load@load: - bat-dg2-oem2: [DMESG-FAIL][16] ([Intel XE#3400]) -> [PASS][17] [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_module_load@load.html [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_module_load@load.html * igt@xe_pat@pat-index-xelp@render: - bat-adlp-vf: [DMESG-WARN][18] ([Intel XE#358]) -> [PASS][19] +1 other test pass [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-adlp-vf/igt@xe_pat@pat-index-xelp@render.html [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-adlp-vf/igt@xe_pat@pat-index-xelp@render.html * igt@xe_prime_self_import@basic-with_fd_dup: - bat-dg2-oem2: [SKIP][20] ([Intel XE#1130]) -> [PASS][21] +157 other tests pass [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_prime_self_import@basic-with_fd_dup.html [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_prime_self_import@basic-with_fd_dup.html #### Warnings #### * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - bat-dg2-oem2: [SKIP][22] ([i915#2575]) -> [SKIP][23] ([Intel XE#623]) [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_dsc@dsc-basic: - bat-dg2-oem2: [SKIP][24] ([Intel XE#2231]) -> [SKIP][25] ([Intel XE#455]) [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html * igt@kms_force_connector_basic@prune-stale-modes: - bat-dg2-oem2: [SKIP][26] ([i915#2575]) -> [SKIP][27] ([i915#5274]) [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html * igt@kms_psr@psr-cursor-plane-move: - bat-dg2-oem2: [SKIP][28] ([Intel XE#2231]) -> [SKIP][29] ([Intel XE#2850] / [Intel XE#929]) +2 other tests skip [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@kms_psr@psr-cursor-plane-move.html [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@kms_psr@psr-cursor-plane-move.html * igt@sriov_basic@enable-vfs-autoprobe-off: - bat-dg2-oem2: [SKIP][30] ([i915#2575]) -> [SKIP][31] ([Intel XE#1091] / [Intel XE#2849]) +1 other test skip [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@sriov_basic@enable-vfs-autoprobe-off.html [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@sriov_basic@enable-vfs-autoprobe-off.html * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr: - bat-dg2-oem2: [SKIP][32] ([Intel XE#1130]) -> [SKIP][33] ([Intel XE#288]) +32 other tests skip [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr.html [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr.html * igt@xe_huc_copy@huc_copy: - bat-dg2-oem2: [SKIP][34] ([Intel XE#1130]) -> [SKIP][35] ([Intel XE#255]) [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html * igt@xe_live_ktest@xe_bo: - bat-adlp-vf: [SKIP][36] ([Intel XE#1192]) -> [SKIP][37] ([Intel XE#2229] / [Intel XE#455]) [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html * igt@xe_pat@pat-index-xe2: - bat-dg2-oem2: [SKIP][38] ([Intel XE#1130]) -> [SKIP][39] ([Intel XE#2839] / [Intel XE#977]) [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html * igt@xe_pat@pat-index-xehpc: - bat-dg2-oem2: [SKIP][40] ([Intel XE#1130]) -> [SKIP][41] ([Intel XE#2838] / [Intel XE#979]) [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html * igt@xe_pat@pat-index-xelpg: - bat-dg2-oem2: [SKIP][42] ([Intel XE#1130]) -> [SKIP][43] ([Intel XE#979]) [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_pat@pat-index-xelpg.html [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_pat@pat-index-xelpg.html * igt@xe_sriov_flr@flr-vf1-clear: - bat-dg2-oem2: [SKIP][44] ([Intel XE#1130]) -> [SKIP][45] ([Intel XE#3342]) [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/bat-dg2-oem2/igt@xe_sriov_flr@flr-vf1-clear.html [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/bat-dg2-oem2/igt@xe_sriov_flr@flr-vf1-clear.html [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091 [Intel XE#1130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1130 [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192 [Intel XE#1885]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1885 [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134 [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229 [Intel XE#2231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2231 [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255 [Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838 [Intel XE#2839]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2839 [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849 [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850 [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288 [Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342 [Intel XE#3400]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3400 [Intel XE#358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/358 [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455 [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623 [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929 [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977 [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979 [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575 [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274 Build changes ------------- * Linux: xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88 -> xe-pw-141459v1 IGT_8114: 8114 xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88: 5b1f614ccf1008e7aee531bf76bb639802e0df88 xe-pw-141459v1: 141459v1 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/index.html [-- Attachment #2: Type: text/html, Size: 14173 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ CI.FULL: failure for Maintenence of devcoredump <-> GuC-Err-Capture plumbing 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn ` (7 preceding siblings ...) 2024-11-18 3:02 ` ✓ CI.BAT: " Patchwork @ 2024-11-18 4:03 ` Patchwork 8 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2024-11-18 4:03 UTC (permalink / raw) To: Alan Previn; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 118873 bytes --] == Series Details == Series: Maintenence of devcoredump <-> GuC-Err-Capture plumbing URL : https://patchwork.freedesktop.org/series/141459/ State : failure == Summary == CI Bug Log - changes from xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88_full -> xe-pw-141459v1_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with xe-pw-141459v1_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in xe-pw-141459v1_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 (4 -> 4) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in xe-pw-141459v1_full: ### IGT changes ### #### Possible regressions #### * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4: - shard-dg2-set2: NOTRUN -> [FAIL][1] +1 other test fail [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4.html * igt@kms_flip@flip-vs-suspend@a-hdmi-a6: - shard-dg2-set2: NOTRUN -> [DMESG-WARN][2] +10 other tests dmesg-warn [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_flip@flip-vs-suspend@a-hdmi-a6.html * igt@kms_flip@flip-vs-suspend@c-hdmi-a6: - shard-dg2-set2: NOTRUN -> [DMESG-FAIL][3] +5 other tests dmesg-fail [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_flip@flip-vs-suspend@c-hdmi-a6.html * igt@kms_flip@wf_vblank-ts-check@a-hdmi-a3: - shard-bmg: [PASS][4] -> [DMESG-FAIL][5] +3 other tests dmesg-fail [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-4/igt@kms_flip@wf_vblank-ts-check@a-hdmi-a3.html [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_flip@wf_vblank-ts-check@a-hdmi-a3.html * igt@kms_plane_alpha_blend@alpha-7efc@pipe-a-dp-2: - shard-bmg: [PASS][6] -> [FAIL][7] [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-4/igt@kms_plane_alpha_blend@alpha-7efc@pipe-a-dp-2.html [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_plane_alpha_blend@alpha-7efc@pipe-a-dp-2.html * igt@xe_drm_fdinfo@utilization-single-full-load: - shard-lnl: [PASS][8] -> [FAIL][9] +1 other test fail [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-6/igt@xe_drm_fdinfo@utilization-single-full-load.html [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-2/igt@xe_drm_fdinfo@utilization-single-full-load.html * igt@xe_exec_reset@parallel-gt-reset: - shard-adlp: [PASS][10] -> [DMESG-WARN][11] +9 other tests dmesg-warn [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-9/igt@xe_exec_reset@parallel-gt-reset.html [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@xe_exec_reset@parallel-gt-reset.html - shard-dg2-set2: [PASS][12] -> [DMESG-WARN][13] +4 other tests dmesg-warn [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-433/igt@xe_exec_reset@parallel-gt-reset.html [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_exec_reset@parallel-gt-reset.html * igt@xe_exec_reset@virtual-cat-error: - shard-bmg: NOTRUN -> [DMESG-WARN][14] +8 other tests dmesg-warn [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_exec_reset@virtual-cat-error.html * igt@xe_exec_sip_eudebug@wait-writesip-nodebug@drm_xe_engine_class_render0: - shard-bmg: [PASS][15] -> [DMESG-WARN][16] +99 other tests dmesg-warn [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-8/igt@xe_exec_sip_eudebug@wait-writesip-nodebug@drm_xe_engine_class_render0.html [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-8/igt@xe_exec_sip_eudebug@wait-writesip-nodebug@drm_xe_engine_class_render0.html * igt@xe_exec_threads@threads-hang-userptr-rebind-err: - shard-lnl: [PASS][17] -> [DMESG-WARN][18] +52 other tests dmesg-warn [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-8/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-2/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html * igt@xe_fault_injection@inject-fault-probe-function-xe_guc_log_init: - shard-adlp: NOTRUN -> [DMESG-WARN][19] +1 other test dmesg-warn [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@xe_fault_injection@inject-fault-probe-function-xe_guc_log_init.html * igt@xe_oa@enable-disable@rcs-0: - shard-lnl: NOTRUN -> [DMESG-WARN][20] +1 other test dmesg-warn [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-2/igt@xe_oa@enable-disable@rcs-0.html * igt@xe_pm_residency@gt-c6-freeze@gt1: - shard-bmg: NOTRUN -> [DMESG-FAIL][21] +1 other test dmesg-fail [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@xe_pm_residency@gt-c6-freeze@gt1.html #### Warnings #### * igt@core_hotunplug@hotunplug-rescan: - shard-dg2-set2: [SKIP][22] ([Intel XE#1885]) -> [DMESG-WARN][23] [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@core_hotunplug@hotunplug-rescan.html [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@core_hotunplug@hotunplug-rescan.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0: - shard-bmg: [DMESG-WARN][24] -> [DMESG-FAIL][25] [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0: - shard-bmg: [DMESG-FAIL][26] -> [DMESG-WARN][27] +1 other test dmesg-warn [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-6/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0.html [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0.html * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc: - shard-dg2-set2: [SKIP][28] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][29] +1 other test skip [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-436/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html * igt@kms_flip@flip-vs-suspend: - shard-dg2-set2: [SKIP][30] ([Intel XE#2423] / [i915#2575]) -> [DMESG-FAIL][31] [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_flip@flip-vs-suspend.html [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_flip@flip-vs-suspend.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move: - shard-bmg: [FAIL][32] ([Intel XE#2333]) -> [DMESG-FAIL][33] +1 other test dmesg-fail [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html * igt@kms_vblank@ts-continuation-suspend: - shard-dg2-set2: [SKIP][34] ([Intel XE#2423] / [i915#2575]) -> [DMESG-WARN][35] [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_vblank@ts-continuation-suspend.html [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_vblank@ts-continuation-suspend.html * igt@xe_fault_injection@inject-fault-probe-function-xe_sriov_init: - shard-dg2-set2: [SKIP][36] ([Intel XE#1130]) -> [DMESG-WARN][37] +1 other test dmesg-warn [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_fault_injection@inject-fault-probe-function-xe_sriov_init.html [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@xe_fault_injection@inject-fault-probe-function-xe_sriov_init.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * {igt@xe_eudebug@exec-queue-placements}: - shard-dg2-set2: [SKIP][38] ([Intel XE#1130]) -> [SKIP][39] [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_eudebug@exec-queue-placements.html [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_eudebug@exec-queue-placements.html * {igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind}: - shard-dg2-set2: [SKIP][40] ([Intel XE#1130]) -> [DMESG-WARN][41] +1 other test dmesg-warn [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html * {igt@xe_fault_injection@vm-create-fail-xe_pt_create}: - shard-bmg: [PASS][42] -> [DMESG-WARN][43] [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-4/igt@xe_fault_injection@vm-create-fail-xe_pt_create.html [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@xe_fault_injection@vm-create-fail-xe_pt_create.html Known issues ------------ Here are the changes found in xe-pw-141459v1_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@core_getstats: - shard-dg2-set2: [PASS][44] -> [SKIP][45] ([Intel XE#2423]) [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@core_getstats.html [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@core_getstats.html * igt@core_hotunplug@hotrebind: - shard-dg2-set2: [PASS][46] -> [SKIP][47] ([Intel XE#1885]) +1 other test skip [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@core_hotunplug@hotrebind.html [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@core_hotunplug@hotrebind.html * igt@fbdev@pan: - shard-dg2-set2: [PASS][48] -> [SKIP][49] ([Intel XE#2134]) [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@fbdev@pan.html [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@fbdev@pan.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#2233]) [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear: - shard-lnl: NOTRUN -> [FAIL][51] ([Intel XE#911]) +3 other tests fail [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear.html * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs: - shard-dg2-set2: NOTRUN -> [SKIP][52] ([Intel XE#2550]) +23 other tests skip [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html * igt@kms_async_flips@invalid-async-flip@pipe-c-hdmi-a-1: - shard-adlp: [PASS][53] -> [DMESG-WARN][54] ([Intel XE#1033]) +1 other test dmesg-warn [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-1/igt@kms_async_flips@invalid-async-flip@pipe-c-hdmi-a-1.html [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-8/igt@kms_async_flips@invalid-async-flip@pipe-c-hdmi-a-1.html * igt@kms_atomic_transition@modeset-transition-nonblocking-fencing: - shard-dg2-set2: NOTRUN -> [SKIP][55] ([Intel XE#2423] / [i915#2575]) +52 other tests skip [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip: - shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#1407]) [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip: - shard-adlp: NOTRUN -> [SKIP][57] ([Intel XE#1124]) [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html * igt@kms_big_fb@linear-8bpp-rotate-90: - shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#2327]) +1 other test skip [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_big_fb@linear-8bpp-rotate-90.html * igt@kms_big_fb@x-tiled-32bpp-rotate-270: - shard-dg2-set2: NOTRUN -> [SKIP][59] ([Intel XE#316]) [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html * igt@kms_big_fb@x-tiled-64bpp-rotate-90: - shard-adlp: NOTRUN -> [SKIP][60] ([Intel XE#316]) [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip: - shard-adlp: NOTRUN -> [DMESG-WARN][61] ([Intel XE#1033]) [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip: - shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#1124]) +2 other tests skip [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html * igt@kms_big_fb@yf-tiled-16bpp-rotate-270: - shard-dg2-set2: NOTRUN -> [SKIP][63] ([Intel XE#1124]) [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html * igt@kms_big_fb@yf-tiled-32bpp-rotate-180: - shard-dg2-set2: NOTRUN -> [SKIP][64] ([Intel XE#2136]) +54 other tests skip [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html * igt@kms_big_fb@yf-tiled-64bpp-rotate-0: - shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#1124]) +4 other tests skip [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_big_fb@yf-tiled-64bpp-rotate-0.html * igt@kms_bw@linear-tiling-2-displays-1920x1080p: - shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#367]) +1 other test skip [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html * igt@kms_bw@linear-tiling-4-displays-2160x1440p: - shard-lnl: NOTRUN -> [SKIP][67] ([Intel XE#1512]) [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc: - shard-lnl: NOTRUN -> [SKIP][68] ([Intel XE#2887]) +2 other tests skip [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs@pipe-a-edp-1: - shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#2669]) +7 other tests skip [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs@pipe-a-edp-1.html * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-d-dp-4: - shard-dg2-set2: NOTRUN -> [SKIP][70] ([Intel XE#455] / [Intel XE#787]) +20 other tests skip [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-d-dp-4.html * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-6: - shard-dg2-set2: NOTRUN -> [SKIP][71] ([Intel XE#787]) +111 other tests skip [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-6.html * igt@kms_ccs@crc-primary-basic-y-tiled-ccs: - shard-bmg: NOTRUN -> [SKIP][72] ([Intel XE#2887]) +6 other tests skip [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_ccs@crc-primary-basic-y-tiled-ccs.html * igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-b-dp-2: - shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#2652] / [Intel XE#787]) +8 other tests skip [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-b-dp-2.html * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs: - shard-adlp: NOTRUN -> [SKIP][74] ([Intel XE#455] / [Intel XE#787]) +1 other test skip [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs.html * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1: - shard-adlp: NOTRUN -> [SKIP][75] ([Intel XE#787]) +2 other tests skip [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1.html * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc: - shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#3432]) [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html * igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1: - shard-adlp: NOTRUN -> [SKIP][77] ([Intel XE#314]) +2 other tests skip [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1.html * igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1: - shard-adlp: NOTRUN -> [SKIP][78] ([Intel XE#314] / [Intel XE#455]) +1 other test skip [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1.html * igt@kms_chamelium_color@ctm-blue-to-red: - shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#306]) +1 other test skip [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_chamelium_color@ctm-blue-to-red.html * igt@kms_chamelium_color@degamma: - shard-dg2-set2: NOTRUN -> [SKIP][80] ([Intel XE#306]) [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_chamelium_color@degamma.html * igt@kms_chamelium_frames@dp-frame-dump: - shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#373]) [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_chamelium_frames@dp-frame-dump.html * igt@kms_chamelium_hpd@common-hpd-after-suspend: - shard-bmg: NOTRUN -> [SKIP][82] ([Intel XE#2252]) +4 other tests skip [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_chamelium_hpd@common-hpd-after-suspend.html * igt@kms_chamelium_hpd@dp-hpd: - shard-adlp: NOTRUN -> [SKIP][83] ([Intel XE#373]) [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_chamelium_hpd@dp-hpd.html * igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate: - shard-dg2-set2: NOTRUN -> [SKIP][84] ([Intel XE#373]) [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate.html * igt@kms_color@ctm-0-50@pipe-d-hdmi-a-3: - shard-bmg: NOTRUN -> [DMESG-WARN][85] ([Intel XE#877]) +1 other test dmesg-warn [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_color@ctm-0-50@pipe-d-hdmi-a-3.html * igt@kms_content_protection@dp-mst-lic-type-0: - shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#2390]) [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_content_protection@dp-mst-lic-type-0.html * igt@kms_content_protection@type1: - shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#2341]) [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-2/igt@kms_content_protection@type1.html * igt@kms_cursor_crc@cursor-offscreen-32x10: - shard-adlp: NOTRUN -> [SKIP][88] ([Intel XE#455]) [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_cursor_crc@cursor-offscreen-32x10.html * igt@kms_cursor_crc@cursor-offscreen-max-size: - shard-bmg: NOTRUN -> [SKIP][89] ([Intel XE#2320]) +1 other test skip [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_cursor_crc@cursor-offscreen-max-size.html * igt@kms_cursor_crc@cursor-onscreen-512x170: - shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#2321]) [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_cursor_crc@cursor-onscreen-512x170.html * igt@kms_cursor_crc@cursor-rapid-movement-512x512: - shard-dg2-set2: NOTRUN -> [SKIP][91] ([Intel XE#308]) [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - shard-bmg: NOTRUN -> [SKIP][92] ([Intel XE#2286]) [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size: - shard-dg2-set2: NOTRUN -> [SKIP][93] ([Intel XE#323]) [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html * igt@kms_cursor_legacy@torture-bo@all-pipes: - shard-dg2-set2: NOTRUN -> [DMESG-WARN][94] ([Intel XE#3184]) [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_cursor_legacy@torture-bo@all-pipes.html * igt@kms_dsc@dsc-with-bpc-formats: - shard-bmg: NOTRUN -> [SKIP][95] ([Intel XE#2244]) [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_dsc@dsc-with-bpc-formats.html * igt@kms_fbcon_fbt@fbc-suspend: - shard-bmg: NOTRUN -> [FAIL][96] ([Intel XE#1695]) +1 other test fail [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_fbcon_fbt@fbc-suspend.html * igt@kms_feature_discovery@dp-mst: - shard-bmg: NOTRUN -> [SKIP][97] ([Intel XE#2375]) [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_feature_discovery@dp-mst.html * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-hdmi-a6-dp4: - shard-dg2-set2: NOTRUN -> [FAIL][98] ([Intel XE#301]) +7 other tests fail [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-hdmi-a6-dp4.html * igt@kms_flip@2x-flip-vs-rmfb: - shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#1421]) +1 other test skip [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_flip@2x-flip-vs-rmfb.html * igt@kms_flip@busy-flip: - shard-dg2-set2: [PASS][100] -> [SKIP][101] ([Intel XE#2423] / [i915#2575]) +50 other tests skip [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_flip@busy-flip.html [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_flip@busy-flip.html * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-edp1: - shard-lnl: [PASS][102] -> [FAIL][103] ([Intel XE#886]) +2 other tests fail [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-edp1.html [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-6/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-edp1.html * igt@kms_flip@flip-vs-suspend: - shard-adlp: [PASS][104] -> [DMESG-WARN][105] ([Intel XE#2953] / [Intel XE#3086]) [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-8/igt@kms_flip@flip-vs-suspend.html [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-3/igt@kms_flip@flip-vs-suspend.html * igt@kms_flip@flip-vs-suspend@a-hdmi-a1: - shard-adlp: [PASS][106] -> [DMESG-WARN][107] ([Intel XE#3086]) [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-8/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-3/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html * igt@kms_flip@wf_vblank-ts-check: - shard-lnl: [PASS][108] -> [FAIL][109] ([Intel XE#3149] / [Intel XE#886]) [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-8/igt@kms_flip@wf_vblank-ts-check.html [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-2/igt@kms_flip@wf_vblank-ts-check.html * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling: - shard-dg2-set2: [PASS][110] -> [SKIP][111] ([Intel XE#2136] / [Intel XE#2351]) +2 other tests skip [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling.html [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-valid-mode: - shard-dg2-set2: NOTRUN -> [INCOMPLETE][112] ([Intel XE#1195]) [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-436/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode: - shard-bmg: NOTRUN -> [SKIP][113] ([Intel XE#2293]) +1 other test skip [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling: - shard-bmg: NOTRUN -> [SKIP][114] ([Intel XE#2293] / [Intel XE#2380]) +1 other test skip [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt: - shard-lnl: NOTRUN -> [SKIP][115] ([Intel XE#651]) +3 other tests skip [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt.html * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt: - shard-adlp: NOTRUN -> [SKIP][116] ([Intel XE#651]) +3 other tests skip [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc: - shard-bmg: NOTRUN -> [SKIP][117] ([Intel XE#2311]) +9 other tests skip [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt: - shard-bmg: NOTRUN -> [FAIL][118] ([Intel XE#2333]) +5 other tests fail [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render: - shard-dg2-set2: [PASS][119] -> [SKIP][120] ([Intel XE#2136]) +15 other tests skip [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render.html [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte: - shard-dg2-set2: NOTRUN -> [SKIP][121] ([Intel XE#651]) +6 other tests skip [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt: - shard-adlp: NOTRUN -> [SKIP][122] ([Intel XE#653]) +1 other test skip [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move: - shard-dg2-set2: NOTRUN -> [SKIP][123] ([Intel XE#653]) +4 other tests skip [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt: - shard-bmg: NOTRUN -> [SKIP][124] ([Intel XE#2313]) +8 other tests skip [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff: - shard-adlp: NOTRUN -> [SKIP][125] ([Intel XE#656]) +2 other tests skip [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt: - shard-dg2-set2: NOTRUN -> [SKIP][126] ([Intel XE#2136] / [Intel XE#2351]) +14 other tests skip [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt: - shard-lnl: NOTRUN -> [SKIP][127] ([Intel XE#656]) +12 other tests skip [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt.html * igt@kms_hdr@static-toggle-dpms: - shard-lnl: NOTRUN -> [SKIP][128] ([Intel XE#1503]) [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_hdr@static-toggle-dpms.html * igt@kms_joiner@invalid-modeset-ultra-joiner: - shard-adlp: NOTRUN -> [SKIP][129] ([Intel XE#2927]) [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_joiner@invalid-modeset-ultra-joiner.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-bmg: NOTRUN -> [SKIP][130] ([Intel XE#2501]) [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_plane_scaling@2x-scaler-multi-pipe: - shard-lnl: NOTRUN -> [SKIP][131] ([Intel XE#309]) [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_plane_scaling@2x-scaler-multi-pipe.html * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6: - shard-dg2-set2: NOTRUN -> [FAIL][132] ([Intel XE#361]) +1 other test fail [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers: - shard-lnl: NOTRUN -> [SKIP][133] ([Intel XE#2763]) +3 other tests skip [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-b: - shard-dg2-set2: NOTRUN -> [SKIP][134] ([Intel XE#2763]) +5 other tests skip [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-b.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d: - shard-dg2-set2: NOTRUN -> [SKIP][135] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d.html * igt@kms_pm_backlight@brightness-with-dpms: - shard-dg2-set2: NOTRUN -> [SKIP][136] ([Intel XE#2938]) [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_pm_backlight@brightness-with-dpms.html * igt@kms_pm_dc@dc5-psr: - shard-dg2-set2: NOTRUN -> [SKIP][137] ([Intel XE#1129]) [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_pm_dc@dc5-psr.html * igt@kms_pm_dc@dc5-retention-flops: - shard-lnl: NOTRUN -> [SKIP][138] ([Intel XE#3309]) [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_pm_dc@dc5-retention-flops.html * igt@kms_pm_dc@dc6-psr: - shard-lnl: NOTRUN -> [FAIL][139] ([Intel XE#1430]) [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_pm_dc@dc6-psr.html * igt@kms_pm_rpm@dpms-mode-unset-lpsp: - shard-dg2-set2: [PASS][140] -> [SKIP][141] ([Intel XE#2446]) +2 other tests skip [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-436/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait: - shard-bmg: NOTRUN -> [SKIP][142] ([Intel XE#1439] / [Intel XE#3141]) [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait: - shard-dg2-set2: NOTRUN -> [SKIP][143] ([Intel XE#2446]) [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html * igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf: - shard-dg2-set2: NOTRUN -> [SKIP][144] ([Intel XE#1489]) [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf.html * igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area: - shard-lnl: NOTRUN -> [SKIP][145] ([Intel XE#2893]) [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf: - shard-bmg: NOTRUN -> [SKIP][146] ([Intel XE#1489]) +1 other test skip [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html * igt@kms_psr@fbc-psr2-cursor-blt: - shard-bmg: NOTRUN -> [SKIP][147] ([Intel XE#2234] / [Intel XE#2850]) +4 other tests skip [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_psr@fbc-psr2-cursor-blt.html * igt@kms_psr@pr-sprite-blt: - shard-dg2-set2: NOTRUN -> [SKIP][148] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_psr@pr-sprite-blt.html * igt@kms_psr@psr2-primary-page-flip: - shard-adlp: NOTRUN -> [SKIP][149] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_psr@psr2-primary-page-flip.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90: - shard-lnl: NOTRUN -> [SKIP][150] ([Intel XE#3414]) +1 other test skip [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html * igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1: - shard-lnl: [PASS][151] -> [FAIL][152] ([Intel XE#899]) [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-5/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-8/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html * igt@kms_vblank@ts-continuation-dpms-suspend: - shard-bmg: [PASS][153] -> [DMESG-WARN][154] ([Intel XE#3426]) [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-7/igt@kms_vblank@ts-continuation-dpms-suspend.html [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_vblank@ts-continuation-dpms-suspend.html * igt@kms_vrr@cmrr@pipe-a-edp-1: - shard-lnl: [PASS][155] -> [FAIL][156] ([Intel XE#2159]) +1 other test fail [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-7/igt@kms_vrr@cmrr@pipe-a-edp-1.html [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-7/igt@kms_vrr@cmrr@pipe-a-edp-1.html * igt@kms_vrr@flip-dpms: - shard-dg2-set2: NOTRUN -> [SKIP][157] ([Intel XE#455]) +11 other tests skip [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_vrr@flip-dpms.html * igt@kms_vrr@max-min: - shard-bmg: NOTRUN -> [SKIP][158] ([Intel XE#1499]) [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_vrr@max-min.html * igt@kms_vrr@seamless-rr-switch-vrr: - shard-lnl: NOTRUN -> [SKIP][159] ([Intel XE#1499]) [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_vrr@seamless-rr-switch-vrr.html * igt@kms_writeback@writeback-invalid-parameters: - shard-dg2-set2: NOTRUN -> [SKIP][160] ([Intel XE#756]) [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_writeback@writeback-invalid-parameters.html * igt@xe_compute_preempt@compute-threadgroup-preempt@engine-drm_xe_engine_class_compute: - shard-dg2-set2: NOTRUN -> [SKIP][161] ([Intel XE#1280] / [Intel XE#455]) [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@xe_compute_preempt@compute-threadgroup-preempt@engine-drm_xe_engine_class_compute.html * igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue: - shard-lnl: [PASS][162] -> [FAIL][163] ([Intel XE#2667]) [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-7/igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue.html [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-7/igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue.html * igt@xe_eudebug_online@breakpoint-many-sessions-tiles: - shard-adlp: NOTRUN -> [SKIP][164] ([Intel XE#2905]) +1 other test skip [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@xe_eudebug_online@breakpoint-many-sessions-tiles.html * igt@xe_eudebug_online@set-breakpoint: - shard-bmg: NOTRUN -> [SKIP][165] ([Intel XE#2905]) +3 other tests skip [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@xe_eudebug_online@set-breakpoint.html * igt@xe_eudebug_online@writes-caching-sram-bb-sram-target-vram: - shard-lnl: NOTRUN -> [SKIP][166] ([Intel XE#2905]) +2 other tests skip [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@xe_eudebug_online@writes-caching-sram-bb-sram-target-vram.html * igt@xe_evict@evict-beng-mixed-many-threads-small: - shard-bmg: [PASS][167] -> [TIMEOUT][168] ([Intel XE#1473]) [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-4/igt@xe_evict@evict-beng-mixed-many-threads-small.html [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@xe_evict@evict-beng-mixed-many-threads-small.html * igt@xe_evict@evict-beng-threads-small-multi-vm: - shard-adlp: NOTRUN -> [SKIP][169] ([Intel XE#261] / [Intel XE#688]) [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@xe_evict@evict-beng-threads-small-multi-vm.html * igt@xe_evict@evict-mixed-many-threads-large: - shard-bmg: NOTRUN -> [TIMEOUT][170] ([Intel XE#1473]) [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-large.html * igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen: - shard-lnl: NOTRUN -> [SKIP][171] ([Intel XE#688]) +4 other tests skip [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html * igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate-race: - shard-lnl: NOTRUN -> [SKIP][172] ([Intel XE#1392]) [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate-race.html * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race: - shard-bmg: NOTRUN -> [SKIP][173] ([Intel XE#2322]) [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-imm: - shard-adlp: NOTRUN -> [SKIP][174] ([Intel XE#288]) [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-imm.html * igt@xe_exec_fault_mode@once-rebind-imm: - shard-dg2-set2: NOTRUN -> [SKIP][175] ([Intel XE#288]) +9 other tests skip [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@xe_exec_fault_mode@once-rebind-imm.html * igt@xe_exec_reset@close-execqueues-close-fd: - shard-dg2-set2: NOTRUN -> [DMESG-WARN][176] ([Intel XE#358]) +4 other tests dmesg-warn [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@xe_exec_reset@close-execqueues-close-fd.html * igt@xe_exec_sip_eudebug@breakpoint-writesip: - shard-dg2-set2: NOTRUN -> [SKIP][177] ([Intel XE#2905]) +3 other tests skip [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_exec_sip_eudebug@breakpoint-writesip.html * igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race: - shard-dg2-set2: [PASS][178] -> [DMESG-WARN][179] ([Intel XE#358]) +23 other tests dmesg-warn [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html * igt@xe_exec_threads@threads-hang-fd-userptr-rebind: - shard-adlp: NOTRUN -> [DMESG-WARN][180] ([Intel XE#358]) [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@xe_exec_threads@threads-hang-fd-userptr-rebind.html * igt@xe_exec_threads@threads-hang-rebind: - shard-adlp: [PASS][181] -> [DMESG-WARN][182] ([Intel XE#358]) +41 other tests dmesg-warn [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-2/igt@xe_exec_threads@threads-hang-rebind.html [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-6/igt@xe_exec_threads@threads-hang-rebind.html * igt@xe_live_ktest@xe_bo: - shard-bmg: [PASS][183] -> [SKIP][184] ([Intel XE#1192]) [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-7/igt@xe_live_ktest@xe_bo.html [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@xe_live_ktest@xe_bo.html * igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit: - shard-dg2-set2: [PASS][185] -> [SKIP][186] ([Intel XE#2229]) +1 other test skip [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html * igt@xe_live_ktest@xe_mocs: - shard-dg2-set2: NOTRUN -> [SKIP][187] ([Intel XE#1192]) [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@xe_live_ktest@xe_mocs.html * igt@xe_media_fill@media-fill: - shard-bmg: NOTRUN -> [SKIP][188] ([Intel XE#2459] / [Intel XE#2596]) [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@xe_media_fill@media-fill.html * igt@xe_mmap@small-bar: - shard-bmg: NOTRUN -> [SKIP][189] ([Intel XE#586]) [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_mmap@small-bar.html * igt@xe_oa@oa-formats: - shard-dg2-set2: NOTRUN -> [SKIP][190] ([Intel XE#2541]) +1 other test skip [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_oa@oa-formats.html * igt@xe_oa@oa-tlb-invalidate: - shard-lnl: NOTRUN -> [SKIP][191] ([Intel XE#2248]) [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-1/igt@xe_oa@oa-tlb-invalidate.html * igt@xe_oa@unprivileged-single-ctx-counters: - shard-bmg: NOTRUN -> [SKIP][192] ([Intel XE#2248]) [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_oa@unprivileged-single-ctx-counters.html * igt@xe_pm@s3-basic-exec: - shard-dg2-set2: NOTRUN -> [DMESG-WARN][193] ([Intel XE#569]) [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_pm@s3-basic-exec.html * igt@xe_pm@s4-d3hot-basic-exec: - shard-adlp: [PASS][194] -> [ABORT][195] ([Intel XE#1358] / [Intel XE#1607]) [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-6/igt@xe_pm@s4-d3hot-basic-exec.html [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-9/igt@xe_pm@s4-d3hot-basic-exec.html * igt@xe_query@multigpu-query-invalid-cs-cycles: - shard-dg2-set2: NOTRUN -> [SKIP][196] ([Intel XE#944]) [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@xe_query@multigpu-query-invalid-cs-cycles.html * igt@xe_query@multigpu-query-uc-fw-version-guc: - shard-bmg: NOTRUN -> [SKIP][197] ([Intel XE#944]) [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_query@multigpu-query-uc-fw-version-guc.html * igt@xe_vm@large-split-binds-536870912: - shard-dg2-set2: NOTRUN -> [SKIP][198] ([Intel XE#1130]) +80 other tests skip [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_vm@large-split-binds-536870912.html * igt@xe_vm@mmap-style-bind-userptr-one-partial: - shard-dg2-set2: [PASS][199] -> [SKIP][200] ([Intel XE#1130]) +92 other tests skip [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@xe_vm@mmap-style-bind-userptr-one-partial.html [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_vm@mmap-style-bind-userptr-one-partial.html * igt@xe_wedged@basic-wedged: - shard-bmg: NOTRUN -> [DMESG-WARN][201] ([Intel XE#2919]) [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_wedged@basic-wedged.html * igt@xe_wedged@wedged-at-any-timeout: - shard-lnl: [PASS][202] -> [DMESG-WARN][203] ([Intel XE#3119]) [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-5/igt@xe_wedged@wedged-at-any-timeout.html [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-8/igt@xe_wedged@wedged-at-any-timeout.html #### Possible fixes #### * igt@kms_atomic@plane-invalid-params-fence: - shard-dg2-set2: [SKIP][204] ([Intel XE#2423] / [i915#2575]) -> [PASS][205] +85 other tests pass [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_atomic@plane-invalid-params-fence.html [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_atomic@plane-invalid-params-fence.html * igt@kms_atomic_transition@plane-all-transition-fencing: - shard-lnl: [DMESG-WARN][206] ([Intel XE#877]) -> [PASS][207] +1 other test pass [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-5/igt@kms_atomic_transition@plane-all-transition-fencing.html [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-2/igt@kms_atomic_transition@plane-all-transition-fencing.html * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip: - shard-adlp: [DMESG-WARN][208] ([Intel XE#1033]) -> [PASS][209] [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs: - shard-dg2-set2: [SKIP][210] -> [PASS][211] [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html * igt@kms_cursor_crc@cursor-suspend@pipe-a-edp-1: - shard-lnl: [DMESG-WARN][212] -> [PASS][213] +2 other tests pass [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-5/igt@kms_cursor_crc@cursor-suspend@pipe-a-edp-1.html [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-2/igt@kms_cursor_crc@cursor-suspend@pipe-a-edp-1.html * igt@kms_dp_aux_dev: - shard-dg2-set2: [SKIP][214] ([Intel XE#2423]) -> [PASS][215] +1 other test pass [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_dp_aux_dev.html [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_dp_aux_dev.html * igt@kms_draw_crc@draw-method-blt@rgb565-4tiled: - shard-bmg: [INCOMPLETE][216] -> [PASS][217] +6 other tests pass [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-6/igt@kms_draw_crc@draw-method-blt@rgb565-4tiled.html [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_draw_crc@draw-method-blt@rgb565-4tiled.html * igt@kms_draw_crc@draw-method-blt@rgb565-xtiled: - shard-bmg: [DMESG-FAIL][218] -> [PASS][219] +9 other tests pass [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-6/igt@kms_draw_crc@draw-method-blt@rgb565-xtiled.html [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_draw_crc@draw-method-blt@rgb565-xtiled.html * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible: - shard-bmg: [FAIL][220] ([Intel XE#2882]) -> [PASS][221] [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-3/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-5/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-dp2-hdmi-a3: - shard-bmg: [FAIL][222] -> [PASS][223] [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-3/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-dp2-hdmi-a3.html [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-5/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-dp2-hdmi-a3.html * igt@kms_flip@flip-vs-suspend-interruptible: - shard-dg2-set2: [INCOMPLETE][224] ([Intel XE#1195] / [Intel XE#2049] / [Intel XE#2597]) -> [PASS][225] [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_flip@flip-vs-suspend-interruptible.html [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_flip@flip-vs-suspend-interruptible.html * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1: - shard-adlp: [DMESG-WARN][226] ([Intel XE#2953] / [Intel XE#3086]) -> [PASS][227] +3 other tests pass [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-2/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html * igt@kms_flip@flip-vs-suspend-interruptible@b-dp4: - shard-dg2-set2: [INCOMPLETE][228] ([Intel XE#1195] / [Intel XE#2597]) -> [PASS][229] [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_flip@flip-vs-suspend-interruptible@b-dp4.html [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_flip@flip-vs-suspend-interruptible@b-dp4.html * igt@kms_flip@plain-flip-ts-check: - shard-dg2-set2: [FAIL][230] ([Intel XE#886]) -> [PASS][231] [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_flip@plain-flip-ts-check.html [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_flip@plain-flip-ts-check.html * igt@kms_flip@plain-flip-ts-check@a-hdmi-a6: - shard-dg2-set2: [FAIL][232] -> [PASS][233] [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_flip@plain-flip-ts-check@a-hdmi-a6.html [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_flip@plain-flip-ts-check@a-hdmi-a6.html * igt@kms_frontbuffer_tracking@basic: - shard-dg2-set2: [SKIP][234] ([Intel XE#2351]) -> [PASS][235] [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_frontbuffer_tracking@basic.html [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_frontbuffer_tracking@basic.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc: - shard-dg2-set2: [SKIP][236] ([Intel XE#2136] / [Intel XE#2351]) -> [PASS][237] +13 other tests pass [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc.html [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary: - shard-dg2-set2: [SKIP][238] ([Intel XE#2136]) -> [PASS][239] +16 other tests pass [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary.html [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary.html * igt@kms_hdr@invalid-hdr: - shard-dg2-set2: [SKIP][240] ([Intel XE#455]) -> [PASS][241] [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-435/igt@kms_hdr@invalid-hdr.html [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_hdr@invalid-hdr.html * igt@kms_plane_scaling@planes-upscale-20x20: - shard-adlp: [DMESG-WARN][242] ([Intel XE#3086]) -> [PASS][243] +5 other tests pass [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-2/igt@kms_plane_scaling@planes-upscale-20x20.html [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-6/igt@kms_plane_scaling@planes-upscale-20x20.html * igt@kms_pm_dc@deep-pkgc: - shard-lnl: [FAIL][244] ([Intel XE#2029]) -> [PASS][245] [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-4/igt@kms_pm_dc@deep-pkgc.html [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html * igt@kms_pm_rpm@system-suspend-modeset: - shard-dg2-set2: [SKIP][246] ([Intel XE#2446]) -> [PASS][247] +3 other tests pass [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_pm_rpm@system-suspend-modeset.html [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_pm_rpm@system-suspend-modeset.html * igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1: - shard-lnl: [FAIL][248] ([Intel XE#899]) -> [PASS][249] [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-5/igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1.html [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-8/igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1.html * igt@kms_vblank@ts-continuation-suspend: - shard-bmg: [DMESG-WARN][250] -> [PASS][251] +24 other tests pass [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-3/igt@kms_vblank@ts-continuation-suspend.html [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-5/igt@kms_vblank@ts-continuation-suspend.html * igt@xe_evict@evict-large-multi-vm-cm: - shard-bmg: [FAIL][252] ([Intel XE#2364]) -> [PASS][253] [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-4/igt@xe_evict@evict-large-multi-vm-cm.html [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-1/igt@xe_evict@evict-large-multi-vm-cm.html * igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen: - shard-dg2-set2: [SKIP][254] ([Intel XE#1130]) -> [PASS][255] +139 other tests pass [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html * igt@xe_live_ktest@xe_bo: - shard-dg2-set2: [INCOMPLETE][256] ([Intel XE#1195]) -> [PASS][257] +1 other test pass [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@xe_live_ktest@xe_bo.html [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_live_ktest@xe_bo.html * igt@xe_pm@s3-exec-after: - shard-bmg: [DMESG-WARN][258] ([Intel XE#3426] / [Intel XE#569]) -> [PASS][259] [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-6/igt@xe_pm@s3-exec-after.html [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@xe_pm@s3-exec-after.html * igt@xe_pm@s4-d3hot-basic-exec: - shard-lnl: [ABORT][260] ([Intel XE#1358] / [Intel XE#1607]) -> [PASS][261] +1 other test pass [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-lnl-2/igt@xe_pm@s4-d3hot-basic-exec.html [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-lnl-3/igt@xe_pm@s4-d3hot-basic-exec.html * igt@xe_pm@s4-vm-bind-unbind-all: - shard-adlp: [ABORT][262] ([Intel XE#1794]) -> [PASS][263] [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-9/igt@xe_pm@s4-vm-bind-unbind-all.html [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-4/igt@xe_pm@s4-vm-bind-unbind-all.html #### Warnings #### * igt@core_hotunplug@unplug-rescan: - shard-dg2-set2: [INCOMPLETE][264] ([Intel XE#1195]) -> [SKIP][265] ([Intel XE#1885]) [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-436/igt@core_hotunplug@unplug-rescan.html [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@core_hotunplug@unplug-rescan.html * igt@kms_big_fb@4-tiled-8bpp-rotate-270: - shard-dg2-set2: [SKIP][266] ([Intel XE#2136]) -> [SKIP][267] ([Intel XE#316]) +1 other test skip [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html * igt@kms_big_fb@linear-16bpp-rotate-90: - shard-dg2-set2: [SKIP][268] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][269] ([Intel XE#316]) +1 other test skip [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_big_fb@linear-16bpp-rotate-90.html [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_big_fb@linear-16bpp-rotate-90.html * igt@kms_big_fb@linear-64bpp-rotate-270: - shard-dg2-set2: [SKIP][270] ([Intel XE#316]) -> [SKIP][271] ([Intel XE#2136] / [Intel XE#2351]) [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_big_fb@linear-64bpp-rotate-270.html [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_big_fb@linear-64bpp-rotate-270.html * igt@kms_big_fb@x-tiled-8bpp-rotate-270: - shard-dg2-set2: [SKIP][272] ([Intel XE#316]) -> [SKIP][273] ([Intel XE#2136]) +2 other tests skip [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0: - shard-adlp: [DMESG-FAIL][274] ([Intel XE#1033]) -> [FAIL][275] ([Intel XE#1874]) [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0.html [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-adlp-2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0.html * igt@kms_big_fb@y-tiled-16bpp-rotate-90: - shard-dg2-set2: [SKIP][276] ([Intel XE#2136]) -> [SKIP][277] ([Intel XE#1124]) +2 other tests skip [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_big_fb@y-tiled-16bpp-rotate-90.html [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_big_fb@y-tiled-16bpp-rotate-90.html * igt@kms_big_fb@y-tiled-64bpp-rotate-180: - shard-dg2-set2: [SKIP][278] ([Intel XE#1124]) -> [SKIP][279] ([Intel XE#2136] / [Intel XE#2351]) +2 other tests skip [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html * igt@kms_big_fb@y-tiled-addfb: - shard-dg2-set2: [SKIP][280] ([Intel XE#619]) -> [SKIP][281] ([Intel XE#2136] / [Intel XE#2351]) [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_big_fb@y-tiled-addfb.html [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_big_fb@y-tiled-addfb.html * igt@kms_big_fb@y-tiled-addfb-size-overflow: - shard-dg2-set2: [SKIP][282] ([Intel XE#2136]) -> [SKIP][283] ([Intel XE#610]) [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_big_fb@y-tiled-addfb-size-overflow.html [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_big_fb@y-tiled-addfb-size-overflow.html * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip: - shard-dg2-set2: [SKIP][284] ([Intel XE#1124]) -> [SKIP][285] ([Intel XE#2136]) +1 other test skip [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html * igt@kms_big_fb@yf-tiled-64bpp-rotate-180: - shard-dg2-set2: [SKIP][286] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][287] ([Intel XE#1124]) +5 other tests skip [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html * igt@kms_bw@connected-linear-tiling-1-displays-2560x1440p: - shard-dg2-set2: [SKIP][288] ([Intel XE#2423] / [i915#2575]) -> [SKIP][289] ([Intel XE#367]) +3 other tests skip [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_bw@connected-linear-tiling-1-displays-2560x1440p.html [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_bw@connected-linear-tiling-1-displays-2560x1440p.html * igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p: - shard-dg2-set2: [SKIP][290] ([Intel XE#367]) -> [SKIP][291] ([Intel XE#2423] / [i915#2575]) +1 other test skip [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p.html [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p.html * igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p: - shard-dg2-set2: [SKIP][292] ([Intel XE#2423] / [i915#2575]) -> [SKIP][293] ([Intel XE#2191]) +1 other test skip [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html [293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html * igt@kms_ccs@bad-pixel-format-yf-tiled-ccs: - shard-dg2-set2: [SKIP][294] ([Intel XE#2136]) -> [SKIP][295] ([Intel XE#455] / [Intel XE#787]) +9 other tests skip [294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html [295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc: - shard-dg2-set2: [SKIP][296] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][297] ([Intel XE#2136]) +6 other tests skip [296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html [297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc: - shard-dg2-set2: [SKIP][298] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][299] ([Intel XE#2136] / [Intel XE#2351]) +1 other test skip [298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc.html [299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc.html * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs: - shard-dg2-set2: [SKIP][300] -> [SKIP][301] ([Intel XE#455] / [Intel XE#787]) [300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs.html [301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs: - shard-dg2-set2: [SKIP][302] ([Intel XE#2907]) -> [SKIP][303] ([Intel XE#2136]) [302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html [303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs: - shard-dg2-set2: [SKIP][304] ([Intel XE#2136]) -> [SKIP][305] ([Intel XE#2907]) +1 other test skip [304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html [305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html * igt@kms_cdclk@mode-transition-all-outputs: - shard-dg2-set2: [SKIP][306] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][307] ([Intel XE#314]) [306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_cdclk@mode-transition-all-outputs.html [307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_cdclk@mode-transition-all-outputs.html * igt@kms_chamelium_color@ctm-blue-to-red: - shard-dg2-set2: [SKIP][308] ([Intel XE#2423] / [i915#2575]) -> [SKIP][309] ([Intel XE#306]) +1 other test skip [308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_chamelium_color@ctm-blue-to-red.html [309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_chamelium_color@ctm-blue-to-red.html * igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k: - shard-dg2-set2: [SKIP][310] ([Intel XE#373]) -> [SKIP][311] ([Intel XE#2423] / [i915#2575]) +5 other tests skip [310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k.html [311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k.html * igt@kms_chamelium_edid@hdmi-mode-timings: - shard-dg2-set2: [SKIP][312] ([Intel XE#2423] / [i915#2575]) -> [SKIP][313] ([Intel XE#373]) +10 other tests skip [312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_chamelium_edid@hdmi-mode-timings.html [313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_chamelium_edid@hdmi-mode-timings.html * igt@kms_content_protection@dp-mst-type-0: - shard-dg2-set2: [SKIP][314] ([Intel XE#307]) -> [SKIP][315] ([Intel XE#2423] / [i915#2575]) +1 other test skip [314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@kms_content_protection@dp-mst-type-0.html [315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_content_protection@dp-mst-type-0.html * igt@kms_content_protection@srm: - shard-dg2-set2: [FAIL][316] ([Intel XE#1178]) -> [SKIP][317] ([Intel XE#2423] / [i915#2575]) [316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@kms_content_protection@srm.html [317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_content_protection@srm.html * igt@kms_cursor_crc@cursor-onscreen-512x512: - shard-dg2-set2: [SKIP][318] ([Intel XE#2423] / [i915#2575]) -> [SKIP][319] ([Intel XE#308]) +1 other test skip [318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_cursor_crc@cursor-onscreen-512x512.html [319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_cursor_crc@cursor-onscreen-512x512.html * igt@kms_cursor_crc@cursor-rapid-movement-512x170: - shard-dg2-set2: [SKIP][320] ([Intel XE#308]) -> [SKIP][321] ([Intel XE#2423] / [i915#2575]) [320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html [321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html * igt@kms_cursor_crc@cursor-sliding-max-size: - shard-dg2-set2: [SKIP][322] ([Intel XE#2423] / [i915#2575]) -> [SKIP][323] ([Intel XE#455]) +3 other tests skip [322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_cursor_crc@cursor-sliding-max-size.html [323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_cursor_crc@cursor-sliding-max-size.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic: - shard-dg2-set2: [SKIP][324] ([Intel XE#2423] / [i915#2575]) -> [SKIP][325] ([Intel XE#323]) +1 other test skip [324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html [325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html * igt@kms_cursor_legacy@torture-bo: - shard-dg2-set2: [SKIP][326] ([Intel XE#2423] / [i915#2575]) -> [DMESG-WARN][327] ([Intel XE#3184]) [326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_cursor_legacy@torture-bo.html [327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_cursor_legacy@torture-bo.html * igt@kms_dsc@dsc-fractional-bpp-with-bpc: - shard-dg2-set2: [SKIP][328] ([Intel XE#455]) -> [SKIP][329] ([Intel XE#2136] / [Intel XE#2351]) [328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html [329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html * igt@kms_feature_discovery@display-3x: - shard-dg2-set2: [SKIP][330] ([Intel XE#703]) -> [SKIP][331] ([Intel XE#2423] / [i915#2575]) [330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@kms_feature_discovery@display-3x.html [331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_feature_discovery@display-3x.html * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible: - shard-dg2-set2: [SKIP][332] ([Intel XE#2423] / [i915#2575]) -> [FAIL][333] ([Intel XE#301]) [332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html [333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html * igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling: - shard-dg2-set2: [SKIP][334] ([Intel XE#2136] / [Intel XE#2351]) -> [INCOMPLETE][335] ([Intel XE#1195]) +1 other test incomplete [334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html [335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-436/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling: - shard-dg2-set2: [SKIP][336] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][337] ([Intel XE#455]) +1 other test skip [336]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html [337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling: - shard-dg2-set2: [SKIP][338] ([Intel XE#2136]) -> [SKIP][339] ([Intel XE#455]) +2 other tests skip [338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html [339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling: - shard-dg2-set2: [SKIP][340] ([Intel XE#455]) -> [SKIP][341] ([Intel XE#2136]) +3 other tests skip [340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html [341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt: - shard-bmg: [SKIP][342] ([Intel XE#2312]) -> [SKIP][343] ([Intel XE#2311]) [342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt.html [343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary: - shard-dg2-set2: [SKIP][344] ([Intel XE#2136]) -> [SKIP][345] ([Intel XE#651]) +20 other tests skip [344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html [345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html * igt@kms_frontbuffer_tracking@drrs-slowdraw: - shard-dg2-set2: [SKIP][346] ([Intel XE#651]) -> [SKIP][347] ([Intel XE#2136] / [Intel XE#2351]) +5 other tests skip [346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_frontbuffer_tracking@drrs-slowdraw.html [347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-slowdraw.html * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw: - shard-bmg: [DMESG-FAIL][348] -> [FAIL][349] ([Intel XE#2333]) +1 other test fail [348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html [349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt: - shard-bmg: [SKIP][350] ([Intel XE#2312]) -> [FAIL][351] ([Intel XE#2333]) [350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html [351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-2p-rte: - shard-dg2-set2: [ABORT][352] -> [SKIP][353] ([Intel XE#2136]) [352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-2p-rte.html [353]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_frontbuffer_tracking@fbc-2p-rte.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt: - shard-bmg: [FAIL][354] ([Intel XE#2333]) -> [SKIP][355] ([Intel XE#2312]) [354]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html [355]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-blt: - shard-dg2-set2: [SKIP][356] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][357] ([Intel XE#651]) +8 other tests skip [356]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-blt.html [357]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc: - shard-dg2-set2: [SKIP][358] ([Intel XE#651]) -> [SKIP][359] ([Intel XE#2136]) +9 other tests skip [358]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html [359]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt: - shard-dg2-set2: [SKIP][360] ([Intel XE#2136]) -> [SKIP][361] ([Intel XE#653]) +21 other tests skip [360]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html [361]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render: - shard-dg2-set2: [SKIP][362] ([Intel XE#653]) -> [SKIP][363] ([Intel XE#2136] / [Intel XE#2351]) +6 other tests skip [362]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render.html [363]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt: - shard-dg2-set2: [SKIP][364] ([Intel XE#653]) -> [SKIP][365] ([Intel XE#2136]) +10 other tests skip [364]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt.html [365]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render: - shard-dg2-set2: [SKIP][366] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][367] ([Intel XE#653]) +5 other tests skip [366]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html [367]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html * igt@kms_joiner@basic-big-joiner: - shard-dg2-set2: [SKIP][368] ([Intel XE#2136]) -> [SKIP][369] ([Intel XE#346]) [368]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_joiner@basic-big-joiner.html [369]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_joiner@basic-big-joiner.html * igt@kms_joiner@basic-ultra-joiner: - shard-dg2-set2: [SKIP][370] ([Intel XE#2927]) -> [SKIP][371] ([Intel XE#2136]) [370]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_joiner@basic-ultra-joiner.html [371]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_joiner@basic-ultra-joiner.html * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers: - shard-dg2-set2: [SKIP][372] ([Intel XE#2763] / [Intel XE#455]) -> [SKIP][373] ([Intel XE#2423] / [i915#2575]) [372]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html [373]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling: - shard-dg2-set2: [SKIP][374] ([Intel XE#2423] / [i915#2575]) -> [SKIP][375] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip [374]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html [375]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html * igt@kms_pm_dc@dc5-retention-flops: - shard-dg2-set2: [SKIP][376] -> [SKIP][377] ([Intel XE#3309]) [376]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_pm_dc@dc5-retention-flops.html [377]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_pm_dc@dc5-retention-flops.html * igt@kms_pm_rpm@basic-pci-d3-state: - shard-dg2-set2: [DMESG-WARN][378] -> [SKIP][379] ([Intel XE#2446]) [378]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@kms_pm_rpm@basic-pci-d3-state.html [379]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_pm_rpm@basic-pci-d3-state.html * igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf: - shard-dg2-set2: [SKIP][380] ([Intel XE#1489]) -> [SKIP][381] ([Intel XE#2136]) +3 other tests skip [380]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html [381]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html * igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area: - shard-dg2-set2: [SKIP][382] ([Intel XE#2136]) -> [SKIP][383] ([Intel XE#1489]) +8 other tests skip [382]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area.html [383]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area.html * igt@kms_psr2_su@page_flip-nv12: - shard-dg2-set2: [SKIP][384] ([Intel XE#1122]) -> [SKIP][385] ([Intel XE#2136]) [384]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_psr2_su@page_flip-nv12.html [385]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_psr2_su@page_flip-nv12.html * igt@kms_psr2_su@page_flip-p010: - shard-dg2-set2: [SKIP][386] ([Intel XE#2136]) -> [SKIP][387] ([Intel XE#1122]) [386]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_psr2_su@page_flip-p010.html [387]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_psr2_su@page_flip-p010.html * igt@kms_psr@fbc-psr-no-drrs: - shard-dg2-set2: [SKIP][388] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][389] ([Intel XE#2136] / [Intel XE#2351]) +3 other tests skip [388]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_psr@fbc-psr-no-drrs.html [389]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_psr@fbc-psr-no-drrs.html * igt@kms_psr@fbc-psr2-sprite-plane-move: - shard-dg2-set2: [SKIP][390] ([Intel XE#2136]) -> [SKIP][391] ([Intel XE#2850] / [Intel XE#929]) +9 other tests skip [390]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_psr@fbc-psr2-sprite-plane-move.html [391]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_psr@fbc-psr2-sprite-plane-move.html * igt@kms_psr@psr-dpms: - shard-dg2-set2: [SKIP][392] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][393] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip [392]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_psr@psr-dpms.html [393]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@kms_psr@psr-dpms.html * igt@kms_psr@psr2-sprite-plane-move: - shard-dg2-set2: [SKIP][394] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][395] ([Intel XE#2136]) +3 other tests skip [394]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@kms_psr@psr2-sprite-plane-move.html [395]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_psr@psr2-sprite-plane-move.html * igt@kms_psr_stress_test@invalidate-primary-flip-overlay: - shard-dg2-set2: [SKIP][396] ([Intel XE#2939]) -> [SKIP][397] ([Intel XE#2136]) [396]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html [397]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html * igt@kms_rotation_crc@bad-pixel-format: - shard-dg2-set2: [SKIP][398] ([Intel XE#2423] / [i915#2575]) -> [SKIP][399] ([Intel XE#3414]) +2 other tests skip [398]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_rotation_crc@bad-pixel-format.html [399]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@kms_rotation_crc@bad-pixel-format.html * igt@kms_rotation_crc@bad-tiling: - shard-dg2-set2: [SKIP][400] ([Intel XE#3414]) -> [SKIP][401] ([Intel XE#2423] / [i915#2575]) +1 other test skip [400]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@kms_rotation_crc@bad-tiling.html [401]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_rotation_crc@bad-tiling.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0: - shard-dg2-set2: [SKIP][402] ([Intel XE#2423] / [i915#2575]) -> [SKIP][403] ([Intel XE#1127]) +1 other test skip [402]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html [403]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html * igt@kms_tiled_display@basic-test-pattern-with-chamelium: - shard-bmg: [SKIP][404] ([Intel XE#2426]) -> [SKIP][405] ([Intel XE#2509]) [404]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html [405]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html * igt@kms_vrr@flipline: - shard-dg2-set2: [SKIP][406] ([Intel XE#455]) -> [SKIP][407] ([Intel XE#2423] / [i915#2575]) +5 other tests skip [406]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@kms_vrr@flipline.html [407]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@kms_vrr@flipline.html * igt@kms_vrr@lobf: - shard-dg2-set2: [SKIP][408] ([Intel XE#2423] / [i915#2575]) -> [SKIP][409] ([Intel XE#2168]) [408]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_vrr@lobf.html [409]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@kms_vrr@lobf.html * igt@kms_writeback@writeback-pixel-formats: - shard-dg2-set2: [SKIP][410] ([Intel XE#2423] / [i915#2575]) -> [SKIP][411] ([Intel XE#756]) [410]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@kms_writeback@writeback-pixel-formats.html [411]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@kms_writeback@writeback-pixel-formats.html * igt@sriov_basic@enable-vfs-autoprobe-off: - shard-dg2-set2: [SKIP][412] ([Intel XE#1091] / [Intel XE#2849]) -> [SKIP][413] ([Intel XE#2423] / [i915#2575]) [412]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-463/igt@sriov_basic@enable-vfs-autoprobe-off.html [413]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@sriov_basic@enable-vfs-autoprobe-off.html * igt@xe_compute_preempt@compute-threadgroup-preempt: - shard-dg2-set2: [SKIP][414] ([Intel XE#1130]) -> [SKIP][415] ([Intel XE#1280] / [Intel XE#455]) [414]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_compute_preempt@compute-threadgroup-preempt.html [415]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@xe_compute_preempt@compute-threadgroup-preempt.html * igt@xe_copy_basic@mem-copy-linear-0x3fff: - shard-dg2-set2: [SKIP][416] ([Intel XE#1130]) -> [SKIP][417] ([Intel XE#1123]) [416]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_copy_basic@mem-copy-linear-0x3fff.html [417]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@xe_copy_basic@mem-copy-linear-0x3fff.html * igt@xe_copy_basic@mem-set-linear-0xfffe: - shard-dg2-set2: [SKIP][418] ([Intel XE#1130]) -> [SKIP][419] ([Intel XE#1126]) [418]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_copy_basic@mem-set-linear-0xfffe.html [419]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@xe_copy_basic@mem-set-linear-0xfffe.html * igt@xe_eudebug_online@interrupt-all-set-breakpoint: - shard-dg2-set2: [SKIP][420] ([Intel XE#2905]) -> [SKIP][421] ([Intel XE#1130]) +5 other tests skip [420]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@xe_eudebug_online@interrupt-all-set-breakpoint.html [421]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_eudebug_online@interrupt-all-set-breakpoint.html * igt@xe_eudebug_online@resume-dss: - shard-dg2-set2: [SKIP][422] ([Intel XE#1130]) -> [SKIP][423] ([Intel XE#2905]) +7 other tests skip [422]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_eudebug_online@resume-dss.html [423]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-436/igt@xe_eudebug_online@resume-dss.html * igt@xe_evict@evict-beng-mixed-many-threads-small: - shard-dg2-set2: [SKIP][424] ([Intel XE#1130]) -> [TIMEOUT][425] ([Intel XE#1473] / [Intel XE#402]) [424]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_evict@evict-beng-mixed-many-threads-small.html [425]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@xe_evict@evict-beng-mixed-many-threads-small.html * igt@xe_evict@evict-large-multi-vm-cm: - shard-dg2-set2: [SKIP][426] ([Intel XE#1130]) -> [FAIL][427] ([Intel XE#1600]) [426]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_evict@evict-large-multi-vm-cm.html [427]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@xe_evict@evict-large-multi-vm-cm.html * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch: - shard-dg2-set2: [SKIP][428] ([Intel XE#288]) -> [SKIP][429] ([Intel XE#1130]) +19 other tests skip [428]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch.html [429]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch.html * igt@xe_exec_fault_mode@twice-userptr-invalidate-race: - shard-dg2-set2: [SKIP][430] ([Intel XE#1130]) -> [SKIP][431] ([Intel XE#288]) +23 other tests skip [430]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_exec_fault_mode@twice-userptr-invalidate-race.html [431]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_exec_fault_mode@twice-userptr-invalidate-race.html * igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence: - shard-dg2-set2: [SKIP][432] ([Intel XE#2360]) -> [SKIP][433] ([Intel XE#1130]) +1 other test skip [432]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-436/igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence.html [433]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence.html * igt@xe_exec_threads@threads-hang-shared-vm-rebind: - shard-dg2-set2: [SKIP][434] ([Intel XE#1130]) -> [DMESG-WARN][435] ([Intel XE#358]) +3 other tests dmesg-warn [434]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_exec_threads@threads-hang-shared-vm-rebind.html [435]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@xe_exec_threads@threads-hang-shared-vm-rebind.html * igt@xe_fault_injection@inject-fault-probe-function-xe_device_create: - shard-dg2-set2: [DMESG-WARN][436] -> [SKIP][437] ([Intel XE#1130]) +3 other tests skip [436]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@xe_fault_injection@inject-fault-probe-function-xe_device_create.html [437]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_fault_injection@inject-fault-probe-function-xe_device_create.html * igt@xe_oa@closed-fd-and-unmapped-access: - shard-dg2-set2: [SKIP][438] ([Intel XE#1130]) -> [SKIP][439] ([Intel XE#2541]) +5 other tests skip [438]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_oa@closed-fd-and-unmapped-access.html [439]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@xe_oa@closed-fd-and-unmapped-access.html * igt@xe_oa@mmio-triggered-reports: - shard-dg2-set2: [SKIP][440] ([Intel XE#2541]) -> [SKIP][441] ([Intel XE#1130]) +4 other tests skip [440]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-464/igt@xe_oa@mmio-triggered-reports.html [441]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_oa@mmio-triggered-reports.html * igt@xe_pat@display-vs-wb-transient: - shard-dg2-set2: [SKIP][442] ([Intel XE#1130]) -> [SKIP][443] ([Intel XE#1337]) [442]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_pat@display-vs-wb-transient.html [443]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_pat@display-vs-wb-transient.html * igt@xe_pat@pat-index-xelpg: - shard-dg2-set2: [SKIP][444] ([Intel XE#979]) -> [SKIP][445] ([Intel XE#1130]) [444]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@xe_pat@pat-index-xelpg.html [445]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_pat@pat-index-xelpg.html * igt@xe_pm@d3cold-mmap-vram: - shard-dg2-set2: [SKIP][446] ([Intel XE#1130]) -> [SKIP][447] ([Intel XE#2284] / [Intel XE#366]) [446]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_pm@d3cold-mmap-vram.html [447]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-463/igt@xe_pm@d3cold-mmap-vram.html * igt@xe_pm@d3cold-mocs: - shard-dg2-set2: [SKIP][448] ([Intel XE#1130]) -> [SKIP][449] ([Intel XE#2284]) [448]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_pm@d3cold-mocs.html [449]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-434/igt@xe_pm@d3cold-mocs.html * igt@xe_pm@s4-vm-bind-userptr: - shard-dg2-set2: [SKIP][450] ([Intel XE#1130]) -> [DMESG-WARN][451] ([Intel XE#2280]) [450]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_pm@s4-vm-bind-userptr.html [451]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-435/igt@xe_pm@s4-vm-bind-userptr.html * igt@xe_query@multigpu-query-cs-cycles: - shard-dg2-set2: [SKIP][452] ([Intel XE#944]) -> [SKIP][453] ([Intel XE#1130]) +1 other test skip [452]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@xe_query@multigpu-query-cs-cycles.html [453]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_query@multigpu-query-cs-cycles.html * igt@xe_query@multigpu-query-oa-units: - shard-dg2-set2: [SKIP][454] ([Intel XE#1130]) -> [SKIP][455] ([Intel XE#944]) +2 other tests skip [454]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-466/igt@xe_query@multigpu-query-oa-units.html [455]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-464/igt@xe_query@multigpu-query-oa-units.html * igt@xe_wedged@wedged-at-any-timeout: - shard-dg2-set2: [ABORT][456] ([Intel XE#3421]) -> [SKIP][457] ([Intel XE#1130]) [456]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88/shard-dg2-434/igt@xe_wedged@wedged-at-any-timeout.html [457]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/shard-dg2-466/igt@xe_wedged@wedged-at-any-timeout.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033 [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091 [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122 [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123 [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124 [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126 [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127 [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129 [Intel XE#1130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1130 [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178 [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192 [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195 [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280 [Intel XE#1337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1337 [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358 [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392 [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407 [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421 [Intel XE#1430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1430 [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439 [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473 [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489 [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499 [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503 [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512 [Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600 [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607 [Intel XE#1695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1695 [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794 [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874 [Intel XE#1885]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1885 [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029 [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049 [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134 [Intel XE#2136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2136 [Intel XE#2159]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2159 [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168 [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191 [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229 [Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233 [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234 [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244 [Intel XE#2248]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2248 [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252 [Intel XE#2280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2280 [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284 [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286 [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293 [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311 [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312 [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313 [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320 [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321 [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322 [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327 [Intel XE#2333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2333 [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341 [Intel XE#2351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2351 [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360 [Intel XE#2364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2364 [Intel XE#2375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2375 [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380 [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390 [Intel XE#2423]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2423 [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426 [Intel XE#2446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2446 [Intel XE#2459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2459 [Intel XE#2501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2501 [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509 [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541 [Intel XE#2550]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2550 [Intel XE#2596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2596 [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597 [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261 [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652 [Intel XE#2667]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2667 [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669 [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763 [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849 [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850 [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288 [Intel XE#2882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2882 [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887 [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893 [Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905 [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907 [Intel XE#2919]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2919 [Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927 [Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938 [Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939 [Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953 [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301 [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306 [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307 [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308 [Intel XE#3086]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3086 [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309 [Intel XE#3119]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3119 [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314 [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141 [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149 [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316 [Intel XE#3184]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3184 [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323 [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309 [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414 [Intel XE#3421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3421 [Intel XE#3426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3426 [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432 [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346 [Intel XE#358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/358 [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361 [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366 [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367 [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373 [Intel XE#402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/402 [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455 [Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569 [Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586 [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610 [Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619 [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651 [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653 [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656 [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688 [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703 [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756 [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787 [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877 [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886 [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899 [Intel XE#911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/911 [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929 [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944 [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979 [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575 Build changes ------------- * Linux: xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88 -> xe-pw-141459v1 IGT_8114: 8114 xe-2244-5b1f614ccf1008e7aee531bf76bb639802e0df88: 5b1f614ccf1008e7aee531bf76bb639802e0df88 xe-pw-141459v1: 141459v1 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141459v1/index.html [-- Attachment #2: Type: text/html, Size: 147044 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-12-03 3:12 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-11-17 18:43 [PATCH 0/1] Maintenence of devcoredump <-> GuC-Err-Capture plumbing Alan Previn 2024-11-17 18:44 ` [PATCH 1/1] drm/xe/guc/capture: " Alan Previn 2024-11-26 17:09 ` Dong, Zhanjun 2024-12-03 3:12 ` Teres Alexis, Alan Previn 2024-11-18 2:22 ` ✓ CI.Patch_applied: success for " Patchwork 2024-11-18 2:22 ` ✗ CI.checkpatch: warning " Patchwork 2024-11-18 2:23 ` ✓ CI.KUnit: success " Patchwork 2024-11-18 2:41 ` ✓ CI.Build: " Patchwork 2024-11-18 2:42 ` ✗ CI.Hooks: failure " Patchwork 2024-11-18 2:43 ` ✓ CI.checksparse: success " Patchwork 2024-11-18 3:02 ` ✓ CI.BAT: " Patchwork 2024-11-18 4:03 ` ✗ 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