Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 0/5] drm: Create a task info option for wedge events
@ 2025-06-13 18:43 André Almeida
  2025-06-13 18:43 ` [PATCH v7 1/5] drm: amdgpu: Create amdgpu_vm_print_task_info() André Almeida
                   ` (9 more replies)
  0 siblings, 10 replies; 16+ messages in thread
From: André Almeida @ 2025-06-13 18:43 UTC (permalink / raw)
  To: Alex Deucher, Christian König, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx,
	André Almeida

This patchset implements a request made by Xaver Hugl about wedge events:

"I'd really like to have the PID of the client that triggered the GPU
reset, so that we can kill it if multiple resets are triggered in a
row (or switch to software rendering if it's KWin itself) and show a
user-friendly notification about why their app(s) crashed, but that
can be added later."

>From https://lore.kernel.org/dri-devel/CAFZQkGwJ4qgHV8WTp2=svJ_VXhb-+Y8_VNtKB=jLsk6DqMYp9w@mail.gmail.com/

For testing, I've used amdgpu's debug_mask options debug_disable_soft_recovery
and debug_disable_gpu_ring_reset to test both wedge event paths in the driver.
To trigger a ring timeout, I've used this app:
https://gitlab.freedesktop.org/andrealmeid/gpu-timeout

Thanks!

Changelog:

v7:
 - Change `char *comm` to `char comm[TASK_COMM_LEN]`
 - New patches to encapsulate struct drm_wedge_task_info inside of struct
   amdgpu_task_info
 - Remove struct cast for struct amdgpu_task_info, now we can use `info =
   &ti->task`
 - Fix struct lifetime, move amdgpu_vm_put_task_info() after
   drm_dev_wedged_event() call

v6:
 - Check if PID >= 0 for displaying the task info
 - s/app/task in a comment

v5:
 - Change from app to task also in structs, commit message and docs
 - Add a check for NULL or empty task name string

v4:
 - Change from APP to TASK
 - Add defines for event_string and pid_string length

v3:
 - Make comm_string and pid_string empty when there's no app info
 - Change "app that caused ..." to "app involved ..."
 - Clarify that devcoredump have more information about what happened

v2:
  - Rebased on top of drm/drm-next
  - Added new patch for documentation

André Almeida (5):
  drm: amdgpu: Create amdgpu_vm_print_task_info
  drm: Create a task info option for wedge events
  drm/doc: Add a section about "Task information" for the wedge API
  drm: amdgpu: Use struct drm_wedge_task_info inside of struct
    amdgpu_task_info
  drm/amdgpu: Make use of drm_wedge_task_info

 Documentation/gpu/drm-uapi.rst                | 17 ++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c   |  2 +-
 .../gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c  |  4 ++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    | 17 ++++++++++++++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c       |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c       | 12 ++++++-----
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c        | 19 +++++++++++++-----
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h        |  6 ++++--
 drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c        |  5 +----
 drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c        |  5 +----
 drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c        |  5 +----
 drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c         |  4 +---
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c         |  5 +----
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c        |  2 +-
 drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c      |  2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_events.c       |  2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c   |  8 ++++----
 drivers/gpu/drm/drm_drv.c                     | 20 +++++++++++++++----
 drivers/gpu/drm/i915/gt/intel_reset.c         |  3 ++-
 drivers/gpu/drm/xe/xe_device.c                |  3 ++-
 include/drm/drm_device.h                      |  8 ++++++++
 include/drm/drm_drv.h                         |  3 ++-
 22 files changed, 103 insertions(+), 51 deletions(-)

-- 
2.49.0


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

* [PATCH v7 1/5] drm: amdgpu: Create amdgpu_vm_print_task_info()
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
@ 2025-06-13 18:43 ` André Almeida
  2025-06-16  7:03   ` Christian König
  2025-06-13 18:43 ` [PATCH v7 2/5] drm: Create a task info option for wedge events André Almeida
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 16+ messages in thread
From: André Almeida @ 2025-06-13 18:43 UTC (permalink / raw)
  To: Alex Deucher, Christian König, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx,
	André Almeida

To avoid repetitive code in amdgpu, create a function that prints the
content of struct amdgpu_task_info.

Signed-off-by: André Almeida <andrealmeid@igalia.com>
---
v7: new patch
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 4 +---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c  | 9 +++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h  | 3 +++
 drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c  | 5 +----
 drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c  | 5 +----
 drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c  | 5 +----
 drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c   | 4 +---
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c   | 5 +----
 8 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index 75262ce8db27..3d887428ca2b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -124,9 +124,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
 
 	ti = amdgpu_vm_get_task_info_pasid(ring->adev, job->pasid);
 	if (ti) {
-		dev_err(adev->dev,
-			"Process information: process %s pid %d thread %s pid %d\n",
-			ti->process_name, ti->tgid, ti->task_name, ti->pid);
+		amdgpu_vm_print_task_info(adev, ti);
 		amdgpu_vm_put_task_info(ti);
 	}
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 3911c78f8282..f2a0132521c2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -3156,3 +3156,12 @@ bool amdgpu_vm_is_bo_always_valid(struct amdgpu_vm *vm, struct amdgpu_bo *bo)
 {
 	return bo && bo->tbo.base.resv == vm->root.bo->tbo.base.resv;
 }
+
+inline void amdgpu_vm_print_task_info(struct amdgpu_device *adev,
+				      struct amdgpu_task_info *task_info)
+{
+	dev_err(adev->dev,
+		" Process %s pid %d thread %s pid %d\n",
+		task_info->process_name, task_info->tgid,
+		task_info->task_name, task_info->pid);
+}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
index f3ad687125ad..3862a256b9b8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
@@ -668,4 +668,7 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev,
 				 struct amdgpu_vm *vm,
 				 struct dma_fence **fence);
 
+inline void amdgpu_vm_print_task_info(struct amdgpu_device *adev,
+			       struct amdgpu_task_info *task_info);
+
 #endif
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
index a3e2787501f1..7923f491cf73 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
@@ -164,10 +164,7 @@ static int gmc_v10_0_process_interrupt(struct amdgpu_device *adev,
 		entry->src_id, entry->ring_id, entry->vmid, entry->pasid);
 	task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
 	if (task_info) {
-		dev_err(adev->dev,
-			" in process %s pid %d thread %s pid %d\n",
-			task_info->process_name, task_info->tgid,
-			task_info->task_name, task_info->pid);
+		amdgpu_vm_print_task_info(adev, task_info);
 		amdgpu_vm_put_task_info(task_info);
 	}
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
index 72211409227b..f15d691e9a20 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
@@ -134,10 +134,7 @@ static int gmc_v11_0_process_interrupt(struct amdgpu_device *adev,
 			entry->src_id, entry->ring_id, entry->vmid, entry->pasid);
 		task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
 		if (task_info) {
-			dev_err(adev->dev,
-				" in process %s pid %d thread %s pid %d)\n",
-				task_info->process_name, task_info->tgid,
-				task_info->task_name, task_info->pid);
+			amdgpu_vm_print_task_info(adev, task_info);
 			amdgpu_vm_put_task_info(task_info);
 		}
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
index b645d3e6a6c8..de763105fdfd 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
@@ -127,10 +127,7 @@ static int gmc_v12_0_process_interrupt(struct amdgpu_device *adev,
 			entry->src_id, entry->ring_id, entry->vmid, entry->pasid);
 		task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
 		if (task_info) {
-			dev_err(adev->dev,
-				" in process %s pid %d thread %s pid %d)\n",
-				task_info->process_name, task_info->tgid,
-				task_info->task_name, task_info->pid);
+			amdgpu_vm_print_task_info(adev, task_info);
 			amdgpu_vm_put_task_info(task_info);
 		}
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index 99ca08e9bdb5..b45fa0cea9d2 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -1458,9 +1458,7 @@ static int gmc_v8_0_process_interrupt(struct amdgpu_device *adev,
 
 		task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
 		if (task_info) {
-			dev_err(adev->dev, " for process %s pid %d thread %s pid %d\n",
-				task_info->process_name, task_info->tgid,
-				task_info->task_name, task_info->pid);
+			amdgpu_vm_print_task_info(adev, task_info);
 			amdgpu_vm_put_task_info(task_info);
 		}
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 282197f4ffb1..78f65aea03f8 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -641,10 +641,7 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev,
 
 	task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
 	if (task_info) {
-		dev_err(adev->dev,
-			" for process %s pid %d thread %s pid %d)\n",
-			task_info->process_name, task_info->tgid,
-			task_info->task_name, task_info->pid);
+		amdgpu_vm_print_task_info(adev, task_info);
 		amdgpu_vm_put_task_info(task_info);
 	}
 
-- 
2.49.0


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

* [PATCH v7 2/5] drm: Create a task info option for wedge events
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
  2025-06-13 18:43 ` [PATCH v7 1/5] drm: amdgpu: Create amdgpu_vm_print_task_info() André Almeida
@ 2025-06-13 18:43 ` André Almeida
  2025-06-15 11:01   ` Raag Jadav
  2025-06-13 18:43 ` [PATCH v7 3/5] drm/doc: Add a section about "Task information" for the wedge API André Almeida
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 16+ messages in thread
From: André Almeida @ 2025-06-13 18:43 UTC (permalink / raw)
  To: Alex Deucher, Christian König, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx,
	André Almeida

When a device get wedged, it might be caused by a guilty application.
For userspace, knowing which task was involved can be useful for some
situations, like for implementing a policy, logs or for giving a chance
for the compositor to let the user know what task was involved in the
problem.  This is an optional argument, when the task info is not
available, the PID and TASK string won't appear in the event string.

Sometimes just the PID isn't enough giving that the task might be already
dead by the time userspace will try to check what was this PID's name,
so to make the life easier also notify what's the task's name in the user
event.

Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com> (for i915 and xe)
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Raag Jadav <raag.jadav@intel.com>
Signed-off-by: André Almeida <andrealmeid@igalia.com>
---
v7:
 - Change `char *comm` to `char comm[TASK_COMM_LEN]`
v6:
 - s/cause/involved
 - drop string initialization
v5:
 - s/app/task for struct and commit message as well
 - move defines to drm_drv.c
 - validates if comm is not NULL and it's not empty
v4: s/APP/TASK
v3: Make comm_string and pid_string empty when there's no app info
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c    |  2 +-
 drivers/gpu/drm/drm_drv.c                  | 20 ++++++++++++++++----
 drivers/gpu/drm/i915/gt/intel_reset.c      |  3 ++-
 drivers/gpu/drm/xe/xe_device.c             |  3 ++-
 include/drm/drm_device.h                   |  8 ++++++++
 include/drm/drm_drv.h                      |  3 ++-
 7 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index e1bab6a96cb6..8a0f36f33f13 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -6364,7 +6364,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
 	atomic_set(&adev->reset_domain->reset_res, r);
 
 	if (!r)
-		drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE);
+		drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
 
 	return r;
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index 3d887428ca2b..0c1381b527fe 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -164,7 +164,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
 			if (amdgpu_ring_sched_ready(ring))
 				drm_sched_start(&ring->sched, 0);
 			dev_err(adev->dev, "Ring %s reset succeeded\n", ring->sched.name);
-			drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE);
+			drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
 			goto exit;
 		}
 		dev_err(adev->dev, "Ring %s reset failure\n", ring->sched.name);
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 56dd61f8e05a..eba99a081ec1 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -538,10 +538,15 @@ static const char *drm_get_wedge_recovery(unsigned int opt)
 	}
 }
 
+#define WEDGE_STR_LEN 32
+#define PID_STR_LEN 15
+#define COMM_STR_LEN (TASK_COMM_LEN + 5)
+
 /**
  * drm_dev_wedged_event - generate a device wedged uevent
  * @dev: DRM device
  * @method: method(s) to be used for recovery
+ * @info: optional information about the guilty task
  *
  * This generates a device wedged uevent for the DRM device specified by @dev.
  * Recovery @method\(s) of choice will be sent in the uevent environment as
@@ -554,13 +559,13 @@ static const char *drm_get_wedge_recovery(unsigned int opt)
  *
  * Returns: 0 on success, negative error code otherwise.
  */
-int drm_dev_wedged_event(struct drm_device *dev, unsigned long method)
+int drm_dev_wedged_event(struct drm_device *dev, unsigned long method,
+			 struct drm_wedge_task_info *info)
 {
 	const char *recovery = NULL;
 	unsigned int len, opt;
-	/* Event string length up to 28+ characters with available methods */
-	char event_string[32];
-	char *envp[] = { event_string, NULL };
+	char event_string[WEDGE_STR_LEN], pid_string[PID_STR_LEN], comm_string[COMM_STR_LEN];
+	char *envp[] = { event_string, NULL, NULL, NULL };
 
 	len = scnprintf(event_string, sizeof(event_string), "%s", "WEDGED=");
 
@@ -582,6 +587,13 @@ int drm_dev_wedged_event(struct drm_device *dev, unsigned long method)
 	drm_info(dev, "device wedged, %s\n", method == DRM_WEDGE_RECOVERY_NONE ?
 		 "but recovered through reset" : "needs recovery");
 
+	if (info && (info->comm[0] != '\0') && (info->pid >= 0)) {
+		snprintf(pid_string, sizeof(pid_string), "PID=%u", info->pid);
+		snprintf(comm_string, sizeof(comm_string), "TASK=%s", info->comm);
+		envp[1] = pid_string;
+		envp[2] = comm_string;
+	}
+
 	return kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE, envp);
 }
 EXPORT_SYMBOL(drm_dev_wedged_event);
diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
index dbdcfe130ad4..ba1d8fdc3c7b 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.c
+++ b/drivers/gpu/drm/i915/gt/intel_reset.c
@@ -1448,7 +1448,8 @@ static void intel_gt_reset_global(struct intel_gt *gt,
 		kobject_uevent_env(kobj, KOBJ_CHANGE, reset_done_event);
 	else
 		drm_dev_wedged_event(&gt->i915->drm,
-				     DRM_WEDGE_RECOVERY_REBIND | DRM_WEDGE_RECOVERY_BUS_RESET);
+				     DRM_WEDGE_RECOVERY_REBIND | DRM_WEDGE_RECOVERY_BUS_RESET,
+				     NULL);
 }
 
 /**
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index c02c4c4e9412..f329613e061f 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -1168,7 +1168,8 @@ void xe_device_declare_wedged(struct xe_device *xe)
 
 		/* Notify userspace of wedged device */
 		drm_dev_wedged_event(&xe->drm,
-				     DRM_WEDGE_RECOVERY_REBIND | DRM_WEDGE_RECOVERY_BUS_RESET);
+				     DRM_WEDGE_RECOVERY_REBIND | DRM_WEDGE_RECOVERY_BUS_RESET,
+				     NULL);
 	}
 
 	for_each_gt(gt, xe, id)
diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
index e2f894f1b90a..729e1c6da138 100644
--- a/include/drm/drm_device.h
+++ b/include/drm/drm_device.h
@@ -30,6 +30,14 @@ struct pci_controller;
 #define DRM_WEDGE_RECOVERY_REBIND	BIT(1)	/* unbind + bind driver */
 #define DRM_WEDGE_RECOVERY_BUS_RESET	BIT(2)	/* unbind + reset bus device + bind */
 
+/**
+ * struct drm_wedge_task_info - information about the guilty task of a wedge dev
+ */
+struct drm_wedge_task_info {
+	pid_t pid;
+	char comm[TASK_COMM_LEN];
+};
+
 /**
  * enum switch_power_state - power state of drm device
  */
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 63b51942d606..3f76a32d6b84 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -487,7 +487,8 @@ void drm_put_dev(struct drm_device *dev);
 bool drm_dev_enter(struct drm_device *dev, int *idx);
 void drm_dev_exit(int idx);
 void drm_dev_unplug(struct drm_device *dev);
-int drm_dev_wedged_event(struct drm_device *dev, unsigned long method);
+int drm_dev_wedged_event(struct drm_device *dev, unsigned long method,
+			 struct drm_wedge_task_info *info);
 
 /**
  * drm_dev_is_unplugged - is a DRM device unplugged
-- 
2.49.0


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

* [PATCH v7 3/5] drm/doc: Add a section about "Task information" for the wedge API
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
  2025-06-13 18:43 ` [PATCH v7 1/5] drm: amdgpu: Create amdgpu_vm_print_task_info() André Almeida
  2025-06-13 18:43 ` [PATCH v7 2/5] drm: Create a task info option for wedge events André Almeida
@ 2025-06-13 18:43 ` André Almeida
  2025-06-13 18:43 ` [PATCH v7 4/5] drm: amdgpu: Use struct drm_wedge_task_info inside of struct amdgpu_task_info André Almeida
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: André Almeida @ 2025-06-13 18:43 UTC (permalink / raw)
  To: Alex Deucher, Christian König, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx,
	André Almeida

Add a section about "Task information" for the wedge API.

Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Raag Jadav <raag.jadav@intel.com>
Signed-off-by: André Almeida <andrealmeid@igalia.com>
---
v5:
 - Change app to task in the text as well
v4:
 - Change APP to TASK
v3:
 - Change "app that caused ..." to "app involved ..."
 - Clarify that devcoredump have more information about what happened
 - Update that PID and APP will be empty if there's no app info
---
 Documentation/gpu/drm-uapi.rst | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/Documentation/gpu/drm-uapi.rst b/Documentation/gpu/drm-uapi.rst
index 4863a4deb0ee..263e5a97c080 100644
--- a/Documentation/gpu/drm-uapi.rst
+++ b/Documentation/gpu/drm-uapi.rst
@@ -446,6 +446,23 @@ telemetry information (devcoredump, syslog). This is useful because the first
 hang is usually the most critical one which can result in consequential hangs or
 complete wedging.
 
+Task information
+---------------
+
+The information about which application (if any) was involved in the device
+wedging is useful for userspace if they want to notify the user about what
+happened (e.g. the compositor display a message to the user "The <task name>
+caused a graphical error and the system recovered") or to implement policies
+(e.g. the daemon may "ban" an task that keeps resetting the device). If the task
+information is available, the uevent will display as ``PID=<pid>`` and
+``TASK=<task name>``. Otherwise, ``PID`` and ``TASK`` will not appear in the
+event string.
+
+The reliability of this information is driver and hardware specific, and should
+be taken with a caution regarding it's precision. To have a big picture of what
+really happened, the devcoredump file provides should have much more detailed
+information about the device state and about the event.
+
 Consumer prerequisites
 ----------------------
 
-- 
2.49.0


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

* [PATCH v7 4/5] drm: amdgpu: Use struct drm_wedge_task_info inside of struct amdgpu_task_info
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
                   ` (2 preceding siblings ...)
  2025-06-13 18:43 ` [PATCH v7 3/5] drm/doc: Add a section about "Task information" for the wedge API André Almeida
@ 2025-06-13 18:43 ` André Almeida
  2025-06-16  7:05   ` Christian König
  2025-06-13 18:43 ` [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info André Almeida
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 16+ messages in thread
From: André Almeida @ 2025-06-13 18:43 UTC (permalink / raw)
  To: Alex Deucher, Christian König, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx,
	André Almeida

To avoid a cast when calling drm_dev_wedged_event(), replace pid and
task name inside of struct amdgpu_task_info with struct
drm_wedge_task_info.

Signed-off-by: André Almeida <andrealmeid@igalia.com>
---
v7: New patch
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c      |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c |  4 ++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c          |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c           | 12 ++++++------
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h           |  3 +--
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c           |  2 +-
 drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c         |  2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_events.c          |  2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c      |  8 ++++----
 9 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
index 8e626f50b362..dac4b926e7be 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
@@ -1786,7 +1786,7 @@ static int amdgpu_debugfs_vm_info_show(struct seq_file *m, void *unused)
 
 		ti = amdgpu_vm_get_task_info_vm(vm);
 		if (ti) {
-			seq_printf(m, "pid:%d\tProcess:%s ----------\n", ti->pid, ti->process_name);
+			seq_printf(m, "pid:%d\tProcess:%s ----------\n", ti->task.pid, ti->process_name);
 			amdgpu_vm_put_task_info(ti);
 		}
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
index 7b50741dc097..8a026bc9ea44 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
@@ -220,10 +220,10 @@ amdgpu_devcoredump_read(char *buffer, loff_t offset, size_t count,
 	drm_printf(&p, "time: %lld.%09ld\n", coredump->reset_time.tv_sec,
 		   coredump->reset_time.tv_nsec);
 
-	if (coredump->reset_task_info.pid)
+	if (coredump->reset_task_info.task.pid)
 		drm_printf(&p, "process_name: %s PID: %d\n",
 			   coredump->reset_task_info.process_name,
-			   coredump->reset_task_info.pid);
+			   coredump->reset_task_info.task.pid);
 
 	/* SOC Information */
 	drm_printf(&p, "\nSOC Information\n");
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 0ecc88df7208..e5e33a68d935 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -329,7 +329,7 @@ static int amdgpu_gem_object_open(struct drm_gem_object *obj,
 
 			dev_warn(adev->dev, "validate_and_fence failed: %d\n", r);
 			if (ti) {
-				dev_warn(adev->dev, "pid %d\n", ti->pid);
+				dev_warn(adev->dev, "pid %d\n", ti->task.pid);
 				amdgpu_vm_put_task_info(ti);
 			}
 		}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index f2a0132521c2..0efd3fc7cf3e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -622,7 +622,7 @@ int amdgpu_vm_validate(struct amdgpu_device *adev, struct amdgpu_vm *vm,
 
 			pr_warn_ratelimited("Evicted user BO is not reserved\n");
 			if (ti) {
-				pr_warn_ratelimited("pid %d\n", ti->pid);
+				pr_warn_ratelimited("pid %d\n", ti->task.pid);
 				amdgpu_vm_put_task_info(ti);
 			}
 
@@ -2507,11 +2507,11 @@ void amdgpu_vm_set_task_info(struct amdgpu_vm *vm)
 	if (!vm->task_info)
 		return;
 
-	if (vm->task_info->pid == current->pid)
+	if (vm->task_info->task.pid == current->pid)
 		return;
 
-	vm->task_info->pid = current->pid;
-	get_task_comm(vm->task_info->task_name, current);
+	vm->task_info->task.pid = current->pid;
+	get_task_comm(vm->task_info->task.comm, current);
 
 	if (current->group_leader->mm != current->mm)
 		return;
@@ -2774,7 +2774,7 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
 
 		dev_warn(adev->dev,
 			 "VM memory stats for proc %s(%d) task %s(%d) is non-zero when fini\n",
-			 ti->process_name, ti->pid, ti->task_name, ti->tgid);
+			 ti->process_name, ti->task.pid, ti->task.comm, ti->tgid);
 	}
 
 	amdgpu_vm_put_task_info(vm->task_info);
@@ -3163,5 +3163,5 @@ inline void amdgpu_vm_print_task_info(struct amdgpu_device *adev,
 	dev_err(adev->dev,
 		" Process %s pid %d thread %s pid %d\n",
 		task_info->process_name, task_info->tgid,
-		task_info->task_name, task_info->pid);
+		task_info->task.comm, task_info->task.pid);
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
index 3862a256b9b8..b5c3af1c5e99 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
@@ -236,9 +236,8 @@ struct amdgpu_vm_pte_funcs {
 };
 
 struct amdgpu_task_info {
+	struct drm_wedge_task_info task;
 	char		process_name[TASK_COMM_LEN];
-	char		task_name[TASK_COMM_LEN];
-	pid_t		pid;
 	pid_t		tgid;
 	struct kref	refcount;
 };
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 33ed2b158fcd..f38004e6064e 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -2187,7 +2187,7 @@ static int sdma_v4_0_print_iv_entry(struct amdgpu_device *adev,
 		dev_dbg_ratelimited(adev->dev,
 				    " for process %s pid %d thread %s pid %d\n",
 				    task_info->process_name, task_info->tgid,
-				    task_info->task_name, task_info->pid);
+				    task_info->task.comm, task_info->task.pid);
 		amdgpu_vm_put_task_info(task_info);
 	}
 
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
index 9c169112a5e7..bcde34e4e0a1 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
@@ -1884,7 +1884,7 @@ static int sdma_v4_4_2_print_iv_entry(struct amdgpu_device *adev,
 	if (task_info) {
 		dev_dbg_ratelimited(adev->dev, " for process %s pid %d thread %s pid %d\n",
 				    task_info->process_name, task_info->tgid,
-				    task_info->task_name, task_info->pid);
+				    task_info->task.comm, task_info->task.pid);
 		amdgpu_vm_put_task_info(task_info);
 	}
 
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
index 2b294ada3ec0..82905f3e54dd 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
@@ -1302,7 +1302,7 @@ void kfd_signal_reset_event(struct kfd_node *dev)
 			if (ti) {
 				dev_err(dev->adev->dev,
 					"Queues reset on process %s tid %d thread %s pid %d\n",
-					ti->process_name, ti->tgid, ti->task_name, ti->pid);
+					ti->process_name, ti->tgid, ti->task.comm, ti->task.pid);
 				amdgpu_vm_put_task_info(ti);
 			}
 		}
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c
index 83d9384ac815..a499449fcb06 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c
@@ -253,9 +253,9 @@ void kfd_smi_event_update_vmfault(struct kfd_node *dev, uint16_t pasid)
 	task_info = amdgpu_vm_get_task_info_pasid(dev->adev, pasid);
 	if (task_info) {
 		/* Report VM faults from user applications, not retry from kernel */
-		if (task_info->pid)
+		if (task_info->task.pid)
 			kfd_smi_event_add(0, dev, KFD_SMI_EVENT_VMFAULT, KFD_EVENT_FMT_VMFAULT(
-					  task_info->pid, task_info->task_name));
+					  task_info->task.pid, task_info->task.comm));
 		amdgpu_vm_put_task_info(task_info);
 	}
 }
@@ -359,8 +359,8 @@ void kfd_smi_event_process(struct kfd_process_device *pdd, bool start)
 		kfd_smi_event_add(0, pdd->dev,
 				  start ? KFD_SMI_EVENT_PROCESS_START :
 				  KFD_SMI_EVENT_PROCESS_END,
-				  KFD_EVENT_FMT_PROCESS(task_info->pid,
-				  task_info->task_name));
+				  KFD_EVENT_FMT_PROCESS(task_info->task.pid,
+				  task_info->task.comm));
 		amdgpu_vm_put_task_info(task_info);
 	}
 }
-- 
2.49.0


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

* [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
                   ` (3 preceding siblings ...)
  2025-06-13 18:43 ` [PATCH v7 4/5] drm: amdgpu: Use struct drm_wedge_task_info inside of struct amdgpu_task_info André Almeida
@ 2025-06-13 18:43 ` André Almeida
  2025-06-13 21:15   ` Alex Deucher
  2025-06-16  7:10   ` Christian König
  2025-06-13 19:21 ` ✗ CI.checkpatch: warning for drm: Create a task info option for wedge events (rev2) Patchwork
                   ` (4 subsequent siblings)
  9 siblings, 2 replies; 16+ messages in thread
From: André Almeida @ 2025-06-13 18:43 UTC (permalink / raw)
  To: Alex Deucher, Christian König, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx,
	André Almeida

To notify userspace about which task (if any) made the device get in a
wedge state, make use of drm_wedge_task_info parameter, filling it with
the task PID and name.

Signed-off-by: André Almeida <andrealmeid@igalia.com>
---
v7:
 - Remove struct cast, now we can use `info = &ti->task`
 - Fix struct lifetime, move amdgpu_vm_put_task_info() after
   drm_dev_wedged_event() call
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 17 +++++++++++++++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c    |  8 ++++++--
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 8a0f36f33f13..67cff53678e1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -6363,8 +6363,21 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
 
 	atomic_set(&adev->reset_domain->reset_res, r);
 
-	if (!r)
-		drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
+	if (!r) {
+		struct drm_wedge_task_info *info = NULL;
+		struct amdgpu_task_info *ti = NULL;
+
+		if (job) {
+			ti = amdgpu_vm_get_task_info_pasid(adev, job->pasid);
+			if (ti)
+				info = &ti->task;
+		}
+
+		drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, info);
+
+		if (ti)
+			amdgpu_vm_put_task_info(ti);
+	}
 
 	return r;
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index 0c1381b527fe..f061f691f556 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -89,6 +89,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
 {
 	struct amdgpu_ring *ring = to_amdgpu_ring(s_job->sched);
 	struct amdgpu_job *job = to_amdgpu_job(s_job);
+	struct drm_wedge_task_info *info = NULL;
 	struct amdgpu_task_info *ti;
 	struct amdgpu_device *adev = ring->adev;
 	int idx;
@@ -125,7 +126,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
 	ti = amdgpu_vm_get_task_info_pasid(ring->adev, job->pasid);
 	if (ti) {
 		amdgpu_vm_print_task_info(adev, ti);
-		amdgpu_vm_put_task_info(ti);
+		info = &ti->task;
 	}
 
 	/* attempt a per ring reset */
@@ -164,13 +165,16 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
 			if (amdgpu_ring_sched_ready(ring))
 				drm_sched_start(&ring->sched, 0);
 			dev_err(adev->dev, "Ring %s reset succeeded\n", ring->sched.name);
-			drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
+			drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, info);
 			goto exit;
 		}
 		dev_err(adev->dev, "Ring %s reset failure\n", ring->sched.name);
 	}
 	dma_fence_set_error(&s_job->s_fence->finished, -ETIME);
 
+	if (ti)
+		amdgpu_vm_put_task_info(ti);
+
 	if (amdgpu_device_should_recover_gpu(ring->adev)) {
 		struct amdgpu_reset_context reset_context;
 		memset(&reset_context, 0, sizeof(reset_context));
-- 
2.49.0


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

* ✗ CI.checkpatch: warning for drm: Create a task info option for wedge events (rev2)
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
                   ` (4 preceding siblings ...)
  2025-06-13 18:43 ` [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info André Almeida
@ 2025-06-13 19:21 ` Patchwork
  2025-06-13 19:23 ` ✓ CI.KUnit: success " Patchwork
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-06-13 19:21 UTC (permalink / raw)
  To: André Almeida; +Cc: intel-xe

== Series Details ==

Series: drm: Create a task info option for wedge events (rev2)
URL   : https://patchwork.freedesktop.org/series/149332/
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
f8ff75ae1d2127635239b134695774ed4045d05b
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 2367d766a594558add76622491dd566aa60ca87a
Author: André Almeida <andrealmeid@igalia.com>
Date:   Fri Jun 13 15:43:48 2025 -0300

    drm/amdgpu: Make use of drm_wedge_task_info
    
    To notify userspace about which task (if any) made the device get in a
    wedge state, make use of drm_wedge_task_info parameter, filling it with
    the task PID and name.
    
    Signed-off-by: André Almeida <andrealmeid@igalia.com>
+ /mt/dim checkpatch 4d016d6e602638e0ebc3895331224e057508c07a drm-intel
cd74716ebc6c drm: amdgpu: Create amdgpu_vm_print_task_info()
b130b63bd360 drm: Create a task info option for wedge events
-:86: WARNING:STATIC_CONST_CHAR_ARRAY: char * array declaration might be better as static const
#86: FILE: drivers/gpu/drm/drm_drv.c:568:
+	char *envp[] = { event_string, NULL, NULL, NULL };

-:94: CHECK:UNNECESSARY_PARENTHESES: Unnecessary parentheses around 'info->pid >= 0'
#94: FILE: drivers/gpu/drm/drm_drv.c:590:
+	if (info && (info->comm[0] != '\0') && (info->pid >= 0)) {

total: 0 errors, 1 warnings, 1 checks, 102 lines checked
6b6fcf9cf02c drm/doc: Add a section about "Task information" for the wedge API
60675e990cc9 drm: amdgpu: Use struct drm_wedge_task_info inside of struct amdgpu_task_info
-:25: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#25: FILE: drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1789:
+			seq_printf(m, "pid:%d\tProcess:%s ----------\n", ti->task.pid, ti->process_name);

-:180: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#180: FILE: drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c:363:
+				  KFD_EVENT_FMT_PROCESS(task_info->task.pid,
+				  task_info->task.comm));

total: 0 errors, 1 warnings, 1 checks, 119 lines checked
2367d766a594 drm/amdgpu: Make use of drm_wedge_task_info



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

* ✓ CI.KUnit: success for drm: Create a task info option for wedge events (rev2)
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
                   ` (5 preceding siblings ...)
  2025-06-13 19:21 ` ✗ CI.checkpatch: warning for drm: Create a task info option for wedge events (rev2) Patchwork
@ 2025-06-13 19:23 ` Patchwork
  2025-06-13 19:37 ` ✗ CI.checksparse: warning " Patchwork
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-06-13 19:23 UTC (permalink / raw)
  To: André Almeida; +Cc: intel-xe

== Series Details ==

Series: drm: Create a task info option for wedge events (rev2)
URL   : https://patchwork.freedesktop.org/series/149332/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[19:21:56] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[19:22:00] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[19:22:27] Starting KUnit Kernel (1/1)...
[19:22:27] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[19:22:27] ================== guc_buf (11 subtests) ===================
[19:22:27] [PASSED] test_smallest
[19:22:27] [PASSED] test_largest
[19:22:28] [PASSED] test_granular
[19:22:28] [PASSED] test_unique
[19:22:28] [PASSED] test_overlap
[19:22:28] [PASSED] test_reusable
[19:22:28] [PASSED] test_too_big
[19:22:28] [PASSED] test_flush
[19:22:28] [PASSED] test_lookup
[19:22:28] [PASSED] test_data
[19:22:28] [PASSED] test_class
[19:22:28] ===================== [PASSED] guc_buf =====================
[19:22:28] =================== guc_dbm (7 subtests) ===================
[19:22:28] [PASSED] test_empty
[19:22:28] [PASSED] test_default
[19:22:28] ======================== test_size  ========================
[19:22:28] [PASSED] 4
[19:22:28] [PASSED] 8
[19:22:28] [PASSED] 32
[19:22:28] [PASSED] 256
[19:22:28] ==================== [PASSED] test_size ====================
[19:22:28] ======================= test_reuse  ========================
[19:22:28] [PASSED] 4
[19:22:28] [PASSED] 8
[19:22:28] [PASSED] 32
[19:22:28] [PASSED] 256
[19:22:28] =================== [PASSED] test_reuse ====================
[19:22:28] =================== test_range_overlap  ====================
[19:22:28] [PASSED] 4
[19:22:28] [PASSED] 8
[19:22:28] [PASSED] 32
[19:22:28] [PASSED] 256
[19:22:28] =============== [PASSED] test_range_overlap ================
[19:22:28] =================== test_range_compact  ====================
[19:22:28] [PASSED] 4
[19:22:28] [PASSED] 8
[19:22:28] [PASSED] 32
[19:22:28] [PASSED] 256
[19:22:28] =============== [PASSED] test_range_compact ================
[19:22:28] ==================== test_range_spare  =====================
[19:22:28] [PASSED] 4
[19:22:28] [PASSED] 8
[19:22:28] [PASSED] 32
[19:22:28] [PASSED] 256
[19:22:28] ================ [PASSED] test_range_spare =================
[19:22:28] ===================== [PASSED] guc_dbm =====================
[19:22:28] =================== guc_idm (6 subtests) ===================
[19:22:28] [PASSED] bad_init
[19:22:28] [PASSED] no_init
[19:22:28] [PASSED] init_fini
[19:22:28] [PASSED] check_used
[19:22:28] [PASSED] check_quota
[19:22:28] [PASSED] check_all
[19:22:28] ===================== [PASSED] guc_idm =====================
[19:22:28] ================== no_relay (3 subtests) ===================
[19:22:28] [PASSED] xe_drops_guc2pf_if_not_ready
[19:22:28] [PASSED] xe_drops_guc2vf_if_not_ready
[19:22:28] [PASSED] xe_rejects_send_if_not_ready
[19:22:28] ==================== [PASSED] no_relay =====================
[19:22:28] ================== pf_relay (14 subtests) ==================
[19:22:28] [PASSED] pf_rejects_guc2pf_too_short
[19:22:28] [PASSED] pf_rejects_guc2pf_too_long
[19:22:28] [PASSED] pf_rejects_guc2pf_no_payload
[19:22:28] [PASSED] pf_fails_no_payload
[19:22:28] [PASSED] pf_fails_bad_origin
[19:22:28] [PASSED] pf_fails_bad_type
[19:22:28] [PASSED] pf_txn_reports_error
[19:22:28] [PASSED] pf_txn_sends_pf2guc
[19:22:28] [PASSED] pf_sends_pf2guc
[19:22:28] [SKIPPED] pf_loopback_nop
[19:22:28] [SKIPPED] pf_loopback_echo
[19:22:28] [SKIPPED] pf_loopback_fail
[19:22:28] [SKIPPED] pf_loopback_busy
[19:22:28] [SKIPPED] pf_loopback_retry
[19:22:28] ==================== [PASSED] pf_relay =====================
[19:22:28] ================== vf_relay (3 subtests) ===================
[19:22:28] [PASSED] vf_rejects_guc2vf_too_short
[19:22:28] [PASSED] vf_rejects_guc2vf_too_long
[19:22:28] [PASSED] vf_rejects_guc2vf_no_payload
[19:22:28] ==================== [PASSED] vf_relay =====================
[19:22:28] ================= pf_service (11 subtests) =================
[19:22:28] [PASSED] pf_negotiate_any
[19:22:28] [PASSED] pf_negotiate_base_match
[19:22:28] [PASSED] pf_negotiate_base_newer
[19:22:28] [PASSED] pf_negotiate_base_next
[19:22:28] [SKIPPED] pf_negotiate_base_older
[19:22:28] [PASSED] pf_negotiate_base_prev
[19:22:28] [PASSED] pf_negotiate_latest_match
[19:22:28] [PASSED] pf_negotiate_latest_newer
[19:22:28] [PASSED] pf_negotiate_latest_next
[19:22:28] [SKIPPED] pf_negotiate_latest_older
[19:22:28] [SKIPPED] pf_negotiate_latest_prev
[19:22:28] =================== [PASSED] pf_service ====================
[19:22:28] ===================== lmtt (1 subtest) =====================
[19:22:28] ======================== test_ops  =========================
[19:22:28] [PASSED] 2-level
[19:22:28] [PASSED] multi-level
[19:22:28] ==================== [PASSED] test_ops =====================
[19:22:28] ====================== [PASSED] lmtt =======================
[19:22:28] =================== xe_mocs (2 subtests) ===================
[19:22:28] ================ xe_live_mocs_kernel_kunit  ================
[19:22:28] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[19:22:28] ================ xe_live_mocs_reset_kunit  =================
[19:22:28] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[19:22:28] ==================== [SKIPPED] xe_mocs =====================
[19:22:28] ================= xe_migrate (2 subtests) ==================
[19:22:28] ================= xe_migrate_sanity_kunit  =================
[19:22:28] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[19:22:28] ================== xe_validate_ccs_kunit  ==================
[19:22:28] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[19:22:28] =================== [SKIPPED] xe_migrate ===================
[19:22:28] ================== xe_dma_buf (1 subtest) ==================
[19:22:28] ==================== xe_dma_buf_kunit  =====================
[19:22:28] ================ [SKIPPED] xe_dma_buf_kunit ================
[19:22:28] =================== [SKIPPED] xe_dma_buf ===================
[19:22:28] ================= xe_bo_shrink (1 subtest) =================
[19:22:28] =================== xe_bo_shrink_kunit  ====================
[19:22:28] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[19:22:28] ================== [SKIPPED] xe_bo_shrink ==================
[19:22:28] ==================== xe_bo (2 subtests) ====================
[19:22:28] ================== xe_ccs_migrate_kunit  ===================
[19:22:28] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[19:22:28] ==================== xe_bo_evict_kunit  ====================
[19:22:28] =============== [SKIPPED] xe_bo_evict_kunit ================
[19:22:28] ===================== [SKIPPED] xe_bo ======================
[19:22:28] ==================== args (11 subtests) ====================
[19:22:28] [PASSED] count_args_test
[19:22:28] [PASSED] call_args_example
[19:22:28] [PASSED] call_args_test
[19:22:28] [PASSED] drop_first_arg_example
[19:22:28] [PASSED] drop_first_arg_test
[19:22:28] [PASSED] first_arg_example
[19:22:28] [PASSED] first_arg_test
[19:22:28] [PASSED] last_arg_example
[19:22:28] [PASSED] last_arg_test
[19:22:28] [PASSED] pick_arg_example
[19:22:28] [PASSED] sep_comma_example
[19:22:28] ====================== [PASSED] args =======================
[19:22:28] =================== xe_pci (2 subtests) ====================
[19:22:28] [PASSED] xe_gmdid_graphics_ip
[19:22:28] [PASSED] xe_gmdid_media_ip
[19:22:28] ===================== [PASSED] xe_pci ======================
[19:22:28] =================== xe_rtp (2 subtests) ====================
[19:22:28] =============== xe_rtp_process_to_sr_tests  ================
[19:22:28] [PASSED] coalesce-same-reg
[19:22:28] [PASSED] no-match-no-add
[19:22:28] [PASSED] match-or
[19:22:28] [PASSED] match-or-xfail
[19:22:28] [PASSED] no-match-no-add-multiple-rules
[19:22:28] [PASSED] two-regs-two-entries
[19:22:28] [PASSED] clr-one-set-other
[19:22:28] [PASSED] set-field
[19:22:28] [PASSED] conflict-duplicate
[19:22:28] [PASSED] conflict-not-disjoint
stty: 'standard input': Inappropriate ioctl for device
[19:22:28] [PASSED] conflict-reg-type
[19:22:28] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[19:22:28] ================== xe_rtp_process_tests  ===================
[19:22:28] [PASSED] active1
[19:22:28] [PASSED] active2
[19:22:28] [PASSED] active-inactive
[19:22:28] [PASSED] inactive-active
[19:22:28] [PASSED] inactive-1st_or_active-inactive
[19:22:28] [PASSED] inactive-2nd_or_active-inactive
[19:22:28] [PASSED] inactive-last_or_active-inactive
[19:22:28] [PASSED] inactive-no_or_active-inactive
[19:22:28] ============== [PASSED] xe_rtp_process_tests ===============
[19:22:28] ===================== [PASSED] xe_rtp ======================
[19:22:28] ==================== xe_wa (1 subtest) =====================
[19:22:28] ======================== xe_wa_gt  =========================
[19:22:28] [PASSED] TIGERLAKE (B0)
[19:22:28] [PASSED] DG1 (A0)
[19:22:28] [PASSED] DG1 (B0)
[19:22:28] [PASSED] ALDERLAKE_S (A0)
[19:22:28] [PASSED] ALDERLAKE_S (B0)
[19:22:28] [PASSED] ALDERLAKE_S (C0)
[19:22:28] [PASSED] ALDERLAKE_S (D0)
[19:22:28] [PASSED] ALDERLAKE_P (A0)
[19:22:28] [PASSED] ALDERLAKE_P (B0)
[19:22:28] [PASSED] ALDERLAKE_P (C0)
[19:22:28] [PASSED] ALDERLAKE_S_RPLS (D0)
[19:22:28] [PASSED] ALDERLAKE_P_RPLU (E0)
[19:22:28] [PASSED] DG2_G10 (C0)
[19:22:28] [PASSED] DG2_G11 (B1)
[19:22:28] [PASSED] DG2_G12 (A1)
[19:22:28] [PASSED] METEORLAKE (g:A0, m:A0)
[19:22:28] [PASSED] METEORLAKE (g:A0, m:A0)
[19:22:28] [PASSED] METEORLAKE (g:A0, m:A0)
[19:22:28] [PASSED] LUNARLAKE (g:A0, m:A0)
[19:22:28] [PASSED] LUNARLAKE (g:B0, m:A0)
[19:22:28] [PASSED] BATTLEMAGE (g:A0, m:A1)
[19:22:28] ==================== [PASSED] xe_wa_gt =====================
[19:22:28] ====================== [PASSED] xe_wa ======================
[19:22:28] ============================================================
[19:22:28] Testing complete. Ran 133 tests: passed: 117, skipped: 16
[19:22:28] Elapsed time: 31.509s total, 4.165s configuring, 27.027s building, 0.300s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[19:22:28] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[19:22:29] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[19:22:51] Starting KUnit Kernel (1/1)...
[19:22:51] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[19:22:51] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[19:22:51] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[19:22:51] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[19:22:51] =========== drm_validate_clone_mode (2 subtests) ===========
[19:22:51] ============== drm_test_check_in_clone_mode  ===============
[19:22:51] [PASSED] in_clone_mode
[19:22:51] [PASSED] not_in_clone_mode
[19:22:51] ========== [PASSED] drm_test_check_in_clone_mode ===========
[19:22:51] =============== drm_test_check_valid_clones  ===============
[19:22:51] [PASSED] not_in_clone_mode
[19:22:51] [PASSED] valid_clone
[19:22:51] [PASSED] invalid_clone
[19:22:51] =========== [PASSED] drm_test_check_valid_clones ===========
[19:22:51] ============= [PASSED] drm_validate_clone_mode =============
[19:22:51] ============= drm_validate_modeset (1 subtest) =============
[19:22:51] [PASSED] drm_test_check_connector_changed_modeset
[19:22:51] ============== [PASSED] drm_validate_modeset ===============
[19:22:51] ====== drm_test_bridge_get_current_state (2 subtests) ======
[19:22:51] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[19:22:51] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[19:22:51] ======== [PASSED] drm_test_bridge_get_current_state ========
[19:22:51] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[19:22:51] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[19:22:51] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[19:22:51] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[19:22:51] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[19:22:51] ============== drm_bridge_alloc (2 subtests) ===============
[19:22:51] [PASSED] drm_test_drm_bridge_alloc_basic
[19:22:51] [PASSED] drm_test_drm_bridge_alloc_get_put
[19:22:51] ================ [PASSED] drm_bridge_alloc =================
[19:22:51] ================== drm_buddy (7 subtests) ==================
[19:22:51] [PASSED] drm_test_buddy_alloc_limit
[19:22:51] [PASSED] drm_test_buddy_alloc_optimistic
[19:22:51] [PASSED] drm_test_buddy_alloc_pessimistic
[19:22:51] [PASSED] drm_test_buddy_alloc_pathological
[19:22:51] [PASSED] drm_test_buddy_alloc_contiguous
[19:22:51] [PASSED] drm_test_buddy_alloc_clear
[19:22:51] [PASSED] drm_test_buddy_alloc_range_bias
[19:22:51] ==================== [PASSED] drm_buddy ====================
[19:22:51] ============= drm_cmdline_parser (40 subtests) =============
[19:22:51] [PASSED] drm_test_cmdline_force_d_only
[19:22:51] [PASSED] drm_test_cmdline_force_D_only_dvi
[19:22:51] [PASSED] drm_test_cmdline_force_D_only_hdmi
[19:22:51] [PASSED] drm_test_cmdline_force_D_only_not_digital
[19:22:51] [PASSED] drm_test_cmdline_force_e_only
[19:22:51] [PASSED] drm_test_cmdline_res
[19:22:51] [PASSED] drm_test_cmdline_res_vesa
[19:22:51] [PASSED] drm_test_cmdline_res_vesa_rblank
[19:22:51] [PASSED] drm_test_cmdline_res_rblank
[19:22:51] [PASSED] drm_test_cmdline_res_bpp
[19:22:51] [PASSED] drm_test_cmdline_res_refresh
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[19:22:51] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[19:22:51] [PASSED] drm_test_cmdline_res_margins_force_on
[19:22:51] [PASSED] drm_test_cmdline_res_vesa_margins
[19:22:51] [PASSED] drm_test_cmdline_name
[19:22:51] [PASSED] drm_test_cmdline_name_bpp
[19:22:51] [PASSED] drm_test_cmdline_name_option
[19:22:51] [PASSED] drm_test_cmdline_name_bpp_option
[19:22:51] [PASSED] drm_test_cmdline_rotate_0
[19:22:51] [PASSED] drm_test_cmdline_rotate_90
[19:22:51] [PASSED] drm_test_cmdline_rotate_180
[19:22:51] [PASSED] drm_test_cmdline_rotate_270
[19:22:51] [PASSED] drm_test_cmdline_hmirror
[19:22:51] [PASSED] drm_test_cmdline_vmirror
[19:22:51] [PASSED] drm_test_cmdline_margin_options
[19:22:51] [PASSED] drm_test_cmdline_multiple_options
[19:22:51] [PASSED] drm_test_cmdline_bpp_extra_and_option
[19:22:51] [PASSED] drm_test_cmdline_extra_and_option
[19:22:51] [PASSED] drm_test_cmdline_freestanding_options
[19:22:51] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[19:22:51] [PASSED] drm_test_cmdline_panel_orientation
[19:22:51] ================ drm_test_cmdline_invalid  =================
[19:22:51] [PASSED] margin_only
[19:22:51] [PASSED] interlace_only
[19:22:51] [PASSED] res_missing_x
[19:22:51] [PASSED] res_missing_y
[19:22:51] [PASSED] res_bad_y
[19:22:51] [PASSED] res_missing_y_bpp
[19:22:51] [PASSED] res_bad_bpp
[19:22:51] [PASSED] res_bad_refresh
[19:22:51] [PASSED] res_bpp_refresh_force_on_off
[19:22:51] [PASSED] res_invalid_mode
[19:22:51] [PASSED] res_bpp_wrong_place_mode
[19:22:51] [PASSED] name_bpp_refresh
[19:22:51] [PASSED] name_refresh
[19:22:51] [PASSED] name_refresh_wrong_mode
[19:22:51] [PASSED] name_refresh_invalid_mode
[19:22:51] [PASSED] rotate_multiple
[19:22:51] [PASSED] rotate_invalid_val
[19:22:51] [PASSED] rotate_truncated
[19:22:51] [PASSED] invalid_option
[19:22:51] [PASSED] invalid_tv_option
[19:22:51] [PASSED] truncated_tv_option
[19:22:51] ============ [PASSED] drm_test_cmdline_invalid =============
[19:22:51] =============== drm_test_cmdline_tv_options  ===============
[19:22:51] [PASSED] NTSC
[19:22:51] [PASSED] NTSC_443
[19:22:51] [PASSED] NTSC_J
[19:22:51] [PASSED] PAL
[19:22:51] [PASSED] PAL_M
[19:22:51] [PASSED] PAL_N
[19:22:51] [PASSED] SECAM
[19:22:51] [PASSED] MONO_525
[19:22:51] [PASSED] MONO_625
[19:22:51] =========== [PASSED] drm_test_cmdline_tv_options ===========
[19:22:51] =============== [PASSED] drm_cmdline_parser ================
[19:22:51] ========== drmm_connector_hdmi_init (20 subtests) ==========
[19:22:51] [PASSED] drm_test_connector_hdmi_init_valid
[19:22:51] [PASSED] drm_test_connector_hdmi_init_bpc_8
[19:22:51] [PASSED] drm_test_connector_hdmi_init_bpc_10
[19:22:51] [PASSED] drm_test_connector_hdmi_init_bpc_12
[19:22:51] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[19:22:51] [PASSED] drm_test_connector_hdmi_init_bpc_null
[19:22:51] [PASSED] drm_test_connector_hdmi_init_formats_empty
[19:22:51] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[19:22:51] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[19:22:51] [PASSED] supported_formats=0x9 yuv420_allowed=1
[19:22:51] [PASSED] supported_formats=0x9 yuv420_allowed=0
[19:22:51] [PASSED] supported_formats=0x3 yuv420_allowed=1
[19:22:51] [PASSED] supported_formats=0x3 yuv420_allowed=0
[19:22:51] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[19:22:51] [PASSED] drm_test_connector_hdmi_init_null_ddc
[19:22:51] [PASSED] drm_test_connector_hdmi_init_null_product
[19:22:51] [PASSED] drm_test_connector_hdmi_init_null_vendor
[19:22:51] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[19:22:51] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[19:22:51] [PASSED] drm_test_connector_hdmi_init_product_valid
[19:22:51] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[19:22:51] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[19:22:51] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[19:22:51] ========= drm_test_connector_hdmi_init_type_valid  =========
[19:22:51] [PASSED] HDMI-A
[19:22:51] [PASSED] HDMI-B
[19:22:51] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[19:22:51] ======== drm_test_connector_hdmi_init_type_invalid  ========
[19:22:51] [PASSED] Unknown
[19:22:51] [PASSED] VGA
[19:22:51] [PASSED] DVI-I
[19:22:51] [PASSED] DVI-D
[19:22:51] [PASSED] DVI-A
[19:22:51] [PASSED] Composite
[19:22:51] [PASSED] SVIDEO
[19:22:51] [PASSED] LVDS
[19:22:51] [PASSED] Component
[19:22:51] [PASSED] DIN
[19:22:51] [PASSED] DP
[19:22:51] [PASSED] TV
[19:22:51] [PASSED] eDP
[19:22:51] [PASSED] Virtual
[19:22:51] [PASSED] DSI
[19:22:51] [PASSED] DPI
[19:22:51] [PASSED] Writeback
[19:22:51] [PASSED] SPI
[19:22:51] [PASSED] USB
[19:22:51] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[19:22:51] ============ [PASSED] drmm_connector_hdmi_init =============
[19:22:51] ============= drmm_connector_init (3 subtests) =============
[19:22:51] [PASSED] drm_test_drmm_connector_init
[19:22:51] [PASSED] drm_test_drmm_connector_init_null_ddc
[19:22:51] ========= drm_test_drmm_connector_init_type_valid  =========
[19:22:51] [PASSED] Unknown
[19:22:51] [PASSED] VGA
[19:22:51] [PASSED] DVI-I
[19:22:51] [PASSED] DVI-D
[19:22:51] [PASSED] DVI-A
[19:22:51] [PASSED] Composite
[19:22:51] [PASSED] SVIDEO
[19:22:51] [PASSED] LVDS
[19:22:51] [PASSED] Component
[19:22:51] [PASSED] DIN
[19:22:51] [PASSED] DP
[19:22:51] [PASSED] HDMI-A
[19:22:51] [PASSED] HDMI-B
[19:22:51] [PASSED] TV
[19:22:51] [PASSED] eDP
[19:22:51] [PASSED] Virtual
[19:22:51] [PASSED] DSI
[19:22:51] [PASSED] DPI
[19:22:51] [PASSED] Writeback
[19:22:51] [PASSED] SPI
[19:22:51] [PASSED] USB
[19:22:51] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[19:22:51] =============== [PASSED] drmm_connector_init ===============
[19:22:51] ========= drm_connector_dynamic_init (6 subtests) ==========
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_init
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_init_properties
[19:22:51] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[19:22:51] [PASSED] Unknown
[19:22:51] [PASSED] VGA
[19:22:51] [PASSED] DVI-I
[19:22:51] [PASSED] DVI-D
[19:22:51] [PASSED] DVI-A
[19:22:51] [PASSED] Composite
[19:22:51] [PASSED] SVIDEO
[19:22:51] [PASSED] LVDS
[19:22:51] [PASSED] Component
[19:22:51] [PASSED] DIN
[19:22:51] [PASSED] DP
[19:22:51] [PASSED] HDMI-A
[19:22:51] [PASSED] HDMI-B
[19:22:51] [PASSED] TV
[19:22:51] [PASSED] eDP
[19:22:51] [PASSED] Virtual
[19:22:51] [PASSED] DSI
[19:22:51] [PASSED] DPI
[19:22:51] [PASSED] Writeback
[19:22:51] [PASSED] SPI
[19:22:51] [PASSED] USB
[19:22:51] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[19:22:51] ======== drm_test_drm_connector_dynamic_init_name  =========
[19:22:51] [PASSED] Unknown
[19:22:51] [PASSED] VGA
[19:22:51] [PASSED] DVI-I
[19:22:51] [PASSED] DVI-D
[19:22:51] [PASSED] DVI-A
[19:22:51] [PASSED] Composite
[19:22:51] [PASSED] SVIDEO
[19:22:51] [PASSED] LVDS
[19:22:51] [PASSED] Component
[19:22:51] [PASSED] DIN
[19:22:51] [PASSED] DP
[19:22:51] [PASSED] HDMI-A
[19:22:51] [PASSED] HDMI-B
[19:22:51] [PASSED] TV
[19:22:51] [PASSED] eDP
[19:22:51] [PASSED] Virtual
[19:22:51] [PASSED] DSI
[19:22:51] [PASSED] DPI
[19:22:51] [PASSED] Writeback
[19:22:51] [PASSED] SPI
[19:22:51] [PASSED] USB
[19:22:51] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[19:22:51] =========== [PASSED] drm_connector_dynamic_init ============
[19:22:51] ==== drm_connector_dynamic_register_early (4 subtests) =====
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[19:22:51] ====== [PASSED] drm_connector_dynamic_register_early =======
[19:22:51] ======= drm_connector_dynamic_register (7 subtests) ========
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[19:22:51] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[19:22:51] ========= [PASSED] drm_connector_dynamic_register ==========
[19:22:51] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[19:22:51] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[19:22:51] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[19:22:51] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[19:22:51] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[19:22:51] ========== drm_test_get_tv_mode_from_name_valid  ===========
[19:22:51] [PASSED] NTSC
[19:22:51] [PASSED] NTSC-443
[19:22:51] [PASSED] NTSC-J
[19:22:51] [PASSED] PAL
[19:22:51] [PASSED] PAL-M
[19:22:51] [PASSED] PAL-N
[19:22:51] [PASSED] SECAM
[19:22:51] [PASSED] Mono
[19:22:51] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[19:22:51] [PASSED] drm_test_get_tv_mode_from_name_truncated
[19:22:51] ============ [PASSED] drm_get_tv_mode_from_name ============
[19:22:51] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[19:22:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[19:22:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[19:22:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[19:22:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[19:22:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[19:22:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[19:22:51] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[19:22:51] [PASSED] VIC 96
[19:22:51] [PASSED] VIC 97
[19:22:51] [PASSED] VIC 101
[19:22:51] [PASSED] VIC 102
[19:22:51] [PASSED] VIC 106
[19:22:51] [PASSED] VIC 107
[19:22:51] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[19:22:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[19:22:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[19:22:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[19:22:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[19:22:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[19:22:51] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[19:22:51] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[19:22:51] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[19:22:51] [PASSED] Automatic
[19:22:51] [PASSED] Full
[19:22:51] [PASSED] Limited 16:235
[19:22:51] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[19:22:51] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[19:22:51] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[19:22:51] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[19:22:51] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[19:22:51] [PASSED] RGB
[19:22:51] [PASSED] YUV 4:2:0
[19:22:51] [PASSED] YUV 4:2:2
[19:22:51] [PASSED] YUV 4:4:4
[19:22:51] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[19:22:51] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[19:22:51] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[19:22:51] ============= drm_damage_helper (21 subtests) ==============
[19:22:51] [PASSED] drm_test_damage_iter_no_damage
[19:22:51] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[19:22:51] [PASSED] drm_test_damage_iter_no_damage_src_moved
[19:22:51] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[19:22:51] [PASSED] drm_test_damage_iter_no_damage_not_visible
[19:22:51] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[19:22:51] [PASSED] drm_test_damage_iter_no_damage_no_fb
[19:22:51] [PASSED] drm_test_damage_iter_simple_damage
[19:22:51] [PASSED] drm_test_damage_iter_single_damage
[19:22:51] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[19:22:51] [PASSED] drm_test_damage_iter_single_damage_outside_src
[19:22:51] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[19:22:51] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[19:22:51] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[19:22:51] [PASSED] drm_test_damage_iter_single_damage_src_moved
[19:22:51] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[19:22:51] [PASSED] drm_test_damage_iter_damage
[19:22:51] [PASSED] drm_test_damage_iter_damage_one_intersect
[19:22:51] [PASSED] drm_test_damage_iter_damage_one_outside
[19:22:51] [PASSED] drm_test_damage_iter_damage_src_moved
[19:22:51] [PASSED] drm_test_damage_iter_damage_not_visible
[19:22:51] ================ [PASSED] drm_damage_helper ================
[19:22:51] ============== drm_dp_mst_helper (3 subtests) ==============
[19:22:51] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[19:22:51] [PASSED] Clock 154000 BPP 30 DSC disabled
[19:22:51] [PASSED] Clock 234000 BPP 30 DSC disabled
[19:22:51] [PASSED] Clock 297000 BPP 24 DSC disabled
[19:22:51] [PASSED] Clock 332880 BPP 24 DSC enabled
[19:22:51] [PASSED] Clock 324540 BPP 24 DSC enabled
[19:22:51] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[19:22:51] ============== drm_test_dp_mst_calc_pbn_div  ===============
[19:22:51] [PASSED] Link rate 2000000 lane count 4
[19:22:51] [PASSED] Link rate 2000000 lane count 2
[19:22:51] [PASSED] Link rate 2000000 lane count 1
[19:22:51] [PASSED] Link rate 1350000 lane count 4
[19:22:51] [PASSED] Link rate 1350000 lane count 2
[19:22:51] [PASSED] Link rate 1350000 lane count 1
[19:22:51] [PASSED] Link rate 1000000 lane count 4
[19:22:51] [PASSED] Link rate 1000000 lane count 2
[19:22:51] [PASSED] Link rate 1000000 lane count 1
[19:22:51] [PASSED] Link rate 810000 lane count 4
[19:22:51] [PASSED] Link rate 810000 lane count 2
[19:22:51] [PASSED] Link rate 810000 lane count 1
[19:22:51] [PASSED] Link rate 540000 lane count 4
[19:22:51] [PASSED] Link rate 540000 lane count 2
[19:22:51] [PASSED] Link rate 540000 lane count 1
[19:22:51] [PASSED] Link rate 270000 lane count 4
[19:22:51] [PASSED] Link rate 270000 lane count 2
[19:22:51] [PASSED] Link rate 270000 lane count 1
[19:22:51] [PASSED] Link rate 162000 lane count 4
[19:22:51] [PASSED] Link rate 162000 lane count 2
[19:22:51] [PASSED] Link rate 162000 lane count 1
[19:22:51] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[19:22:51] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[19:22:51] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[19:22:51] [PASSED] DP_POWER_UP_PHY with port number
[19:22:51] [PASSED] DP_POWER_DOWN_PHY with port number
[19:22:51] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[19:22:51] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[19:22:51] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[19:22:51] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[19:22:51] [PASSED] DP_QUERY_PAYLOAD with port number
[19:22:51] [PASSED] DP_QUERY_PAYLOAD with VCPI
[19:22:51] [PASSED] DP_REMOTE_DPCD_READ with port number
[19:22:51] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[19:22:51] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[19:22:51] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[19:22:51] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[19:22:51] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[19:22:51] [PASSED] DP_REMOTE_I2C_READ with port number
[19:22:51] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[19:22:51] [PASSED] DP_REMOTE_I2C_READ with transactions array
[19:22:51] [PASSED] DP_REMOTE_I2C_WRITE with port number
[19:22:51] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[19:22:51] [PASSED] DP_REMOTE_I2C_WRITE with data array
[19:22:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[19:22:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[19:22:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[19:22:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[19:22:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[19:22:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[19:22:51] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[19:22:51] ================ [PASSED] drm_dp_mst_helper ================
[19:22:51] ================== drm_exec (7 subtests) ===================
[19:22:51] [PASSED] sanitycheck
[19:22:51] [PASSED] test_lock
[19:22:51] [PASSED] test_lock_unlock
[19:22:51] [PASSED] test_duplicates
[19:22:51] [PASSED] test_prepare
[19:22:51] [PASSED] test_prepare_array
[19:22:51] [PASSED] test_multiple_loops
[19:22:51] ==================== [PASSED] drm_exec =====================
[19:22:51] =========== drm_format_helper_test (18 subtests) ===========
[19:22:51] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[19:22:51] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[19:22:51] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[19:22:51] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[19:22:51] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[19:22:51] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[19:22:51] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[19:22:51] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[19:22:51] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[19:22:51] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[19:22:51] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[19:22:51] ============== drm_test_fb_xrgb8888_to_mono  ===============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[19:22:51] ==================== drm_test_fb_swab  =====================
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ================ [PASSED] drm_test_fb_swab =================
[19:22:51] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[19:22:51] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[19:22:51] [PASSED] single_pixel_source_buffer
[19:22:51] [PASSED] single_pixel_clip_rectangle
[19:22:51] [PASSED] well_known_colors
[19:22:51] [PASSED] destination_pitch
[19:22:51] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[19:22:51] ================= drm_test_fb_clip_offset  =================
[19:22:51] [PASSED] pass through
[19:22:51] [PASSED] horizontal offset
[19:22:51] [PASSED] vertical offset
[19:22:51] [PASSED] horizontal and vertical offset
[19:22:51] [PASSED] horizontal offset (custom pitch)
[19:22:51] [PASSED] vertical offset (custom pitch)
[19:22:51] [PASSED] horizontal and vertical offset (custom pitch)
[19:22:51] ============= [PASSED] drm_test_fb_clip_offset =============
[19:22:51] ============== drm_test_fb_build_fourcc_list  ==============
[19:22:51] [PASSED] no native formats
[19:22:51] [PASSED] XRGB8888 as native format
[19:22:51] [PASSED] remove duplicates
[19:22:51] [PASSED] convert alpha formats
[19:22:51] [PASSED] random formats
[19:22:51] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[19:22:51] =================== drm_test_fb_memcpy  ====================
[19:22:51] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[19:22:51] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[19:22:51] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[19:22:51] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[19:22:51] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[19:22:51] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[19:22:51] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[19:22:51] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[19:22:51] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[19:22:51] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[19:22:51] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[19:22:51] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[19:22:51] =============== [PASSED] drm_test_fb_memcpy ================
[19:22:51] ============= [PASSED] drm_format_helper_test ==============
[19:22:51] ================= drm_format (18 subtests) =================
[19:22:51] [PASSED] drm_test_format_block_width_invalid
[19:22:51] [PASSED] drm_test_format_block_width_one_plane
[19:22:51] [PASSED] drm_test_format_block_width_two_plane
[19:22:51] [PASSED] drm_test_format_block_width_three_plane
[19:22:51] [PASSED] drm_test_format_block_width_tiled
[19:22:51] [PASSED] drm_test_format_block_height_invalid
[19:22:51] [PASSED] drm_test_format_block_height_one_plane
[19:22:51] [PASSED] drm_test_format_block_height_two_plane
[19:22:51] [PASSED] drm_test_format_block_height_three_plane
[19:22:51] [PASSED] drm_test_format_block_height_tiled
[19:22:51] [PASSED] drm_test_format_min_pitch_invalid
[19:22:51] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[19:22:51] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[19:22:51] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[19:22:51] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[19:22:51] [PASSED] drm_test_format_min_pitch_two_plane
[19:22:51] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[19:22:51] [PASSED] drm_test_format_min_pitch_tiled
[19:22:51] =================== [PASSED] drm_format ====================
[19:22:51] ============== drm_framebuffer (10 subtests) ===============
[19:22:51] ========== drm_test_framebuffer_check_src_coords  ==========
[19:22:51] [PASSED] Success: source fits into fb
[19:22:51] [PASSED] Fail: overflowing fb with x-axis coordinate
[19:22:51] [PASSED] Fail: overflowing fb with y-axis coordinate
[19:22:51] [PASSED] Fail: overflowing fb with source width
[19:22:51] [PASSED] Fail: overflowing fb with source height
[19:22:51] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[19:22:51] [PASSED] drm_test_framebuffer_cleanup
[19:22:51] =============== drm_test_framebuffer_create  ===============
[19:22:51] [PASSED] ABGR8888 normal sizes
[19:22:51] [PASSED] ABGR8888 max sizes
[19:22:51] [PASSED] ABGR8888 pitch greater than min required
[19:22:51] [PASSED] ABGR8888 pitch less than min required
[19:22:51] [PASSED] ABGR8888 Invalid width
[19:22:51] [PASSED] ABGR8888 Invalid buffer handle
[19:22:51] [PASSED] No pixel format
[19:22:51] [PASSED] ABGR8888 Width 0
[19:22:51] [PASSED] ABGR8888 Height 0
[19:22:51] [PASSED] ABGR8888 Out of bound height * pitch combination
[19:22:51] [PASSED] ABGR8888 Large buffer offset
[19:22:51] [PASSED] ABGR8888 Buffer offset for inexistent plane
[19:22:51] [PASSED] ABGR8888 Invalid flag
[19:22:51] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[19:22:51] [PASSED] ABGR8888 Valid buffer modifier
[19:22:51] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[19:22:51] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[19:22:51] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[19:22:51] [PASSED] NV12 Normal sizes
[19:22:51] [PASSED] NV12 Max sizes
[19:22:51] [PASSED] NV12 Invalid pitch
[19:22:51] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[19:22:51] [PASSED] NV12 different  modifier per-plane
[19:22:51] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[19:22:51] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[19:22:51] [PASSED] NV12 Modifier for inexistent plane
[19:22:51] [PASSED] NV12 Handle for inexistent plane
[19:22:51] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[19:22:51] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[19:22:51] [PASSED] YVU420 Normal sizes
[19:22:51] [PASSED] YVU420 Max sizes
[19:22:51] [PASSED] YVU420 Invalid pitch
[19:22:51] [PASSED] YVU420 Different pitches
[19:22:51] [PASSED] YVU420 Different buffer offsets/pitches
[19:22:51] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[19:22:51] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[19:22:51] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[19:22:51] [PASSED] YVU420 Valid modifier
[19:22:51] [PASSED] YVU420 Different modifiers per plane
[19:22:51] [PASSED] YVU420 Modifier for inexistent plane
[19:22:51] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[19:22:51] [PASSED] X0L2 Normal sizes
[19:22:51] [PASSED] X0L2 Max sizes
[19:22:51] [PASSED] X0L2 Invalid pitch
[19:22:51] [PASSED] X0L2 Pitch greater than minimum required
[19:22:51] [PASSED] X0L2 Handle for inexistent plane
[19:22:51] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[19:22:51] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[19:22:51] [PASSED] X0L2 Valid modifier
[19:22:51] [PASSED] X0L2 Modifier for inexistent plane
[19:22:51] =========== [PASSED] drm_test_framebuffer_create ===========
[19:22:51] [PASSED] drm_test_framebuffer_free
[19:22:51] [PASSED] drm_test_framebuffer_init
[19:22:51] [PASSED] drm_test_framebuffer_init_bad_format
[19:22:51] [PASSED] drm_test_framebuffer_init_dev_mismatch
[19:22:51] [PASSED] drm_test_framebuffer_lookup
[19:22:51] [PASSED] drm_test_framebuffer_lookup_inexistent
[19:22:51] [PASSED] drm_test_framebuffer_modifiers_not_supported
[19:22:51] ================= [PASSED] drm_framebuffer =================
[19:22:51] ================ drm_gem_shmem (8 subtests) ================
[19:22:51] [PASSED] drm_gem_shmem_test_obj_create
[19:22:51] [PASSED] drm_gem_shmem_test_obj_create_private
[19:22:51] [PASSED] drm_gem_shmem_test_pin_pages
[19:22:51] [PASSED] drm_gem_shmem_test_vmap
[19:22:51] [PASSED] drm_gem_shmem_test_get_pages_sgt
[19:22:51] [PASSED] drm_gem_shmem_test_get_sg_table
[19:22:51] [PASSED] drm_gem_shmem_test_madvise
[19:22:51] [PASSED] drm_gem_shmem_test_purge
[19:22:51] ================== [PASSED] drm_gem_shmem ==================
[19:22:51] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[19:22:51] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[19:22:51] [PASSED] Automatic
[19:22:51] [PASSED] Full
[19:22:51] [PASSED] Limited 16:235
[19:22:51] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[19:22:51] [PASSED] drm_test_check_disable_connector
[19:22:51] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[19:22:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[19:22:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[19:22:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[19:22:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[19:22:51] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[19:22:51] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[19:22:51] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[19:22:51] [PASSED] drm_test_check_output_bpc_dvi
[19:22:51] [PASSED] drm_test_check_output_bpc_format_vic_1
[19:22:51] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[19:22:51] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[19:22:51] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[19:22:51] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[19:22:51] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[19:22:51] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[19:22:51] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[19:22:51] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[19:22:51] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[19:22:51] [PASSED] drm_test_check_broadcast_rgb_value
[19:22:51] [PASSED] drm_test_check_bpc_8_value
[19:22:51] [PASSED] drm_test_check_bpc_10_value
[19:22:51] [PASSED] drm_test_check_bpc_12_value
[19:22:51] [PASSED] drm_test_check_format_value
[19:22:51] [PASSED] drm_test_check_tmds_char_value
[19:22:51] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[19:22:51] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[19:22:51] [PASSED] drm_test_check_mode_valid
[19:22:51] [PASSED] drm_test_check_mode_valid_reject
[19:22:51] [PASSED] drm_test_check_mode_valid_reject_rate
[19:22:51] [PASSED] drm_test_check_mode_valid_reject_max_clock
[19:22:51] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[19:22:51] ================= drm_managed (2 subtests) =================
[19:22:51] [PASSED] drm_test_managed_release_action
[19:22:51] [PASSED] drm_test_managed_run_action
[19:22:51] =================== [PASSED] drm_managed ===================
[19:22:51] =================== drm_mm (6 subtests) ====================
[19:22:51] [PASSED] drm_test_mm_init
[19:22:51] [PASSED] drm_test_mm_debug
[19:22:51] [PASSED] drm_test_mm_align32
[19:22:51] [PASSED] drm_test_mm_align64
[19:22:51] [PASSED] drm_test_mm_lowest
[19:22:51] [PASSED] drm_test_mm_highest
[19:22:51] ===================== [PASSED] drm_mm ======================
[19:22:51] ============= drm_modes_analog_tv (5 subtests) =============
[19:22:51] [PASSED] drm_test_modes_analog_tv_mono_576i
[19:22:51] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[19:22:51] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[19:22:51] [PASSED] drm_test_modes_analog_tv_pal_576i
[19:22:51] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[19:22:51] =============== [PASSED] drm_modes_analog_tv ===============
[19:22:51] ============== drm_plane_helper (2 subtests) ===============
[19:22:51] =============== drm_test_check_plane_state  ================
[19:22:51] [PASSED] clipping_simple
[19:22:51] [PASSED] clipping_rotate_reflect
[19:22:51] [PASSED] positioning_simple
[19:22:51] [PASSED] upscaling
[19:22:51] [PASSED] downscaling
[19:22:51] [PASSED] rounding1
[19:22:51] [PASSED] rounding2
[19:22:51] [PASSED] rounding3
[19:22:51] [PASSED] rounding4
[19:22:51] =========== [PASSED] drm_test_check_plane_state ============
[19:22:51] =========== drm_test_check_invalid_plane_state  ============
[19:22:51] [PASSED] positioning_invalid
[19:22:51] [PASSED] upscaling_invalid
[19:22:51] [PASSED] downscaling_invalid
[19:22:51] ======= [PASSED] drm_test_check_invalid_plane_state ========
[19:22:51] ================ [PASSED] drm_plane_helper =================
[19:22:51] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[19:22:51] ====== drm_test_connector_helper_tv_get_modes_check  =======
[19:22:51] [PASSED] None
[19:22:51] [PASSED] PAL
[19:22:51] [PASSED] NTSC
[19:22:51] [PASSED] Both, NTSC Default
[19:22:51] [PASSED] Both, PAL Default
[19:22:51] [PASSED] Both, NTSC Default, with PAL on command-line
[19:22:51] [PASSED] Both, PAL Default, with NTSC on command-line
[19:22:51] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[19:22:51] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[19:22:51] ================== drm_rect (9 subtests) ===================
[19:22:51] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[19:22:51] [PASSED] drm_test_rect_clip_scaled_not_clipped
[19:22:51] [PASSED] drm_test_rect_clip_scaled_clipped
[19:22:51] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[19:22:51] ================= drm_test_rect_intersect  =================
[19:22:51] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[19:22:51] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[19:22:51] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[19:22:51] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[19:22:51] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[19:22:51] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[19:22:51] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[19:22:51] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[19:22:51] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[19:22:51] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[19:22:51] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[19:22:51] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[19:22:51] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[19:22:51] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[19:22:51] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[19:22:51] ============= [PASSED] drm_test_rect_intersect =============
[19:22:51] ================ drm_test_rect_calc_hscale  ================
[19:22:51] [PASSED] normal use
[19:22:51] [PASSED] out of max range
[19:22:51] [PASSED] out of min range
[19:22:51] [PASSED] zero dst
[19:22:51] [PASSED] negative src
[19:22:51] [PASSED] negative dst
[19:22:51] ============ [PASSED] drm_test_rect_calc_hscale ============
[19:22:51] ================ drm_test_rect_calc_vscale  ================
[19:22:51] [PASSED] normal use
[19:22:51] [PASSED] out of max range
[19:22:51] [PASSED] out of min range
[19:22:51] [PASSED] zero dst
[19:22:51] [PASSED] negative src
[19:22:51] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[19:22:51] ============ [PASSED] drm_test_rect_calc_vscale ============
[19:22:51] ================== drm_test_rect_rotate  ===================
[19:22:51] [PASSED] reflect-x
[19:22:51] [PASSED] reflect-y
[19:22:51] [PASSED] rotate-0
[19:22:51] [PASSED] rotate-90
[19:22:51] [PASSED] rotate-180
[19:22:51] [PASSED] rotate-270
[19:22:51] ============== [PASSED] drm_test_rect_rotate ===============
[19:22:51] ================ drm_test_rect_rotate_inv  =================
[19:22:51] [PASSED] reflect-x
[19:22:51] [PASSED] reflect-y
[19:22:51] [PASSED] rotate-0
[19:22:51] [PASSED] rotate-90
[19:22:51] [PASSED] rotate-180
[19:22:51] [PASSED] rotate-270
[19:22:51] ============ [PASSED] drm_test_rect_rotate_inv =============
[19:22:51] ==================== [PASSED] drm_rect =====================
[19:22:51] ============================================================
[19:22:51] Testing complete. Ran 616 tests: passed: 616
[19:22:52] Elapsed time: 23.792s total, 1.702s configuring, 21.921s building, 0.139s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[19:22:52] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[19:22:53] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[19:23:01] Starting KUnit Kernel (1/1)...
[19:23:01] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[19:23:01] ================= ttm_device (5 subtests) ==================
[19:23:01] [PASSED] ttm_device_init_basic
[19:23:01] [PASSED] ttm_device_init_multiple
[19:23:01] [PASSED] ttm_device_fini_basic
[19:23:01] [PASSED] ttm_device_init_no_vma_man
[19:23:01] ================== ttm_device_init_pools  ==================
[19:23:01] [PASSED] No DMA allocations, no DMA32 required
[19:23:01] [PASSED] DMA allocations, DMA32 required
[19:23:01] [PASSED] No DMA allocations, DMA32 required
[19:23:01] [PASSED] DMA allocations, no DMA32 required
[19:23:01] ============== [PASSED] ttm_device_init_pools ==============
[19:23:01] =================== [PASSED] ttm_device ====================
[19:23:01] ================== ttm_pool (8 subtests) ===================
[19:23:01] ================== ttm_pool_alloc_basic  ===================
[19:23:01] [PASSED] One page
[19:23:01] [PASSED] More than one page
[19:23:01] [PASSED] Above the allocation limit
[19:23:01] [PASSED] One page, with coherent DMA mappings enabled
[19:23:01] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[19:23:01] ============== [PASSED] ttm_pool_alloc_basic ===============
[19:23:01] ============== ttm_pool_alloc_basic_dma_addr  ==============
[19:23:01] [PASSED] One page
[19:23:01] [PASSED] More than one page
[19:23:01] [PASSED] Above the allocation limit
[19:23:01] [PASSED] One page, with coherent DMA mappings enabled
[19:23:01] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[19:23:01] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[19:23:01] [PASSED] ttm_pool_alloc_order_caching_match
[19:23:01] [PASSED] ttm_pool_alloc_caching_mismatch
[19:23:01] [PASSED] ttm_pool_alloc_order_mismatch
[19:23:01] [PASSED] ttm_pool_free_dma_alloc
[19:23:01] [PASSED] ttm_pool_free_no_dma_alloc
[19:23:01] [PASSED] ttm_pool_fini_basic
[19:23:01] ==================== [PASSED] ttm_pool =====================
[19:23:01] ================ ttm_resource (8 subtests) =================
[19:23:01] ================= ttm_resource_init_basic  =================
[19:23:01] [PASSED] Init resource in TTM_PL_SYSTEM
[19:23:01] [PASSED] Init resource in TTM_PL_VRAM
[19:23:01] [PASSED] Init resource in a private placement
[19:23:01] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[19:23:01] ============= [PASSED] ttm_resource_init_basic =============
[19:23:01] [PASSED] ttm_resource_init_pinned
[19:23:01] [PASSED] ttm_resource_fini_basic
[19:23:01] [PASSED] ttm_resource_manager_init_basic
[19:23:01] [PASSED] ttm_resource_manager_usage_basic
[19:23:01] [PASSED] ttm_resource_manager_set_used_basic
[19:23:01] [PASSED] ttm_sys_man_alloc_basic
[19:23:01] [PASSED] ttm_sys_man_free_basic
[19:23:01] ================== [PASSED] ttm_resource ===================
[19:23:01] =================== ttm_tt (15 subtests) ===================
[19:23:01] ==================== ttm_tt_init_basic  ====================
[19:23:01] [PASSED] Page-aligned size
[19:23:01] [PASSED] Extra pages requested
[19:23:01] ================ [PASSED] ttm_tt_init_basic ================
[19:23:01] [PASSED] ttm_tt_init_misaligned
[19:23:01] [PASSED] ttm_tt_fini_basic
[19:23:01] [PASSED] ttm_tt_fini_sg
[19:23:01] [PASSED] ttm_tt_fini_shmem
[19:23:01] [PASSED] ttm_tt_create_basic
[19:23:01] [PASSED] ttm_tt_create_invalid_bo_type
[19:23:01] [PASSED] ttm_tt_create_ttm_exists
[19:23:01] [PASSED] ttm_tt_create_failed
[19:23:01] [PASSED] ttm_tt_destroy_basic
[19:23:01] [PASSED] ttm_tt_populate_null_ttm
[19:23:01] [PASSED] ttm_tt_populate_populated_ttm
[19:23:01] [PASSED] ttm_tt_unpopulate_basic
[19:23:01] [PASSED] ttm_tt_unpopulate_empty_ttm
[19:23:01] [PASSED] ttm_tt_swapin_basic
[19:23:01] ===================== [PASSED] ttm_tt ======================
[19:23:01] =================== ttm_bo (14 subtests) ===================
[19:23:01] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[19:23:01] [PASSED] Cannot be interrupted and sleeps
[19:23:01] [PASSED] Cannot be interrupted, locks straight away
[19:23:01] [PASSED] Can be interrupted, sleeps
[19:23:01] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[19:23:01] [PASSED] ttm_bo_reserve_locked_no_sleep
[19:23:01] [PASSED] ttm_bo_reserve_no_wait_ticket
[19:23:01] [PASSED] ttm_bo_reserve_double_resv
[19:23:01] [PASSED] ttm_bo_reserve_interrupted
[19:23:01] [PASSED] ttm_bo_reserve_deadlock
[19:23:01] [PASSED] ttm_bo_unreserve_basic
[19:23:01] [PASSED] ttm_bo_unreserve_pinned
[19:23:01] [PASSED] ttm_bo_unreserve_bulk
[19:23:01] [PASSED] ttm_bo_put_basic
[19:23:01] [PASSED] ttm_bo_put_shared_resv
[19:23:01] [PASSED] ttm_bo_pin_basic
[19:23:01] [PASSED] ttm_bo_pin_unpin_resource
[19:23:01] [PASSED] ttm_bo_multiple_pin_one_unpin
[19:23:01] ===================== [PASSED] ttm_bo ======================
[19:23:01] ============== ttm_bo_validate (22 subtests) ===============
[19:23:01] ============== ttm_bo_init_reserved_sys_man  ===============
[19:23:01] [PASSED] Buffer object for userspace
[19:23:01] [PASSED] Kernel buffer object
[19:23:01] [PASSED] Shared buffer object
[19:23:01] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[19:23:01] ============== ttm_bo_init_reserved_mock_man  ==============
[19:23:01] [PASSED] Buffer object for userspace
[19:23:01] [PASSED] Kernel buffer object
[19:23:01] [PASSED] Shared buffer object
[19:23:01] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[19:23:01] [PASSED] ttm_bo_init_reserved_resv
[19:23:01] ================== ttm_bo_validate_basic  ==================
[19:23:01] [PASSED] Buffer object for userspace
[19:23:01] [PASSED] Kernel buffer object
[19:23:01] [PASSED] Shared buffer object
[19:23:01] ============== [PASSED] ttm_bo_validate_basic ==============
[19:23:01] [PASSED] ttm_bo_validate_invalid_placement
[19:23:01] ============= ttm_bo_validate_same_placement  ==============
[19:23:01] [PASSED] System manager
[19:23:01] [PASSED] VRAM manager
[19:23:01] ========= [PASSED] ttm_bo_validate_same_placement ==========
[19:23:01] [PASSED] ttm_bo_validate_failed_alloc
[19:23:01] [PASSED] ttm_bo_validate_pinned
[19:23:01] [PASSED] ttm_bo_validate_busy_placement
[19:23:01] ================ ttm_bo_validate_multihop  =================
[19:23:01] [PASSED] Buffer object for userspace
[19:23:01] [PASSED] Kernel buffer object
[19:23:01] [PASSED] Shared buffer object
[19:23:01] ============ [PASSED] ttm_bo_validate_multihop =============
[19:23:01] ========== ttm_bo_validate_no_placement_signaled  ==========
[19:23:01] [PASSED] Buffer object in system domain, no page vector
[19:23:01] [PASSED] Buffer object in system domain with an existing page vector
[19:23:01] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[19:23:01] ======== ttm_bo_validate_no_placement_not_signaled  ========
[19:23:01] [PASSED] Buffer object for userspace
[19:23:01] [PASSED] Kernel buffer object
[19:23:01] [PASSED] Shared buffer object
[19:23:01] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[19:23:01] [PASSED] ttm_bo_validate_move_fence_signaled
[19:23:01] ========= ttm_bo_validate_move_fence_not_signaled  =========
[19:23:01] [PASSED] Waits for GPU
[19:23:01] [PASSED] Tries to lock straight away
[19:23:02] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[19:23:02] [PASSED] ttm_bo_validate_swapout
[19:23:02] [PASSED] ttm_bo_validate_happy_evict
[19:23:02] [PASSED] ttm_bo_validate_all_pinned_evict
[19:23:02] [PASSED] ttm_bo_validate_allowed_only_evict
[19:23:02] [PASSED] ttm_bo_validate_deleted_evict
[19:23:02] [PASSED] ttm_bo_validate_busy_domain_evict
[19:23:02] [PASSED] ttm_bo_validate_evict_gutting
[19:23:02] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[19:23:02] ================= [PASSED] ttm_bo_validate =================
[19:23:02] ============================================================
[19:23:02] Testing complete. Ran 102 tests: passed: 102
[19:23:02] Elapsed time: 10.111s total, 1.687s configuring, 7.757s building, 0.582s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ CI.checksparse: warning for drm: Create a task info option for wedge events (rev2)
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
                   ` (6 preceding siblings ...)
  2025-06-13 19:23 ` ✓ CI.KUnit: success " Patchwork
@ 2025-06-13 19:37 ` Patchwork
  2025-06-13 20:04 ` ✓ Xe.CI.BAT: success " Patchwork
  2025-06-15 17:29 ` ✓ Xe.CI.Full: " Patchwork
  9 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-06-13 19:37 UTC (permalink / raw)
  To: André Almeida; +Cc: intel-xe

== Series Details ==

Series: drm: Create a task info option for wedge events (rev2)
URL   : https://patchwork.freedesktop.org/series/149332/
State : warning

== 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 4d016d6e602638e0ebc3895331224e057508c07a
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/drm_drv.c:450:6: warning: context imbalance in 'drm_dev_enter' - different lock contexts for basic block
+drivers/gpu/drm/drm_drv.c: note: in included file (through include/linux/notifier.h, arch/x86/include/asm/uprobes.h, include/linux/uprobes.h, include/linux/mm_types.h, include/linux/mmzone.h, include/linux/gfp.h, ...):
+drivers/gpu/drm/drm_plane.c:212:24: warning: Using plain integer as NULL pointer
+drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1995:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2008:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2008:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_panel.c:505:30: warning: symbol 'dummy_panel_funcs' was not declared. Should it be static?
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.c:106:17: warning: cast truncates bits from constant value (e8d4a51000 becomes d4a51000)
+drivers/gpu/drm/i915/gt/intel_reset.c:1572:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/intel_sseu.c:598:17: error: too long token expansion
+drivers/gpu/drm/i915/i915_active.c:1063:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_irq.c:492:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:492:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:500:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:500:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:543:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:543:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:551:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:551:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:600:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:600:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:603:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:603:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:607:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:607:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/intel_uncore.c:1927:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1929:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1995:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1996:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1997:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2017:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2018:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2019:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:145:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1196:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:326:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:326:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:326:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:438:28:    expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:438:28:    got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:438:28: warning: incorrect type in argument 1 (different address spaces)
+./include/linux/srcu.h:400:9: warning: context imbalance in 'drm_dev_exit' - unexpected unlock

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ Xe.CI.BAT: success for drm: Create a task info option for wedge events (rev2)
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
                   ` (7 preceding siblings ...)
  2025-06-13 19:37 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-06-13 20:04 ` Patchwork
  2025-06-15 17:29 ` ✓ Xe.CI.Full: " Patchwork
  9 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-06-13 20:04 UTC (permalink / raw)
  To: André Almeida; +Cc: intel-xe

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

== Series Details ==

Series: drm: Create a task info option for wedge events (rev2)
URL   : https://patchwork.freedesktop.org/series/149332/
State : success

== Summary ==

CI Bug Log - changes from xe-3252-4d016d6e602638e0ebc3895331224e057508c07a_BAT -> xe-pw-149332v2_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (8 -> 8)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * Linux: xe-3252-4d016d6e602638e0ebc3895331224e057508c07a -> xe-pw-149332v2

  IGT_8411: d5b5d2bb4f8795a98ea58376a128b74f654b7ec1 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3252-4d016d6e602638e0ebc3895331224e057508c07a: 4d016d6e602638e0ebc3895331224e057508c07a
  xe-pw-149332v2: 149332v2

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/index.html

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

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

* Re: [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info
  2025-06-13 18:43 ` [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info André Almeida
@ 2025-06-13 21:15   ` Alex Deucher
  2025-06-16  7:10   ` Christian König
  1 sibling, 0 replies; 16+ messages in thread
From: Alex Deucher @ 2025-06-13 21:15 UTC (permalink / raw)
  To: André Almeida
  Cc: Alex Deucher, Christian König, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas, dri-devel, linux-kernel, kernel-dev, amd-gfx,
	intel-xe, intel-gfx

On Fri, Jun 13, 2025 at 2:44 PM André Almeida <andrealmeid@igalia.com> wrote:
>
> To notify userspace about which task (if any) made the device get in a
> wedge state, make use of drm_wedge_task_info parameter, filling it with
> the task PID and name.
>
> Signed-off-by: André Almeida <andrealmeid@igalia.com>

If you want the guilty state to be reliably correct for GC, you'll
need this patch:
https://lists.freedesktop.org/archives/amd-gfx/2025-June/125715.html
GC is pipelined, so the hardware will start working on subsequent jobs
before prior submissions are complete.  This can lead to subsequent
jobs causing a hang which gets attributed to a prior job.  With that
patch in place, the driver will force a fence wait between jobs from
different contexts to ensure they are serialized.

Alex

> ---
> v7:
>  - Remove struct cast, now we can use `info = &ti->task`
>  - Fix struct lifetime, move amdgpu_vm_put_task_info() after
>    drm_dev_wedged_event() call
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 17 +++++++++++++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_job.c    |  8 ++++++--
>  2 files changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 8a0f36f33f13..67cff53678e1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -6363,8 +6363,21 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
>
>         atomic_set(&adev->reset_domain->reset_res, r);
>
> -       if (!r)
> -               drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
> +       if (!r) {
> +               struct drm_wedge_task_info *info = NULL;
> +               struct amdgpu_task_info *ti = NULL;
> +
> +               if (job) {
> +                       ti = amdgpu_vm_get_task_info_pasid(adev, job->pasid);
> +                       if (ti)
> +                               info = &ti->task;
> +               }
> +
> +               drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, info);
> +
> +               if (ti)
> +                       amdgpu_vm_put_task_info(ti);
> +       }
>
>         return r;
>  }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> index 0c1381b527fe..f061f691f556 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> @@ -89,6 +89,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
>  {
>         struct amdgpu_ring *ring = to_amdgpu_ring(s_job->sched);
>         struct amdgpu_job *job = to_amdgpu_job(s_job);
> +       struct drm_wedge_task_info *info = NULL;
>         struct amdgpu_task_info *ti;
>         struct amdgpu_device *adev = ring->adev;
>         int idx;
> @@ -125,7 +126,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
>         ti = amdgpu_vm_get_task_info_pasid(ring->adev, job->pasid);
>         if (ti) {
>                 amdgpu_vm_print_task_info(adev, ti);
> -               amdgpu_vm_put_task_info(ti);
> +               info = &ti->task;
>         }
>
>         /* attempt a per ring reset */
> @@ -164,13 +165,16 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
>                         if (amdgpu_ring_sched_ready(ring))
>                                 drm_sched_start(&ring->sched, 0);
>                         dev_err(adev->dev, "Ring %s reset succeeded\n", ring->sched.name);
> -                       drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
> +                       drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, info);
>                         goto exit;
>                 }
>                 dev_err(adev->dev, "Ring %s reset failure\n", ring->sched.name);
>         }
>         dma_fence_set_error(&s_job->s_fence->finished, -ETIME);
>
> +       if (ti)
> +               amdgpu_vm_put_task_info(ti);
> +
>         if (amdgpu_device_should_recover_gpu(ring->adev)) {
>                 struct amdgpu_reset_context reset_context;
>                 memset(&reset_context, 0, sizeof(reset_context));
> --
> 2.49.0
>

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

* Re: [PATCH v7 2/5] drm: Create a task info option for wedge events
  2025-06-13 18:43 ` [PATCH v7 2/5] drm: Create a task info option for wedge events André Almeida
@ 2025-06-15 11:01   ` Raag Jadav
  0 siblings, 0 replies; 16+ messages in thread
From: Raag Jadav @ 2025-06-15 11:01 UTC (permalink / raw)
  To: André Almeida
  Cc: Alex Deucher, Christian König, siqueira, airlied, simona,
	rodrigo.vivi, jani.nikula, Xaver Hugl, Krzysztof Karas, dri-devel,
	linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx

On Fri, Jun 13, 2025 at 03:43:45PM -0300, André Almeida wrote:
> When a device get wedged, it might be caused by a guilty application.
> For userspace, knowing which task was involved can be useful for some
> situations, like for implementing a policy, logs or for giving a chance
> for the compositor to let the user know what task was involved in the
> problem.  This is an optional argument, when the task info is not
> available, the PID and TASK string won't appear in the event string.
> 
> Sometimes just the PID isn't enough giving that the task might be already
> dead by the time userspace will try to check what was this PID's name,
> so to make the life easier also notify what's the task's name in the user
> event.
> 
> Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com> (for i915 and xe)
> Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
> Reviewed-by: Raag Jadav <raag.jadav@intel.com>

Although I'm okay with this version, a few aesthetic nits below.

> Signed-off-by: André Almeida <andrealmeid@igalia.com>

...

> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 56dd61f8e05a..eba99a081ec1 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -538,10 +538,15 @@ static const char *drm_get_wedge_recovery(unsigned int opt)
>  	}
>  }
>  
> +#define WEDGE_STR_LEN 32
> +#define PID_STR_LEN 15
> +#define COMM_STR_LEN (TASK_COMM_LEN + 5)

Align the values using tabs for readability, and since you're using
TASK_COMM_LEN here please include sched.h instead of relying on
intermediate header which may not guarantee it for other archs and
randconfigs.

> +
>  /**
>   * drm_dev_wedged_event - generate a device wedged uevent
>   * @dev: DRM device
>   * @method: method(s) to be used for recovery
> + * @info: optional information about the guilty task
>   *
>   * This generates a device wedged uevent for the DRM device specified by @dev.
>   * Recovery @method\(s) of choice will be sent in the uevent environment as
> @@ -554,13 +559,13 @@ static const char *drm_get_wedge_recovery(unsigned int opt)
>   *
>   * Returns: 0 on success, negative error code otherwise.
>   */
> -int drm_dev_wedged_event(struct drm_device *dev, unsigned long method)
> +int drm_dev_wedged_event(struct drm_device *dev, unsigned long method,
> +			 struct drm_wedge_task_info *info)
>  {
>  	const char *recovery = NULL;
>  	unsigned int len, opt;
> -	/* Event string length up to 28+ characters with available methods */
> -	char event_string[32];
> -	char *envp[] = { event_string, NULL };
> +	char event_string[WEDGE_STR_LEN], pid_string[PID_STR_LEN], comm_string[COMM_STR_LEN];
> +	char *envp[] = { event_string, NULL, NULL, NULL };

Let's make this reverse xmas order and be consistent with other helpers
in this file.

>  	len = scnprintf(event_string, sizeof(event_string), "%s", "WEDGED=");
>  
> @@ -582,6 +587,13 @@ int drm_dev_wedged_event(struct drm_device *dev, unsigned long method)
>  	drm_info(dev, "device wedged, %s\n", method == DRM_WEDGE_RECOVERY_NONE ?
>  		 "but recovered through reset" : "needs recovery");
>  
> +	if (info && (info->comm[0] != '\0') && (info->pid >= 0)) {
> +		snprintf(pid_string, sizeof(pid_string), "PID=%u", info->pid);
> +		snprintf(comm_string, sizeof(comm_string), "TASK=%s", info->comm);
> +		envp[1] = pid_string;
> +		envp[2] = comm_string;
> +	}
> +
>  	return kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE, envp);
>  }
>  EXPORT_SYMBOL(drm_dev_wedged_event);

...

> diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
> index e2f894f1b90a..729e1c6da138 100644
> --- a/include/drm/drm_device.h
> +++ b/include/drm/drm_device.h
> @@ -30,6 +30,14 @@ struct pci_controller;
>  #define DRM_WEDGE_RECOVERY_REBIND	BIT(1)	/* unbind + bind driver */
>  #define DRM_WEDGE_RECOVERY_BUS_RESET	BIT(2)	/* unbind + reset bus device + bind */
>  
> +/**
> + * struct drm_wedge_task_info - information about the guilty task of a wedge dev
> + */
> +struct drm_wedge_task_info {
> +	pid_t pid;
> +	char comm[TASK_COMM_LEN];

Ditto for sched.h.

Raag

> +};
> +
>  /**
>   * enum switch_power_state - power state of drm device
>   */
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 63b51942d606..3f76a32d6b84 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -487,7 +487,8 @@ void drm_put_dev(struct drm_device *dev);
>  bool drm_dev_enter(struct drm_device *dev, int *idx);
>  void drm_dev_exit(int idx);
>  void drm_dev_unplug(struct drm_device *dev);
> -int drm_dev_wedged_event(struct drm_device *dev, unsigned long method);
> +int drm_dev_wedged_event(struct drm_device *dev, unsigned long method,
> +			 struct drm_wedge_task_info *info);
>  
>  /**
>   * drm_dev_is_unplugged - is a DRM device unplugged
> -- 
> 2.49.0
> 

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

* ✓ Xe.CI.Full: success for drm: Create a task info option for wedge events (rev2)
  2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
                   ` (8 preceding siblings ...)
  2025-06-13 20:04 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-06-15 17:29 ` Patchwork
  9 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-06-15 17:29 UTC (permalink / raw)
  To: André Almeida; +Cc: intel-xe

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

== Series Details ==

Series: drm: Create a task info option for wedge events (rev2)
URL   : https://patchwork.freedesktop.org/series/149332/
State : success

== Summary ==

CI Bug Log - changes from xe-3252-4d016d6e602638e0ebc3895331224e057508c07a_FULL -> xe-pw-149332v2_FULL
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

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

  Here are the changes found in xe-pw-149332v2_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@async-flip-suspend-resume@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][1] ([Intel XE#4427]) +1 other test fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_async_flips@async-flip-suspend-resume@pipe-d-dp-4.html

  * igt@kms_async_flips@test-cursor-atomic:
    - shard-lnl:          NOTRUN -> [SKIP][2] ([Intel XE#664])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_async_flips@test-cursor-atomic.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][3] ([Intel XE#316]) +1 other test skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@linear-32bpp-rotate-270:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#2327]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_big_fb@linear-32bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][5] ([Intel XE#1407])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-0:
    - shard-bmg:          NOTRUN -> [SKIP][6] ([Intel XE#1124]) +3 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#610])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][8] ([Intel XE#1124]) +3 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#2314] / [Intel XE#2894])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][10] ([Intel XE#2191])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p.html

  * igt@kms_bw@linear-tiling-2-displays-1920x1080p:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#367])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][12] ([Intel XE#367])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#2887]) +5 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-b-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][14] ([Intel XE#787]) +41 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-b-dp-4.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc:
    - shard-lnl:          NOTRUN -> [SKIP][15] ([Intel XE#2887])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-ccs@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][16] ([Intel XE#455] / [Intel XE#787]) +1 other test skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_ccs@bad-pixel-format-y-tiled-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2652] / [Intel XE#787]) +3 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-5/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][18] ([Intel XE#787]) +5 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][19] ([Intel XE#2907])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#3432]) +1 other test skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][21] ([Intel XE#455] / [Intel XE#787]) +11 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4:
    - shard-dg2-set2:     [PASS][22] -> [INCOMPLETE][23] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) +1 other test incomplete
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4.html
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
    - shard-dg2-set2:     [PASS][24] -> [INCOMPLETE][25] ([Intel XE#4212])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#2724])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][27] ([Intel XE#4417]) +2 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#2325])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_chamelium_color@ctm-blue-to-red.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][29] ([Intel XE#306])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_chamelium_color@ctm-red-to-blue:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#306])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_chamelium_color@ctm-red-to-blue.html

  * igt@kms_chamelium_edid@dp-edid-resolution-list:
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#373])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_chamelium_edid@dp-edid-resolution-list.html

  * igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#2252]) +4 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode.html

  * igt@kms_chamelium_hpd@vga-hpd:
    - shard-dg2-set2:     NOTRUN -> [SKIP][33] ([Intel XE#373]) +2 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_chamelium_hpd@vga-hpd.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-dg2-set2:     NOTRUN -> [SKIP][34] ([Intel XE#307])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_content_protection@dp-mst-lic-type-0.html
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#2390])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@lic-type-1:
    - shard-lnl:          NOTRUN -> [SKIP][36] ([Intel XE#5176])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_content_protection@lic-type-1.html

  * igt@kms_content_protection@srm@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][37] ([Intel XE#1178])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-5/igt@kms_content_protection@srm@pipe-a-dp-2.html

  * igt@kms_content_protection@uevent:
    - shard-dg2-set2:     NOTRUN -> [FAIL][38] ([Intel XE#1188]) +1 other test fail
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-436/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#2320]) +2 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-lnl:          NOTRUN -> [SKIP][40] ([Intel XE#2321])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-lnl:          NOTRUN -> [SKIP][41] ([Intel XE#1424])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#2321]) +1 other test skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
    - shard-bmg:          [PASS][43] -> [SKIP][44] ([Intel XE#2291]) +4 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-dg2-set2:     NOTRUN -> [SKIP][45] ([Intel XE#323])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#2286])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@torture-move@pipe-d:
    - shard-dg2-set2:     [PASS][47] -> [INCOMPLETE][48] ([Intel XE#3226]) +1 other test incomplete
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-433/igt@kms_cursor_legacy@torture-move@pipe-d.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@kms_cursor_legacy@torture-move@pipe-d.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#4302])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
    - shard-bmg:          NOTRUN -> [SKIP][50] ([Intel XE#4422])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][51] ([Intel XE#4422])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#4156])
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset:
    - shard-bmg:          [PASS][53] -> [SKIP][54] ([Intel XE#2316]) +4 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#2316])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank:
    - shard-lnl:          [PASS][56] -> [FAIL][57] ([Intel XE#886]) +3 other tests fail
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-lnl-1/igt@kms_flip@flip-vs-absolute-wf_vblank.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-8/igt@kms_flip@flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank@a-hdmi-a1:
    - shard-adlp:         [PASS][58] -> [FAIL][59] ([Intel XE#2882]) +1 other test fail
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-3/igt@kms_flip@flip-vs-absolute-wf_vblank@a-hdmi-a1.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-4/igt@kms_flip@flip-vs-absolute-wf_vblank@a-hdmi-a1.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4:
    - shard-dg2-set2:     [PASS][60] -> [FAIL][61] ([Intel XE#301]) +9 other tests fail
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-435/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4.html

  * igt@kms_flip@plain-flip-fb-recreate:
    - shard-bmg:          [PASS][62] -> [FAIL][63] ([Intel XE#2882]) +1 other test fail
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-4/igt@kms_flip@plain-flip-fb-recreate.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_flip@plain-flip-fb-recreate.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
    - shard-adlp:         NOTRUN -> [SKIP][64] ([Intel XE#455]) +3 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][65] ([Intel XE#455]) +9 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][66] ([Intel XE#2293] / [Intel XE#2380]) +2 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#2293]) +2 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][68] ([Intel XE#2311]) +11 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#651]) +2 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#4141]) +5 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][71] ([Intel XE#2312]) +4 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][72] ([Intel XE#651]) +11 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][73] ([Intel XE#656]) +2 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][74] ([Intel XE#2313]) +13 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-slowdraw:
    - shard-dg2-set2:     NOTRUN -> [SKIP][75] ([Intel XE#653]) +10 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_frontbuffer_tracking@psr-slowdraw.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-bmg:          [PASS][76] -> [SKIP][77] ([Intel XE#1503])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_hdr@static-toggle-suspend.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_joiner@basic-force-ultra-joiner:
    - shard-dg2-set2:     NOTRUN -> [SKIP][78] ([Intel XE#2925]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-436/igt@kms_joiner@basic-force-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][79] ([Intel XE#2927])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
    - shard-lnl:          NOTRUN -> [SKIP][80] ([Intel XE#4329])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@kms_plane_multiple@2x-tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][81] ([Intel XE#4596])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-y.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-lnl:          NOTRUN -> [SKIP][82] ([Intel XE#736])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-dg2-set2:     NOTRUN -> [SKIP][83] ([Intel XE#3309])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_pm_dc@dc5-retention-flops.html
    - shard-bmg:          NOTRUN -> [SKIP][84] ([Intel XE#3309])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-lnl:          NOTRUN -> [SKIP][85] ([Intel XE#1439] / [Intel XE#3141])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf:
    - shard-lnl:          NOTRUN -> [SKIP][86] ([Intel XE#2893] / [Intel XE#4608])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][87] ([Intel XE#4608]) +1 other test skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf@pipe-a-edp-1.html

  * igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
    - shard-bmg:          NOTRUN -> [SKIP][88] ([Intel XE#1489]) +3 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area:
    - shard-dg2-set2:     NOTRUN -> [SKIP][89] ([Intel XE#1489]) +1 other test skip
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr@fbc-psr2-cursor-blt:
    - shard-lnl:          NOTRUN -> [SKIP][90] ([Intel XE#1406]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_psr@fbc-psr2-cursor-blt.html

  * igt@kms_psr@fbc-psr2-cursor-blt@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][91] ([Intel XE#4609]) +1 other test skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_psr@fbc-psr2-cursor-blt@edp-1.html

  * igt@kms_psr@fbc-psr2-primary-blt:
    - shard-bmg:          NOTRUN -> [SKIP][92] ([Intel XE#2234] / [Intel XE#2850]) +4 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_psr@fbc-psr2-primary-blt.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-dg2-set2:     NOTRUN -> [SKIP][93] ([Intel XE#2850] / [Intel XE#929]) +4 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-bmg:          NOTRUN -> [SKIP][94] ([Intel XE#2414])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-lnl:          NOTRUN -> [SKIP][95] ([Intel XE#3414] / [Intel XE#3904])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
    - shard-bmg:          NOTRUN -> [SKIP][96] ([Intel XE#3414] / [Intel XE#3904]) +1 other test skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - shard-bmg:          NOTRUN -> [SKIP][97] ([Intel XE#1435])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          NOTRUN -> [SKIP][98] ([Intel XE#2426])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][99] ([Intel XE#1500])
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vrr@flip-basic:
    - shard-bmg:          NOTRUN -> [SKIP][100] ([Intel XE#1499])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@kms_vrr@flip-basic.html

  * igt@xe_eudebug@basic-vm-access-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][101] ([Intel XE#4837])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@xe_eudebug@basic-vm-access-userptr.html

  * igt@xe_eudebug@basic-vm-bind:
    - shard-bmg:          NOTRUN -> [SKIP][102] ([Intel XE#4837]) +4 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@xe_eudebug@basic-vm-bind.html

  * igt@xe_eudebug@basic-vm-bind-extended-discovery:
    - shard-dg2-set2:     NOTRUN -> [SKIP][103] ([Intel XE#4837]) +3 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-436/igt@xe_eudebug@basic-vm-bind-extended-discovery.html

  * igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen:
    - shard-lnl:          NOTRUN -> [SKIP][104] ([Intel XE#688])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][105] ([Intel XE#2322]) +5 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][106] ([Intel XE#1392])
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind.html

  * igt@xe_exec_fault_mode@twice-invalid-fault:
    - shard-dg2-set2:     NOTRUN -> [SKIP][107] ([Intel XE#288]) +10 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-436/igt@xe_exec_fault_mode@twice-invalid-fault.html

  * igt@xe_exec_reset@cm-close-fd:
    - shard-adlp:         [PASS][108] -> [DMESG-WARN][109] ([Intel XE#3868])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_exec_reset@cm-close-fd.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_exec_reset@cm-close-fd.html

  * igt@xe_exec_system_allocator@threads-many-large-mmap-shared-remap-dontunmap-eocheck:
    - shard-dg2-set2:     NOTRUN -> [SKIP][110] ([Intel XE#4915]) +101 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@xe_exec_system_allocator@threads-many-large-mmap-shared-remap-dontunmap-eocheck.html

  * igt@xe_exec_system_allocator@threads-many-stride-mmap-huge:
    - shard-lnl:          NOTRUN -> [SKIP][111] ([Intel XE#4943])
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@xe_exec_system_allocator@threads-many-stride-mmap-huge.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge-nomemset:
    - shard-bmg:          NOTRUN -> [SKIP][112] ([Intel XE#4943]) +11 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset:
    - shard-lnl:          [PASS][113] -> [FAIL][114] ([Intel XE#5018])
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-lnl-6/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset.html

  * igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
    - shard-lnl:          NOTRUN -> [SKIP][115] ([Intel XE#2229])
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html

  * igt@xe_mmap@pci-membarrier-bad-pagesize:
    - shard-lnl:          NOTRUN -> [SKIP][116] ([Intel XE#5100])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-4/igt@xe_mmap@pci-membarrier-bad-pagesize.html

  * igt@xe_oa@whitelisted-registers-userspace-config:
    - shard-dg2-set2:     NOTRUN -> [SKIP][117] ([Intel XE#2541] / [Intel XE#3573]) +1 other test skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@xe_oa@whitelisted-registers-userspace-config.html

  * igt@xe_pm@d3cold-basic-exec:
    - shard-dg2-set2:     NOTRUN -> [SKIP][118] ([Intel XE#2284] / [Intel XE#366])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@xe_pm@d3cold-basic-exec.html

  * igt@xe_pm@s4-mocs:
    - shard-lnl:          [PASS][119] -> [ABORT][120] ([Intel XE#1794])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-lnl-4/igt@xe_pm@s4-mocs.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-2/igt@xe_pm@s4-mocs.html

  * igt@xe_pmu@gt-frequency:
    - shard-adlp:         NOTRUN -> [ABORT][121] ([Intel XE#5214]) +2 other tests abort
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-2/igt@xe_pmu@gt-frequency.html

  * igt@xe_pxp@pxp-termination-key-update-post-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][122] ([Intel XE#4733]) +2 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@xe_pxp@pxp-termination-key-update-post-suspend.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][123] ([Intel XE#4733]) +1 other test skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@xe_pxp@pxp-termination-key-update-post-suspend.html

  * igt@xe_query@multigpu-query-config:
    - shard-bmg:          NOTRUN -> [SKIP][124] ([Intel XE#944])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@xe_query@multigpu-query-config.html

  * igt@xe_sriov_flr@flr-vf1-clear:
    - shard-bmg:          NOTRUN -> [SKIP][125] ([Intel XE#3342]) +1 other test skip
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-3/igt@xe_sriov_flr@flr-vf1-clear.html

  
#### Possible fixes ####

  * igt@kms_addfb_basic@bad-pitch-63:
    - shard-adlp:         [SKIP][126] ([Intel XE#4950]) -> [PASS][127] +18 other tests pass
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_addfb_basic@bad-pitch-63.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_addfb_basic@bad-pitch-63.html

  * igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
    - shard-bmg:          [SKIP][128] ([Intel XE#2314] / [Intel XE#2894]) -> [PASS][129]
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     [INCOMPLETE][130] ([Intel XE#3862]) -> [PASS][131] +1 other test pass
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-464/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-4.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][132] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][133] +1 other test pass
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
    - shard-bmg:          [SKIP][134] ([Intel XE#2291]) -> [PASS][135] +2 other tests pass
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_flip@2x-blocking-wf_vblank:
    - shard-bmg:          [FAIL][136] ([Intel XE#2882]) -> [PASS][137] +1 other test pass
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-3/igt@kms_flip@2x-blocking-wf_vblank.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-7/igt@kms_flip@2x-blocking-wf_vblank.html

  * igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
    - shard-bmg:          [SKIP][138] ([Intel XE#2316]) -> [PASS][139] +3 other tests pass
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-7/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html

  * igt@kms_flip@flip-vs-expired-vblank@c-dp4:
    - shard-dg2-set2:     [FAIL][140] ([Intel XE#301] / [Intel XE#3321]) -> [PASS][141] +1 other test pass
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-464/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-435/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-dg2-set2:     [INCOMPLETE][142] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][143] +1 other test pass
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-436/igt@kms_flip@flip-vs-suspend-interruptible.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_frontbuffer_tracking@fbc-1p-rte:
    - shard-adlp:         [SKIP][144] ([Intel XE#4947]) -> [PASS][145] +2 other tests pass
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_frontbuffer_tracking@fbc-1p-rte.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_frontbuffer_tracking@fbc-1p-rte.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-bmg:          [SKIP][146] ([Intel XE#1435]) -> [PASS][147]
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_setmode@invalid-clone-single-crtc-stealing.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-5/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [FAIL][148] ([Intel XE#4459]) -> [PASS][149] +1 other test pass
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-6/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@kms_vrr@negative-basic:
    - shard-bmg:          [SKIP][150] ([Intel XE#1499]) -> [PASS][151]
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_vrr@negative-basic.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-7/igt@kms_vrr@negative-basic.html

  * {igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute}:
    - shard-bmg:          [ABORT][152] ([Intel XE#3970]) -> [PASS][153] +1 other test pass
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-2/igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute.html

  * igt@xe_exec_system_allocator@threads-many-stride-malloc-bo-unmap-nomemset:
    - shard-bmg:          [FAIL][154] -> [PASS][155]
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@xe_exec_system_allocator@threads-many-stride-malloc-bo-unmap-nomemset.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-7/igt@xe_exec_system_allocator@threads-many-stride-malloc-bo-unmap-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset:
    - shard-lnl:          [FAIL][156] ([Intel XE#5018]) -> [PASS][157]
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-lnl-3/igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-lnl-6/igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset.html

  * igt@xe_exec_threads@threads-mixed-fd-userptr-invalidate:
    - shard-dg2-set2:     [INCOMPLETE][158] -> [PASS][159]
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-435/igt@xe_exec_threads@threads-mixed-fd-userptr-invalidate.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-433/igt@xe_exec_threads@threads-mixed-fd-userptr-invalidate.html

  * igt@xe_pm@s2idle-basic:
    - shard-adlp:         [DMESG-WARN][160] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][161]
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-3/igt@xe_pm@s2idle-basic.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-4/igt@xe_pm@s2idle-basic.html

  * igt@xe_pm@s3-vm-bind-userptr:
    - shard-bmg:          [INCOMPLETE][162] ([Intel XE#569]) -> [PASS][163]
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@xe_pm@s3-vm-bind-userptr.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@xe_pm@s3-vm-bind-userptr.html

  * igt@xe_pmu@gt-frequency:
    - shard-dg2-set2:     [FAIL][164] ([Intel XE#4835]) -> [PASS][165] +1 other test pass
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-435/igt@xe_pmu@gt-frequency.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@xe_pmu@gt-frequency.html

  * igt@xe_vm@large-misaligned-binds-2147483648:
    - shard-adlp:         [SKIP][166] ([Intel XE#4945]) -> [PASS][167] +29 other tests pass
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_vm@large-misaligned-binds-2147483648.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_vm@large-misaligned-binds-2147483648.html

  
#### Warnings ####

  * igt@core_hotunplug@hotrebind-lateclose:
    - shard-adlp:         [SKIP][168] ([Intel XE#4963]) -> [DMESG-WARN][169] ([Intel XE#2953] / [Intel XE#4173])
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@core_hotunplug@hotrebind-lateclose.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@core_hotunplug@hotrebind-lateclose.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-180:
    - shard-adlp:         [SKIP][170] ([Intel XE#4947]) -> [SKIP][171] ([Intel XE#1124])
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@linear-32bpp-rotate-90:
    - shard-adlp:         [SKIP][172] ([Intel XE#4947]) -> [SKIP][173] ([Intel XE#316]) +1 other test skip
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_big_fb@linear-32bpp-rotate-90.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_big_fb@linear-32bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-adlp:         [SKIP][174] ([Intel XE#4947]) -> [SKIP][175] ([Intel XE#610])
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_bw@linear-tiling-4-displays-1920x1080p:
    - shard-adlp:         [SKIP][176] ([Intel XE#4950]) -> [SKIP][177] ([Intel XE#367])
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_bw@linear-tiling-4-displays-1920x1080p.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_bw@linear-tiling-4-displays-1920x1080p.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc:
    - shard-adlp:         [SKIP][178] ([Intel XE#4947]) -> [SKIP][179] ([Intel XE#455] / [Intel XE#787]) +1 other test skip
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-adlp:         [SKIP][180] ([Intel XE#4947]) -> [SKIP][181] ([Intel XE#2907]) +1 other test skip
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [INCOMPLETE][182] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124]) -> [INCOMPLETE][183] ([Intel XE#2705] / [Intel XE#4212])
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_cdclk@mode-transition:
    - shard-adlp:         [SKIP][184] ([Intel XE#4947]) -> [SKIP][185] ([Intel XE#4417] / [Intel XE#455])
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_cdclk@mode-transition.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_cdclk@mode-transition.html

  * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe:
    - shard-adlp:         [SKIP][186] ([Intel XE#4950]) -> [SKIP][187] ([Intel XE#373])
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-bmg:          [FAIL][188] ([Intel XE#1178]) -> [SKIP][189] ([Intel XE#2341])
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_content_protection@atomic-dpms.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@srm:
    - shard-bmg:          [SKIP][190] ([Intel XE#2341]) -> [FAIL][191] ([Intel XE#1178])
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_content_protection@srm.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-5/igt@kms_content_protection@srm.html

  * igt@kms_fbcon_fbt@psr:
    - shard-adlp:         [SKIP][192] ([Intel XE#4947]) -> [SKIP][193] ([Intel XE#776])
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_fbcon_fbt@psr.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_fbcon_fbt@psr.html

  * igt@kms_flip@2x-plain-flip-interruptible:
    - shard-adlp:         [SKIP][194] ([Intel XE#4950]) -> [SKIP][195] ([Intel XE#310]) +1 other test skip
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_flip@2x-plain-flip-interruptible.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_flip@2x-plain-flip-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-adlp:         [SKIP][196] ([Intel XE#2351] / [Intel XE#4947]) -> [SKIP][197] ([Intel XE#455])
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
    - shard-adlp:         [SKIP][198] ([Intel XE#4947]) -> [SKIP][199] ([Intel XE#455]) +2 other tests skip
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-adlp:         [SKIP][200] ([Intel XE#4947]) -> [SKIP][201] ([Intel XE#651]) +1 other test skip
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-wc.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt:
    - shard-bmg:          [SKIP][202] ([Intel XE#2311]) -> [SKIP][203] ([Intel XE#2312]) +10 other tests skip
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render:
    - shard-adlp:         [SKIP][204] ([Intel XE#4947]) -> [SKIP][205] ([Intel XE#656]) +6 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt:
    - shard-bmg:          [SKIP][206] ([Intel XE#4141]) -> [SKIP][207] ([Intel XE#2312]) +3 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt.html
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move:
    - shard-bmg:          [SKIP][208] ([Intel XE#2312]) -> [SKIP][209] ([Intel XE#4141]) +5 other tests skip
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt:
    - shard-adlp:         [SKIP][210] ([Intel XE#2351] / [Intel XE#4947]) -> [SKIP][211] ([Intel XE#651])
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt.html
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt:
    - shard-bmg:          [SKIP][212] ([Intel XE#2312]) -> [SKIP][213] ([Intel XE#2311]) +8 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt.html
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-onoff:
    - shard-adlp:         [SKIP][214] ([Intel XE#2351] / [Intel XE#4947]) -> [SKIP][215] ([Intel XE#656]) +1 other test skip
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-onoff.html
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
    - shard-bmg:          [SKIP][216] ([Intel XE#2313]) -> [SKIP][217] ([Intel XE#2312]) +11 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt:
    - shard-adlp:         [SKIP][218] ([Intel XE#4947]) -> [SKIP][219] ([Intel XE#653]) +2 other tests skip
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render:
    - shard-bmg:          [SKIP][220] ([Intel XE#2312]) -> [SKIP][221] ([Intel XE#2313]) +7 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render.html
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render.html

  * igt@kms_plane_multiple@2x-tiling-yf:
    - shard-bmg:          [SKIP][222] ([Intel XE#5021]) -> [SKIP][223] ([Intel XE#4596])
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-bmg-7/igt@kms_plane_multiple@2x-tiling-yf.html
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-yf.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-adlp:         [SKIP][224] ([Intel XE#4950]) -> [SKIP][225] ([Intel XE#455]) +1 other test skip
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_plane_scaling@intel-max-src-size.html
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area:
    - shard-adlp:         [SKIP][226] ([Intel XE#4947]) -> [SKIP][227] ([Intel XE#1489])
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr@fbc-pr-primary-page-flip:
    - shard-adlp:         [SKIP][228] ([Intel XE#4947]) -> [SKIP][229] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_psr@fbc-pr-primary-page-flip.html
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_psr@fbc-pr-primary-page-flip.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
    - shard-adlp:         [SKIP][230] ([Intel XE#4950]) -> [SKIP][231] ([Intel XE#1127])
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html

  * igt@xe_ccs@suspend-resume:
    - shard-adlp:         [SKIP][232] ([Intel XE#4945]) -> [SKIP][233] ([Intel XE#455] / [Intel XE#488])
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_ccs@suspend-resume.html
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_ccs@suspend-resume.html

  * igt@xe_eudebug@read-metadata:
    - shard-adlp:         [SKIP][234] ([Intel XE#4945]) -> [SKIP][235] ([Intel XE#4837]) +1 other test skip
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_eudebug@read-metadata.html
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_eudebug@read-metadata.html

  * igt@xe_evict@evict-large-cm:
    - shard-adlp:         [SKIP][236] ([Intel XE#4945]) -> [SKIP][237] ([Intel XE#261] / [Intel XE#688])
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_evict@evict-large-cm.html
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_evict@evict-large-cm.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-rebind:
    - shard-adlp:         [SKIP][238] ([Intel XE#4945]) -> [SKIP][239] ([Intel XE#288]) +3 other tests skip
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_exec_fault_mode@many-bindexecqueue-rebind.html
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_exec_fault_mode@many-bindexecqueue-rebind.html

  * igt@xe_exec_system_allocator@processes-evict-malloc:
    - shard-adlp:         [SKIP][240] ([Intel XE#4945]) -> [SKIP][241] ([Intel XE#4915]) +60 other tests skip
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_exec_system_allocator@processes-evict-malloc.html
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_exec_system_allocator@processes-evict-malloc.html

  * igt@xe_oa@non-privileged-map-oa-buffer:
    - shard-adlp:         [SKIP][242] ([Intel XE#4945]) -> [SKIP][243] ([Intel XE#2541] / [Intel XE#3573])
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_oa@non-privileged-map-oa-buffer.html
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_oa@non-privileged-map-oa-buffer.html

  * igt@xe_oa@syncs-ufence-wait-cfg:
    - shard-adlp:         [SKIP][244] ([Intel XE#4945]) -> [SKIP][245] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501])
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_oa@syncs-ufence-wait-cfg.html
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_oa@syncs-ufence-wait-cfg.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-adlp:         [SKIP][246] ([Intel XE#4945]) -> [SKIP][247] ([Intel XE#2284] / [Intel XE#366])
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_pm@d3cold-mmap-vram.html
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pmu@engine-activity-all-load-idle:
    - shard-adlp:         [DMESG-WARN][248] ([Intel XE#5214]) -> [ABORT][249] ([Intel XE#5214]) +4 other tests abort
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-9/igt@xe_pmu@engine-activity-all-load-idle.html
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-8/igt@xe_pmu@engine-activity-all-load-idle.html

  * igt@xe_pmu@gt-c6-idle:
    - shard-adlp:         [ABORT][250] ([Intel XE#5214]) -> [DMESG-WARN][251] ([Intel XE#5214]) +2 other tests dmesg-warn
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-8/igt@xe_pmu@gt-c6-idle.html
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-9/igt@xe_pmu@gt-c6-idle.html

  * igt@xe_pxp@display-pxp-fb:
    - shard-adlp:         [SKIP][252] ([Intel XE#4945]) -> [SKIP][253] ([Intel XE#4733])
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_pxp@display-pxp-fb.html
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_pxp@display-pxp-fb.html

  * igt@xe_query@multigpu-query-gt-list:
    - shard-adlp:         [SKIP][254] ([Intel XE#4945]) -> [SKIP][255] ([Intel XE#944])
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_query@multigpu-query-gt-list.html
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_query@multigpu-query-gt-list.html

  * igt@xe_spin_batch@spin-mem-copy:
    - shard-adlp:         [SKIP][256] ([Intel XE#4945]) -> [SKIP][257] ([Intel XE#4821])
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_spin_batch@spin-mem-copy.html
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-3/igt@xe_spin_batch@spin-mem-copy.html

  * igt@xe_sriov_scheduling@equal-throughput:
    - shard-adlp:         [ABORT][258] ([Intel XE#5214]) -> [INCOMPLETE][259] ([Intel XE#5214]) +1 other test incomplete
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3252-4d016d6e602638e0ebc3895331224e057508c07a/shard-adlp-4/igt@xe_sriov_scheduling@equal-throughput.html
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/shard-adlp-4/igt@xe_sriov_scheduling@equal-throughput.html

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

  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [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#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
  [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#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
  [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
  [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#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [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#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [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#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
  [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#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
  [Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
  [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#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#3124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3124
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#3226]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3226
  [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#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
  [Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [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#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
  [Intel XE#3868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3868
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
  [Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4302]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4302
  [Intel XE#4329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4329
  [Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
  [Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4427
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4501
  [Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4821
  [Intel XE#4835]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4835
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/488
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#4945]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4945
  [Intel XE#4947]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4947
  [Intel XE#4950]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4950
  [Intel XE#4963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4963
  [Intel XE#5018]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5018
  [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
  [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
  [Intel XE#5172]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5172
  [Intel XE#5176]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5176
  [Intel XE#5214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5214
  [Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [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#664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/664
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#736]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/736
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-3252-4d016d6e602638e0ebc3895331224e057508c07a -> xe-pw-149332v2

  IGT_8411: d5b5d2bb4f8795a98ea58376a128b74f654b7ec1 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3252-4d016d6e602638e0ebc3895331224e057508c07a: 4d016d6e602638e0ebc3895331224e057508c07a
  xe-pw-149332v2: 149332v2

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149332v2/index.html

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

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

* Re: [PATCH v7 1/5] drm: amdgpu: Create amdgpu_vm_print_task_info()
  2025-06-13 18:43 ` [PATCH v7 1/5] drm: amdgpu: Create amdgpu_vm_print_task_info() André Almeida
@ 2025-06-16  7:03   ` Christian König
  0 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2025-06-16  7:03 UTC (permalink / raw)
  To: André Almeida, Alex Deucher, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx

On 6/13/25 20:43, André Almeida wrote:
> To avoid repetitive code in amdgpu, create a function that prints the
> content of struct amdgpu_task_info.
> 
> Signed-off-by: André Almeida <andrealmeid@igalia.com>
> ---
> v7: new patch
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 4 +---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c  | 9 +++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h  | 3 +++
>  drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c  | 5 +----
>  drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c  | 5 +----
>  drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c  | 5 +----
>  drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c   | 4 +---
>  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c   | 5 +----
>  8 files changed, 18 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> index 75262ce8db27..3d887428ca2b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> @@ -124,9 +124,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
>  
>  	ti = amdgpu_vm_get_task_info_pasid(ring->adev, job->pasid);
>  	if (ti) {
> -		dev_err(adev->dev,
> -			"Process information: process %s pid %d thread %s pid %d\n",
> -			ti->process_name, ti->tgid, ti->task_name, ti->pid);
> +		amdgpu_vm_print_task_info(adev, ti);
>  		amdgpu_vm_put_task_info(ti);
>  	}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 3911c78f8282..f2a0132521c2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -3156,3 +3156,12 @@ bool amdgpu_vm_is_bo_always_valid(struct amdgpu_vm *vm, struct amdgpu_bo *bo)
>  {
>  	return bo && bo->tbo.base.resv == vm->root.bo->tbo.base.resv;
>  }
> +
> +inline void amdgpu_vm_print_task_info(struct amdgpu_device *adev,
> +				      struct amdgpu_task_info *task_info)

Please drop the inline, neither performance critical nor really applicable.

Apart from that looks good to me.

Regards,
Christian. 

> +{
> +	dev_err(adev->dev,
> +		" Process %s pid %d thread %s pid %d\n",
> +		task_info->process_name, task_info->tgid,
> +		task_info->task_name, task_info->pid);
> +}
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
> index f3ad687125ad..3862a256b9b8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
> @@ -668,4 +668,7 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev,
>  				 struct amdgpu_vm *vm,
>  				 struct dma_fence **fence);
>  
> +inline void amdgpu_vm_print_task_info(struct amdgpu_device *adev,
> +			       struct amdgpu_task_info *task_info);
> +
>  #endif
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> index a3e2787501f1..7923f491cf73 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> @@ -164,10 +164,7 @@ static int gmc_v10_0_process_interrupt(struct amdgpu_device *adev,
>  		entry->src_id, entry->ring_id, entry->vmid, entry->pasid);
>  	task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
>  	if (task_info) {
> -		dev_err(adev->dev,
> -			" in process %s pid %d thread %s pid %d\n",
> -			task_info->process_name, task_info->tgid,
> -			task_info->task_name, task_info->pid);
> +		amdgpu_vm_print_task_info(adev, task_info);
>  		amdgpu_vm_put_task_info(task_info);
>  	}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> index 72211409227b..f15d691e9a20 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> @@ -134,10 +134,7 @@ static int gmc_v11_0_process_interrupt(struct amdgpu_device *adev,
>  			entry->src_id, entry->ring_id, entry->vmid, entry->pasid);
>  		task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
>  		if (task_info) {
> -			dev_err(adev->dev,
> -				" in process %s pid %d thread %s pid %d)\n",
> -				task_info->process_name, task_info->tgid,
> -				task_info->task_name, task_info->pid);
> +			amdgpu_vm_print_task_info(adev, task_info);
>  			amdgpu_vm_put_task_info(task_info);
>  		}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
> index b645d3e6a6c8..de763105fdfd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
> @@ -127,10 +127,7 @@ static int gmc_v12_0_process_interrupt(struct amdgpu_device *adev,
>  			entry->src_id, entry->ring_id, entry->vmid, entry->pasid);
>  		task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
>  		if (task_info) {
> -			dev_err(adev->dev,
> -				" in process %s pid %d thread %s pid %d)\n",
> -				task_info->process_name, task_info->tgid,
> -				task_info->task_name, task_info->pid);
> +			amdgpu_vm_print_task_info(adev, task_info);
>  			amdgpu_vm_put_task_info(task_info);
>  		}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> index 99ca08e9bdb5..b45fa0cea9d2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> @@ -1458,9 +1458,7 @@ static int gmc_v8_0_process_interrupt(struct amdgpu_device *adev,
>  
>  		task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
>  		if (task_info) {
> -			dev_err(adev->dev, " for process %s pid %d thread %s pid %d\n",
> -				task_info->process_name, task_info->tgid,
> -				task_info->task_name, task_info->pid);
> +			amdgpu_vm_print_task_info(adev, task_info);
>  			amdgpu_vm_put_task_info(task_info);
>  		}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index 282197f4ffb1..78f65aea03f8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -641,10 +641,7 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev,
>  
>  	task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
>  	if (task_info) {
> -		dev_err(adev->dev,
> -			" for process %s pid %d thread %s pid %d)\n",
> -			task_info->process_name, task_info->tgid,
> -			task_info->task_name, task_info->pid);
> +		amdgpu_vm_print_task_info(adev, task_info);
>  		amdgpu_vm_put_task_info(task_info);
>  	}
>  


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

* Re: [PATCH v7 4/5] drm: amdgpu: Use struct drm_wedge_task_info inside of struct amdgpu_task_info
  2025-06-13 18:43 ` [PATCH v7 4/5] drm: amdgpu: Use struct drm_wedge_task_info inside of struct amdgpu_task_info André Almeida
@ 2025-06-16  7:05   ` Christian König
  0 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2025-06-16  7:05 UTC (permalink / raw)
  To: André Almeida, Alex Deucher, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx

On 6/13/25 20:43, André Almeida wrote:
> To avoid a cast when calling drm_dev_wedged_event(), replace pid and
> task name inside of struct amdgpu_task_info with struct
> drm_wedge_task_info.
> 
> Signed-off-by: André Almeida <andrealmeid@igalia.com>

Reviewed-by: Christian König <christian.koenig@amd.com>

> ---
> v7: New patch
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c      |  2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c |  4 ++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c          |  2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c           | 12 ++++++------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h           |  3 +--
>  drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c           |  2 +-
>  drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c         |  2 +-
>  drivers/gpu/drm/amd/amdkfd/kfd_events.c          |  2 +-
>  drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c      |  8 ++++----
>  9 files changed, 18 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> index 8e626f50b362..dac4b926e7be 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> @@ -1786,7 +1786,7 @@ static int amdgpu_debugfs_vm_info_show(struct seq_file *m, void *unused)
>  
>  		ti = amdgpu_vm_get_task_info_vm(vm);
>  		if (ti) {
> -			seq_printf(m, "pid:%d\tProcess:%s ----------\n", ti->pid, ti->process_name);
> +			seq_printf(m, "pid:%d\tProcess:%s ----------\n", ti->task.pid, ti->process_name);
>  			amdgpu_vm_put_task_info(ti);
>  		}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
> index 7b50741dc097..8a026bc9ea44 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
> @@ -220,10 +220,10 @@ amdgpu_devcoredump_read(char *buffer, loff_t offset, size_t count,
>  	drm_printf(&p, "time: %lld.%09ld\n", coredump->reset_time.tv_sec,
>  		   coredump->reset_time.tv_nsec);
>  
> -	if (coredump->reset_task_info.pid)
> +	if (coredump->reset_task_info.task.pid)
>  		drm_printf(&p, "process_name: %s PID: %d\n",
>  			   coredump->reset_task_info.process_name,
> -			   coredump->reset_task_info.pid);
> +			   coredump->reset_task_info.task.pid);
>  
>  	/* SOC Information */
>  	drm_printf(&p, "\nSOC Information\n");
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index 0ecc88df7208..e5e33a68d935 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -329,7 +329,7 @@ static int amdgpu_gem_object_open(struct drm_gem_object *obj,
>  
>  			dev_warn(adev->dev, "validate_and_fence failed: %d\n", r);
>  			if (ti) {
> -				dev_warn(adev->dev, "pid %d\n", ti->pid);
> +				dev_warn(adev->dev, "pid %d\n", ti->task.pid);
>  				amdgpu_vm_put_task_info(ti);
>  			}
>  		}
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index f2a0132521c2..0efd3fc7cf3e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -622,7 +622,7 @@ int amdgpu_vm_validate(struct amdgpu_device *adev, struct amdgpu_vm *vm,
>  
>  			pr_warn_ratelimited("Evicted user BO is not reserved\n");
>  			if (ti) {
> -				pr_warn_ratelimited("pid %d\n", ti->pid);
> +				pr_warn_ratelimited("pid %d\n", ti->task.pid);
>  				amdgpu_vm_put_task_info(ti);
>  			}
>  
> @@ -2507,11 +2507,11 @@ void amdgpu_vm_set_task_info(struct amdgpu_vm *vm)
>  	if (!vm->task_info)
>  		return;
>  
> -	if (vm->task_info->pid == current->pid)
> +	if (vm->task_info->task.pid == current->pid)
>  		return;
>  
> -	vm->task_info->pid = current->pid;
> -	get_task_comm(vm->task_info->task_name, current);
> +	vm->task_info->task.pid = current->pid;
> +	get_task_comm(vm->task_info->task.comm, current);
>  
>  	if (current->group_leader->mm != current->mm)
>  		return;
> @@ -2774,7 +2774,7 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
>  
>  		dev_warn(adev->dev,
>  			 "VM memory stats for proc %s(%d) task %s(%d) is non-zero when fini\n",
> -			 ti->process_name, ti->pid, ti->task_name, ti->tgid);
> +			 ti->process_name, ti->task.pid, ti->task.comm, ti->tgid);
>  	}
>  
>  	amdgpu_vm_put_task_info(vm->task_info);
> @@ -3163,5 +3163,5 @@ inline void amdgpu_vm_print_task_info(struct amdgpu_device *adev,
>  	dev_err(adev->dev,
>  		" Process %s pid %d thread %s pid %d\n",
>  		task_info->process_name, task_info->tgid,
> -		task_info->task_name, task_info->pid);
> +		task_info->task.comm, task_info->task.pid);
>  }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
> index 3862a256b9b8..b5c3af1c5e99 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
> @@ -236,9 +236,8 @@ struct amdgpu_vm_pte_funcs {
>  };
>  
>  struct amdgpu_task_info {
> +	struct drm_wedge_task_info task;
>  	char		process_name[TASK_COMM_LEN];
> -	char		task_name[TASK_COMM_LEN];
> -	pid_t		pid;
>  	pid_t		tgid;
>  	struct kref	refcount;
>  };
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index 33ed2b158fcd..f38004e6064e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -2187,7 +2187,7 @@ static int sdma_v4_0_print_iv_entry(struct amdgpu_device *adev,
>  		dev_dbg_ratelimited(adev->dev,
>  				    " for process %s pid %d thread %s pid %d\n",
>  				    task_info->process_name, task_info->tgid,
> -				    task_info->task_name, task_info->pid);
> +				    task_info->task.comm, task_info->task.pid);
>  		amdgpu_vm_put_task_info(task_info);
>  	}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
> index 9c169112a5e7..bcde34e4e0a1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
> @@ -1884,7 +1884,7 @@ static int sdma_v4_4_2_print_iv_entry(struct amdgpu_device *adev,
>  	if (task_info) {
>  		dev_dbg_ratelimited(adev->dev, " for process %s pid %d thread %s pid %d\n",
>  				    task_info->process_name, task_info->tgid,
> -				    task_info->task_name, task_info->pid);
> +				    task_info->task.comm, task_info->task.pid);
>  		amdgpu_vm_put_task_info(task_info);
>  	}
>  
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
> index 2b294ada3ec0..82905f3e54dd 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
> @@ -1302,7 +1302,7 @@ void kfd_signal_reset_event(struct kfd_node *dev)
>  			if (ti) {
>  				dev_err(dev->adev->dev,
>  					"Queues reset on process %s tid %d thread %s pid %d\n",
> -					ti->process_name, ti->tgid, ti->task_name, ti->pid);
> +					ti->process_name, ti->tgid, ti->task.comm, ti->task.pid);
>  				amdgpu_vm_put_task_info(ti);
>  			}
>  		}
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c
> index 83d9384ac815..a499449fcb06 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c
> @@ -253,9 +253,9 @@ void kfd_smi_event_update_vmfault(struct kfd_node *dev, uint16_t pasid)
>  	task_info = amdgpu_vm_get_task_info_pasid(dev->adev, pasid);
>  	if (task_info) {
>  		/* Report VM faults from user applications, not retry from kernel */
> -		if (task_info->pid)
> +		if (task_info->task.pid)
>  			kfd_smi_event_add(0, dev, KFD_SMI_EVENT_VMFAULT, KFD_EVENT_FMT_VMFAULT(
> -					  task_info->pid, task_info->task_name));
> +					  task_info->task.pid, task_info->task.comm));
>  		amdgpu_vm_put_task_info(task_info);
>  	}
>  }
> @@ -359,8 +359,8 @@ void kfd_smi_event_process(struct kfd_process_device *pdd, bool start)
>  		kfd_smi_event_add(0, pdd->dev,
>  				  start ? KFD_SMI_EVENT_PROCESS_START :
>  				  KFD_SMI_EVENT_PROCESS_END,
> -				  KFD_EVENT_FMT_PROCESS(task_info->pid,
> -				  task_info->task_name));
> +				  KFD_EVENT_FMT_PROCESS(task_info->task.pid,
> +				  task_info->task.comm));
>  		amdgpu_vm_put_task_info(task_info);
>  	}
>  }


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

* Re: [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info
  2025-06-13 18:43 ` [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info André Almeida
  2025-06-13 21:15   ` Alex Deucher
@ 2025-06-16  7:10   ` Christian König
  1 sibling, 0 replies; 16+ messages in thread
From: Christian König @ 2025-06-16  7:10 UTC (permalink / raw)
  To: André Almeida, Alex Deucher, siqueira, airlied, simona,
	Raag Jadav, rodrigo.vivi, jani.nikula, Xaver Hugl,
	Krzysztof Karas
  Cc: dri-devel, linux-kernel, kernel-dev, amd-gfx, intel-xe, intel-gfx

On 6/13/25 20:43, André Almeida wrote:
> To notify userspace about which task (if any) made the device get in a
> wedge state, make use of drm_wedge_task_info parameter, filling it with
> the task PID and name.
> 
> Signed-off-by: André Almeida <andrealmeid@igalia.com>
> ---
> v7:
>  - Remove struct cast, now we can use `info = &ti->task`
>  - Fix struct lifetime, move amdgpu_vm_put_task_info() after
>    drm_dev_wedged_event() call
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 17 +++++++++++++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_job.c    |  8 ++++++--
>  2 files changed, 21 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 8a0f36f33f13..67cff53678e1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -6363,8 +6363,21 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
>  
>  	atomic_set(&adev->reset_domain->reset_res, r);
>  
> -	if (!r)
> -		drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
> +	if (!r) {
> +		struct drm_wedge_task_info *info = NULL;
> +		struct amdgpu_task_info *ti = NULL;
> +
> +		if (job) {
> +			ti = amdgpu_vm_get_task_info_pasid(adev, job->pasid);
> +			if (ti)
> +				info = &ti->task;

Drop the local variable and write that as ti ? &ti->task : NULL

> +		}
> +
> +		drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, info);

here.

> +
> +		if (ti)
> +			amdgpu_vm_put_task_info(ti);

As rule of thumb *put* and *free* functions in the Linux kernel usually accept NULL as parameter.

It would probably be better if we do that for amdgpu_vm_put_task_info() as well and drop the extra check.

Apart from that looks good to me.

Regards,
Christian.

> +	}
>  
>  	return r;
>  }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> index 0c1381b527fe..f061f691f556 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> @@ -89,6 +89,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
>  {
>  	struct amdgpu_ring *ring = to_amdgpu_ring(s_job->sched);
>  	struct amdgpu_job *job = to_amdgpu_job(s_job);
> +	struct drm_wedge_task_info *info = NULL;
>  	struct amdgpu_task_info *ti;
>  	struct amdgpu_device *adev = ring->adev;
>  	int idx;
> @@ -125,7 +126,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
>  	ti = amdgpu_vm_get_task_info_pasid(ring->adev, job->pasid);
>  	if (ti) {
>  		amdgpu_vm_print_task_info(adev, ti);
> -		amdgpu_vm_put_task_info(ti);
> +		info = &ti->task;
>  	}
>  
>  	/* attempt a per ring reset */
> @@ -164,13 +165,16 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
>  			if (amdgpu_ring_sched_ready(ring))
>  				drm_sched_start(&ring->sched, 0);
>  			dev_err(adev->dev, "Ring %s reset succeeded\n", ring->sched.name);
> -			drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, NULL);
> +			drm_dev_wedged_event(adev_to_drm(adev), DRM_WEDGE_RECOVERY_NONE, info);
>  			goto exit;
>  		}
>  		dev_err(adev->dev, "Ring %s reset failure\n", ring->sched.name);
>  	}
>  	dma_fence_set_error(&s_job->s_fence->finished, -ETIME);
>  
> +	if (ti)
> +		amdgpu_vm_put_task_info(ti);
> +
>  	if (amdgpu_device_should_recover_gpu(ring->adev)) {
>  		struct amdgpu_reset_context reset_context;
>  		memset(&reset_context, 0, sizeof(reset_context));


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

end of thread, other threads:[~2025-06-16  7:10 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-13 18:43 [PATCH v7 0/5] drm: Create a task info option for wedge events André Almeida
2025-06-13 18:43 ` [PATCH v7 1/5] drm: amdgpu: Create amdgpu_vm_print_task_info() André Almeida
2025-06-16  7:03   ` Christian König
2025-06-13 18:43 ` [PATCH v7 2/5] drm: Create a task info option for wedge events André Almeida
2025-06-15 11:01   ` Raag Jadav
2025-06-13 18:43 ` [PATCH v7 3/5] drm/doc: Add a section about "Task information" for the wedge API André Almeida
2025-06-13 18:43 ` [PATCH v7 4/5] drm: amdgpu: Use struct drm_wedge_task_info inside of struct amdgpu_task_info André Almeida
2025-06-16  7:05   ` Christian König
2025-06-13 18:43 ` [PATCH v7 5/5] drm/amdgpu: Make use of drm_wedge_task_info André Almeida
2025-06-13 21:15   ` Alex Deucher
2025-06-16  7:10   ` Christian König
2025-06-13 19:21 ` ✗ CI.checkpatch: warning for drm: Create a task info option for wedge events (rev2) Patchwork
2025-06-13 19:23 ` ✓ CI.KUnit: success " Patchwork
2025-06-13 19:37 ` ✗ CI.checksparse: warning " Patchwork
2025-06-13 20:04 ` ✓ Xe.CI.BAT: success " Patchwork
2025-06-15 17:29 ` ✓ Xe.CI.Full: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox