* [PATCH v27 1/4] drm/xe/xe_pagefault: Disallow writes to read-only VMAs
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
@ 2025-12-01 17:44 ` Jonathan Cavitt
2025-12-01 17:44 ` [PATCH v27 2/4] drm/xe/uapi: Define drm_xe_vm_get_property Jonathan Cavitt
` (6 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cavitt @ 2025-12-01 17:44 UTC (permalink / raw)
To: intel-xe
Cc: saurabhg.gupta, alex.zuo, jonathan.cavitt, joonas.lahtinen,
matthew.brost, jianxun.zhang, shuicheng.lin, dri-devel,
Michal.Wajdeczko, michal.mrozek, raag.jadav, john.c.harrison,
ivan.briano, matthew.auld, dafna.hirschfeld
The page fault handler should reject write/atomic access to read only
VMAs. Add code to handle this in xe_pagefault_service after the VMA
lookup.
v2:
- Apply max line length (Matthew)
Fixes: fb544b844508 ("drm/xe: Implement xe_pagefault_queue_work")
Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Cc: Shuicheng Lin <shuicheng.lin@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_pagefault.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
index afb06598b6e1..0b625a52a598 100644
--- a/drivers/gpu/drm/xe/xe_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_pagefault.c
@@ -187,6 +187,12 @@ static int xe_pagefault_service(struct xe_pagefault *pf)
goto unlock_vm;
}
+ if (xe_vma_read_only(vma) &&
+ pf->consumer.access_type != XE_PAGEFAULT_ACCESS_TYPE_READ) {
+ err = -EPERM;
+ goto unlock_vm;
+ }
+
atomic = xe_pagefault_access_is_atomic(pf->consumer.access_type);
if (xe_vma_is_cpu_addr_mirror(vma))
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v27 2/4] drm/xe/uapi: Define drm_xe_vm_get_property
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
2025-12-01 17:44 ` [PATCH v27 1/4] drm/xe/xe_pagefault: Disallow writes to read-only VMAs Jonathan Cavitt
@ 2025-12-01 17:44 ` Jonathan Cavitt
2025-12-01 17:44 ` [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info Jonathan Cavitt
` (5 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cavitt @ 2025-12-01 17:44 UTC (permalink / raw)
To: intel-xe
Cc: saurabhg.gupta, alex.zuo, jonathan.cavitt, joonas.lahtinen,
matthew.brost, jianxun.zhang, shuicheng.lin, dri-devel,
Michal.Wajdeczko, michal.mrozek, raag.jadav, john.c.harrison,
ivan.briano, matthew.auld, dafna.hirschfeld
Add initial declarations for the drm_xe_vm_get_property ioctl.
v2:
- Expand kernel docs for drm_xe_vm_get_property (Jianxun)
v3:
- Remove address type external definitions (Jianxun)
- Add fault type to xe_drm_fault struct (Jianxun)
v4:
- Remove engine class and instance (Ivan)
v5:
- Add declares for fault type, access type, and fault level (Matt Brost,
Ivan)
v6:
- Fix inconsistent use of whitespace in defines
v7:
- Rebase and refactor (jcavitt)
Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Reviewed-by: Shuicheng Lin <shuicheng.lin@intel.com>
Acked-by: Matthew Brost <matthew.brost@intel.com>
Cc: Zhang Jianxun <jianxun.zhang@intel.com>
Cc: Ivan Briano <ivan.briano@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
---
include/uapi/drm/xe_drm.h | 86 +++++++++++++++++++++++++++++++++++++++
1 file changed, 86 insertions(+)
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 47853659a705..ab0fe0010ae6 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -83,6 +83,7 @@ extern "C" {
* - &DRM_IOCTL_XE_OBSERVATION
* - &DRM_IOCTL_XE_MADVISE
* - &DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS
+ * - &DRM_IOCTL_XE_VM_GET_PROPERTY
*/
/*
@@ -106,6 +107,7 @@ extern "C" {
#define DRM_XE_OBSERVATION 0x0b
#define DRM_XE_MADVISE 0x0c
#define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d
+#define DRM_XE_VM_GET_PROPERTY 0x0e
/* Must be kept compact -- no holes */
@@ -123,6 +125,7 @@ extern "C" {
#define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param)
#define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise)
#define DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_QUERY_MEM_RANGE_ATTRS, struct drm_xe_vm_query_mem_range_attr)
+#define DRM_IOCTL_XE_VM_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_GET_PROPERTY, struct drm_xe_vm_get_property)
/**
* DOC: Xe IOCTL Extensions
@@ -1227,6 +1230,89 @@ struct drm_xe_vm_bind {
__u64 reserved[2];
};
+/** struct xe_vm_fault - Describes faults for %DRM_XE_VM_GET_PROPERTY_FAULTS */
+struct xe_vm_fault {
+ /** @address: Address of the fault */
+ __u64 address;
+ /** @address_precision: Precision of faulted address */
+ __u32 address_precision;
+ /** @access_type: Type of address access that resulted in fault */
+#define FAULT_ACCESS_TYPE_READ 0
+#define FAULT_ACCESS_TYPE_WRITE 1
+#define FAULT_ACCESS_TYPE_ATOMIC 2
+ __u8 access_type;
+ /** @fault_type: Type of fault reported */
+#define FAULT_TYPE_NOT_PRESENT 0
+#define FAULT_TYPE_WRITE_ACCESS 1
+#define FAULT_TYPE_ATOMIC_ACCESS 2
+ __u8 fault_type;
+ /** @fault_level: fault level of the fault */
+#define FAULT_LEVEL_PTE 0
+#define FAULT_LEVEL_PDE 1
+#define FAULT_LEVEL_PDP 2
+#define FAULT_LEVEL_PML4 3
+#define FAULT_LEVEL_PML5 4
+ __u8 fault_level;
+ /** @pad: MBZ */
+ __u8 pad;
+ /** @reserved: MBZ */
+ __u64 reserved[4];
+};
+
+/**
+ * struct drm_xe_vm_get_property - Input of &DRM_IOCTL_XE_VM_GET_PROPERTY
+ *
+ * The user provides a VM and a property to query among DRM_XE_VM_GET_PROPERTY_*,
+ * and sets the values in the vm_id and property members, respectively. This
+ * determines both the VM to get the property of, as well as the property to
+ * report.
+ *
+ * If size is set to 0, the driver fills it with the required size for the
+ * requested property. The user is expected here to allocate memory for the
+ * property structure and to provide a pointer to the allocated memory using the
+ * data member. For some properties, this may be zero, in which case, the
+ * value of the property will be saved to the value member and size will remain
+ * zero on return.
+ *
+ * If size is not zero, then the IOCTL will attempt to copy the requested
+ * property into the data member.
+ *
+ * The IOCTL will return -ENOENT if the VM could not be identified from the
+ * provided VM ID, or -EINVAL if the IOCTL fails for any other reason, such as
+ * providing an invalid size for the given property or if the property data
+ * could not be copied to the memory allocated to the data member.
+ *
+ * The property member can be:
+ * - %DRM_XE_VM_GET_PROPERTY_FAULTS
+ */
+struct drm_xe_vm_get_property {
+ /** @extensions: Pointer to the first extension struct, if any */
+ __u64 extensions;
+
+ /** @vm_id: The ID of the VM to query the properties of */
+ __u32 vm_id;
+
+#define DRM_XE_VM_GET_PROPERTY_FAULTS 0
+ /** @property: property to get */
+ __u32 property;
+
+ /** @size: Size to allocate for @data */
+ __u32 size;
+
+ /** @pad: MBZ */
+ __u32 pad;
+
+ union {
+ /** @data: Pointer to user-defined array of flexible size and type */
+ __u64 data;
+ /** @value: Return value for scalar queries */
+ __u64 value;
+ };
+
+ /** @reserved: MBZ */
+ __u64 reserved[3];
+};
+
/**
* struct drm_xe_exec_queue_create - Input of &DRM_IOCTL_XE_EXEC_QUEUE_CREATE
*
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
2025-12-01 17:44 ` [PATCH v27 1/4] drm/xe/xe_pagefault: Disallow writes to read-only VMAs Jonathan Cavitt
2025-12-01 17:44 ` [PATCH v27 2/4] drm/xe/uapi: Define drm_xe_vm_get_property Jonathan Cavitt
@ 2025-12-01 17:44 ` Jonathan Cavitt
2025-12-01 19:18 ` Matthew Brost
2025-12-01 17:44 ` [PATCH v27 4/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
` (4 subsequent siblings)
7 siblings, 1 reply; 14+ messages in thread
From: Jonathan Cavitt @ 2025-12-01 17:44 UTC (permalink / raw)
To: intel-xe
Cc: saurabhg.gupta, alex.zuo, jonathan.cavitt, joonas.lahtinen,
matthew.brost, jianxun.zhang, shuicheng.lin, dri-devel,
Michal.Wajdeczko, michal.mrozek, raag.jadav, john.c.harrison,
ivan.briano, matthew.auld, dafna.hirschfeld
Add additional information to each VM so they can report up to the first
50 seen faults. Only pagefaults are saved this way currently, though in
the future, all faults should be tracked by the VM for future reporting.
Additionally, of the pagefaults reported, only failed pagefaults are
saved this way, as successful pagefaults should recover silently and not
need to be reported to userspace.
v2:
- Free vm after use (Shuicheng)
- Compress pf copy logic (Shuicheng)
- Update fault_unsuccessful before storing (Shuicheng)
- Fix old struct name in comments (Shuicheng)
- Keep first 50 pagefaults instead of last 50 (Jianxun)
v3:
- Avoid unnecessary execution by checking MAX_PFS earlier (jcavitt)
- Fix double-locking error (jcavitt)
- Assert kmemdump is successful (Shuicheng)
v4:
- Rename xe_vm.pfs to xe_vm.faults (jcavitt)
- Store fault data and not pagefault in xe_vm faults list (jcavitt)
- Store address, address type, and address precision per fault (jcavitt)
- Store engine class and instance data per fault (Jianxun)
- Add and fix kernel docs (Michal W)
- Properly handle kzalloc error (Michal W)
- s/MAX_PFS/MAX_FAULTS_SAVED_PER_VM (Michal W)
- Store fault level per fault (Micahl M)
v5:
- Store fault and access type instead of address type (Jianxun)
v6:
- Store pagefaults in non-fault-mode VMs as well (Jianxun)
v7:
- Fix kernel docs and comments (Michal W)
v8:
- Fix double-locking issue (Jianxun)
v9:
- Do not report faults from reserved engines (Jianxun)
v10:
- Remove engine class and instance (Ivan)
v11:
- Perform kzalloc outside of lock (Auld)
v12:
- Fix xe_vm_fault_entry kernel docs (Shuicheng)
v13:
- Rebase and refactor (jcavitt)
v14:
- Correctly ignore fault mode in save_pagefault_to_vm (jcavitt)
Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Cc: Shuicheng Lin <shuicheng.lin@intel.com>
Cc: Jianxun Zhang <jianxun.zhang@intel.com>
Cc: Michal Wajdeczko <Michal.Wajdeczko@intel.com>
Cc: Michal Mzorek <michal.mzorek@intel.com>
Cc: Ivan Briano <ivan.briano@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
---
drivers/gpu/drm/xe/xe_pagefault.c | 26 +++++++++
drivers/gpu/drm/xe/xe_vm.c | 88 +++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vm.h | 9 ++++
drivers/gpu/drm/xe/xe_vm_types.h | 29 ++++++++++
4 files changed, 152 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
index 0b625a52a598..5997023a5889 100644
--- a/drivers/gpu/drm/xe/xe_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_pagefault.c
@@ -247,6 +247,31 @@ static void xe_pagefault_print(struct xe_pagefault *pf)
pf->consumer.engine_instance);
}
+static void save_pagefault_to_vm(struct xe_device *xe, struct xe_pagefault *pf)
+{
+ struct xe_vm *vm;
+
+ /*
+ * Pagefault may be asociated to VM that is not in fault mode.
+ * Perform asid_to_vm behavior, except if VM is not in fault
+ * mode, return VM anyways.
+ */
+ down_read(&xe->usm.lock);
+ vm = xa_load(&xe->usm.asid_to_vm, pf->consumer.asid);
+ if (vm)
+ xe_vm_get(vm);
+ else
+ vm = ERR_PTR(-EINVAL);
+ up_read(&xe->usm.lock);
+
+ if (IS_ERR(vm))
+ return;
+
+ xe_vm_add_fault_entry_pf(vm, pf);
+
+ xe_vm_put(vm);
+}
+
static void xe_pagefault_queue_work(struct work_struct *w)
{
struct xe_pagefault_queue *pf_queue =
@@ -266,6 +291,7 @@ static void xe_pagefault_queue_work(struct work_struct *w)
err = xe_pagefault_service(&pf);
if (err) {
xe_pagefault_print(&pf);
+ save_pagefault_to_vm(gt_to_xe(pf.gt), &pf);
xe_gt_dbg(pf.gt, "Fault response: Unsuccessful %pe\n",
ERR_PTR(err));
}
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 8ab726289583..e69e10233b00 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -27,6 +27,7 @@
#include "xe_device.h"
#include "xe_drm_client.h"
#include "xe_exec_queue.h"
+#include "xe_gt.h"
#include "xe_migrate.h"
#include "xe_pat.h"
#include "xe_pm.h"
@@ -578,6 +579,88 @@ static void preempt_rebind_work_func(struct work_struct *w)
trace_xe_vm_rebind_worker_exit(vm);
}
+static struct xe_hw_engine *
+hw_engine_lookup_class_instance(struct xe_vm *vm,
+ enum xe_engine_class class,
+ u16 instance)
+{
+ struct xe_device *xe = vm->xe;
+ struct xe_hw_engine *hwe;
+ enum xe_hw_engine_id id;
+ struct xe_gt *gt;
+ u8 gt_id;
+
+ for_each_gt(gt, xe, gt_id)
+ for_each_hw_engine(hwe, gt, id)
+ if (hwe->class == class && hwe->instance == instance)
+ return hwe;
+ return NULL;
+}
+
+/**
+ * xe_vm_add_fault_entry_pf() - Add pagefault to vm fault list
+ * @vm: The VM.
+ * @pf: The pagefault.
+ *
+ * This function takes the data from the pagefault @pf and saves it to @vm->faults.list.
+ *
+ * The function exits silently if the list is full, and reports a warning if the pagefault
+ * could not be saved to the list.
+ */
+void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf)
+{
+ struct xe_vm_fault_entry *e = NULL;
+ struct xe_hw_engine *hwe;
+
+ /* Do not report faults on reserved engines */
+ hwe = hw_engine_lookup_class_instance(vm, pf->consumer.engine_class,
+ pf->consumer.engine_instance);
+ if (!hwe || xe_hw_engine_is_reserved(hwe))
+ return;
+
+ e = kzalloc(sizeof(*e), GFP_KERNEL);
+ if (!e) {
+ drm_warn(&vm->xe->drm,
+ "Could not allocate memory for fault!\n");
+ return;
+ }
+
+ spin_lock(&vm->faults.lock);
+
+ /*
+ * Limit the number of faults in the fault list to prevent
+ * memory overuse.
+ */
+ if (vm->faults.len >= MAX_FAULTS_SAVED_PER_VM) {
+ kfree(e);
+ goto out;
+ }
+
+ e->address = pf->consumer.page_addr;
+ e->address_precision = 1;
+ e->access_type = pf->consumer.access_type;
+ e->fault_type = pf->consumer.fault_type;
+ e->fault_level = pf->consumer.fault_level;
+
+ list_add_tail(&e->list, &vm->faults.list);
+ vm->faults.len++;
+out:
+ spin_unlock(&vm->faults.lock);
+}
+
+static void xe_vm_clear_fault_entries(struct xe_vm *vm)
+{
+ struct xe_vm_fault_entry *e, *tmp;
+
+ spin_lock(&vm->faults.lock);
+ list_for_each_entry_safe(e, tmp, &vm->faults.list, list) {
+ list_del(&e->list);
+ kfree(e);
+ }
+ vm->faults.len = 0;
+ spin_unlock(&vm->faults.lock);
+}
+
static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool array_of_binds)
{
int i;
@@ -1503,6 +1586,9 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
INIT_LIST_HEAD(&vm->userptr.invalidated);
spin_lock_init(&vm->userptr.invalidated_lock);
+ INIT_LIST_HEAD(&vm->faults.list);
+ spin_lock_init(&vm->faults.lock);
+
ttm_lru_bulk_move_init(&vm->lru_bulk_move);
INIT_WORK(&vm->destroy_work, vm_destroy_work_func);
@@ -1808,6 +1894,8 @@ void xe_vm_close_and_put(struct xe_vm *vm)
}
up_write(&xe->usm.lock);
+ xe_vm_clear_fault_entries(vm);
+
for_each_tile(tile, xe, id)
xe_range_fence_tree_fini(&vm->rftree[id]);
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 361f10b3c453..e9f2de4189e0 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -12,6 +12,12 @@
#include "xe_map.h"
#include "xe_vm_types.h"
+/**
+ * MAX_FAULTS_SAVED_PER_VM - Maximum number of faults each vm can store before future
+ * faults are discarded to prevent memory overuse
+ */
+#define MAX_FAULTS_SAVED_PER_VM 50
+
struct drm_device;
struct drm_printer;
struct drm_file;
@@ -22,6 +28,7 @@ struct dma_fence;
struct xe_exec_queue;
struct xe_file;
+struct xe_pagefault;
struct xe_sync_entry;
struct xe_svm_range;
struct drm_exec;
@@ -309,6 +316,8 @@ void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap);
void xe_vm_snapshot_print(struct xe_vm_snapshot *snap, struct drm_printer *p);
void xe_vm_snapshot_free(struct xe_vm_snapshot *snap);
+void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf);
+
/**
* xe_vm_set_validating() - Register this task as currently making bos resident
* @allow_res_evict: Allow eviction of buffer objects bound to @vm when
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 3bf912bfbdcc..fff914fb0aa6 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -20,6 +20,7 @@
#include "xe_userptr.h"
struct xe_bo;
+struct xe_pagefault;
struct xe_svm_range;
struct xe_sync_entry;
struct xe_user_fence;
@@ -165,6 +166,24 @@ struct xe_userptr_vma {
struct xe_device;
+/**
+ * struct xe_vm_fault_entry - Elements of vm->faults.list
+ * @list: link into @xe_vm.faults.list
+ * @address: address of the fault
+ * @address_precision: precision of faulted address
+ * @access_type: type of address access that resulted in fault
+ * @fault_type: type of fault reported
+ * @fault_level: fault level of the fault
+ */
+struct xe_vm_fault_entry {
+ struct list_head list;
+ u64 address;
+ u32 address_precision;
+ u8 access_type;
+ u8 fault_type;
+ u8 fault_level;
+};
+
struct xe_vm {
/** @gpuvm: base GPUVM used to track VMAs */
struct drm_gpuvm gpuvm;
@@ -302,6 +321,16 @@ struct xe_vm {
bool capture_once;
} error_capture;
+ /** @faults: List of all faults associated with this VM */
+ struct {
+ /** @faults.lock: lock protecting @faults.list */
+ spinlock_t lock;
+ /** @faults.list: list of xe_vm_fault_entry entries */
+ struct list_head list;
+ /** @faults.len: length of @faults.list */
+ unsigned int len;
+ } faults;
+
/**
* @validation: Validation data only valid with the vm resv held.
* Note: This is really task state of the task holding the vm resv,
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
2025-12-01 17:44 ` [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info Jonathan Cavitt
@ 2025-12-01 19:18 ` Matthew Brost
2025-12-01 20:24 ` Cavitt, Jonathan
0 siblings, 1 reply; 14+ messages in thread
From: Matthew Brost @ 2025-12-01 19:18 UTC (permalink / raw)
To: Jonathan Cavitt
Cc: intel-xe, saurabhg.gupta, alex.zuo, joonas.lahtinen,
jianxun.zhang, shuicheng.lin, dri-devel, Michal.Wajdeczko,
michal.mrozek, raag.jadav, john.c.harrison, ivan.briano,
matthew.auld, dafna.hirschfeld
On Mon, Dec 01, 2025 at 05:44:47PM +0000, Jonathan Cavitt wrote:
> Add additional information to each VM so they can report up to the first
> 50 seen faults. Only pagefaults are saved this way currently, though in
> the future, all faults should be tracked by the VM for future reporting.
>
> Additionally, of the pagefaults reported, only failed pagefaults are
> saved this way, as successful pagefaults should recover silently and not
> need to be reported to userspace.
>
> v2:
> - Free vm after use (Shuicheng)
> - Compress pf copy logic (Shuicheng)
> - Update fault_unsuccessful before storing (Shuicheng)
> - Fix old struct name in comments (Shuicheng)
> - Keep first 50 pagefaults instead of last 50 (Jianxun)
>
> v3:
> - Avoid unnecessary execution by checking MAX_PFS earlier (jcavitt)
> - Fix double-locking error (jcavitt)
> - Assert kmemdump is successful (Shuicheng)
>
> v4:
> - Rename xe_vm.pfs to xe_vm.faults (jcavitt)
> - Store fault data and not pagefault in xe_vm faults list (jcavitt)
> - Store address, address type, and address precision per fault (jcavitt)
> - Store engine class and instance data per fault (Jianxun)
> - Add and fix kernel docs (Michal W)
> - Properly handle kzalloc error (Michal W)
> - s/MAX_PFS/MAX_FAULTS_SAVED_PER_VM (Michal W)
> - Store fault level per fault (Micahl M)
>
> v5:
> - Store fault and access type instead of address type (Jianxun)
>
> v6:
> - Store pagefaults in non-fault-mode VMs as well (Jianxun)
>
> v7:
> - Fix kernel docs and comments (Michal W)
>
> v8:
> - Fix double-locking issue (Jianxun)
>
> v9:
> - Do not report faults from reserved engines (Jianxun)
>
> v10:
> - Remove engine class and instance (Ivan)
>
> v11:
> - Perform kzalloc outside of lock (Auld)
>
> v12:
> - Fix xe_vm_fault_entry kernel docs (Shuicheng)
>
> v13:
> - Rebase and refactor (jcavitt)
>
> v14:
> - Correctly ignore fault mode in save_pagefault_to_vm (jcavitt)
>
> Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
> Suggested-by: Matthew Brost <matthew.brost@intel.com>
> Cc: Shuicheng Lin <shuicheng.lin@intel.com>
> Cc: Jianxun Zhang <jianxun.zhang@intel.com>
> Cc: Michal Wajdeczko <Michal.Wajdeczko@intel.com>
> Cc: Michal Mzorek <michal.mzorek@intel.com>
> Cc: Ivan Briano <ivan.briano@intel.com>
> Cc: Matthew Auld <matthew.auld@intel.com>
> ---
> drivers/gpu/drm/xe/xe_pagefault.c | 26 +++++++++
> drivers/gpu/drm/xe/xe_vm.c | 88 +++++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_vm.h | 9 ++++
> drivers/gpu/drm/xe/xe_vm_types.h | 29 ++++++++++
> 4 files changed, 152 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
> index 0b625a52a598..5997023a5889 100644
> --- a/drivers/gpu/drm/xe/xe_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_pagefault.c
> @@ -247,6 +247,31 @@ static void xe_pagefault_print(struct xe_pagefault *pf)
> pf->consumer.engine_instance);
> }
>
> +static void save_pagefault_to_vm(struct xe_device *xe, struct xe_pagefault *pf)
Every function in xe_pagefault.c starts with 'xe_pagefault_'
So maybe: s/save_pagefault_to_vm/xe_pagefault_save_to_vm
> +{
> + struct xe_vm *vm;
> +
> + /*
> + * Pagefault may be asociated to VM that is not in fault mode.
> + * Perform asid_to_vm behavior, except if VM is not in fault
> + * mode, return VM anyways.
> + */
> + down_read(&xe->usm.lock);
> + vm = xa_load(&xe->usm.asid_to_vm, pf->consumer.asid);
> + if (vm)
> + xe_vm_get(vm);
> + else
> + vm = ERR_PTR(-EINVAL);
> + up_read(&xe->usm.lock);
> +
> + if (IS_ERR(vm))
> + return;
> +
> + xe_vm_add_fault_entry_pf(vm, pf);
> +
> + xe_vm_put(vm);
> +}
> +
> static void xe_pagefault_queue_work(struct work_struct *w)
> {
> struct xe_pagefault_queue *pf_queue =
> @@ -266,6 +291,7 @@ static void xe_pagefault_queue_work(struct work_struct *w)
> err = xe_pagefault_service(&pf);
> if (err) {
> xe_pagefault_print(&pf);
> + save_pagefault_to_vm(gt_to_xe(pf.gt), &pf);
> xe_gt_dbg(pf.gt, "Fault response: Unsuccessful %pe\n",
> ERR_PTR(err));
> }
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 8ab726289583..e69e10233b00 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -27,6 +27,7 @@
> #include "xe_device.h"
> #include "xe_drm_client.h"
> #include "xe_exec_queue.h"
> +#include "xe_gt.h"
> #include "xe_migrate.h"
> #include "xe_pat.h"
> #include "xe_pm.h"
> @@ -578,6 +579,88 @@ static void preempt_rebind_work_func(struct work_struct *w)
> trace_xe_vm_rebind_worker_exit(vm);
> }
>
> +static struct xe_hw_engine *
> +hw_engine_lookup_class_instance(struct xe_vm *vm,
> + enum xe_engine_class class,
> + u16 instance)
Can we use xe_hw_engine_lookup or xe_gt_hw_engine rather than adding a
new helper?
> +{
> + struct xe_device *xe = vm->xe;
> + struct xe_hw_engine *hwe;
> + enum xe_hw_engine_id id;
> + struct xe_gt *gt;
> + u8 gt_id;
> +
> + for_each_gt(gt, xe, gt_id)
> + for_each_hw_engine(hwe, gt, id)
> + if (hwe->class == class && hwe->instance == instance)
> + return hwe;
> + return NULL;
> +}
> +
> +/**
> + * xe_vm_add_fault_entry_pf() - Add pagefault to vm fault list
> + * @vm: The VM.
> + * @pf: The pagefault.
> + *
> + * This function takes the data from the pagefault @pf and saves it to @vm->faults.list.
> + *
> + * The function exits silently if the list is full, and reports a warning if the pagefault
> + * could not be saved to the list.
> + */
> +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf)
> +{
> + struct xe_vm_fault_entry *e = NULL;
> + struct xe_hw_engine *hwe;
> +
> + /* Do not report faults on reserved engines */
> + hwe = hw_engine_lookup_class_instance(vm, pf->consumer.engine_class,
> + pf->consumer.engine_instance);
> + if (!hwe || xe_hw_engine_is_reserved(hwe))
> + return;
> +
> + e = kzalloc(sizeof(*e), GFP_KERNEL);
> + if (!e) {
> + drm_warn(&vm->xe->drm,
> + "Could not allocate memory for fault!\n");
> + return;
> + }
> +
> + spin_lock(&vm->faults.lock);
> +
Michal would say use guard(spinlock)(&vm->faults.lock) here. Probably
a little cleaner as the goto can be avoided.
> + /*
> + * Limit the number of faults in the fault list to prevent
> + * memory overuse.
> + */
> + if (vm->faults.len >= MAX_FAULTS_SAVED_PER_VM) {
> + kfree(e);
> + goto out;
> + }
> +
> + e->address = pf->consumer.page_addr;
> + e->address_precision = 1;
> + e->access_type = pf->consumer.access_type;
> + e->fault_type = pf->consumer.fault_type;
> + e->fault_level = pf->consumer.fault_level;
> +
> + list_add_tail(&e->list, &vm->faults.list);
> + vm->faults.len++;
> +out:
> + spin_unlock(&vm->faults.lock);
> +}
> +
> +static void xe_vm_clear_fault_entries(struct xe_vm *vm)
> +{
> + struct xe_vm_fault_entry *e, *tmp;
> +
> + spin_lock(&vm->faults.lock);
Probably a guard here too.
Nits aside, overall LGTM.
Matt
> + list_for_each_entry_safe(e, tmp, &vm->faults.list, list) {
> + list_del(&e->list);
> + kfree(e);
> + }
> + vm->faults.len = 0;
> + spin_unlock(&vm->faults.lock);
> +}
> +
> static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool array_of_binds)
> {
> int i;
> @@ -1503,6 +1586,9 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
> INIT_LIST_HEAD(&vm->userptr.invalidated);
> spin_lock_init(&vm->userptr.invalidated_lock);
>
> + INIT_LIST_HEAD(&vm->faults.list);
> + spin_lock_init(&vm->faults.lock);
> +
> ttm_lru_bulk_move_init(&vm->lru_bulk_move);
>
> INIT_WORK(&vm->destroy_work, vm_destroy_work_func);
> @@ -1808,6 +1894,8 @@ void xe_vm_close_and_put(struct xe_vm *vm)
> }
> up_write(&xe->usm.lock);
>
> + xe_vm_clear_fault_entries(vm);
> +
> for_each_tile(tile, xe, id)
> xe_range_fence_tree_fini(&vm->rftree[id]);
>
> diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> index 361f10b3c453..e9f2de4189e0 100644
> --- a/drivers/gpu/drm/xe/xe_vm.h
> +++ b/drivers/gpu/drm/xe/xe_vm.h
> @@ -12,6 +12,12 @@
> #include "xe_map.h"
> #include "xe_vm_types.h"
>
> +/**
> + * MAX_FAULTS_SAVED_PER_VM - Maximum number of faults each vm can store before future
> + * faults are discarded to prevent memory overuse
> + */
> +#define MAX_FAULTS_SAVED_PER_VM 50
> +
> struct drm_device;
> struct drm_printer;
> struct drm_file;
> @@ -22,6 +28,7 @@ struct dma_fence;
>
> struct xe_exec_queue;
> struct xe_file;
> +struct xe_pagefault;
> struct xe_sync_entry;
> struct xe_svm_range;
> struct drm_exec;
> @@ -309,6 +316,8 @@ void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap);
> void xe_vm_snapshot_print(struct xe_vm_snapshot *snap, struct drm_printer *p);
> void xe_vm_snapshot_free(struct xe_vm_snapshot *snap);
>
> +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf);
> +
> /**
> * xe_vm_set_validating() - Register this task as currently making bos resident
> * @allow_res_evict: Allow eviction of buffer objects bound to @vm when
> diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
> index 3bf912bfbdcc..fff914fb0aa6 100644
> --- a/drivers/gpu/drm/xe/xe_vm_types.h
> +++ b/drivers/gpu/drm/xe/xe_vm_types.h
> @@ -20,6 +20,7 @@
> #include "xe_userptr.h"
>
> struct xe_bo;
> +struct xe_pagefault;
> struct xe_svm_range;
> struct xe_sync_entry;
> struct xe_user_fence;
> @@ -165,6 +166,24 @@ struct xe_userptr_vma {
>
> struct xe_device;
>
> +/**
> + * struct xe_vm_fault_entry - Elements of vm->faults.list
> + * @list: link into @xe_vm.faults.list
> + * @address: address of the fault
> + * @address_precision: precision of faulted address
> + * @access_type: type of address access that resulted in fault
> + * @fault_type: type of fault reported
> + * @fault_level: fault level of the fault
> + */
> +struct xe_vm_fault_entry {
> + struct list_head list;
> + u64 address;
> + u32 address_precision;
> + u8 access_type;
> + u8 fault_type;
> + u8 fault_level;
> +};
> +
> struct xe_vm {
> /** @gpuvm: base GPUVM used to track VMAs */
> struct drm_gpuvm gpuvm;
> @@ -302,6 +321,16 @@ struct xe_vm {
> bool capture_once;
> } error_capture;
>
> + /** @faults: List of all faults associated with this VM */
> + struct {
> + /** @faults.lock: lock protecting @faults.list */
> + spinlock_t lock;
> + /** @faults.list: list of xe_vm_fault_entry entries */
> + struct list_head list;
> + /** @faults.len: length of @faults.list */
> + unsigned int len;
> + } faults;
> +
> /**
> * @validation: Validation data only valid with the vm resv held.
> * Note: This is really task state of the task holding the vm resv,
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 14+ messages in thread* RE: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
2025-12-01 19:18 ` Matthew Brost
@ 2025-12-01 20:24 ` Cavitt, Jonathan
2025-12-01 20:38 ` Cavitt, Jonathan
2025-12-01 21:18 ` Lin, Shuicheng
0 siblings, 2 replies; 14+ messages in thread
From: Cavitt, Jonathan @ 2025-12-01 20:24 UTC (permalink / raw)
To: Brost, Matthew
Cc: intel-xe@lists.freedesktop.org, Gupta, saurabhg, Zuo, Alex,
joonas.lahtinen@linux.intel.com, Zhang, Jianxun, Lin, Shuicheng,
dri-devel@lists.freedesktop.org, Wajdeczko, Michal,
Mrozek, Michal, Jadav, Raag, john.c.harrison@intel.com,
Briano, Ivan, Auld, Matthew, Hirschfeld, Dafna, Cavitt, Jonathan
-----Original Message-----
From: Brost, Matthew <matthew.brost@intel.com>
Sent: Monday, December 1, 2025 11:18 AM
To: Cavitt, Jonathan <jonathan.cavitt@intel.com>
Cc: intel-xe@lists.freedesktop.org; Gupta, saurabhg <saurabhg.gupta@intel.com>; Zuo, Alex <alex.zuo@intel.com>; joonas.lahtinen@linux.intel.com; Zhang, Jianxun <jianxun.zhang@intel.com>; Lin, Shuicheng <shuicheng.lin@intel.com>; dri-devel@lists.freedesktop.org; Wajdeczko, Michal <Michal.Wajdeczko@intel.com>; Mrozek, Michal <michal.mrozek@intel.com>; Jadav, Raag <raag.jadav@intel.com>; john.c.harrison@intel.com; Briano, Ivan <ivan.briano@intel.com>; Auld, Matthew <matthew.auld@intel.com>; Hirschfeld, Dafna <dafna.hirschfeld@intel.com>
Subject: Re: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
>
> On Mon, Dec 01, 2025 at 05:44:47PM +0000, Jonathan Cavitt wrote:
> > Add additional information to each VM so they can report up to the first
> > 50 seen faults. Only pagefaults are saved this way currently, though in
> > the future, all faults should be tracked by the VM for future reporting.
> >
> > Additionally, of the pagefaults reported, only failed pagefaults are
> > saved this way, as successful pagefaults should recover silently and not
> > need to be reported to userspace.
> >
> > v2:
> > - Free vm after use (Shuicheng)
> > - Compress pf copy logic (Shuicheng)
> > - Update fault_unsuccessful before storing (Shuicheng)
> > - Fix old struct name in comments (Shuicheng)
> > - Keep first 50 pagefaults instead of last 50 (Jianxun)
> >
> > v3:
> > - Avoid unnecessary execution by checking MAX_PFS earlier (jcavitt)
> > - Fix double-locking error (jcavitt)
> > - Assert kmemdump is successful (Shuicheng)
> >
> > v4:
> > - Rename xe_vm.pfs to xe_vm.faults (jcavitt)
> > - Store fault data and not pagefault in xe_vm faults list (jcavitt)
> > - Store address, address type, and address precision per fault (jcavitt)
> > - Store engine class and instance data per fault (Jianxun)
> > - Add and fix kernel docs (Michal W)
> > - Properly handle kzalloc error (Michal W)
> > - s/MAX_PFS/MAX_FAULTS_SAVED_PER_VM (Michal W)
> > - Store fault level per fault (Micahl M)
> >
> > v5:
> > - Store fault and access type instead of address type (Jianxun)
> >
> > v6:
> > - Store pagefaults in non-fault-mode VMs as well (Jianxun)
> >
> > v7:
> > - Fix kernel docs and comments (Michal W)
> >
> > v8:
> > - Fix double-locking issue (Jianxun)
> >
> > v9:
> > - Do not report faults from reserved engines (Jianxun)
> >
> > v10:
> > - Remove engine class and instance (Ivan)
> >
> > v11:
> > - Perform kzalloc outside of lock (Auld)
> >
> > v12:
> > - Fix xe_vm_fault_entry kernel docs (Shuicheng)
> >
> > v13:
> > - Rebase and refactor (jcavitt)
> >
> > v14:
> > - Correctly ignore fault mode in save_pagefault_to_vm (jcavitt)
> >
> > Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
> > Suggested-by: Matthew Brost <matthew.brost@intel.com>
> > Cc: Shuicheng Lin <shuicheng.lin@intel.com>
> > Cc: Jianxun Zhang <jianxun.zhang@intel.com>
> > Cc: Michal Wajdeczko <Michal.Wajdeczko@intel.com>
> > Cc: Michal Mzorek <michal.mzorek@intel.com>
> > Cc: Ivan Briano <ivan.briano@intel.com>
> > Cc: Matthew Auld <matthew.auld@intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_pagefault.c | 26 +++++++++
> > drivers/gpu/drm/xe/xe_vm.c | 88 +++++++++++++++++++++++++++++++
> > drivers/gpu/drm/xe/xe_vm.h | 9 ++++
> > drivers/gpu/drm/xe/xe_vm_types.h | 29 ++++++++++
> > 4 files changed, 152 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
> > index 0b625a52a598..5997023a5889 100644
> > --- a/drivers/gpu/drm/xe/xe_pagefault.c
> > +++ b/drivers/gpu/drm/xe/xe_pagefault.c
> > @@ -247,6 +247,31 @@ static void xe_pagefault_print(struct xe_pagefault *pf)
> > pf->consumer.engine_instance);
> > }
> >
> > +static void save_pagefault_to_vm(struct xe_device *xe, struct xe_pagefault *pf)
>
> Every function in xe_pagefault.c starts with 'xe_pagefault_'
>
> So maybe: s/save_pagefault_to_vm/xe_pagefault_save_to_vm
>
> > +{
> > + struct xe_vm *vm;
> > +
> > + /*
> > + * Pagefault may be asociated to VM that is not in fault mode.
> > + * Perform asid_to_vm behavior, except if VM is not in fault
> > + * mode, return VM anyways.
> > + */
> > + down_read(&xe->usm.lock);
> > + vm = xa_load(&xe->usm.asid_to_vm, pf->consumer.asid);
> > + if (vm)
> > + xe_vm_get(vm);
> > + else
> > + vm = ERR_PTR(-EINVAL);
> > + up_read(&xe->usm.lock);
> > +
> > + if (IS_ERR(vm))
> > + return;
> > +
> > + xe_vm_add_fault_entry_pf(vm, pf);
> > +
> > + xe_vm_put(vm);
> > +}
> > +
> > static void xe_pagefault_queue_work(struct work_struct *w)
> > {
> > struct xe_pagefault_queue *pf_queue =
> > @@ -266,6 +291,7 @@ static void xe_pagefault_queue_work(struct work_struct *w)
> > err = xe_pagefault_service(&pf);
> > if (err) {
> > xe_pagefault_print(&pf);
> > + save_pagefault_to_vm(gt_to_xe(pf.gt), &pf);
> > xe_gt_dbg(pf.gt, "Fault response: Unsuccessful %pe\n",
> > ERR_PTR(err));
> > }
> > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> > index 8ab726289583..e69e10233b00 100644
> > --- a/drivers/gpu/drm/xe/xe_vm.c
> > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > @@ -27,6 +27,7 @@
> > #include "xe_device.h"
> > #include "xe_drm_client.h"
> > #include "xe_exec_queue.h"
> > +#include "xe_gt.h"
> > #include "xe_migrate.h"
> > #include "xe_pat.h"
> > #include "xe_pm.h"
> > @@ -578,6 +579,88 @@ static void preempt_rebind_work_func(struct work_struct *w)
> > trace_xe_vm_rebind_worker_exit(vm);
> > }
> >
> > +static struct xe_hw_engine *
> > +hw_engine_lookup_class_instance(struct xe_vm *vm,
> > + enum xe_engine_class class,
> > + u16 instance)
>
> Can we use xe_hw_engine_lookup or xe_gt_hw_engine rather than adding a
> new helper?
Both of those functions require the GT ID, which is unknown.
>
> > +{
> > + struct xe_device *xe = vm->xe;
> > + struct xe_hw_engine *hwe;
> > + enum xe_hw_engine_id id;
> > + struct xe_gt *gt;
> > + u8 gt_id;
> > +
> > + for_each_gt(gt, xe, gt_id)
> > + for_each_hw_engine(hwe, gt, id)
> > + if (hwe->class == class && hwe->instance == instance)
> > + return hwe;
> > + return NULL;
> > +}
> > +
> > +/**
> > + * xe_vm_add_fault_entry_pf() - Add pagefault to vm fault list
> > + * @vm: The VM.
> > + * @pf: The pagefault.
> > + *
> > + * This function takes the data from the pagefault @pf and saves it to @vm->faults.list.
> > + *
> > + * The function exits silently if the list is full, and reports a warning if the pagefault
> > + * could not be saved to the list.
> > + */
> > +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf)
> > +{
> > + struct xe_vm_fault_entry *e = NULL;
> > + struct xe_hw_engine *hwe;
> > +
> > + /* Do not report faults on reserved engines */
> > + hwe = hw_engine_lookup_class_instance(vm, pf->consumer.engine_class,
> > + pf->consumer.engine_instance);
> > + if (!hwe || xe_hw_engine_is_reserved(hwe))
> > + return;
> > +
> > + e = kzalloc(sizeof(*e), GFP_KERNEL);
> > + if (!e) {
> > + drm_warn(&vm->xe->drm,
> > + "Could not allocate memory for fault!\n");
> > + return;
> > + }
> > +
> > + spin_lock(&vm->faults.lock);
> > +
>
> Michal would say use guard(spinlock)(&vm->faults.lock) here. Probably
> a little cleaner as the goto can be avoided.
>
> > + /*
> > + * Limit the number of faults in the fault list to prevent
> > + * memory overuse.
> > + */
> > + if (vm->faults.len >= MAX_FAULTS_SAVED_PER_VM) {
> > + kfree(e);
> > + goto out;
> > + }
> > +
> > + e->address = pf->consumer.page_addr;
> > + e->address_precision = 1;
> > + e->access_type = pf->consumer.access_type;
> > + e->fault_type = pf->consumer.fault_type;
> > + e->fault_level = pf->consumer.fault_level;
> > +
> > + list_add_tail(&e->list, &vm->faults.list);
> > + vm->faults.len++;
> > +out:
> > + spin_unlock(&vm->faults.lock);
> > +}
> > +
> > +static void xe_vm_clear_fault_entries(struct xe_vm *vm)
> > +{
> > + struct xe_vm_fault_entry *e, *tmp;
> > +
> > + spin_lock(&vm->faults.lock);
>
> Probably a guard here too.
>
> Nits aside, overall LGTM.
>
> Matt
>
> > + list_for_each_entry_safe(e, tmp, &vm->faults.list, list) {
> > + list_del(&e->list);
> > + kfree(e);
> > + }
> > + vm->faults.len = 0;
> > + spin_unlock(&vm->faults.lock);
> > +}
> > +
> > static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool array_of_binds)
> > {
> > int i;
> > @@ -1503,6 +1586,9 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
> > INIT_LIST_HEAD(&vm->userptr.invalidated);
> > spin_lock_init(&vm->userptr.invalidated_lock);
> >
> > + INIT_LIST_HEAD(&vm->faults.list);
> > + spin_lock_init(&vm->faults.lock);
> > +
> > ttm_lru_bulk_move_init(&vm->lru_bulk_move);
> >
> > INIT_WORK(&vm->destroy_work, vm_destroy_work_func);
> > @@ -1808,6 +1894,8 @@ void xe_vm_close_and_put(struct xe_vm *vm)
> > }
> > up_write(&xe->usm.lock);
> >
> > + xe_vm_clear_fault_entries(vm);
> > +
> > for_each_tile(tile, xe, id)
> > xe_range_fence_tree_fini(&vm->rftree[id]);
> >
> > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> > index 361f10b3c453..e9f2de4189e0 100644
> > --- a/drivers/gpu/drm/xe/xe_vm.h
> > +++ b/drivers/gpu/drm/xe/xe_vm.h
> > @@ -12,6 +12,12 @@
> > #include "xe_map.h"
> > #include "xe_vm_types.h"
> >
> > +/**
> > + * MAX_FAULTS_SAVED_PER_VM - Maximum number of faults each vm can store before future
> > + * faults are discarded to prevent memory overuse
> > + */
> > +#define MAX_FAULTS_SAVED_PER_VM 50
> > +
> > struct drm_device;
> > struct drm_printer;
> > struct drm_file;
> > @@ -22,6 +28,7 @@ struct dma_fence;
> >
> > struct xe_exec_queue;
> > struct xe_file;
> > +struct xe_pagefault;
> > struct xe_sync_entry;
> > struct xe_svm_range;
> > struct drm_exec;
> > @@ -309,6 +316,8 @@ void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap);
> > void xe_vm_snapshot_print(struct xe_vm_snapshot *snap, struct drm_printer *p);
> > void xe_vm_snapshot_free(struct xe_vm_snapshot *snap);
> >
> > +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf);
> > +
> > /**
> > * xe_vm_set_validating() - Register this task as currently making bos resident
> > * @allow_res_evict: Allow eviction of buffer objects bound to @vm when
> > diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
> > index 3bf912bfbdcc..fff914fb0aa6 100644
> > --- a/drivers/gpu/drm/xe/xe_vm_types.h
> > +++ b/drivers/gpu/drm/xe/xe_vm_types.h
> > @@ -20,6 +20,7 @@
> > #include "xe_userptr.h"
> >
> > struct xe_bo;
> > +struct xe_pagefault;
> > struct xe_svm_range;
> > struct xe_sync_entry;
> > struct xe_user_fence;
> > @@ -165,6 +166,24 @@ struct xe_userptr_vma {
> >
> > struct xe_device;
> >
> > +/**
> > + * struct xe_vm_fault_entry - Elements of vm->faults.list
> > + * @list: link into @xe_vm.faults.list
> > + * @address: address of the fault
> > + * @address_precision: precision of faulted address
> > + * @access_type: type of address access that resulted in fault
> > + * @fault_type: type of fault reported
> > + * @fault_level: fault level of the fault
> > + */
> > +struct xe_vm_fault_entry {
> > + struct list_head list;
> > + u64 address;
> > + u32 address_precision;
> > + u8 access_type;
> > + u8 fault_type;
> > + u8 fault_level;
> > +};
> > +
> > struct xe_vm {
> > /** @gpuvm: base GPUVM used to track VMAs */
> > struct drm_gpuvm gpuvm;
> > @@ -302,6 +321,16 @@ struct xe_vm {
> > bool capture_once;
> > } error_capture;
> >
> > + /** @faults: List of all faults associated with this VM */
> > + struct {
> > + /** @faults.lock: lock protecting @faults.list */
> > + spinlock_t lock;
> > + /** @faults.list: list of xe_vm_fault_entry entries */
> > + struct list_head list;
> > + /** @faults.len: length of @faults.list */
> > + unsigned int len;
> > + } faults;
> > +
> > /**
> > * @validation: Validation data only valid with the vm resv held.
> > * Note: This is really task state of the task holding the vm resv,
> > --
> > 2.43.0
> >
>
^ permalink raw reply [flat|nested] 14+ messages in thread* RE: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
2025-12-01 20:24 ` Cavitt, Jonathan
@ 2025-12-01 20:38 ` Cavitt, Jonathan
2025-12-01 21:18 ` Lin, Shuicheng
1 sibling, 0 replies; 14+ messages in thread
From: Cavitt, Jonathan @ 2025-12-01 20:38 UTC (permalink / raw)
To: Brost, Matthew
Cc: intel-xe@lists.freedesktop.org, Gupta, saurabhg, Zuo, Alex,
joonas.lahtinen@linux.intel.com, Zhang, Jianxun, Lin, Shuicheng,
dri-devel@lists.freedesktop.org, Wajdeczko, Michal,
Mrozek, Michal, Jadav, Raag, Briano, Ivan, Auld, Matthew,
Hirschfeld, Dafna, Cavitt, Jonathan
-----Original Message-----
From: Cavitt, Jonathan <jonathan.cavitt@intel.com>
Sent: Monday, December 1, 2025 12:25 PM
To: Brost, Matthew <matthew.brost@intel.com>
Cc: intel-xe@lists.freedesktop.org; Gupta, saurabhg <saurabhg.gupta@intel.com>; Zuo, Alex <alex.zuo@intel.com>; joonas.lahtinen@linux.intel.com; Zhang, Jianxun <jianxun.zhang@intel.com>; Lin, Shuicheng <shuicheng.lin@intel.com>; dri-devel@lists.freedesktop.org; Wajdeczko, Michal <Michal.Wajdeczko@intel.com>; Mrozek, Michal <michal.mrozek@intel.com>; Jadav, Raag <raag.jadav@intel.com>; john.c.harrison@intel.com; Briano, Ivan <ivan.briano@intel.com>; Auld, Matthew <matthew.auld@intel.com>; Hirschfeld, Dafna <dafna.hirschfeld@intel.com>; Cavitt, Jonathan <jonathan.cavitt@intel.com>
Subject: RE: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
>
> -----Original Message-----
> From: Brost, Matthew <matthew.brost@intel.com>
> Sent: Monday, December 1, 2025 11:18 AM
> To: Cavitt, Jonathan <jonathan.cavitt@intel.com>
> Cc: intel-xe@lists.freedesktop.org; Gupta, saurabhg <saurabhg.gupta@intel.com>; Zuo, Alex <alex.zuo@intel.com>; joonas.lahtinen@linux.intel.com; Zhang, Jianxun <jianxun.zhang@intel.com>; Lin, Shuicheng <shuicheng.lin@intel.com>; dri-devel@lists.freedesktop.org; Wajdeczko, Michal <Michal.Wajdeczko@intel.com>; Mrozek, Michal <michal.mrozek@intel.com>; Jadav, Raag <raag.jadav@intel.com>; john.c.harrison@intel.com; Briano, Ivan <ivan.briano@intel.com>; Auld, Matthew <matthew.auld@intel.com>; Hirschfeld, Dafna <dafna.hirschfeld@intel.com>
> Subject: Re: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
> >
> > On Mon, Dec 01, 2025 at 05:44:47PM +0000, Jonathan Cavitt wrote:
> > > Add additional information to each VM so they can report up to the first
> > > 50 seen faults. Only pagefaults are saved this way currently, though in
> > > the future, all faults should be tracked by the VM for future reporting.
> > >
> > > Additionally, of the pagefaults reported, only failed pagefaults are
> > > saved this way, as successful pagefaults should recover silently and not
> > > need to be reported to userspace.
> > >
> > > v2:
> > > - Free vm after use (Shuicheng)
> > > - Compress pf copy logic (Shuicheng)
> > > - Update fault_unsuccessful before storing (Shuicheng)
> > > - Fix old struct name in comments (Shuicheng)
> > > - Keep first 50 pagefaults instead of last 50 (Jianxun)
> > >
> > > v3:
> > > - Avoid unnecessary execution by checking MAX_PFS earlier (jcavitt)
> > > - Fix double-locking error (jcavitt)
> > > - Assert kmemdump is successful (Shuicheng)
> > >
> > > v4:
> > > - Rename xe_vm.pfs to xe_vm.faults (jcavitt)
> > > - Store fault data and not pagefault in xe_vm faults list (jcavitt)
> > > - Store address, address type, and address precision per fault (jcavitt)
> > > - Store engine class and instance data per fault (Jianxun)
> > > - Add and fix kernel docs (Michal W)
> > > - Properly handle kzalloc error (Michal W)
> > > - s/MAX_PFS/MAX_FAULTS_SAVED_PER_VM (Michal W)
> > > - Store fault level per fault (Micahl M)
> > >
> > > v5:
> > > - Store fault and access type instead of address type (Jianxun)
> > >
> > > v6:
> > > - Store pagefaults in non-fault-mode VMs as well (Jianxun)
> > >
> > > v7:
> > > - Fix kernel docs and comments (Michal W)
> > >
> > > v8:
> > > - Fix double-locking issue (Jianxun)
> > >
> > > v9:
> > > - Do not report faults from reserved engines (Jianxun)
> > >
> > > v10:
> > > - Remove engine class and instance (Ivan)
> > >
> > > v11:
> > > - Perform kzalloc outside of lock (Auld)
> > >
> > > v12:
> > > - Fix xe_vm_fault_entry kernel docs (Shuicheng)
> > >
> > > v13:
> > > - Rebase and refactor (jcavitt)
> > >
> > > v14:
> > > - Correctly ignore fault mode in save_pagefault_to_vm (jcavitt)
> > >
> > > Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
> > > Suggested-by: Matthew Brost <matthew.brost@intel.com>
> > > Cc: Shuicheng Lin <shuicheng.lin@intel.com>
> > > Cc: Jianxun Zhang <jianxun.zhang@intel.com>
> > > Cc: Michal Wajdeczko <Michal.Wajdeczko@intel.com>
> > > Cc: Michal Mzorek <michal.mzorek@intel.com>
> > > Cc: Ivan Briano <ivan.briano@intel.com>
> > > Cc: Matthew Auld <matthew.auld@intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_pagefault.c | 26 +++++++++
> > > drivers/gpu/drm/xe/xe_vm.c | 88 +++++++++++++++++++++++++++++++
> > > drivers/gpu/drm/xe/xe_vm.h | 9 ++++
> > > drivers/gpu/drm/xe/xe_vm_types.h | 29 ++++++++++
> > > 4 files changed, 152 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
> > > index 0b625a52a598..5997023a5889 100644
> > > --- a/drivers/gpu/drm/xe/xe_pagefault.c
> > > +++ b/drivers/gpu/drm/xe/xe_pagefault.c
> > > @@ -247,6 +247,31 @@ static void xe_pagefault_print(struct xe_pagefault *pf)
> > > pf->consumer.engine_instance);
> > > }
> > >
> > > +static void save_pagefault_to_vm(struct xe_device *xe, struct xe_pagefault *pf)
> >
> > Every function in xe_pagefault.c starts with 'xe_pagefault_'
> >
> > So maybe: s/save_pagefault_to_vm/xe_pagefault_save_to_vm
> >
> > > +{
> > > + struct xe_vm *vm;
> > > +
> > > + /*
> > > + * Pagefault may be asociated to VM that is not in fault mode.
> > > + * Perform asid_to_vm behavior, except if VM is not in fault
> > > + * mode, return VM anyways.
> > > + */
> > > + down_read(&xe->usm.lock);
> > > + vm = xa_load(&xe->usm.asid_to_vm, pf->consumer.asid);
> > > + if (vm)
> > > + xe_vm_get(vm);
> > > + else
> > > + vm = ERR_PTR(-EINVAL);
> > > + up_read(&xe->usm.lock);
> > > +
> > > + if (IS_ERR(vm))
> > > + return;
> > > +
> > > + xe_vm_add_fault_entry_pf(vm, pf);
> > > +
> > > + xe_vm_put(vm);
> > > +}
> > > +
> > > static void xe_pagefault_queue_work(struct work_struct *w)
> > > {
> > > struct xe_pagefault_queue *pf_queue =
> > > @@ -266,6 +291,7 @@ static void xe_pagefault_queue_work(struct work_struct *w)
> > > err = xe_pagefault_service(&pf);
> > > if (err) {
> > > xe_pagefault_print(&pf);
> > > + save_pagefault_to_vm(gt_to_xe(pf.gt), &pf);
> > > xe_gt_dbg(pf.gt, "Fault response: Unsuccessful %pe\n",
> > > ERR_PTR(err));
> > > }
> > > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> > > index 8ab726289583..e69e10233b00 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm.c
> > > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > > @@ -27,6 +27,7 @@
> > > #include "xe_device.h"
> > > #include "xe_drm_client.h"
> > > #include "xe_exec_queue.h"
> > > +#include "xe_gt.h"
> > > #include "xe_migrate.h"
> > > #include "xe_pat.h"
> > > #include "xe_pm.h"
> > > @@ -578,6 +579,88 @@ static void preempt_rebind_work_func(struct work_struct *w)
> > > trace_xe_vm_rebind_worker_exit(vm);
> > > }
> > >
> > > +static struct xe_hw_engine *
> > > +hw_engine_lookup_class_instance(struct xe_vm *vm,
> > > + enum xe_engine_class class,
> > > + u16 instance)
> >
> > Can we use xe_hw_engine_lookup or xe_gt_hw_engine rather than adding a
> > new helper?
>
> Both of those functions require the GT ID, which is unknown.
Okay, correction: This function WAS necessary a few weeks ago because the GT ID
USED to be unknown, but now it's stored in the pagefault structure and is thus
unnecessary. I'll be using xe_gt_hw_engine shortly, I guess.
-Jonathan Cavitt
>
> >
> > > +{
> > > + struct xe_device *xe = vm->xe;
> > > + struct xe_hw_engine *hwe;
> > > + enum xe_hw_engine_id id;
> > > + struct xe_gt *gt;
> > > + u8 gt_id;
> > > +
> > > + for_each_gt(gt, xe, gt_id)
> > > + for_each_hw_engine(hwe, gt, id)
> > > + if (hwe->class == class && hwe->instance == instance)
> > > + return hwe;
> > > + return NULL;
> > > +}
> > > +
> > > +/**
> > > + * xe_vm_add_fault_entry_pf() - Add pagefault to vm fault list
> > > + * @vm: The VM.
> > > + * @pf: The pagefault.
> > > + *
> > > + * This function takes the data from the pagefault @pf and saves it to @vm->faults.list.
> > > + *
> > > + * The function exits silently if the list is full, and reports a warning if the pagefault
> > > + * could not be saved to the list.
> > > + */
> > > +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf)
> > > +{
> > > + struct xe_vm_fault_entry *e = NULL;
> > > + struct xe_hw_engine *hwe;
> > > +
> > > + /* Do not report faults on reserved engines */
> > > + hwe = hw_engine_lookup_class_instance(vm, pf->consumer.engine_class,
> > > + pf->consumer.engine_instance);
> > > + if (!hwe || xe_hw_engine_is_reserved(hwe))
> > > + return;
> > > +
> > > + e = kzalloc(sizeof(*e), GFP_KERNEL);
> > > + if (!e) {
> > > + drm_warn(&vm->xe->drm,
> > > + "Could not allocate memory for fault!\n");
> > > + return;
> > > + }
> > > +
> > > + spin_lock(&vm->faults.lock);
> > > +
> >
> > Michal would say use guard(spinlock)(&vm->faults.lock) here. Probably
> > a little cleaner as the goto can be avoided.
> >
> > > + /*
> > > + * Limit the number of faults in the fault list to prevent
> > > + * memory overuse.
> > > + */
> > > + if (vm->faults.len >= MAX_FAULTS_SAVED_PER_VM) {
> > > + kfree(e);
> > > + goto out;
> > > + }
> > > +
> > > + e->address = pf->consumer.page_addr;
> > > + e->address_precision = 1;
> > > + e->access_type = pf->consumer.access_type;
> > > + e->fault_type = pf->consumer.fault_type;
> > > + e->fault_level = pf->consumer.fault_level;
> > > +
> > > + list_add_tail(&e->list, &vm->faults.list);
> > > + vm->faults.len++;
> > > +out:
> > > + spin_unlock(&vm->faults.lock);
> > > +}
> > > +
> > > +static void xe_vm_clear_fault_entries(struct xe_vm *vm)
> > > +{
> > > + struct xe_vm_fault_entry *e, *tmp;
> > > +
> > > + spin_lock(&vm->faults.lock);
> >
> > Probably a guard here too.
> >
> > Nits aside, overall LGTM.
> >
> > Matt
> >
> > > + list_for_each_entry_safe(e, tmp, &vm->faults.list, list) {
> > > + list_del(&e->list);
> > > + kfree(e);
> > > + }
> > > + vm->faults.len = 0;
> > > + spin_unlock(&vm->faults.lock);
> > > +}
> > > +
> > > static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool array_of_binds)
> > > {
> > > int i;
> > > @@ -1503,6 +1586,9 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
> > > INIT_LIST_HEAD(&vm->userptr.invalidated);
> > > spin_lock_init(&vm->userptr.invalidated_lock);
> > >
> > > + INIT_LIST_HEAD(&vm->faults.list);
> > > + spin_lock_init(&vm->faults.lock);
> > > +
> > > ttm_lru_bulk_move_init(&vm->lru_bulk_move);
> > >
> > > INIT_WORK(&vm->destroy_work, vm_destroy_work_func);
> > > @@ -1808,6 +1894,8 @@ void xe_vm_close_and_put(struct xe_vm *vm)
> > > }
> > > up_write(&xe->usm.lock);
> > >
> > > + xe_vm_clear_fault_entries(vm);
> > > +
> > > for_each_tile(tile, xe, id)
> > > xe_range_fence_tree_fini(&vm->rftree[id]);
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> > > index 361f10b3c453..e9f2de4189e0 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm.h
> > > +++ b/drivers/gpu/drm/xe/xe_vm.h
> > > @@ -12,6 +12,12 @@
> > > #include "xe_map.h"
> > > #include "xe_vm_types.h"
> > >
> > > +/**
> > > + * MAX_FAULTS_SAVED_PER_VM - Maximum number of faults each vm can store before future
> > > + * faults are discarded to prevent memory overuse
> > > + */
> > > +#define MAX_FAULTS_SAVED_PER_VM 50
> > > +
> > > struct drm_device;
> > > struct drm_printer;
> > > struct drm_file;
> > > @@ -22,6 +28,7 @@ struct dma_fence;
> > >
> > > struct xe_exec_queue;
> > > struct xe_file;
> > > +struct xe_pagefault;
> > > struct xe_sync_entry;
> > > struct xe_svm_range;
> > > struct drm_exec;
> > > @@ -309,6 +316,8 @@ void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap);
> > > void xe_vm_snapshot_print(struct xe_vm_snapshot *snap, struct drm_printer *p);
> > > void xe_vm_snapshot_free(struct xe_vm_snapshot *snap);
> > >
> > > +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault *pf);
> > > +
> > > /**
> > > * xe_vm_set_validating() - Register this task as currently making bos resident
> > > * @allow_res_evict: Allow eviction of buffer objects bound to @vm when
> > > diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
> > > index 3bf912bfbdcc..fff914fb0aa6 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm_types.h
> > > +++ b/drivers/gpu/drm/xe/xe_vm_types.h
> > > @@ -20,6 +20,7 @@
> > > #include "xe_userptr.h"
> > >
> > > struct xe_bo;
> > > +struct xe_pagefault;
> > > struct xe_svm_range;
> > > struct xe_sync_entry;
> > > struct xe_user_fence;
> > > @@ -165,6 +166,24 @@ struct xe_userptr_vma {
> > >
> > > struct xe_device;
> > >
> > > +/**
> > > + * struct xe_vm_fault_entry - Elements of vm->faults.list
> > > + * @list: link into @xe_vm.faults.list
> > > + * @address: address of the fault
> > > + * @address_precision: precision of faulted address
> > > + * @access_type: type of address access that resulted in fault
> > > + * @fault_type: type of fault reported
> > > + * @fault_level: fault level of the fault
> > > + */
> > > +struct xe_vm_fault_entry {
> > > + struct list_head list;
> > > + u64 address;
> > > + u32 address_precision;
> > > + u8 access_type;
> > > + u8 fault_type;
> > > + u8 fault_level;
> > > +};
> > > +
> > > struct xe_vm {
> > > /** @gpuvm: base GPUVM used to track VMAs */
> > > struct drm_gpuvm gpuvm;
> > > @@ -302,6 +321,16 @@ struct xe_vm {
> > > bool capture_once;
> > > } error_capture;
> > >
> > > + /** @faults: List of all faults associated with this VM */
> > > + struct {
> > > + /** @faults.lock: lock protecting @faults.list */
> > > + spinlock_t lock;
> > > + /** @faults.list: list of xe_vm_fault_entry entries */
> > > + struct list_head list;
> > > + /** @faults.len: length of @faults.list */
> > > + unsigned int len;
> > > + } faults;
> > > +
> > > /**
> > > * @validation: Validation data only valid with the vm resv held.
> > > * Note: This is really task state of the task holding the vm resv,
> > > --
> > > 2.43.0
> > >
> >
>
^ permalink raw reply [flat|nested] 14+ messages in thread* RE: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
2025-12-01 20:24 ` Cavitt, Jonathan
2025-12-01 20:38 ` Cavitt, Jonathan
@ 2025-12-01 21:18 ` Lin, Shuicheng
1 sibling, 0 replies; 14+ messages in thread
From: Lin, Shuicheng @ 2025-12-01 21:18 UTC (permalink / raw)
To: Cavitt, Jonathan, Brost, Matthew
Cc: intel-xe@lists.freedesktop.org, Gupta, saurabhg, Zuo, Alex,
joonas.lahtinen@linux.intel.com, Zhang, Jianxun,
dri-devel@lists.freedesktop.org, Wajdeczko, Michal,
Mrozek, Michal, Jadav, Raag, john.c.harrison@intel.com,
Briano, Ivan, Auld, Matthew, Hirschfeld, Dafna
On Mon, Dec 1, 2025 12:25 PM Jonathan Cavitt wrote:
> -----Original Message-----
> From: Brost, Matthew <matthew.brost@intel.com>
> Sent: Monday, December 1, 2025 11:18 AM
> To: Cavitt, Jonathan <jonathan.cavitt@intel.com>
> Cc: intel-xe@lists.freedesktop.org; Gupta, saurabhg
> <saurabhg.gupta@intel.com>; Zuo, Alex <alex.zuo@intel.com>;
> joonas.lahtinen@linux.intel.com; Zhang, Jianxun <jianxun.zhang@intel.com>;
> Lin, Shuicheng <shuicheng.lin@intel.com>; dri-devel@lists.freedesktop.org;
> Wajdeczko, Michal <Michal.Wajdeczko@intel.com>; Mrozek, Michal
> <michal.mrozek@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> john.c.harrison@intel.com; Briano, Ivan <ivan.briano@intel.com>; Auld,
> Matthew <matthew.auld@intel.com>; Hirschfeld, Dafna
> <dafna.hirschfeld@intel.com>
> Subject: Re: [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info
> >
> > On Mon, Dec 01, 2025 at 05:44:47PM +0000, Jonathan Cavitt wrote:
> > > Add additional information to each VM so they can report up to the
> > > first
> > > 50 seen faults. Only pagefaults are saved this way currently,
> > > though in the future, all faults should be tracked by the VM for future
> reporting.
> > >
> > > Additionally, of the pagefaults reported, only failed pagefaults are
> > > saved this way, as successful pagefaults should recover silently and
> > > not need to be reported to userspace.
> > >
> > > v2:
> > > - Free vm after use (Shuicheng)
> > > - Compress pf copy logic (Shuicheng)
> > > - Update fault_unsuccessful before storing (Shuicheng)
> > > - Fix old struct name in comments (Shuicheng)
> > > - Keep first 50 pagefaults instead of last 50 (Jianxun)
> > >
> > > v3:
> > > - Avoid unnecessary execution by checking MAX_PFS earlier (jcavitt)
> > > - Fix double-locking error (jcavitt)
> > > - Assert kmemdump is successful (Shuicheng)
> > >
> > > v4:
> > > - Rename xe_vm.pfs to xe_vm.faults (jcavitt)
> > > - Store fault data and not pagefault in xe_vm faults list (jcavitt)
> > > - Store address, address type, and address precision per fault
> > > (jcavitt)
> > > - Store engine class and instance data per fault (Jianxun)
> > > - Add and fix kernel docs (Michal W)
> > > - Properly handle kzalloc error (Michal W)
> > > - s/MAX_PFS/MAX_FAULTS_SAVED_PER_VM (Michal W)
> > > - Store fault level per fault (Micahl M)
> > >
> > > v5:
> > > - Store fault and access type instead of address type (Jianxun)
> > >
> > > v6:
> > > - Store pagefaults in non-fault-mode VMs as well (Jianxun)
> > >
> > > v7:
> > > - Fix kernel docs and comments (Michal W)
> > >
> > > v8:
> > > - Fix double-locking issue (Jianxun)
> > >
> > > v9:
> > > - Do not report faults from reserved engines (Jianxun)
> > >
> > > v10:
> > > - Remove engine class and instance (Ivan)
> > >
> > > v11:
> > > - Perform kzalloc outside of lock (Auld)
> > >
> > > v12:
> > > - Fix xe_vm_fault_entry kernel docs (Shuicheng)
> > >
> > > v13:
> > > - Rebase and refactor (jcavitt)
> > >
> > > v14:
> > > - Correctly ignore fault mode in save_pagefault_to_vm (jcavitt)
> > >
> > > Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
> > > Suggested-by: Matthew Brost <matthew.brost@intel.com>
> > > Cc: Shuicheng Lin <shuicheng.lin@intel.com>
> > > Cc: Jianxun Zhang <jianxun.zhang@intel.com>
> > > Cc: Michal Wajdeczko <Michal.Wajdeczko@intel.com>
> > > Cc: Michal Mzorek <michal.mzorek@intel.com>
> > > Cc: Ivan Briano <ivan.briano@intel.com>
> > > Cc: Matthew Auld <matthew.auld@intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_pagefault.c | 26 +++++++++
> > > drivers/gpu/drm/xe/xe_vm.c | 88
> +++++++++++++++++++++++++++++++
> > > drivers/gpu/drm/xe/xe_vm.h | 9 ++++
> > > drivers/gpu/drm/xe/xe_vm_types.h | 29 ++++++++++
> > > 4 files changed, 152 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_pagefault.c
> > > b/drivers/gpu/drm/xe/xe_pagefault.c
> > > index 0b625a52a598..5997023a5889 100644
> > > --- a/drivers/gpu/drm/xe/xe_pagefault.c
> > > +++ b/drivers/gpu/drm/xe/xe_pagefault.c
> > > @@ -247,6 +247,31 @@ static void xe_pagefault_print(struct
> xe_pagefault *pf)
> > > pf->consumer.engine_instance);
> > > }
> > >
> > > +static void save_pagefault_to_vm(struct xe_device *xe, struct
> > > +xe_pagefault *pf)
> >
> > Every function in xe_pagefault.c starts with 'xe_pagefault_'
> >
> > So maybe: s/save_pagefault_to_vm/xe_pagefault_save_to_vm
> >
> > > +{
> > > + struct xe_vm *vm;
> > > +
> > > + /*
> > > + * Pagefault may be asociated to VM that is not in fault mode.
> > > + * Perform asid_to_vm behavior, except if VM is not in fault
> > > + * mode, return VM anyways.
> > > + */
> > > + down_read(&xe->usm.lock);
> > > + vm = xa_load(&xe->usm.asid_to_vm, pf->consumer.asid);
> > > + if (vm)
> > > + xe_vm_get(vm);
> > > + else
> > > + vm = ERR_PTR(-EINVAL);
> > > + up_read(&xe->usm.lock);
> > > +
> > > + if (IS_ERR(vm))
> > > + return;
> > > +
> > > + xe_vm_add_fault_entry_pf(vm, pf);
> > > +
> > > + xe_vm_put(vm);
> > > +}
> > > +
> > > static void xe_pagefault_queue_work(struct work_struct *w) {
> > > struct xe_pagefault_queue *pf_queue = @@ -266,6 +291,7 @@ static
> > > void xe_pagefault_queue_work(struct work_struct *w)
> > > err = xe_pagefault_service(&pf);
> > > if (err) {
> > > xe_pagefault_print(&pf);
> > > + save_pagefault_to_vm(gt_to_xe(pf.gt), &pf);
> > > xe_gt_dbg(pf.gt, "Fault response:
> Unsuccessful %pe\n",
> > > ERR_PTR(err));
> > > }
> > > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> > > index 8ab726289583..e69e10233b00 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm.c
> > > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > > @@ -27,6 +27,7 @@
> > > #include "xe_device.h"
> > > #include "xe_drm_client.h"
> > > #include "xe_exec_queue.h"
> > > +#include "xe_gt.h"
> > > #include "xe_migrate.h"
> > > #include "xe_pat.h"
> > > #include "xe_pm.h"
> > > @@ -578,6 +579,88 @@ static void preempt_rebind_work_func(struct
> work_struct *w)
> > > trace_xe_vm_rebind_worker_exit(vm);
> > > }
> > >
> > > +static struct xe_hw_engine *
> > > +hw_engine_lookup_class_instance(struct xe_vm *vm,
> > > + enum xe_engine_class class,
> > > + u16 instance)
> >
> > Can we use xe_hw_engine_lookup or xe_gt_hw_engine rather than adding a
> > new helper?
>
> Both of those functions require the GT ID, which is unknown.
GT ID should be able to got from pf->gt->info.id.
Shuicheng
>
> >
> > > +{
> > > + struct xe_device *xe = vm->xe;
> > > + struct xe_hw_engine *hwe;
> > > + enum xe_hw_engine_id id;
> > > + struct xe_gt *gt;
> > > + u8 gt_id;
> > > +
> > > + for_each_gt(gt, xe, gt_id)
> > > + for_each_hw_engine(hwe, gt, id)
> > > + if (hwe->class == class && hwe->instance == instance)
> > > + return hwe;
> > > + return NULL;
> > > +}
> > > +
> > > +/**
> > > + * xe_vm_add_fault_entry_pf() - Add pagefault to vm fault list
> > > + * @vm: The VM.
> > > + * @pf: The pagefault.
> > > + *
> > > + * This function takes the data from the pagefault @pf and saves it to
> @vm->faults.list.
> > > + *
> > > + * The function exits silently if the list is full, and reports a
> > > +warning if the pagefault
> > > + * could not be saved to the list.
> > > + */
> > > +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault
> > > +*pf) {
> > > + struct xe_vm_fault_entry *e = NULL;
> > > + struct xe_hw_engine *hwe;
> > > +
> > > + /* Do not report faults on reserved engines */
> > > + hwe = hw_engine_lookup_class_instance(vm, pf-
> >consumer.engine_class,
> > > + pf->consumer.engine_instance);
> > > + if (!hwe || xe_hw_engine_is_reserved(hwe))
> > > + return;
> > > +
> > > + e = kzalloc(sizeof(*e), GFP_KERNEL);
> > > + if (!e) {
> > > + drm_warn(&vm->xe->drm,
> > > + "Could not allocate memory for fault!\n");
> > > + return;
> > > + }
> > > +
> > > + spin_lock(&vm->faults.lock);
> > > +
> >
> > Michal would say use guard(spinlock)(&vm->faults.lock) here. Probably
> > a little cleaner as the goto can be avoided.
> >
> > > + /*
> > > + * Limit the number of faults in the fault list to prevent
> > > + * memory overuse.
> > > + */
> > > + if (vm->faults.len >= MAX_FAULTS_SAVED_PER_VM) {
> > > + kfree(e);
> > > + goto out;
> > > + }
> > > +
> > > + e->address = pf->consumer.page_addr;
> > > + e->address_precision = 1;
> > > + e->access_type = pf->consumer.access_type;
> > > + e->fault_type = pf->consumer.fault_type;
> > > + e->fault_level = pf->consumer.fault_level;
> > > +
> > > + list_add_tail(&e->list, &vm->faults.list);
> > > + vm->faults.len++;
> > > +out:
> > > + spin_unlock(&vm->faults.lock);
> > > +}
> > > +
> > > +static void xe_vm_clear_fault_entries(struct xe_vm *vm) {
> > > + struct xe_vm_fault_entry *e, *tmp;
> > > +
> > > + spin_lock(&vm->faults.lock);
> >
> > Probably a guard here too.
> >
> > Nits aside, overall LGTM.
> >
> > Matt
> >
> > > + list_for_each_entry_safe(e, tmp, &vm->faults.list, list) {
> > > + list_del(&e->list);
> > > + kfree(e);
> > > + }
> > > + vm->faults.len = 0;
> > > + spin_unlock(&vm->faults.lock);
> > > +}
> > > +
> > > static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool
> > > array_of_binds) {
> > > int i;
> > > @@ -1503,6 +1586,9 @@ struct xe_vm *xe_vm_create(struct xe_device
> *xe, u32 flags, struct xe_file *xef)
> > > INIT_LIST_HEAD(&vm->userptr.invalidated);
> > > spin_lock_init(&vm->userptr.invalidated_lock);
> > >
> > > + INIT_LIST_HEAD(&vm->faults.list);
> > > + spin_lock_init(&vm->faults.lock);
> > > +
> > > ttm_lru_bulk_move_init(&vm->lru_bulk_move);
> > >
> > > INIT_WORK(&vm->destroy_work, vm_destroy_work_func); @@ -
> 1808,6
> > > +1894,8 @@ void xe_vm_close_and_put(struct xe_vm *vm)
> > > }
> > > up_write(&xe->usm.lock);
> > >
> > > + xe_vm_clear_fault_entries(vm);
> > > +
> > > for_each_tile(tile, xe, id)
> > > xe_range_fence_tree_fini(&vm->rftree[id]);
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> > > index 361f10b3c453..e9f2de4189e0 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm.h
> > > +++ b/drivers/gpu/drm/xe/xe_vm.h
> > > @@ -12,6 +12,12 @@
> > > #include "xe_map.h"
> > > #include "xe_vm_types.h"
> > >
> > > +/**
> > > + * MAX_FAULTS_SAVED_PER_VM - Maximum number of faults each vm
> can
> > > +store before future
> > > + * faults are discarded to prevent memory overuse */
> > > +#define MAX_FAULTS_SAVED_PER_VM 50
> > > +
> > > struct drm_device;
> > > struct drm_printer;
> > > struct drm_file;
> > > @@ -22,6 +28,7 @@ struct dma_fence;
> > >
> > > struct xe_exec_queue;
> > > struct xe_file;
> > > +struct xe_pagefault;
> > > struct xe_sync_entry;
> > > struct xe_svm_range;
> > > struct drm_exec;
> > > @@ -309,6 +316,8 @@ void xe_vm_snapshot_capture_delayed(struct
> > > xe_vm_snapshot *snap); void xe_vm_snapshot_print(struct
> > > xe_vm_snapshot *snap, struct drm_printer *p); void
> > > xe_vm_snapshot_free(struct xe_vm_snapshot *snap);
> > >
> > > +void xe_vm_add_fault_entry_pf(struct xe_vm *vm, struct xe_pagefault
> > > +*pf);
> > > +
> > > /**
> > > * xe_vm_set_validating() - Register this task as currently making bos
> resident
> > > * @allow_res_evict: Allow eviction of buffer objects bound to @vm
> > > when diff --git a/drivers/gpu/drm/xe/xe_vm_types.h
> > > b/drivers/gpu/drm/xe/xe_vm_types.h
> > > index 3bf912bfbdcc..fff914fb0aa6 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm_types.h
> > > +++ b/drivers/gpu/drm/xe/xe_vm_types.h
> > > @@ -20,6 +20,7 @@
> > > #include "xe_userptr.h"
> > >
> > > struct xe_bo;
> > > +struct xe_pagefault;
> > > struct xe_svm_range;
> > > struct xe_sync_entry;
> > > struct xe_user_fence;
> > > @@ -165,6 +166,24 @@ struct xe_userptr_vma {
> > >
> > > struct xe_device;
> > >
> > > +/**
> > > + * struct xe_vm_fault_entry - Elements of vm->faults.list
> > > + * @list: link into @xe_vm.faults.list
> > > + * @address: address of the fault
> > > + * @address_precision: precision of faulted address
> > > + * @access_type: type of address access that resulted in fault
> > > + * @fault_type: type of fault reported
> > > + * @fault_level: fault level of the fault */ struct
> > > +xe_vm_fault_entry {
> > > + struct list_head list;
> > > + u64 address;
> > > + u32 address_precision;
> > > + u8 access_type;
> > > + u8 fault_type;
> > > + u8 fault_level;
> > > +};
> > > +
> > > struct xe_vm {
> > > /** @gpuvm: base GPUVM used to track VMAs */
> > > struct drm_gpuvm gpuvm;
> > > @@ -302,6 +321,16 @@ struct xe_vm {
> > > bool capture_once;
> > > } error_capture;
> > >
> > > + /** @faults: List of all faults associated with this VM */
> > > + struct {
> > > + /** @faults.lock: lock protecting @faults.list */
> > > + spinlock_t lock;
> > > + /** @faults.list: list of xe_vm_fault_entry entries */
> > > + struct list_head list;
> > > + /** @faults.len: length of @faults.list */
> > > + unsigned int len;
> > > + } faults;
> > > +
> > > /**
> > > * @validation: Validation data only valid with the vm resv held.
> > > * Note: This is really task state of the task holding the vm
> > > resv,
> > > --
> > > 2.43.0
> > >
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v27 4/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
` (2 preceding siblings ...)
2025-12-01 17:44 ` [PATCH v27 3/4] drm/xe/xe_vm: Add per VM fault info Jonathan Cavitt
@ 2025-12-01 17:44 ` Jonathan Cavitt
2025-12-01 19:24 ` Matthew Brost
2025-12-01 23:44 ` ✗ CI.checkpatch: warning for " Patchwork
` (3 subsequent siblings)
7 siblings, 1 reply; 14+ messages in thread
From: Jonathan Cavitt @ 2025-12-01 17:44 UTC (permalink / raw)
To: intel-xe
Cc: saurabhg.gupta, alex.zuo, jonathan.cavitt, joonas.lahtinen,
matthew.brost, jianxun.zhang, shuicheng.lin, dri-devel,
Michal.Wajdeczko, michal.mrozek, raag.jadav, john.c.harrison,
ivan.briano, matthew.auld, dafna.hirschfeld
Add support for userspace to request a list of observed faults
from a specified VM.
v2:
- Only allow querying of failed pagefaults (Matt Brost)
v3:
- Remove unnecessary size parameter from helper function, as it
is a property of the arguments. (jcavitt)
- Remove unnecessary copy_from_user (Jainxun)
- Set address_precision to 1 (Jainxun)
- Report max size instead of dynamic size for memory allocation
purposes. Total memory usage is reported separately.
v4:
- Return int from xe_vm_get_property_size (Shuicheng)
- Fix memory leak (Shuicheng)
- Remove unnecessary size variable (jcavitt)
v5:
- Rename ioctl to xe_vm_get_faults_ioctl (jcavitt)
- Update fill_property_pfs to eliminate need for kzalloc (Jianxun)
v6:
- Repair and move fill_faults break condition (Dan Carpenter)
- Free vm after use (jcavitt)
- Combine assertions (jcavitt)
- Expand size check in xe_vm_get_faults_ioctl (jcavitt)
- Remove return mask from fill_faults, as return is already -EFAULT or 0
(jcavitt)
v7:
- Revert back to using xe_vm_get_property_ioctl
- Apply better copy_to_user logic (jcavitt)
v8:
- Fix and clean up error value handling in ioctl (jcavitt)
- Reapply return mask for fill_faults (jcavitt)
v9:
- Future-proof size logic for zero-size properties (jcavitt)
- Add access and fault types (Jianxun)
- Remove address type (Jianxun)
v10:
- Remove unnecessary switch case logic (Raag)
- Compress size get, size validation, and property fill functions into a
single helper function (jcavitt)
- Assert valid size (jcavitt)
v11:
- Remove unnecessary else condition
- Correct backwards helper function size logic (jcavitt)
v12:
- Use size_t instead of int (Raag)
v13:
- Remove engine class and instance (Ivan)
v14:
- Map access type, fault type, and fault level to user macros (Matt
Brost, Ivan)
v15:
- Remove unnecessary size assertion (jcavitt)
v16:
- Nit fixes (Matt Brost)
v17:
- Rebase and refactor (jcavitt)
Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Cc: Jainxun Zhang <jianxun.zhang@intel.com>
Cc: Shuicheng Lin <shuicheng.lin@intel.com>
Cc: Raag Jadav <raag.jadav@intel.com>
Cc: Ivan Briano <ivan.briano@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 2 +
drivers/gpu/drm/xe/xe_vm.c | 108 +++++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vm.h | 3 +
3 files changed, 113 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 1197f914ef77..69baf01f008a 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -207,6 +207,8 @@ static const struct drm_ioctl_desc xe_ioctls[] = {
DRM_IOCTL_DEF_DRV(XE_MADVISE, xe_vm_madvise_ioctl, DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(XE_VM_QUERY_MEM_RANGE_ATTRS, xe_vm_query_vmas_attrs_ioctl,
DRM_RENDER_ALLOW),
+ DRM_IOCTL_DEF_DRV(XE_VM_GET_PROPERTY, xe_vm_get_property_ioctl,
+ DRM_RENDER_ALLOW),
};
static long xe_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index e69e10233b00..9995b13bee72 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -3871,6 +3871,114 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
return err;
}
+/*
+ * Map access type, fault type, and fault level from current bspec
+ * specification to user spec abstraction. The current mapping is
+ * 1-to-1, but if there is ever a hardware change, we will need
+ * this abstraction layer to maintain API stability through the
+ * hardware change.
+ */
+static u8 xe_to_user_access_type(u8 access_type)
+{
+ return access_type;
+}
+
+static u8 xe_to_user_fault_type(u8 fault_type)
+{
+ return fault_type;
+}
+
+static u8 xe_to_user_fault_level(u8 fault_level)
+{
+ return fault_level;
+}
+
+static int fill_faults(struct xe_vm *vm,
+ struct drm_xe_vm_get_property *args)
+{
+ struct xe_vm_fault __user *usr_ptr = u64_to_user_ptr(args->data);
+ struct xe_vm_fault store = { 0 };
+ struct xe_vm_fault_entry *entry;
+ int ret = 0, i = 0, count, entry_size;
+
+ entry_size = sizeof(struct xe_vm_fault);
+ count = args->size / entry_size;
+
+ spin_lock(&vm->faults.lock);
+ list_for_each_entry(entry, &vm->faults.list, list) {
+ if (i++ == count)
+ break;
+
+ memset(&store, 0, entry_size);
+
+ store.address = entry->address;
+ store.address_precision = entry->address_precision;
+
+ store.access_type = xe_to_user_access_type(entry->access_type);
+ store.fault_type = xe_to_user_fault_type(entry->fault_type);
+ store.fault_level = xe_to_user_fault_level(entry->fault_level);
+
+ ret = copy_to_user(usr_ptr, &store, entry_size);
+ if (ret)
+ break;
+
+ usr_ptr++;
+ }
+ spin_unlock(&vm->faults.lock);
+
+ return ret ? -EFAULT : 0;
+}
+
+static int xe_vm_get_property_helper(struct xe_vm *vm,
+ struct drm_xe_vm_get_property *args)
+{
+ size_t size;
+
+ switch (args->property) {
+ case DRM_XE_VM_GET_PROPERTY_FAULTS:
+ spin_lock(&vm->faults.lock);
+ size = size_mul(sizeof(struct xe_vm_fault), vm->faults.len);
+ spin_unlock(&vm->faults.lock);
+
+ if (args->size)
+ /*
+ * Number of faults may increase between calls to
+ * xe_vm_get_property_ioctl, so just report the
+ * number of faults the user requests if it's less
+ * than or equal to the number of faults in the VM
+ * fault array.
+ */
+ return args->size <= size ? fill_faults(vm, args) : -EINVAL;
+
+ args->size = size;
+ return 0;
+ }
+ return -EINVAL;
+}
+
+int xe_vm_get_property_ioctl(struct drm_device *drm, void *data,
+ struct drm_file *file)
+{
+ struct xe_device *xe = to_xe_device(drm);
+ struct xe_file *xef = to_xe_file(file);
+ struct drm_xe_vm_get_property *args = data;
+ struct xe_vm *vm;
+ int ret = 0;
+
+ if (XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1] ||
+ args->reserved[2]))
+ return -EINVAL;
+
+ vm = xe_vm_lookup(xef, args->vm_id);
+ if (XE_IOCTL_DBG(xe, !vm))
+ return -ENOENT;
+
+ ret = xe_vm_get_property_helper(vm, args);
+
+ xe_vm_put(vm);
+ return ret;
+}
+
/**
* xe_vm_bind_kernel_bo - bind a kernel BO to a VM
* @vm: VM to bind the BO to
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index e9f2de4189e0..f2675ec9e8c4 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -210,6 +210,9 @@ int xe_vm_destroy_ioctl(struct drm_device *dev, void *data,
int xe_vm_bind_ioctl(struct drm_device *dev, void *data,
struct drm_file *file);
int xe_vm_query_vmas_attrs_ioctl(struct drm_device *dev, void *data, struct drm_file *file);
+int xe_vm_get_property_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *file);
+
void xe_vm_close_and_put(struct xe_vm *vm);
static inline bool xe_vm_in_fault_mode(struct xe_vm *vm)
--
2.43.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v27 4/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
2025-12-01 17:44 ` [PATCH v27 4/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
@ 2025-12-01 19:24 ` Matthew Brost
0 siblings, 0 replies; 14+ messages in thread
From: Matthew Brost @ 2025-12-01 19:24 UTC (permalink / raw)
To: Jonathan Cavitt
Cc: intel-xe, saurabhg.gupta, alex.zuo, joonas.lahtinen,
jianxun.zhang, shuicheng.lin, dri-devel, Michal.Wajdeczko,
michal.mrozek, raag.jadav, john.c.harrison, ivan.briano,
matthew.auld, dafna.hirschfeld
On Mon, Dec 01, 2025 at 05:44:48PM +0000, Jonathan Cavitt wrote:
> Add support for userspace to request a list of observed faults
> from a specified VM.
>
> v2:
> - Only allow querying of failed pagefaults (Matt Brost)
>
> v3:
> - Remove unnecessary size parameter from helper function, as it
> is a property of the arguments. (jcavitt)
> - Remove unnecessary copy_from_user (Jainxun)
> - Set address_precision to 1 (Jainxun)
> - Report max size instead of dynamic size for memory allocation
> purposes. Total memory usage is reported separately.
>
> v4:
> - Return int from xe_vm_get_property_size (Shuicheng)
> - Fix memory leak (Shuicheng)
> - Remove unnecessary size variable (jcavitt)
>
> v5:
> - Rename ioctl to xe_vm_get_faults_ioctl (jcavitt)
> - Update fill_property_pfs to eliminate need for kzalloc (Jianxun)
>
> v6:
> - Repair and move fill_faults break condition (Dan Carpenter)
> - Free vm after use (jcavitt)
> - Combine assertions (jcavitt)
> - Expand size check in xe_vm_get_faults_ioctl (jcavitt)
> - Remove return mask from fill_faults, as return is already -EFAULT or 0
> (jcavitt)
>
> v7:
> - Revert back to using xe_vm_get_property_ioctl
> - Apply better copy_to_user logic (jcavitt)
>
> v8:
> - Fix and clean up error value handling in ioctl (jcavitt)
> - Reapply return mask for fill_faults (jcavitt)
>
> v9:
> - Future-proof size logic for zero-size properties (jcavitt)
> - Add access and fault types (Jianxun)
> - Remove address type (Jianxun)
>
> v10:
> - Remove unnecessary switch case logic (Raag)
> - Compress size get, size validation, and property fill functions into a
> single helper function (jcavitt)
> - Assert valid size (jcavitt)
>
> v11:
> - Remove unnecessary else condition
> - Correct backwards helper function size logic (jcavitt)
>
> v12:
> - Use size_t instead of int (Raag)
>
> v13:
> - Remove engine class and instance (Ivan)
>
> v14:
> - Map access type, fault type, and fault level to user macros (Matt
> Brost, Ivan)
>
> v15:
> - Remove unnecessary size assertion (jcavitt)
>
> v16:
> - Nit fixes (Matt Brost)
>
> v17:
> - Rebase and refactor (jcavitt)
>
> Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
> Suggested-by: Matthew Brost <matthew.brost@intel.com>
> Cc: Jainxun Zhang <jianxun.zhang@intel.com>
> Cc: Shuicheng Lin <shuicheng.lin@intel.com>
> Cc: Raag Jadav <raag.jadav@intel.com>
> Cc: Ivan Briano <ivan.briano@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 2 +
> drivers/gpu/drm/xe/xe_vm.c | 108 +++++++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_vm.h | 3 +
> 3 files changed, 113 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 1197f914ef77..69baf01f008a 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -207,6 +207,8 @@ static const struct drm_ioctl_desc xe_ioctls[] = {
> DRM_IOCTL_DEF_DRV(XE_MADVISE, xe_vm_madvise_ioctl, DRM_RENDER_ALLOW),
> DRM_IOCTL_DEF_DRV(XE_VM_QUERY_MEM_RANGE_ATTRS, xe_vm_query_vmas_attrs_ioctl,
> DRM_RENDER_ALLOW),
> + DRM_IOCTL_DEF_DRV(XE_VM_GET_PROPERTY, xe_vm_get_property_ioctl,
> + DRM_RENDER_ALLOW),
> };
>
> static long xe_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index e69e10233b00..9995b13bee72 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -3871,6 +3871,114 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> return err;
> }
>
> +/*
> + * Map access type, fault type, and fault level from current bspec
> + * specification to user spec abstraction. The current mapping is
> + * 1-to-1, but if there is ever a hardware change, we will need
> + * this abstraction layer to maintain API stability through the
> + * hardware change.
> + */
> +static u8 xe_to_user_access_type(u8 access_type)
> +{
> + return access_type;
> +}
> +
> +static u8 xe_to_user_fault_type(u8 fault_type)
> +{
> + return fault_type;
> +}
> +
> +static u8 xe_to_user_fault_level(u8 fault_level)
> +{
> + return fault_level;
> +}
> +
> +static int fill_faults(struct xe_vm *vm,
> + struct drm_xe_vm_get_property *args)
> +{
> + struct xe_vm_fault __user *usr_ptr = u64_to_user_ptr(args->data);
> + struct xe_vm_fault store = { 0 };
> + struct xe_vm_fault_entry *entry;
> + int ret = 0, i = 0, count, entry_size;
> +
> + entry_size = sizeof(struct xe_vm_fault);
> + count = args->size / entry_size;
> +
> + spin_lock(&vm->faults.lock);
> + list_for_each_entry(entry, &vm->faults.list, list) {
> + if (i++ == count)
> + break;
> +
> + memset(&store, 0, entry_size);
> +
> + store.address = entry->address;
> + store.address_precision = entry->address_precision;
> +
> + store.access_type = xe_to_user_access_type(entry->access_type);
> + store.fault_type = xe_to_user_fault_type(entry->fault_type);
> + store.fault_level = xe_to_user_fault_level(entry->fault_level);
> +
> + ret = copy_to_user(usr_ptr, &store, entry_size);
I don't think you can do a copy_to_user under a spin lock as this can
fault which seems like it would be bad to service this under a spin
lock.
> + if (ret)
> + break;
> +
> + usr_ptr++;
> + }
> + spin_unlock(&vm->faults.lock);
> +
> + return ret ? -EFAULT : 0;
> +}
> +
> +static int xe_vm_get_property_helper(struct xe_vm *vm,
> + struct drm_xe_vm_get_property *args)
> +{
> + size_t size;
> +
> + switch (args->property) {
> + case DRM_XE_VM_GET_PROPERTY_FAULTS:
> + spin_lock(&vm->faults.lock);
> + size = size_mul(sizeof(struct xe_vm_fault), vm->faults.len);
> + spin_unlock(&vm->faults.lock);
> +
> + if (args->size)
> + /*
> + * Number of faults may increase between calls to
> + * xe_vm_get_property_ioctl, so just report the
> + * number of faults the user requests if it's less
> + * than or equal to the number of faults in the VM
> + * fault array.
> + */
I think you need alignement check on args->size to ensure it aligned to
sizeof(struct xe_vm_fault).
Matt
> + return args->size <= size ? fill_faults(vm, args) : -EINVAL;
> +
> + args->size = size;
> + return 0;
> + }
> + return -EINVAL;
> +}
> +
> +int xe_vm_get_property_ioctl(struct drm_device *drm, void *data,
> + struct drm_file *file)
> +{
> + struct xe_device *xe = to_xe_device(drm);
> + struct xe_file *xef = to_xe_file(file);
> + struct drm_xe_vm_get_property *args = data;
> + struct xe_vm *vm;
> + int ret = 0;
> +
> + if (XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1] ||
> + args->reserved[2]))
> + return -EINVAL;
> +
> + vm = xe_vm_lookup(xef, args->vm_id);
> + if (XE_IOCTL_DBG(xe, !vm))
> + return -ENOENT;
> +
> + ret = xe_vm_get_property_helper(vm, args);
> +
> + xe_vm_put(vm);
> + return ret;
> +}
> +
> /**
> * xe_vm_bind_kernel_bo - bind a kernel BO to a VM
> * @vm: VM to bind the BO to
> diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> index e9f2de4189e0..f2675ec9e8c4 100644
> --- a/drivers/gpu/drm/xe/xe_vm.h
> +++ b/drivers/gpu/drm/xe/xe_vm.h
> @@ -210,6 +210,9 @@ int xe_vm_destroy_ioctl(struct drm_device *dev, void *data,
> int xe_vm_bind_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file);
> int xe_vm_query_vmas_attrs_ioctl(struct drm_device *dev, void *data, struct drm_file *file);
> +int xe_vm_get_property_ioctl(struct drm_device *dev, void *data,
> + struct drm_file *file);
> +
> void xe_vm_close_and_put(struct xe_vm *vm);
>
> static inline bool xe_vm_in_fault_mode(struct xe_vm *vm)
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
` (3 preceding siblings ...)
2025-12-01 17:44 ` [PATCH v27 4/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
@ 2025-12-01 23:44 ` Patchwork
2025-12-01 23:45 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2025-12-01 23:44 UTC (permalink / raw)
To: Cavitt, Jonathan; +Cc: intel-xe
== Series Details ==
Series: drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
URL : https://patchwork.freedesktop.org/series/158316/
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
2de9a3901bc28757c7906b454717b64e2a214021
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 9666c4c9b4d72a375961b28e73890b9b42f05175
Author: Jonathan Cavitt <jonathan.cavitt@intel.com>
Date: Mon Dec 1 17:44:48 2025 +0000
drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
Add support for userspace to request a list of observed faults
from a specified VM.
v2:
- Only allow querying of failed pagefaults (Matt Brost)
v3:
- Remove unnecessary size parameter from helper function, as it
is a property of the arguments. (jcavitt)
- Remove unnecessary copy_from_user (Jainxun)
- Set address_precision to 1 (Jainxun)
- Report max size instead of dynamic size for memory allocation
purposes. Total memory usage is reported separately.
v4:
- Return int from xe_vm_get_property_size (Shuicheng)
- Fix memory leak (Shuicheng)
- Remove unnecessary size variable (jcavitt)
v5:
- Rename ioctl to xe_vm_get_faults_ioctl (jcavitt)
- Update fill_property_pfs to eliminate need for kzalloc (Jianxun)
v6:
- Repair and move fill_faults break condition (Dan Carpenter)
- Free vm after use (jcavitt)
- Combine assertions (jcavitt)
- Expand size check in xe_vm_get_faults_ioctl (jcavitt)
- Remove return mask from fill_faults, as return is already -EFAULT or 0
(jcavitt)
v7:
- Revert back to using xe_vm_get_property_ioctl
- Apply better copy_to_user logic (jcavitt)
v8:
- Fix and clean up error value handling in ioctl (jcavitt)
- Reapply return mask for fill_faults (jcavitt)
v9:
- Future-proof size logic for zero-size properties (jcavitt)
- Add access and fault types (Jianxun)
- Remove address type (Jianxun)
v10:
- Remove unnecessary switch case logic (Raag)
- Compress size get, size validation, and property fill functions into a
single helper function (jcavitt)
- Assert valid size (jcavitt)
v11:
- Remove unnecessary else condition
- Correct backwards helper function size logic (jcavitt)
v12:
- Use size_t instead of int (Raag)
v13:
- Remove engine class and instance (Ivan)
v14:
- Map access type, fault type, and fault level to user macros (Matt
Brost, Ivan)
v15:
- Remove unnecessary size assertion (jcavitt)
v16:
- Nit fixes (Matt Brost)
v17:
- Rebase and refactor (jcavitt)
Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Cc: Jainxun Zhang <jianxun.zhang@intel.com>
Cc: Shuicheng Lin <shuicheng.lin@intel.com>
Cc: Raag Jadav <raag.jadav@intel.com>
Cc: Ivan Briano <ivan.briano@intel.com>
+ /mt/dim checkpatch 639f325d8cbdc690de963db2fe5840444ac7ea65 drm-intel
ded471397430 drm/xe/xe_pagefault: Disallow writes to read-only VMAs
c8c0a69501dd drm/xe/uapi: Define drm_xe_vm_get_property
-:59: WARNING:LONG_LINE: line length of 130 exceeds 100 columns
#59: FILE: include/uapi/drm/xe_drm.h:128:
+#define DRM_IOCTL_XE_VM_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_GET_PROPERTY, struct drm_xe_vm_get_property)
total: 0 errors, 1 warnings, 0 checks, 110 lines checked
17aa388d21a7 drm/xe/xe_vm: Add per VM fault info
-:176: WARNING:OOM_MESSAGE: Possible unnecessary 'out of memory' message
#176: FILE: drivers/gpu/drm/xe/xe_vm.c:623:
+ if (!e) {
+ drm_warn(&vm->xe->drm,
total: 0 errors, 1 warnings, 0 checks, 224 lines checked
9666c4c9b4d7 drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
-:202: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#202: FILE: drivers/gpu/drm/xe/xe_vm.c:3969:
+ if (XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1] ||
+ args->reserved[2]))
total: 0 errors, 0 warnings, 1 checks, 131 lines checked
^ permalink raw reply [flat|nested] 14+ messages in thread* ✓ CI.KUnit: success for drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
` (4 preceding siblings ...)
2025-12-01 23:44 ` ✗ CI.checkpatch: warning for " Patchwork
@ 2025-12-01 23:45 ` Patchwork
2025-12-02 0:48 ` ✓ Xe.CI.BAT: " Patchwork
2025-12-02 4:45 ` ✗ Xe.CI.Full: failure " Patchwork
7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2025-12-01 23:45 UTC (permalink / raw)
To: Cavitt, Jonathan; +Cc: intel-xe
== Series Details ==
Series: drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
URL : https://patchwork.freedesktop.org/series/158316/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[23:44:00] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[23:44:04] 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=25
[23:44:41] Starting KUnit Kernel (1/1)...
[23:44:41] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[23:44:41] ================== guc_buf (11 subtests) ===================
[23:44:41] [PASSED] test_smallest
[23:44:41] [PASSED] test_largest
[23:44:42] [PASSED] test_granular
[23:44:42] [PASSED] test_unique
[23:44:42] [PASSED] test_overlap
[23:44:42] [PASSED] test_reusable
[23:44:42] [PASSED] test_too_big
[23:44:42] [PASSED] test_flush
[23:44:42] [PASSED] test_lookup
[23:44:42] [PASSED] test_data
[23:44:42] [PASSED] test_class
[23:44:42] ===================== [PASSED] guc_buf =====================
[23:44:42] =================== guc_dbm (7 subtests) ===================
[23:44:42] [PASSED] test_empty
[23:44:42] [PASSED] test_default
[23:44:42] ======================== test_size ========================
[23:44:42] [PASSED] 4
[23:44:42] [PASSED] 8
[23:44:42] [PASSED] 32
[23:44:42] [PASSED] 256
[23:44:42] ==================== [PASSED] test_size ====================
[23:44:42] ======================= test_reuse ========================
[23:44:42] [PASSED] 4
[23:44:42] [PASSED] 8
[23:44:42] [PASSED] 32
[23:44:42] [PASSED] 256
[23:44:42] =================== [PASSED] test_reuse ====================
[23:44:42] =================== test_range_overlap ====================
[23:44:42] [PASSED] 4
[23:44:42] [PASSED] 8
[23:44:42] [PASSED] 32
[23:44:42] [PASSED] 256
[23:44:42] =============== [PASSED] test_range_overlap ================
[23:44:42] =================== test_range_compact ====================
[23:44:42] [PASSED] 4
[23:44:42] [PASSED] 8
[23:44:42] [PASSED] 32
[23:44:42] [PASSED] 256
[23:44:42] =============== [PASSED] test_range_compact ================
[23:44:42] ==================== test_range_spare =====================
[23:44:42] [PASSED] 4
[23:44:42] [PASSED] 8
[23:44:42] [PASSED] 32
[23:44:42] [PASSED] 256
[23:44:42] ================ [PASSED] test_range_spare =================
[23:44:42] ===================== [PASSED] guc_dbm =====================
[23:44:42] =================== guc_idm (6 subtests) ===================
[23:44:42] [PASSED] bad_init
[23:44:42] [PASSED] no_init
[23:44:42] [PASSED] init_fini
[23:44:42] [PASSED] check_used
[23:44:42] [PASSED] check_quota
[23:44:42] [PASSED] check_all
[23:44:42] ===================== [PASSED] guc_idm =====================
[23:44:42] ================== no_relay (3 subtests) ===================
[23:44:42] [PASSED] xe_drops_guc2pf_if_not_ready
[23:44:42] [PASSED] xe_drops_guc2vf_if_not_ready
[23:44:42] [PASSED] xe_rejects_send_if_not_ready
[23:44:42] ==================== [PASSED] no_relay =====================
[23:44:42] ================== pf_relay (14 subtests) ==================
[23:44:42] [PASSED] pf_rejects_guc2pf_too_short
[23:44:42] [PASSED] pf_rejects_guc2pf_too_long
[23:44:42] [PASSED] pf_rejects_guc2pf_no_payload
[23:44:42] [PASSED] pf_fails_no_payload
[23:44:42] [PASSED] pf_fails_bad_origin
[23:44:42] [PASSED] pf_fails_bad_type
[23:44:42] [PASSED] pf_txn_reports_error
[23:44:42] [PASSED] pf_txn_sends_pf2guc
[23:44:42] [PASSED] pf_sends_pf2guc
[23:44:42] [SKIPPED] pf_loopback_nop
[23:44:42] [SKIPPED] pf_loopback_echo
[23:44:42] [SKIPPED] pf_loopback_fail
[23:44:42] [SKIPPED] pf_loopback_busy
[23:44:42] [SKIPPED] pf_loopback_retry
[23:44:42] ==================== [PASSED] pf_relay =====================
[23:44:42] ================== vf_relay (3 subtests) ===================
[23:44:42] [PASSED] vf_rejects_guc2vf_too_short
[23:44:42] [PASSED] vf_rejects_guc2vf_too_long
[23:44:42] [PASSED] vf_rejects_guc2vf_no_payload
[23:44:42] ==================== [PASSED] vf_relay =====================
[23:44:42] ================ pf_gt_config (6 subtests) =================
[23:44:42] [PASSED] fair_contexts_1vf
[23:44:42] [PASSED] fair_doorbells_1vf
[23:44:42] [PASSED] fair_ggtt_1vf
[23:44:42] ====================== fair_contexts ======================
[23:44:42] [PASSED] 1 VF
[23:44:42] [PASSED] 2 VFs
[23:44:42] [PASSED] 3 VFs
[23:44:42] [PASSED] 4 VFs
[23:44:42] [PASSED] 5 VFs
[23:44:42] [PASSED] 6 VFs
[23:44:42] [PASSED] 7 VFs
[23:44:42] [PASSED] 8 VFs
[23:44:42] [PASSED] 9 VFs
[23:44:42] [PASSED] 10 VFs
[23:44:42] [PASSED] 11 VFs
[23:44:42] [PASSED] 12 VFs
[23:44:42] [PASSED] 13 VFs
[23:44:42] [PASSED] 14 VFs
[23:44:42] [PASSED] 15 VFs
[23:44:42] [PASSED] 16 VFs
[23:44:42] [PASSED] 17 VFs
[23:44:42] [PASSED] 18 VFs
[23:44:42] [PASSED] 19 VFs
[23:44:42] [PASSED] 20 VFs
[23:44:42] [PASSED] 21 VFs
[23:44:42] [PASSED] 22 VFs
[23:44:42] [PASSED] 23 VFs
[23:44:42] [PASSED] 24 VFs
[23:44:42] [PASSED] 25 VFs
[23:44:42] [PASSED] 26 VFs
[23:44:42] [PASSED] 27 VFs
[23:44:42] [PASSED] 28 VFs
[23:44:42] [PASSED] 29 VFs
[23:44:42] [PASSED] 30 VFs
[23:44:42] [PASSED] 31 VFs
[23:44:42] [PASSED] 32 VFs
[23:44:42] [PASSED] 33 VFs
[23:44:42] [PASSED] 34 VFs
[23:44:42] [PASSED] 35 VFs
[23:44:42] [PASSED] 36 VFs
[23:44:42] [PASSED] 37 VFs
[23:44:42] [PASSED] 38 VFs
[23:44:42] [PASSED] 39 VFs
[23:44:42] [PASSED] 40 VFs
[23:44:42] [PASSED] 41 VFs
[23:44:42] [PASSED] 42 VFs
[23:44:42] [PASSED] 43 VFs
[23:44:42] [PASSED] 44 VFs
[23:44:42] [PASSED] 45 VFs
[23:44:42] [PASSED] 46 VFs
[23:44:42] [PASSED] 47 VFs
[23:44:42] [PASSED] 48 VFs
[23:44:42] [PASSED] 49 VFs
[23:44:42] [PASSED] 50 VFs
[23:44:42] [PASSED] 51 VFs
[23:44:42] [PASSED] 52 VFs
[23:44:42] [PASSED] 53 VFs
[23:44:42] [PASSED] 54 VFs
[23:44:42] [PASSED] 55 VFs
[23:44:42] [PASSED] 56 VFs
[23:44:42] [PASSED] 57 VFs
[23:44:42] [PASSED] 58 VFs
[23:44:42] [PASSED] 59 VFs
[23:44:42] [PASSED] 60 VFs
[23:44:42] [PASSED] 61 VFs
[23:44:42] [PASSED] 62 VFs
[23:44:42] [PASSED] 63 VFs
[23:44:42] ================== [PASSED] fair_contexts ==================
[23:44:42] ===================== fair_doorbells ======================
[23:44:42] [PASSED] 1 VF
[23:44:42] [PASSED] 2 VFs
[23:44:42] [PASSED] 3 VFs
[23:44:42] [PASSED] 4 VFs
[23:44:42] [PASSED] 5 VFs
[23:44:42] [PASSED] 6 VFs
[23:44:42] [PASSED] 7 VFs
[23:44:42] [PASSED] 8 VFs
[23:44:42] [PASSED] 9 VFs
[23:44:42] [PASSED] 10 VFs
[23:44:42] [PASSED] 11 VFs
[23:44:42] [PASSED] 12 VFs
[23:44:42] [PASSED] 13 VFs
[23:44:42] [PASSED] 14 VFs
[23:44:42] [PASSED] 15 VFs
[23:44:42] [PASSED] 16 VFs
[23:44:42] [PASSED] 17 VFs
[23:44:42] [PASSED] 18 VFs
[23:44:42] [PASSED] 19 VFs
[23:44:42] [PASSED] 20 VFs
[23:44:42] [PASSED] 21 VFs
[23:44:42] [PASSED] 22 VFs
[23:44:42] [PASSED] 23 VFs
[23:44:42] [PASSED] 24 VFs
[23:44:42] [PASSED] 25 VFs
[23:44:42] [PASSED] 26 VFs
[23:44:42] [PASSED] 27 VFs
[23:44:42] [PASSED] 28 VFs
[23:44:42] [PASSED] 29 VFs
[23:44:42] [PASSED] 30 VFs
[23:44:42] [PASSED] 31 VFs
[23:44:42] [PASSED] 32 VFs
[23:44:42] [PASSED] 33 VFs
[23:44:42] [PASSED] 34 VFs
[23:44:42] [PASSED] 35 VFs
[23:44:42] [PASSED] 36 VFs
[23:44:42] [PASSED] 37 VFs
[23:44:42] [PASSED] 38 VFs
[23:44:42] [PASSED] 39 VFs
[23:44:42] [PASSED] 40 VFs
[23:44:42] [PASSED] 41 VFs
[23:44:42] [PASSED] 42 VFs
[23:44:42] [PASSED] 43 VFs
[23:44:42] [PASSED] 44 VFs
[23:44:42] [PASSED] 45 VFs
[23:44:42] [PASSED] 46 VFs
[23:44:42] [PASSED] 47 VFs
[23:44:42] [PASSED] 48 VFs
[23:44:42] [PASSED] 49 VFs
[23:44:42] [PASSED] 50 VFs
[23:44:42] [PASSED] 51 VFs
[23:44:42] [PASSED] 52 VFs
[23:44:42] [PASSED] 53 VFs
[23:44:42] [PASSED] 54 VFs
[23:44:42] [PASSED] 55 VFs
[23:44:42] [PASSED] 56 VFs
[23:44:42] [PASSED] 57 VFs
[23:44:42] [PASSED] 58 VFs
[23:44:42] [PASSED] 59 VFs
[23:44:42] [PASSED] 60 VFs
[23:44:42] [PASSED] 61 VFs
[23:44:42] [PASSED] 62 VFs
[23:44:42] [PASSED] 63 VFs
[23:44:42] ================= [PASSED] fair_doorbells ==================
[23:44:42] ======================== fair_ggtt ========================
[23:44:42] [PASSED] 1 VF
[23:44:42] [PASSED] 2 VFs
[23:44:42] [PASSED] 3 VFs
[23:44:42] [PASSED] 4 VFs
[23:44:42] [PASSED] 5 VFs
[23:44:42] [PASSED] 6 VFs
[23:44:42] [PASSED] 7 VFs
[23:44:42] [PASSED] 8 VFs
[23:44:42] [PASSED] 9 VFs
[23:44:42] [PASSED] 10 VFs
[23:44:42] [PASSED] 11 VFs
[23:44:42] [PASSED] 12 VFs
[23:44:42] [PASSED] 13 VFs
[23:44:42] [PASSED] 14 VFs
[23:44:42] [PASSED] 15 VFs
[23:44:42] [PASSED] 16 VFs
[23:44:42] [PASSED] 17 VFs
[23:44:42] [PASSED] 18 VFs
[23:44:42] [PASSED] 19 VFs
[23:44:42] [PASSED] 20 VFs
[23:44:42] [PASSED] 21 VFs
[23:44:42] [PASSED] 22 VFs
[23:44:42] [PASSED] 23 VFs
[23:44:42] [PASSED] 24 VFs
[23:44:42] [PASSED] 25 VFs
[23:44:42] [PASSED] 26 VFs
[23:44:42] [PASSED] 27 VFs
[23:44:42] [PASSED] 28 VFs
[23:44:42] [PASSED] 29 VFs
[23:44:42] [PASSED] 30 VFs
[23:44:42] [PASSED] 31 VFs
[23:44:42] [PASSED] 32 VFs
[23:44:42] [PASSED] 33 VFs
[23:44:42] [PASSED] 34 VFs
[23:44:42] [PASSED] 35 VFs
[23:44:42] [PASSED] 36 VFs
[23:44:42] [PASSED] 37 VFs
[23:44:42] [PASSED] 38 VFs
[23:44:42] [PASSED] 39 VFs
[23:44:42] [PASSED] 40 VFs
[23:44:42] [PASSED] 41 VFs
[23:44:42] [PASSED] 42 VFs
[23:44:42] [PASSED] 43 VFs
[23:44:42] [PASSED] 44 VFs
[23:44:42] [PASSED] 45 VFs
[23:44:42] [PASSED] 46 VFs
[23:44:42] [PASSED] 47 VFs
[23:44:42] [PASSED] 48 VFs
[23:44:42] [PASSED] 49 VFs
[23:44:42] [PASSED] 50 VFs
[23:44:42] [PASSED] 51 VFs
[23:44:42] [PASSED] 52 VFs
[23:44:42] [PASSED] 53 VFs
[23:44:42] [PASSED] 54 VFs
[23:44:42] [PASSED] 55 VFs
[23:44:42] [PASSED] 56 VFs
[23:44:42] [PASSED] 57 VFs
[23:44:42] [PASSED] 58 VFs
[23:44:42] [PASSED] 59 VFs
[23:44:42] [PASSED] 60 VFs
[23:44:42] [PASSED] 61 VFs
[23:44:42] [PASSED] 62 VFs
[23:44:42] [PASSED] 63 VFs
[23:44:42] ==================== [PASSED] fair_ggtt ====================
[23:44:42] ================== [PASSED] pf_gt_config ===================
[23:44:42] ===================== lmtt (1 subtest) =====================
[23:44:42] ======================== test_ops =========================
[23:44:42] [PASSED] 2-level
[23:44:42] [PASSED] multi-level
[23:44:42] ==================== [PASSED] test_ops =====================
[23:44:42] ====================== [PASSED] lmtt =======================
[23:44:42] ================= pf_service (11 subtests) =================
[23:44:42] [PASSED] pf_negotiate_any
[23:44:42] [PASSED] pf_negotiate_base_match
[23:44:42] [PASSED] pf_negotiate_base_newer
[23:44:42] [PASSED] pf_negotiate_base_next
[23:44:42] [SKIPPED] pf_negotiate_base_older
[23:44:42] [PASSED] pf_negotiate_base_prev
[23:44:42] [PASSED] pf_negotiate_latest_match
[23:44:42] [PASSED] pf_negotiate_latest_newer
[23:44:42] [PASSED] pf_negotiate_latest_next
[23:44:42] [SKIPPED] pf_negotiate_latest_older
[23:44:42] [SKIPPED] pf_negotiate_latest_prev
[23:44:42] =================== [PASSED] pf_service ====================
[23:44:42] ================= xe_guc_g2g (2 subtests) ==================
[23:44:42] ============== xe_live_guc_g2g_kunit_default ==============
[23:44:42] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[23:44:42] ============== xe_live_guc_g2g_kunit_allmem ===============
[23:44:42] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[23:44:42] =================== [SKIPPED] xe_guc_g2g ===================
[23:44:42] =================== xe_mocs (2 subtests) ===================
[23:44:42] ================ xe_live_mocs_kernel_kunit ================
[23:44:42] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[23:44:42] ================ xe_live_mocs_reset_kunit =================
[23:44:42] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[23:44:42] ==================== [SKIPPED] xe_mocs =====================
[23:44:42] ================= xe_migrate (2 subtests) ==================
[23:44:42] ================= xe_migrate_sanity_kunit =================
[23:44:42] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[23:44:42] ================== xe_validate_ccs_kunit ==================
[23:44:42] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[23:44:42] =================== [SKIPPED] xe_migrate ===================
[23:44:42] ================== xe_dma_buf (1 subtest) ==================
[23:44:42] ==================== xe_dma_buf_kunit =====================
[23:44:42] ================ [SKIPPED] xe_dma_buf_kunit ================
[23:44:42] =================== [SKIPPED] xe_dma_buf ===================
[23:44:42] ================= xe_bo_shrink (1 subtest) =================
[23:44:42] =================== xe_bo_shrink_kunit ====================
[23:44:42] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[23:44:42] ================== [SKIPPED] xe_bo_shrink ==================
[23:44:42] ==================== xe_bo (2 subtests) ====================
[23:44:42] ================== xe_ccs_migrate_kunit ===================
[23:44:42] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[23:44:42] ==================== xe_bo_evict_kunit ====================
[23:44:42] =============== [SKIPPED] xe_bo_evict_kunit ================
[23:44:42] ===================== [SKIPPED] xe_bo ======================
[23:44:42] ==================== args (11 subtests) ====================
[23:44:42] [PASSED] count_args_test
[23:44:42] [PASSED] call_args_example
[23:44:42] [PASSED] call_args_test
[23:44:42] [PASSED] drop_first_arg_example
[23:44:42] [PASSED] drop_first_arg_test
[23:44:42] [PASSED] first_arg_example
[23:44:42] [PASSED] first_arg_test
[23:44:42] [PASSED] last_arg_example
[23:44:42] [PASSED] last_arg_test
[23:44:42] [PASSED] pick_arg_example
[23:44:42] [PASSED] sep_comma_example
[23:44:42] ====================== [PASSED] args =======================
[23:44:42] =================== xe_pci (3 subtests) ====================
[23:44:42] ==================== check_graphics_ip ====================
[23:44:42] [PASSED] 12.00 Xe_LP
[23:44:42] [PASSED] 12.10 Xe_LP+
[23:44:42] [PASSED] 12.55 Xe_HPG
[23:44:42] [PASSED] 12.60 Xe_HPC
[23:44:42] [PASSED] 12.70 Xe_LPG
[23:44:42] [PASSED] 12.71 Xe_LPG
[23:44:42] [PASSED] 12.74 Xe_LPG+
[23:44:42] [PASSED] 20.01 Xe2_HPG
[23:44:42] [PASSED] 20.02 Xe2_HPG
[23:44:42] [PASSED] 20.04 Xe2_LPG
[23:44:42] [PASSED] 30.00 Xe3_LPG
[23:44:42] [PASSED] 30.01 Xe3_LPG
[23:44:42] [PASSED] 30.03 Xe3_LPG
[23:44:42] [PASSED] 30.04 Xe3_LPG
[23:44:42] [PASSED] 30.05 Xe3_LPG
[23:44:42] [PASSED] 35.11 Xe3p_XPC
[23:44:42] ================ [PASSED] check_graphics_ip ================
[23:44:42] ===================== check_media_ip ======================
[23:44:42] [PASSED] 12.00 Xe_M
[23:44:42] [PASSED] 12.55 Xe_HPM
[23:44:42] [PASSED] 13.00 Xe_LPM+
[23:44:42] [PASSED] 13.01 Xe2_HPM
[23:44:42] [PASSED] 20.00 Xe2_LPM
[23:44:42] [PASSED] 30.00 Xe3_LPM
[23:44:42] [PASSED] 30.02 Xe3_LPM
[23:44:42] [PASSED] 35.00 Xe3p_LPM
[23:44:42] [PASSED] 35.03 Xe3p_HPM
[23:44:42] ================= [PASSED] check_media_ip ==================
[23:44:42] =================== check_platform_desc ===================
[23:44:42] [PASSED] 0x9A60 (TIGERLAKE)
[23:44:42] [PASSED] 0x9A68 (TIGERLAKE)
[23:44:42] [PASSED] 0x9A70 (TIGERLAKE)
[23:44:42] [PASSED] 0x9A40 (TIGERLAKE)
[23:44:42] [PASSED] 0x9A49 (TIGERLAKE)
[23:44:42] [PASSED] 0x9A59 (TIGERLAKE)
[23:44:42] [PASSED] 0x9A78 (TIGERLAKE)
[23:44:42] [PASSED] 0x9AC0 (TIGERLAKE)
[23:44:42] [PASSED] 0x9AC9 (TIGERLAKE)
[23:44:42] [PASSED] 0x9AD9 (TIGERLAKE)
[23:44:42] [PASSED] 0x9AF8 (TIGERLAKE)
[23:44:42] [PASSED] 0x4C80 (ROCKETLAKE)
[23:44:42] [PASSED] 0x4C8A (ROCKETLAKE)
[23:44:42] [PASSED] 0x4C8B (ROCKETLAKE)
[23:44:42] [PASSED] 0x4C8C (ROCKETLAKE)
[23:44:42] [PASSED] 0x4C90 (ROCKETLAKE)
[23:44:42] [PASSED] 0x4C9A (ROCKETLAKE)
[23:44:42] [PASSED] 0x4680 (ALDERLAKE_S)
[23:44:42] [PASSED] 0x4682 (ALDERLAKE_S)
[23:44:42] [PASSED] 0x4688 (ALDERLAKE_S)
[23:44:42] [PASSED] 0x468A (ALDERLAKE_S)
[23:44:42] [PASSED] 0x468B (ALDERLAKE_S)
[23:44:42] [PASSED] 0x4690 (ALDERLAKE_S)
[23:44:42] [PASSED] 0x4692 (ALDERLAKE_S)
[23:44:42] [PASSED] 0x4693 (ALDERLAKE_S)
[23:44:42] [PASSED] 0x46A0 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46A1 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46A2 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46A3 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46A6 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46A8 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46AA (ALDERLAKE_P)
[23:44:42] [PASSED] 0x462A (ALDERLAKE_P)
[23:44:42] [PASSED] 0x4626 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x4628 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46B0 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[23:44:42] [PASSED] 0x46B1 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46B2 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46B3 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46C0 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46C1 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46C2 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46C3 (ALDERLAKE_P)
[23:44:42] [PASSED] 0x46D0 (ALDERLAKE_N)
[23:44:42] [PASSED] 0x46D1 (ALDERLAKE_N)
[23:44:42] [PASSED] 0x46D2 (ALDERLAKE_N)
[23:44:42] [PASSED] 0x46D3 (ALDERLAKE_N)
[23:44:42] [PASSED] 0x46D4 (ALDERLAKE_N)
[23:44:42] [PASSED] 0xA721 (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7A1 (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7A9 (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7AC (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7AD (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA720 (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7A0 (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7A8 (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7AA (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA7AB (ALDERLAKE_P)
[23:44:42] [PASSED] 0xA780 (ALDERLAKE_S)
[23:44:42] [PASSED] 0xA781 (ALDERLAKE_S)
[23:44:42] [PASSED] 0xA782 (ALDERLAKE_S)
[23:44:42] [PASSED] 0xA783 (ALDERLAKE_S)
[23:44:42] [PASSED] 0xA788 (ALDERLAKE_S)
[23:44:42] [PASSED] 0xA789 (ALDERLAKE_S)
[23:44:42] [PASSED] 0xA78A (ALDERLAKE_S)
[23:44:42] [PASSED] 0xA78B (ALDERLAKE_S)
[23:44:42] [PASSED] 0x4905 (DG1)
[23:44:42] [PASSED] 0x4906 (DG1)
[23:44:42] [PASSED] 0x4907 (DG1)
[23:44:42] [PASSED] 0x4908 (DG1)
[23:44:42] [PASSED] 0x4909 (DG1)
[23:44:42] [PASSED] 0x56C0 (DG2)
[23:44:42] [PASSED] 0x56C2 (DG2)
[23:44:42] [PASSED] 0x56C1 (DG2)
[23:44:42] [PASSED] 0x7D51 (METEORLAKE)
[23:44:42] [PASSED] 0x7DD1 (METEORLAKE)
[23:44:42] [PASSED] 0x7D41 (METEORLAKE)
[23:44:42] [PASSED] 0x7D67 (METEORLAKE)
[23:44:42] [PASSED] 0xB640 (METEORLAKE)
[23:44:42] [PASSED] 0x56A0 (DG2)
[23:44:42] [PASSED] 0x56A1 (DG2)
[23:44:42] [PASSED] 0x56A2 (DG2)
[23:44:42] [PASSED] 0x56BE (DG2)
[23:44:42] [PASSED] 0x56BF (DG2)
[23:44:42] [PASSED] 0x5690 (DG2)
[23:44:42] [PASSED] 0x5691 (DG2)
[23:44:42] [PASSED] 0x5692 (DG2)
[23:44:42] [PASSED] 0x56A5 (DG2)
[23:44:42] [PASSED] 0x56A6 (DG2)
[23:44:42] [PASSED] 0x56B0 (DG2)
[23:44:42] [PASSED] 0x56B1 (DG2)
[23:44:42] [PASSED] 0x56BA (DG2)
[23:44:42] [PASSED] 0x56BB (DG2)
[23:44:42] [PASSED] 0x56BC (DG2)
[23:44:42] [PASSED] 0x56BD (DG2)
[23:44:42] [PASSED] 0x5693 (DG2)
[23:44:42] [PASSED] 0x5694 (DG2)
[23:44:42] [PASSED] 0x5695 (DG2)
[23:44:42] [PASSED] 0x56A3 (DG2)
[23:44:42] [PASSED] 0x56A4 (DG2)
[23:44:42] [PASSED] 0x56B2 (DG2)
[23:44:42] [PASSED] 0x56B3 (DG2)
[23:44:42] [PASSED] 0x5696 (DG2)
[23:44:42] [PASSED] 0x5697 (DG2)
[23:44:42] [PASSED] 0xB69 (PVC)
[23:44:42] [PASSED] 0xB6E (PVC)
[23:44:42] [PASSED] 0xBD4 (PVC)
[23:44:42] [PASSED] 0xBD5 (PVC)
[23:44:42] [PASSED] 0xBD6 (PVC)
[23:44:42] [PASSED] 0xBD7 (PVC)
[23:44:42] [PASSED] 0xBD8 (PVC)
[23:44:42] [PASSED] 0xBD9 (PVC)
[23:44:42] [PASSED] 0xBDA (PVC)
[23:44:42] [PASSED] 0xBDB (PVC)
[23:44:42] [PASSED] 0xBE0 (PVC)
[23:44:42] [PASSED] 0xBE1 (PVC)
[23:44:42] [PASSED] 0xBE5 (PVC)
[23:44:42] [PASSED] 0x7D40 (METEORLAKE)
[23:44:42] [PASSED] 0x7D45 (METEORLAKE)
[23:44:42] [PASSED] 0x7D55 (METEORLAKE)
[23:44:42] [PASSED] 0x7D60 (METEORLAKE)
[23:44:42] [PASSED] 0x7DD5 (METEORLAKE)
[23:44:42] [PASSED] 0x6420 (LUNARLAKE)
[23:44:42] [PASSED] 0x64A0 (LUNARLAKE)
[23:44:42] [PASSED] 0x64B0 (LUNARLAKE)
[23:44:42] [PASSED] 0xE202 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE209 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE20B (BATTLEMAGE)
[23:44:42] [PASSED] 0xE20C (BATTLEMAGE)
[23:44:42] [PASSED] 0xE20D (BATTLEMAGE)
[23:44:42] [PASSED] 0xE210 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE211 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE212 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE216 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE220 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE221 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE222 (BATTLEMAGE)
[23:44:42] [PASSED] 0xE223 (BATTLEMAGE)
[23:44:42] [PASSED] 0xB080 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB081 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB082 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB083 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB084 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB085 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB086 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB087 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB08F (PANTHERLAKE)
[23:44:42] [PASSED] 0xB090 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB0A0 (PANTHERLAKE)
[23:44:42] [PASSED] 0xB0B0 (PANTHERLAKE)
[23:44:42] [PASSED] 0xD740 (NOVALAKE_S)
[23:44:42] [PASSED] 0xD741 (NOVALAKE_S)
[23:44:42] [PASSED] 0xD742 (NOVALAKE_S)
[23:44:42] [PASSED] 0xD743 (NOVALAKE_S)
[23:44:42] [PASSED] 0xD744 (NOVALAKE_S)
[23:44:42] [PASSED] 0xD745 (NOVALAKE_S)
[23:44:42] [PASSED] 0x674C (CRESCENTISLAND)
[23:44:42] [PASSED] 0xFD80 (PANTHERLAKE)
[23:44:42] [PASSED] 0xFD81 (PANTHERLAKE)
[23:44:42] =============== [PASSED] check_platform_desc ===============
[23:44:42] ===================== [PASSED] xe_pci ======================
[23:44:42] =================== xe_rtp (2 subtests) ====================
[23:44:42] =============== xe_rtp_process_to_sr_tests ================
[23:44:42] [PASSED] coalesce-same-reg
[23:44:42] [PASSED] no-match-no-add
[23:44:42] [PASSED] match-or
[23:44:42] [PASSED] match-or-xfail
[23:44:42] [PASSED] no-match-no-add-multiple-rules
[23:44:42] [PASSED] two-regs-two-entries
[23:44:42] [PASSED] clr-one-set-other
[23:44:42] [PASSED] set-field
[23:44:42] [PASSED] conflict-duplicate
[23:44:42] [PASSED] conflict-not-disjoint
[23:44:42] [PASSED] conflict-reg-type
[23:44:42] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[23:44:42] ================== xe_rtp_process_tests ===================
[23:44:42] [PASSED] active1
[23:44:42] [PASSED] active2
[23:44:42] [PASSED] active-inactive
[23:44:42] [PASSED] inactive-active
[23:44:42] [PASSED] inactive-1st_or_active-inactive
[23:44:42] [PASSED] inactive-2nd_or_active-inactive
[23:44:42] [PASSED] inactive-last_or_active-inactive
[23:44:42] [PASSED] inactive-no_or_active-inactive
[23:44:42] ============== [PASSED] xe_rtp_process_tests ===============
[23:44:42] ===================== [PASSED] xe_rtp ======================
[23:44:42] ==================== xe_wa (1 subtest) =====================
[23:44:42] ======================== xe_wa_gt =========================
[23:44:42] [PASSED] TIGERLAKE B0
[23:44:42] [PASSED] DG1 A0
[23:44:42] [PASSED] DG1 B0
[23:44:42] [PASSED] ALDERLAKE_S A0
[23:44:42] [PASSED] ALDERLAKE_S B0
[23:44:42] [PASSED] ALDERLAKE_S C0
[23:44:42] [PASSED] ALDERLAKE_S D0
[23:44:42] [PASSED] ALDERLAKE_P A0
[23:44:42] [PASSED] ALDERLAKE_P B0
[23:44:42] [PASSED] ALDERLAKE_P C0
[23:44:42] [PASSED] ALDERLAKE_S RPLS D0
[23:44:42] [PASSED] ALDERLAKE_P RPLU E0
[23:44:42] [PASSED] DG2 G10 C0
[23:44:42] [PASSED] DG2 G11 B1
[23:44:42] [PASSED] DG2 G12 A1
[23:44:42] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[23:44:42] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[23:44:42] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[23:44:42] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[23:44:42] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[23:44:42] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[23:44:42] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[23:44:42] ==================== [PASSED] xe_wa_gt =====================
[23:44:42] ====================== [PASSED] xe_wa ======================
[23:44:42] ============================================================
[23:44:42] Testing complete. Ran 510 tests: passed: 492, skipped: 18
[23:44:42] Elapsed time: 42.199s total, 4.275s configuring, 37.407s building, 0.471s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[23:44:42] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[23:44:44] 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=25
[23:45:13] Starting KUnit Kernel (1/1)...
[23:45:13] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[23:45:13] ============ drm_test_pick_cmdline (2 subtests) ============
[23:45:13] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[23:45:13] =============== drm_test_pick_cmdline_named ===============
[23:45:13] [PASSED] NTSC
[23:45:13] [PASSED] NTSC-J
[23:45:13] [PASSED] PAL
[23:45:13] [PASSED] PAL-M
[23:45:13] =========== [PASSED] drm_test_pick_cmdline_named ===========
[23:45:13] ============== [PASSED] drm_test_pick_cmdline ==============
[23:45:13] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[23:45:13] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[23:45:13] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[23:45:13] =========== drm_validate_clone_mode (2 subtests) ===========
[23:45:13] ============== drm_test_check_in_clone_mode ===============
[23:45:13] [PASSED] in_clone_mode
[23:45:13] [PASSED] not_in_clone_mode
[23:45:13] ========== [PASSED] drm_test_check_in_clone_mode ===========
[23:45:13] =============== drm_test_check_valid_clones ===============
[23:45:13] [PASSED] not_in_clone_mode
[23:45:13] [PASSED] valid_clone
[23:45:13] [PASSED] invalid_clone
[23:45:13] =========== [PASSED] drm_test_check_valid_clones ===========
[23:45:13] ============= [PASSED] drm_validate_clone_mode =============
[23:45:13] ============= drm_validate_modeset (1 subtest) =============
[23:45:13] [PASSED] drm_test_check_connector_changed_modeset
[23:45:13] ============== [PASSED] drm_validate_modeset ===============
[23:45:13] ====== drm_test_bridge_get_current_state (2 subtests) ======
[23:45:13] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[23:45:13] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[23:45:13] ======== [PASSED] drm_test_bridge_get_current_state ========
[23:45:13] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[23:45:13] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[23:45:13] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[23:45:13] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[23:45:13] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[23:45:13] ============== drm_bridge_alloc (2 subtests) ===============
[23:45:13] [PASSED] drm_test_drm_bridge_alloc_basic
[23:45:13] [PASSED] drm_test_drm_bridge_alloc_get_put
[23:45:13] ================ [PASSED] drm_bridge_alloc =================
[23:45:13] ================== drm_buddy (8 subtests) ==================
[23:45:13] [PASSED] drm_test_buddy_alloc_limit
[23:45:13] [PASSED] drm_test_buddy_alloc_optimistic
[23:45:13] [PASSED] drm_test_buddy_alloc_pessimistic
[23:45:13] [PASSED] drm_test_buddy_alloc_pathological
[23:45:13] [PASSED] drm_test_buddy_alloc_contiguous
[23:45:13] [PASSED] drm_test_buddy_alloc_clear
[23:45:13] [PASSED] drm_test_buddy_alloc_range_bias
[23:45:14] [PASSED] drm_test_buddy_fragmentation_performance
[23:45:14] ==================== [PASSED] drm_buddy ====================
[23:45:14] ============= drm_cmdline_parser (40 subtests) =============
[23:45:14] [PASSED] drm_test_cmdline_force_d_only
[23:45:14] [PASSED] drm_test_cmdline_force_D_only_dvi
[23:45:14] [PASSED] drm_test_cmdline_force_D_only_hdmi
[23:45:14] [PASSED] drm_test_cmdline_force_D_only_not_digital
[23:45:14] [PASSED] drm_test_cmdline_force_e_only
[23:45:14] [PASSED] drm_test_cmdline_res
[23:45:14] [PASSED] drm_test_cmdline_res_vesa
[23:45:14] [PASSED] drm_test_cmdline_res_vesa_rblank
[23:45:14] [PASSED] drm_test_cmdline_res_rblank
[23:45:14] [PASSED] drm_test_cmdline_res_bpp
[23:45:14] [PASSED] drm_test_cmdline_res_refresh
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[23:45:14] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[23:45:14] [PASSED] drm_test_cmdline_res_margins_force_on
[23:45:14] [PASSED] drm_test_cmdline_res_vesa_margins
[23:45:14] [PASSED] drm_test_cmdline_name
[23:45:14] [PASSED] drm_test_cmdline_name_bpp
[23:45:14] [PASSED] drm_test_cmdline_name_option
[23:45:14] [PASSED] drm_test_cmdline_name_bpp_option
[23:45:14] [PASSED] drm_test_cmdline_rotate_0
[23:45:14] [PASSED] drm_test_cmdline_rotate_90
[23:45:14] [PASSED] drm_test_cmdline_rotate_180
[23:45:14] [PASSED] drm_test_cmdline_rotate_270
[23:45:14] [PASSED] drm_test_cmdline_hmirror
[23:45:14] [PASSED] drm_test_cmdline_vmirror
[23:45:14] [PASSED] drm_test_cmdline_margin_options
[23:45:14] [PASSED] drm_test_cmdline_multiple_options
[23:45:14] [PASSED] drm_test_cmdline_bpp_extra_and_option
[23:45:14] [PASSED] drm_test_cmdline_extra_and_option
[23:45:14] [PASSED] drm_test_cmdline_freestanding_options
[23:45:14] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[23:45:14] [PASSED] drm_test_cmdline_panel_orientation
[23:45:14] ================ drm_test_cmdline_invalid =================
[23:45:14] [PASSED] margin_only
[23:45:14] [PASSED] interlace_only
[23:45:14] [PASSED] res_missing_x
[23:45:14] [PASSED] res_missing_y
[23:45:14] [PASSED] res_bad_y
[23:45:14] [PASSED] res_missing_y_bpp
[23:45:14] [PASSED] res_bad_bpp
[23:45:14] [PASSED] res_bad_refresh
[23:45:14] [PASSED] res_bpp_refresh_force_on_off
[23:45:14] [PASSED] res_invalid_mode
[23:45:14] [PASSED] res_bpp_wrong_place_mode
[23:45:14] [PASSED] name_bpp_refresh
[23:45:14] [PASSED] name_refresh
[23:45:14] [PASSED] name_refresh_wrong_mode
[23:45:14] [PASSED] name_refresh_invalid_mode
[23:45:14] [PASSED] rotate_multiple
[23:45:14] [PASSED] rotate_invalid_val
[23:45:14] [PASSED] rotate_truncated
[23:45:14] [PASSED] invalid_option
[23:45:14] [PASSED] invalid_tv_option
[23:45:14] [PASSED] truncated_tv_option
[23:45:14] ============ [PASSED] drm_test_cmdline_invalid =============
[23:45:14] =============== drm_test_cmdline_tv_options ===============
[23:45:14] [PASSED] NTSC
[23:45:14] [PASSED] NTSC_443
[23:45:14] [PASSED] NTSC_J
[23:45:14] [PASSED] PAL
[23:45:14] [PASSED] PAL_M
[23:45:14] [PASSED] PAL_N
[23:45:14] [PASSED] SECAM
[23:45:14] [PASSED] MONO_525
[23:45:14] [PASSED] MONO_625
[23:45:14] =========== [PASSED] drm_test_cmdline_tv_options ===========
[23:45:14] =============== [PASSED] drm_cmdline_parser ================
[23:45:14] ========== drmm_connector_hdmi_init (20 subtests) ==========
[23:45:14] [PASSED] drm_test_connector_hdmi_init_valid
[23:45:14] [PASSED] drm_test_connector_hdmi_init_bpc_8
[23:45:14] [PASSED] drm_test_connector_hdmi_init_bpc_10
[23:45:14] [PASSED] drm_test_connector_hdmi_init_bpc_12
[23:45:14] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[23:45:14] [PASSED] drm_test_connector_hdmi_init_bpc_null
[23:45:14] [PASSED] drm_test_connector_hdmi_init_formats_empty
[23:45:14] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[23:45:14] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[23:45:14] [PASSED] supported_formats=0x9 yuv420_allowed=1
[23:45:14] [PASSED] supported_formats=0x9 yuv420_allowed=0
[23:45:14] [PASSED] supported_formats=0x3 yuv420_allowed=1
[23:45:14] [PASSED] supported_formats=0x3 yuv420_allowed=0
[23:45:14] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[23:45:14] [PASSED] drm_test_connector_hdmi_init_null_ddc
[23:45:14] [PASSED] drm_test_connector_hdmi_init_null_product
[23:45:14] [PASSED] drm_test_connector_hdmi_init_null_vendor
[23:45:14] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[23:45:14] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[23:45:14] [PASSED] drm_test_connector_hdmi_init_product_valid
[23:45:14] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[23:45:14] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[23:45:14] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[23:45:14] ========= drm_test_connector_hdmi_init_type_valid =========
[23:45:14] [PASSED] HDMI-A
[23:45:14] [PASSED] HDMI-B
[23:45:14] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[23:45:14] ======== drm_test_connector_hdmi_init_type_invalid ========
[23:45:14] [PASSED] Unknown
[23:45:14] [PASSED] VGA
[23:45:14] [PASSED] DVI-I
[23:45:14] [PASSED] DVI-D
[23:45:14] [PASSED] DVI-A
[23:45:14] [PASSED] Composite
[23:45:14] [PASSED] SVIDEO
[23:45:14] [PASSED] LVDS
[23:45:14] [PASSED] Component
[23:45:14] [PASSED] DIN
[23:45:14] [PASSED] DP
[23:45:14] [PASSED] TV
[23:45:14] [PASSED] eDP
[23:45:14] [PASSED] Virtual
[23:45:14] [PASSED] DSI
[23:45:14] [PASSED] DPI
[23:45:14] [PASSED] Writeback
[23:45:14] [PASSED] SPI
[23:45:14] [PASSED] USB
[23:45:14] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[23:45:14] ============ [PASSED] drmm_connector_hdmi_init =============
[23:45:14] ============= drmm_connector_init (3 subtests) =============
[23:45:14] [PASSED] drm_test_drmm_connector_init
[23:45:14] [PASSED] drm_test_drmm_connector_init_null_ddc
[23:45:14] ========= drm_test_drmm_connector_init_type_valid =========
[23:45:14] [PASSED] Unknown
[23:45:14] [PASSED] VGA
[23:45:14] [PASSED] DVI-I
[23:45:14] [PASSED] DVI-D
[23:45:14] [PASSED] DVI-A
[23:45:14] [PASSED] Composite
[23:45:14] [PASSED] SVIDEO
[23:45:14] [PASSED] LVDS
[23:45:14] [PASSED] Component
[23:45:14] [PASSED] DIN
[23:45:14] [PASSED] DP
[23:45:14] [PASSED] HDMI-A
[23:45:14] [PASSED] HDMI-B
[23:45:14] [PASSED] TV
[23:45:14] [PASSED] eDP
[23:45:14] [PASSED] Virtual
[23:45:14] [PASSED] DSI
[23:45:14] [PASSED] DPI
[23:45:14] [PASSED] Writeback
[23:45:14] [PASSED] SPI
[23:45:14] [PASSED] USB
[23:45:14] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[23:45:14] =============== [PASSED] drmm_connector_init ===============
[23:45:14] ========= drm_connector_dynamic_init (6 subtests) ==========
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_init
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_init_properties
[23:45:14] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[23:45:14] [PASSED] Unknown
[23:45:14] [PASSED] VGA
[23:45:14] [PASSED] DVI-I
[23:45:14] [PASSED] DVI-D
[23:45:14] [PASSED] DVI-A
[23:45:14] [PASSED] Composite
[23:45:14] [PASSED] SVIDEO
[23:45:14] [PASSED] LVDS
[23:45:14] [PASSED] Component
[23:45:14] [PASSED] DIN
[23:45:14] [PASSED] DP
[23:45:14] [PASSED] HDMI-A
[23:45:14] [PASSED] HDMI-B
[23:45:14] [PASSED] TV
[23:45:14] [PASSED] eDP
[23:45:14] [PASSED] Virtual
[23:45:14] [PASSED] DSI
[23:45:14] [PASSED] DPI
[23:45:14] [PASSED] Writeback
[23:45:14] [PASSED] SPI
[23:45:14] [PASSED] USB
[23:45:14] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[23:45:14] ======== drm_test_drm_connector_dynamic_init_name =========
[23:45:14] [PASSED] Unknown
[23:45:14] [PASSED] VGA
[23:45:14] [PASSED] DVI-I
[23:45:14] [PASSED] DVI-D
[23:45:14] [PASSED] DVI-A
[23:45:14] [PASSED] Composite
[23:45:14] [PASSED] SVIDEO
[23:45:14] [PASSED] LVDS
[23:45:14] [PASSED] Component
[23:45:14] [PASSED] DIN
[23:45:14] [PASSED] DP
[23:45:14] [PASSED] HDMI-A
[23:45:14] [PASSED] HDMI-B
[23:45:14] [PASSED] TV
[23:45:14] [PASSED] eDP
[23:45:14] [PASSED] Virtual
[23:45:14] [PASSED] DSI
[23:45:14] [PASSED] DPI
[23:45:14] [PASSED] Writeback
[23:45:14] [PASSED] SPI
[23:45:14] [PASSED] USB
[23:45:14] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[23:45:14] =========== [PASSED] drm_connector_dynamic_init ============
[23:45:14] ==== drm_connector_dynamic_register_early (4 subtests) =====
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[23:45:14] ====== [PASSED] drm_connector_dynamic_register_early =======
[23:45:14] ======= drm_connector_dynamic_register (7 subtests) ========
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[23:45:14] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[23:45:14] ========= [PASSED] drm_connector_dynamic_register ==========
[23:45:14] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[23:45:14] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[23:45:14] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[23:45:14] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[23:45:14] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[23:45:14] ========== drm_test_get_tv_mode_from_name_valid ===========
[23:45:14] [PASSED] NTSC
[23:45:14] [PASSED] NTSC-443
[23:45:14] [PASSED] NTSC-J
[23:45:14] [PASSED] PAL
[23:45:14] [PASSED] PAL-M
[23:45:14] [PASSED] PAL-N
[23:45:14] [PASSED] SECAM
[23:45:14] [PASSED] Mono
[23:45:14] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[23:45:14] [PASSED] drm_test_get_tv_mode_from_name_truncated
[23:45:14] ============ [PASSED] drm_get_tv_mode_from_name ============
[23:45:14] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[23:45:14] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[23:45:14] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[23:45:14] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[23:45:14] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[23:45:14] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[23:45:14] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[23:45:14] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[23:45:14] [PASSED] VIC 96
[23:45:14] [PASSED] VIC 97
[23:45:14] [PASSED] VIC 101
[23:45:14] [PASSED] VIC 102
[23:45:14] [PASSED] VIC 106
[23:45:14] [PASSED] VIC 107
[23:45:14] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[23:45:14] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[23:45:14] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[23:45:14] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[23:45:14] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[23:45:14] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[23:45:14] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[23:45:14] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[23:45:14] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[23:45:14] [PASSED] Automatic
[23:45:14] [PASSED] Full
[23:45:14] [PASSED] Limited 16:235
[23:45:14] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[23:45:14] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[23:45:14] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[23:45:14] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[23:45:14] === drm_test_drm_hdmi_connector_get_output_format_name ====
[23:45:14] [PASSED] RGB
[23:45:14] [PASSED] YUV 4:2:0
[23:45:14] [PASSED] YUV 4:2:2
[23:45:14] [PASSED] YUV 4:4:4
[23:45:14] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[23:45:14] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[23:45:14] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[23:45:14] ============= drm_damage_helper (21 subtests) ==============
[23:45:14] [PASSED] drm_test_damage_iter_no_damage
[23:45:14] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[23:45:14] [PASSED] drm_test_damage_iter_no_damage_src_moved
[23:45:14] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[23:45:14] [PASSED] drm_test_damage_iter_no_damage_not_visible
[23:45:14] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[23:45:14] [PASSED] drm_test_damage_iter_no_damage_no_fb
[23:45:14] [PASSED] drm_test_damage_iter_simple_damage
[23:45:14] [PASSED] drm_test_damage_iter_single_damage
[23:45:14] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[23:45:14] [PASSED] drm_test_damage_iter_single_damage_outside_src
[23:45:14] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[23:45:14] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[23:45:14] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[23:45:14] [PASSED] drm_test_damage_iter_single_damage_src_moved
[23:45:14] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[23:45:14] [PASSED] drm_test_damage_iter_damage
[23:45:14] [PASSED] drm_test_damage_iter_damage_one_intersect
[23:45:14] [PASSED] drm_test_damage_iter_damage_one_outside
[23:45:14] [PASSED] drm_test_damage_iter_damage_src_moved
[23:45:14] [PASSED] drm_test_damage_iter_damage_not_visible
[23:45:14] ================ [PASSED] drm_damage_helper ================
[23:45:14] ============== drm_dp_mst_helper (3 subtests) ==============
[23:45:14] ============== drm_test_dp_mst_calc_pbn_mode ==============
[23:45:14] [PASSED] Clock 154000 BPP 30 DSC disabled
[23:45:14] [PASSED] Clock 234000 BPP 30 DSC disabled
[23:45:14] [PASSED] Clock 297000 BPP 24 DSC disabled
[23:45:14] [PASSED] Clock 332880 BPP 24 DSC enabled
[23:45:14] [PASSED] Clock 324540 BPP 24 DSC enabled
[23:45:14] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[23:45:14] ============== drm_test_dp_mst_calc_pbn_div ===============
[23:45:14] [PASSED] Link rate 2000000 lane count 4
[23:45:14] [PASSED] Link rate 2000000 lane count 2
[23:45:14] [PASSED] Link rate 2000000 lane count 1
[23:45:14] [PASSED] Link rate 1350000 lane count 4
[23:45:14] [PASSED] Link rate 1350000 lane count 2
[23:45:14] [PASSED] Link rate 1350000 lane count 1
[23:45:14] [PASSED] Link rate 1000000 lane count 4
[23:45:14] [PASSED] Link rate 1000000 lane count 2
[23:45:14] [PASSED] Link rate 1000000 lane count 1
[23:45:14] [PASSED] Link rate 810000 lane count 4
[23:45:14] [PASSED] Link rate 810000 lane count 2
[23:45:14] [PASSED] Link rate 810000 lane count 1
[23:45:14] [PASSED] Link rate 540000 lane count 4
[23:45:14] [PASSED] Link rate 540000 lane count 2
[23:45:14] [PASSED] Link rate 540000 lane count 1
[23:45:14] [PASSED] Link rate 270000 lane count 4
[23:45:14] [PASSED] Link rate 270000 lane count 2
[23:45:14] [PASSED] Link rate 270000 lane count 1
[23:45:14] [PASSED] Link rate 162000 lane count 4
[23:45:14] [PASSED] Link rate 162000 lane count 2
[23:45:14] [PASSED] Link rate 162000 lane count 1
[23:45:14] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[23:45:14] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[23:45:14] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[23:45:14] [PASSED] DP_POWER_UP_PHY with port number
[23:45:14] [PASSED] DP_POWER_DOWN_PHY with port number
[23:45:14] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[23:45:14] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[23:45:14] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[23:45:14] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[23:45:14] [PASSED] DP_QUERY_PAYLOAD with port number
[23:45:14] [PASSED] DP_QUERY_PAYLOAD with VCPI
[23:45:14] [PASSED] DP_REMOTE_DPCD_READ with port number
[23:45:14] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[23:45:14] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[23:45:14] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[23:45:14] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[23:45:14] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[23:45:14] [PASSED] DP_REMOTE_I2C_READ with port number
[23:45:14] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[23:45:14] [PASSED] DP_REMOTE_I2C_READ with transactions array
[23:45:14] [PASSED] DP_REMOTE_I2C_WRITE with port number
[23:45:14] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[23:45:14] [PASSED] DP_REMOTE_I2C_WRITE with data array
[23:45:14] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[23:45:14] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[23:45:14] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[23:45:14] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[23:45:14] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[23:45:14] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[23:45:14] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[23:45:14] ================ [PASSED] drm_dp_mst_helper ================
[23:45:14] ================== drm_exec (7 subtests) ===================
[23:45:14] [PASSED] sanitycheck
[23:45:14] [PASSED] test_lock
[23:45:14] [PASSED] test_lock_unlock
[23:45:14] [PASSED] test_duplicates
[23:45:14] [PASSED] test_prepare
[23:45:14] [PASSED] test_prepare_array
[23:45:14] [PASSED] test_multiple_loops
[23:45:14] ==================== [PASSED] drm_exec =====================
[23:45:14] =========== drm_format_helper_test (17 subtests) ===========
[23:45:14] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[23:45:14] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[23:45:14] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[23:45:14] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[23:45:14] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[23:45:14] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[23:45:14] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[23:45:14] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[23:45:14] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[23:45:14] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[23:45:14] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[23:45:14] ============== drm_test_fb_xrgb8888_to_mono ===============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[23:45:14] ==================== drm_test_fb_swab =====================
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ================ [PASSED] drm_test_fb_swab =================
[23:45:14] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[23:45:14] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[23:45:14] [PASSED] single_pixel_source_buffer
[23:45:14] [PASSED] single_pixel_clip_rectangle
[23:45:14] [PASSED] well_known_colors
[23:45:14] [PASSED] destination_pitch
[23:45:14] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[23:45:14] ================= drm_test_fb_clip_offset =================
[23:45:14] [PASSED] pass through
[23:45:14] [PASSED] horizontal offset
[23:45:14] [PASSED] vertical offset
[23:45:14] [PASSED] horizontal and vertical offset
[23:45:14] [PASSED] horizontal offset (custom pitch)
[23:45:14] [PASSED] vertical offset (custom pitch)
[23:45:14] [PASSED] horizontal and vertical offset (custom pitch)
[23:45:14] ============= [PASSED] drm_test_fb_clip_offset =============
[23:45:14] =================== drm_test_fb_memcpy ====================
[23:45:14] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[23:45:14] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[23:45:14] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[23:45:14] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[23:45:14] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[23:45:14] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[23:45:14] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[23:45:14] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[23:45:14] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[23:45:14] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[23:45:14] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[23:45:14] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[23:45:14] =============== [PASSED] drm_test_fb_memcpy ================
[23:45:14] ============= [PASSED] drm_format_helper_test ==============
[23:45:14] ================= drm_format (18 subtests) =================
[23:45:14] [PASSED] drm_test_format_block_width_invalid
[23:45:14] [PASSED] drm_test_format_block_width_one_plane
[23:45:14] [PASSED] drm_test_format_block_width_two_plane
[23:45:14] [PASSED] drm_test_format_block_width_three_plane
[23:45:14] [PASSED] drm_test_format_block_width_tiled
[23:45:14] [PASSED] drm_test_format_block_height_invalid
[23:45:14] [PASSED] drm_test_format_block_height_one_plane
[23:45:14] [PASSED] drm_test_format_block_height_two_plane
[23:45:14] [PASSED] drm_test_format_block_height_three_plane
[23:45:14] [PASSED] drm_test_format_block_height_tiled
[23:45:14] [PASSED] drm_test_format_min_pitch_invalid
[23:45:14] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[23:45:14] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[23:45:14] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[23:45:14] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[23:45:14] [PASSED] drm_test_format_min_pitch_two_plane
[23:45:14] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[23:45:14] [PASSED] drm_test_format_min_pitch_tiled
[23:45:14] =================== [PASSED] drm_format ====================
[23:45:14] ============== drm_framebuffer (10 subtests) ===============
[23:45:14] ========== drm_test_framebuffer_check_src_coords ==========
[23:45:14] [PASSED] Success: source fits into fb
[23:45:14] [PASSED] Fail: overflowing fb with x-axis coordinate
[23:45:14] [PASSED] Fail: overflowing fb with y-axis coordinate
[23:45:14] [PASSED] Fail: overflowing fb with source width
[23:45:14] [PASSED] Fail: overflowing fb with source height
[23:45:14] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[23:45:14] [PASSED] drm_test_framebuffer_cleanup
[23:45:14] =============== drm_test_framebuffer_create ===============
[23:45:14] [PASSED] ABGR8888 normal sizes
[23:45:14] [PASSED] ABGR8888 max sizes
[23:45:14] [PASSED] ABGR8888 pitch greater than min required
[23:45:14] [PASSED] ABGR8888 pitch less than min required
[23:45:14] [PASSED] ABGR8888 Invalid width
[23:45:14] [PASSED] ABGR8888 Invalid buffer handle
[23:45:14] [PASSED] No pixel format
[23:45:14] [PASSED] ABGR8888 Width 0
[23:45:14] [PASSED] ABGR8888 Height 0
[23:45:14] [PASSED] ABGR8888 Out of bound height * pitch combination
[23:45:14] [PASSED] ABGR8888 Large buffer offset
[23:45:14] [PASSED] ABGR8888 Buffer offset for inexistent plane
[23:45:14] [PASSED] ABGR8888 Invalid flag
[23:45:14] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[23:45:14] [PASSED] ABGR8888 Valid buffer modifier
[23:45:14] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[23:45:14] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[23:45:14] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[23:45:14] [PASSED] NV12 Normal sizes
[23:45:14] [PASSED] NV12 Max sizes
[23:45:14] [PASSED] NV12 Invalid pitch
[23:45:14] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[23:45:14] [PASSED] NV12 different modifier per-plane
[23:45:14] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[23:45:14] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[23:45:14] [PASSED] NV12 Modifier for inexistent plane
[23:45:14] [PASSED] NV12 Handle for inexistent plane
[23:45:14] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[23:45:14] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[23:45:14] [PASSED] YVU420 Normal sizes
[23:45:14] [PASSED] YVU420 Max sizes
[23:45:14] [PASSED] YVU420 Invalid pitch
[23:45:14] [PASSED] YVU420 Different pitches
[23:45:14] [PASSED] YVU420 Different buffer offsets/pitches
[23:45:14] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[23:45:14] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[23:45:14] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[23:45:14] [PASSED] YVU420 Valid modifier
[23:45:14] [PASSED] YVU420 Different modifiers per plane
[23:45:14] [PASSED] YVU420 Modifier for inexistent plane
[23:45:14] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[23:45:14] [PASSED] X0L2 Normal sizes
[23:45:14] [PASSED] X0L2 Max sizes
[23:45:14] [PASSED] X0L2 Invalid pitch
[23:45:14] [PASSED] X0L2 Pitch greater than minimum required
[23:45:14] [PASSED] X0L2 Handle for inexistent plane
[23:45:14] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[23:45:14] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[23:45:14] [PASSED] X0L2 Valid modifier
[23:45:14] [PASSED] X0L2 Modifier for inexistent plane
[23:45:14] =========== [PASSED] drm_test_framebuffer_create ===========
[23:45:14] [PASSED] drm_test_framebuffer_free
[23:45:14] [PASSED] drm_test_framebuffer_init
[23:45:14] [PASSED] drm_test_framebuffer_init_bad_format
[23:45:14] [PASSED] drm_test_framebuffer_init_dev_mismatch
[23:45:14] [PASSED] drm_test_framebuffer_lookup
[23:45:14] [PASSED] drm_test_framebuffer_lookup_inexistent
[23:45:14] [PASSED] drm_test_framebuffer_modifiers_not_supported
[23:45:14] ================= [PASSED] drm_framebuffer =================
[23:45:14] ================ drm_gem_shmem (8 subtests) ================
[23:45:14] [PASSED] drm_gem_shmem_test_obj_create
[23:45:14] [PASSED] drm_gem_shmem_test_obj_create_private
[23:45:14] [PASSED] drm_gem_shmem_test_pin_pages
[23:45:14] [PASSED] drm_gem_shmem_test_vmap
[23:45:14] [PASSED] drm_gem_shmem_test_get_pages_sgt
[23:45:14] [PASSED] drm_gem_shmem_test_get_sg_table
[23:45:14] [PASSED] drm_gem_shmem_test_madvise
[23:45:14] [PASSED] drm_gem_shmem_test_purge
[23:45:14] ================== [PASSED] drm_gem_shmem ==================
[23:45:14] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[23:45:14] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[23:45:14] [PASSED] Automatic
[23:45:14] [PASSED] Full
[23:45:14] [PASSED] Limited 16:235
[23:45:14] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[23:45:14] [PASSED] drm_test_check_disable_connector
[23:45:14] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[23:45:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[23:45:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[23:45:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[23:45:14] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[23:45:14] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[23:45:14] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[23:45:14] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[23:45:14] [PASSED] drm_test_check_output_bpc_dvi
[23:45:14] [PASSED] drm_test_check_output_bpc_format_vic_1
[23:45:14] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[23:45:14] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[23:45:14] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[23:45:14] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[23:45:14] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[23:45:14] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[23:45:14] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[23:45:14] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[23:45:14] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[23:45:14] [PASSED] drm_test_check_broadcast_rgb_value
[23:45:14] [PASSED] drm_test_check_bpc_8_value
[23:45:14] [PASSED] drm_test_check_bpc_10_value
[23:45:14] [PASSED] drm_test_check_bpc_12_value
[23:45:14] [PASSED] drm_test_check_format_value
[23:45:14] [PASSED] drm_test_check_tmds_char_value
[23:45:14] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[23:45:14] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[23:45:14] [PASSED] drm_test_check_mode_valid
[23:45:14] [PASSED] drm_test_check_mode_valid_reject
[23:45:14] [PASSED] drm_test_check_mode_valid_reject_rate
[23:45:14] [PASSED] drm_test_check_mode_valid_reject_max_clock
[23:45:14] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[23:45:14] ================= drm_managed (2 subtests) =================
[23:45:14] [PASSED] drm_test_managed_release_action
[23:45:14] [PASSED] drm_test_managed_run_action
[23:45:14] =================== [PASSED] drm_managed ===================
[23:45:14] =================== drm_mm (6 subtests) ====================
[23:45:14] [PASSED] drm_test_mm_init
[23:45:14] [PASSED] drm_test_mm_debug
[23:45:14] [PASSED] drm_test_mm_align32
[23:45:14] [PASSED] drm_test_mm_align64
[23:45:14] [PASSED] drm_test_mm_lowest
[23:45:14] [PASSED] drm_test_mm_highest
[23:45:14] ===================== [PASSED] drm_mm ======================
[23:45:14] ============= drm_modes_analog_tv (5 subtests) =============
[23:45:14] [PASSED] drm_test_modes_analog_tv_mono_576i
[23:45:14] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[23:45:14] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[23:45:14] [PASSED] drm_test_modes_analog_tv_pal_576i
[23:45:14] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[23:45:14] =============== [PASSED] drm_modes_analog_tv ===============
[23:45:14] ============== drm_plane_helper (2 subtests) ===============
[23:45:14] =============== drm_test_check_plane_state ================
[23:45:14] [PASSED] clipping_simple
[23:45:14] [PASSED] clipping_rotate_reflect
[23:45:14] [PASSED] positioning_simple
[23:45:14] [PASSED] upscaling
[23:45:14] [PASSED] downscaling
[23:45:14] [PASSED] rounding1
[23:45:14] [PASSED] rounding2
[23:45:14] [PASSED] rounding3
[23:45:14] [PASSED] rounding4
[23:45:14] =========== [PASSED] drm_test_check_plane_state ============
[23:45:14] =========== drm_test_check_invalid_plane_state ============
[23:45:14] [PASSED] positioning_invalid
[23:45:14] [PASSED] upscaling_invalid
[23:45:14] [PASSED] downscaling_invalid
[23:45:14] ======= [PASSED] drm_test_check_invalid_plane_state ========
[23:45:14] ================ [PASSED] drm_plane_helper =================
[23:45:14] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[23:45:14] ====== drm_test_connector_helper_tv_get_modes_check =======
[23:45:14] [PASSED] None
[23:45:14] [PASSED] PAL
[23:45:14] [PASSED] NTSC
[23:45:14] [PASSED] Both, NTSC Default
[23:45:14] [PASSED] Both, PAL Default
[23:45:14] [PASSED] Both, NTSC Default, with PAL on command-line
[23:45:14] [PASSED] Both, PAL Default, with NTSC on command-line
[23:45:14] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[23:45:14] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[23:45:14] ================== drm_rect (9 subtests) ===================
[23:45:14] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[23:45:14] [PASSED] drm_test_rect_clip_scaled_not_clipped
[23:45:14] [PASSED] drm_test_rect_clip_scaled_clipped
[23:45:14] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[23:45:14] ================= drm_test_rect_intersect =================
[23:45:14] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[23:45:14] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[23:45:14] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[23:45:14] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[23:45:14] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[23:45:14] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[23:45:14] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[23:45:14] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[23:45:14] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[23:45:14] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[23:45:14] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[23:45:14] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[23:45:14] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[23:45:14] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[23:45:14] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[23:45:14] ============= [PASSED] drm_test_rect_intersect =============
[23:45:14] ================ drm_test_rect_calc_hscale ================
[23:45:14] [PASSED] normal use
[23:45:14] [PASSED] out of max range
[23:45:14] [PASSED] out of min range
[23:45:14] [PASSED] zero dst
[23:45:14] [PASSED] negative src
[23:45:14] [PASSED] negative dst
[23:45:14] ============ [PASSED] drm_test_rect_calc_hscale ============
[23:45:14] ================ drm_test_rect_calc_vscale ================
[23:45:14] [PASSED] normal use
stty: 'standard input': Inappropriate ioctl for device
[23:45:14] [PASSED] out of max range
[23:45:14] [PASSED] out of min range
[23:45:14] [PASSED] zero dst
[23:45:14] [PASSED] negative src
[23:45:14] [PASSED] negative dst
[23:45:14] ============ [PASSED] drm_test_rect_calc_vscale ============
[23:45:14] ================== drm_test_rect_rotate ===================
[23:45:14] [PASSED] reflect-x
[23:45:14] [PASSED] reflect-y
[23:45:14] [PASSED] rotate-0
[23:45:14] [PASSED] rotate-90
[23:45:14] [PASSED] rotate-180
[23:45:14] [PASSED] rotate-270
[23:45:14] ============== [PASSED] drm_test_rect_rotate ===============
[23:45:14] ================ drm_test_rect_rotate_inv =================
[23:45:14] [PASSED] reflect-x
[23:45:14] [PASSED] reflect-y
[23:45:14] [PASSED] rotate-0
[23:45:14] [PASSED] rotate-90
[23:45:14] [PASSED] rotate-180
[23:45:14] [PASSED] rotate-270
[23:45:14] ============ [PASSED] drm_test_rect_rotate_inv =============
[23:45:14] ==================== [PASSED] drm_rect =====================
[23:45:14] ============ drm_sysfb_modeset_test (1 subtest) ============
[23:45:14] ============ drm_test_sysfb_build_fourcc_list =============
[23:45:14] [PASSED] no native formats
[23:45:14] [PASSED] XRGB8888 as native format
[23:45:14] [PASSED] remove duplicates
[23:45:14] [PASSED] convert alpha formats
[23:45:14] [PASSED] random formats
[23:45:14] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[23:45:14] ============= [PASSED] drm_sysfb_modeset_test ==============
[23:45:14] ================== drm_fixp (2 subtests) ===================
[23:45:14] [PASSED] drm_test_int2fixp
[23:45:14] [PASSED] drm_test_sm2fixp
[23:45:14] ==================== [PASSED] drm_fixp =====================
[23:45:14] ============================================================
[23:45:14] Testing complete. Ran 624 tests: passed: 624
[23:45:14] Elapsed time: 31.798s total, 1.620s configuring, 29.661s building, 0.465s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[23:45:14] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[23:45:15] 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=25
[23:45:24] Starting KUnit Kernel (1/1)...
[23:45:24] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[23:45:25] ================= ttm_device (5 subtests) ==================
[23:45:25] [PASSED] ttm_device_init_basic
[23:45:25] [PASSED] ttm_device_init_multiple
[23:45:25] [PASSED] ttm_device_fini_basic
[23:45:25] [PASSED] ttm_device_init_no_vma_man
[23:45:25] ================== ttm_device_init_pools ==================
[23:45:25] [PASSED] No DMA allocations, no DMA32 required
[23:45:25] [PASSED] DMA allocations, DMA32 required
[23:45:25] [PASSED] No DMA allocations, DMA32 required
[23:45:25] [PASSED] DMA allocations, no DMA32 required
[23:45:25] ============== [PASSED] ttm_device_init_pools ==============
[23:45:25] =================== [PASSED] ttm_device ====================
[23:45:25] ================== ttm_pool (8 subtests) ===================
[23:45:25] ================== ttm_pool_alloc_basic ===================
[23:45:25] [PASSED] One page
[23:45:25] [PASSED] More than one page
[23:45:25] [PASSED] Above the allocation limit
[23:45:25] [PASSED] One page, with coherent DMA mappings enabled
[23:45:25] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[23:45:25] ============== [PASSED] ttm_pool_alloc_basic ===============
[23:45:25] ============== ttm_pool_alloc_basic_dma_addr ==============
[23:45:25] [PASSED] One page
[23:45:25] [PASSED] More than one page
[23:45:25] [PASSED] Above the allocation limit
[23:45:25] [PASSED] One page, with coherent DMA mappings enabled
[23:45:25] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[23:45:25] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[23:45:25] [PASSED] ttm_pool_alloc_order_caching_match
[23:45:25] [PASSED] ttm_pool_alloc_caching_mismatch
[23:45:25] [PASSED] ttm_pool_alloc_order_mismatch
[23:45:25] [PASSED] ttm_pool_free_dma_alloc
[23:45:25] [PASSED] ttm_pool_free_no_dma_alloc
[23:45:25] [PASSED] ttm_pool_fini_basic
[23:45:25] ==================== [PASSED] ttm_pool =====================
[23:45:25] ================ ttm_resource (8 subtests) =================
[23:45:25] ================= ttm_resource_init_basic =================
[23:45:25] [PASSED] Init resource in TTM_PL_SYSTEM
[23:45:25] [PASSED] Init resource in TTM_PL_VRAM
[23:45:25] [PASSED] Init resource in a private placement
[23:45:25] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[23:45:25] ============= [PASSED] ttm_resource_init_basic =============
[23:45:25] [PASSED] ttm_resource_init_pinned
[23:45:25] [PASSED] ttm_resource_fini_basic
[23:45:25] [PASSED] ttm_resource_manager_init_basic
[23:45:25] [PASSED] ttm_resource_manager_usage_basic
[23:45:25] [PASSED] ttm_resource_manager_set_used_basic
[23:45:25] [PASSED] ttm_sys_man_alloc_basic
[23:45:25] [PASSED] ttm_sys_man_free_basic
[23:45:25] ================== [PASSED] ttm_resource ===================
[23:45:25] =================== ttm_tt (15 subtests) ===================
[23:45:25] ==================== ttm_tt_init_basic ====================
[23:45:25] [PASSED] Page-aligned size
[23:45:25] [PASSED] Extra pages requested
[23:45:25] ================ [PASSED] ttm_tt_init_basic ================
[23:45:25] [PASSED] ttm_tt_init_misaligned
[23:45:25] [PASSED] ttm_tt_fini_basic
[23:45:25] [PASSED] ttm_tt_fini_sg
[23:45:25] [PASSED] ttm_tt_fini_shmem
[23:45:25] [PASSED] ttm_tt_create_basic
[23:45:25] [PASSED] ttm_tt_create_invalid_bo_type
[23:45:25] [PASSED] ttm_tt_create_ttm_exists
[23:45:25] [PASSED] ttm_tt_create_failed
[23:45:25] [PASSED] ttm_tt_destroy_basic
[23:45:25] [PASSED] ttm_tt_populate_null_ttm
[23:45:25] [PASSED] ttm_tt_populate_populated_ttm
[23:45:25] [PASSED] ttm_tt_unpopulate_basic
[23:45:25] [PASSED] ttm_tt_unpopulate_empty_ttm
[23:45:25] [PASSED] ttm_tt_swapin_basic
[23:45:25] ===================== [PASSED] ttm_tt ======================
[23:45:25] =================== ttm_bo (14 subtests) ===================
[23:45:25] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[23:45:25] [PASSED] Cannot be interrupted and sleeps
[23:45:25] [PASSED] Cannot be interrupted, locks straight away
[23:45:25] [PASSED] Can be interrupted, sleeps
[23:45:25] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[23:45:25] [PASSED] ttm_bo_reserve_locked_no_sleep
[23:45:25] [PASSED] ttm_bo_reserve_no_wait_ticket
[23:45:25] [PASSED] ttm_bo_reserve_double_resv
[23:45:25] [PASSED] ttm_bo_reserve_interrupted
[23:45:25] [PASSED] ttm_bo_reserve_deadlock
[23:45:25] [PASSED] ttm_bo_unreserve_basic
[23:45:25] [PASSED] ttm_bo_unreserve_pinned
[23:45:25] [PASSED] ttm_bo_unreserve_bulk
[23:45:25] [PASSED] ttm_bo_fini_basic
[23:45:25] [PASSED] ttm_bo_fini_shared_resv
[23:45:25] [PASSED] ttm_bo_pin_basic
[23:45:25] [PASSED] ttm_bo_pin_unpin_resource
[23:45:25] [PASSED] ttm_bo_multiple_pin_one_unpin
[23:45:25] ===================== [PASSED] ttm_bo ======================
[23:45:25] ============== ttm_bo_validate (21 subtests) ===============
[23:45:25] ============== ttm_bo_init_reserved_sys_man ===============
[23:45:25] [PASSED] Buffer object for userspace
[23:45:25] [PASSED] Kernel buffer object
[23:45:25] [PASSED] Shared buffer object
[23:45:25] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[23:45:25] ============== ttm_bo_init_reserved_mock_man ==============
[23:45:25] [PASSED] Buffer object for userspace
[23:45:25] [PASSED] Kernel buffer object
[23:45:25] [PASSED] Shared buffer object
[23:45:25] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[23:45:25] [PASSED] ttm_bo_init_reserved_resv
[23:45:25] ================== ttm_bo_validate_basic ==================
[23:45:25] [PASSED] Buffer object for userspace
[23:45:25] [PASSED] Kernel buffer object
[23:45:25] [PASSED] Shared buffer object
[23:45:25] ============== [PASSED] ttm_bo_validate_basic ==============
[23:45:25] [PASSED] ttm_bo_validate_invalid_placement
[23:45:25] ============= ttm_bo_validate_same_placement ==============
[23:45:25] [PASSED] System manager
[23:45:25] [PASSED] VRAM manager
[23:45:25] ========= [PASSED] ttm_bo_validate_same_placement ==========
[23:45:25] [PASSED] ttm_bo_validate_failed_alloc
[23:45:25] [PASSED] ttm_bo_validate_pinned
[23:45:25] [PASSED] ttm_bo_validate_busy_placement
[23:45:25] ================ ttm_bo_validate_multihop =================
[23:45:25] [PASSED] Buffer object for userspace
[23:45:25] [PASSED] Kernel buffer object
[23:45:25] [PASSED] Shared buffer object
[23:45:25] ============ [PASSED] ttm_bo_validate_multihop =============
[23:45:25] ========== ttm_bo_validate_no_placement_signaled ==========
[23:45:25] [PASSED] Buffer object in system domain, no page vector
[23:45:25] [PASSED] Buffer object in system domain with an existing page vector
[23:45:25] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[23:45:25] ======== ttm_bo_validate_no_placement_not_signaled ========
[23:45:25] [PASSED] Buffer object for userspace
[23:45:25] [PASSED] Kernel buffer object
[23:45:25] [PASSED] Shared buffer object
[23:45:25] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[23:45:25] [PASSED] ttm_bo_validate_move_fence_signaled
[23:45:25] ========= ttm_bo_validate_move_fence_not_signaled =========
[23:45:25] [PASSED] Waits for GPU
[23:45:25] [PASSED] Tries to lock straight away
[23:45:25] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[23:45:25] [PASSED] ttm_bo_validate_happy_evict
[23:45:25] [PASSED] ttm_bo_validate_all_pinned_evict
[23:45:25] [PASSED] ttm_bo_validate_allowed_only_evict
[23:45:25] [PASSED] ttm_bo_validate_deleted_evict
[23:45:25] [PASSED] ttm_bo_validate_busy_domain_evict
[23:45:25] [PASSED] ttm_bo_validate_evict_gutting
[23:45:25] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[23:45:25] ================= [PASSED] ttm_bo_validate =================
[23:45:25] ============================================================
[23:45:25] Testing complete. Ran 101 tests: passed: 101
[23:45:25] Elapsed time: 10.894s total, 1.607s configuring, 9.071s building, 0.185s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 14+ messages in thread* ✓ Xe.CI.BAT: success for drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
` (5 preceding siblings ...)
2025-12-01 23:45 ` ✓ CI.KUnit: success " Patchwork
@ 2025-12-02 0:48 ` Patchwork
2025-12-02 4:45 ` ✗ Xe.CI.Full: failure " Patchwork
7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2025-12-02 0:48 UTC (permalink / raw)
To: Jonathan Cavitt; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1412 bytes --]
== Series Details ==
Series: drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
URL : https://patchwork.freedesktop.org/series/158316/
State : success
== Summary ==
CI Bug Log - changes from xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65_BAT -> xe-pw-158316v1_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-158316v1_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_waitfence@reltime:
- bat-dg2-oem2: [PASS][1] -> [FAIL][2] ([Intel XE#6520])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/bat-dg2-oem2/igt@xe_waitfence@reltime.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/bat-dg2-oem2/igt@xe_waitfence@reltime.html
[Intel XE#6520]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6520
Build changes
-------------
* Linux: xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65 -> xe-pw-158316v1
IGT_8647: 8647
xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65: 639f325d8cbdc690de963db2fe5840444ac7ea65
xe-pw-158316v1: 158316v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/index.html
[-- Attachment #2: Type: text/html, Size: 1977 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread* ✗ Xe.CI.Full: failure for drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
2025-12-01 17:44 [PATCH v27 0/4] drm/xe/xe_vm: Implement xe_vm_get_property_ioctl Jonathan Cavitt
` (6 preceding siblings ...)
2025-12-02 0:48 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-12-02 4:45 ` Patchwork
7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2025-12-02 4:45 UTC (permalink / raw)
To: Jonathan Cavitt; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 53964 bytes --]
== Series Details ==
Series: drm/xe/xe_vm: Implement xe_vm_get_property_ioctl
URL : https://patchwork.freedesktop.org/series/158316/
State : failure
== Summary ==
CI Bug Log - changes from xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65_FULL -> xe-pw-158316v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-158316v1_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-158316v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-158316v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_pmu@engine-activity-single-load:
- shard-dg2-set2: [PASS][1] -> [FAIL][2] +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-dg2-464/igt@xe_pmu@engine-activity-single-load.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-463/igt@xe_pmu@engine-activity-single-load.html
Known issues
------------
Here are the changes found in xe-pw-158316v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
- shard-adlp: NOTRUN -> [SKIP][3] ([Intel XE#1124]) +6 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][4] ([Intel XE#316]) +1 other test skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-32bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#1124]) +2 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_big_fb@y-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-adlp: [PASS][6] -> [FAIL][7] ([Intel XE#1231])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-addfb:
- shard-adlp: NOTRUN -> [SKIP][8] ([Intel XE#619])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_big_fb@yf-tiled-addfb.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-dg2-set2: NOTRUN -> [SKIP][9] ([Intel XE#1124]) +2 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
- shard-adlp: NOTRUN -> [SKIP][10] ([Intel XE#2191])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
- shard-dg2-set2: NOTRUN -> [SKIP][11] ([Intel XE#2191])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-1-displays-2560x1440p:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#367])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html
* igt@kms_bw@linear-tiling-3-displays-1920x1080p:
- shard-adlp: NOTRUN -> [SKIP][13] ([Intel XE#367])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_bw@linear-tiling-3-displays-1920x1080p.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2887]) +1 other test skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][15] ([Intel XE#787]) +29 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-a-dp-4:
- shard-dg2-set2: NOTRUN -> [ABORT][16] ([Intel XE#6675]) +3 other tests abort
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-464/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-a-dp-4.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][17] ([Intel XE#2907]) +1 other test skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
- shard-adlp: NOTRUN -> [SKIP][18] ([Intel XE#455] / [Intel XE#787]) +19 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][19] ([Intel XE#787]) +6 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-b-dp-4.html
* igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][20] ([Intel XE#455] / [Intel XE#787]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-d-dp-4.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-adlp: NOTRUN -> [SKIP][21] ([Intel XE#4418])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-8/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_chamelium_color@ctm-blue-to-red:
- shard-adlp: NOTRUN -> [SKIP][22] ([Intel XE#306])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@kms_chamelium_color@ctm-blue-to-red.html
* igt@kms_chamelium_frames@hdmi-crc-single:
- shard-adlp: NOTRUN -> [SKIP][23] ([Intel XE#373]) +5 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@kms_chamelium_frames@hdmi-crc-single.html
* igt@kms_chamelium_hpd@dp-hpd-storm-disable:
- shard-dg2-set2: NOTRUN -> [SKIP][24] ([Intel XE#373])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html
* igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#2252]) +1 other test skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html
* igt@kms_chamelium_sharpness_filter@filter-basic:
- shard-adlp: NOTRUN -> [SKIP][26] ([Intel XE#6507])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-1/igt@kms_chamelium_sharpness_filter@filter-basic.html
* igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_dec:
- shard-adlp: NOTRUN -> [SKIP][27] ([Intel XE#6704]) +2 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_dec.html
* igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_dec_enc:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#6704]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_dec_enc.html
* igt@kms_colorop@plane-xr24-xr24-pq_125_eotf:
- shard-dg2-set2: NOTRUN -> [SKIP][29] ([Intel XE#6704]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_colorop@plane-xr24-xr24-pq_125_eotf.html
* igt@kms_content_protection@uevent:
- shard-bmg: NOTRUN -> [FAIL][30] ([Intel XE#6707]) +1 other test fail
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-onscreen-32x32:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2320])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_cursor_crc@cursor-onscreen-32x32.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-adlp: NOTRUN -> [SKIP][32] ([Intel XE#309]) +4 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size:
- shard-bmg: [PASS][33] -> [SKIP][34] ([Intel XE#2291]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-adlp: NOTRUN -> [SKIP][35] ([Intel XE#323])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-adlp: NOTRUN -> [SKIP][36] ([Intel XE#4356])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-8/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dsc@dsc-basic:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2244])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_dsc@dsc-basic.html
* igt@kms_dsc@dsc-with-bpc:
- shard-dg2-set2: NOTRUN -> [SKIP][38] ([Intel XE#455]) +5 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_dsc@dsc-with-bpc.html
* igt@kms_feature_discovery@chamelium:
- shard-adlp: NOTRUN -> [SKIP][39] ([Intel XE#701])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@display-2x:
- shard-adlp: NOTRUN -> [SKIP][40] ([Intel XE#702])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@kms_feature_discovery@display-2x.html
* igt@kms_feature_discovery@display-4x:
- shard-adlp: NOTRUN -> [SKIP][41] ([Intel XE#1138])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-1/igt@kms_feature_discovery@display-4x.html
* igt@kms_feature_discovery@dp-mst:
- shard-adlp: NOTRUN -> [SKIP][42] ([Intel XE#1137])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_feature_discovery@dp-mst.html
* igt@kms_flip@2x-absolute-wf_vblank-interruptible:
- shard-adlp: NOTRUN -> [SKIP][43] ([Intel XE#310])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-1/igt@kms_flip@2x-absolute-wf_vblank-interruptible.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible:
- shard-bmg: [PASS][44] -> [SKIP][45] ([Intel XE#2316]) +1 other test skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html
* igt@kms_flip@blocking-wf_vblank:
- shard-bmg: [PASS][46] -> [FAIL][47] ([Intel XE#3098]) +1 other test fail
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-6/igt@kms_flip@blocking-wf_vblank.html
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_flip@blocking-wf_vblank.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#2293]) +2 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#2293] / [Intel XE#2380]) +2 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-dg2-set2: NOTRUN -> [SKIP][50] ([Intel XE#651]) +4 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
- shard-adlp: NOTRUN -> [SKIP][51] ([Intel XE#651]) +5 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-8/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#4141]) +2 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][53] ([Intel XE#656]) +22 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-pri-indfb-multidraw:
- shard-bmg: NOTRUN -> [SKIP][54] ([Intel XE#2312]) +1 other test skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#2311]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][56] ([Intel XE#6312]) +4 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff:
- shard-adlp: NOTRUN -> [SKIP][57] ([Intel XE#653]) +6 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-render:
- shard-dg2-set2: NOTRUN -> [SKIP][58] ([Intel XE#6312])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][59] ([Intel XE#653]) +6 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][60] ([Intel XE#2313]) +3 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-bmg: [PASS][61] -> [ABORT][62] ([Intel XE#6662]) +2 other tests abort
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-4/igt@kms_hdr@bpc-switch-dpms.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-edp-1:
- shard-lnl: [PASS][63] -> [ABORT][64] ([Intel XE#6675])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-lnl-3/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-edp-1.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-lnl-8/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-edp-1.html
* igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-0:
- shard-adlp: NOTRUN -> [FAIL][65] ([Intel XE#5195]) +4 other tests fail
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-0.html
* igt@kms_plane_scaling@2x-scaler-multi-pipe:
- shard-bmg: [PASS][66] -> [SKIP][67] ([Intel XE#2571])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-4/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
* igt@kms_pm_backlight@basic-brightness:
- shard-adlp: NOTRUN -> [SKIP][68] ([Intel XE#870])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_pm_backlight@fade:
- shard-dg2-set2: NOTRUN -> [SKIP][69] ([Intel XE#870])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_pm_backlight@fade.html
* igt@kms_pm_dc@dc5-psr:
- shard-adlp: NOTRUN -> [SKIP][70] ([Intel XE#1129])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc6-dpms:
- shard-adlp: NOTRUN -> [FAIL][71] ([Intel XE#718])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@system-suspend-idle:
- shard-dg2-set2: [PASS][72] -> [ABORT][73] ([Intel XE#6675])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-dg2-436/igt@kms_pm_rpm@system-suspend-idle.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-435/igt@kms_pm_rpm@system-suspend-idle.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
- shard-adlp: NOTRUN -> [SKIP][74] ([Intel XE#1406] / [Intel XE#1489]) +4 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-8/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_su@page_flip-p010:
- shard-adlp: NOTRUN -> [SKIP][75] ([Intel XE#1122] / [Intel XE#1406] / [Intel XE#5580])
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_psr2_su@page_flip-p010.html
* igt@kms_psr@fbc-pr-basic:
- shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +1 other test skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_psr@fbc-pr-basic.html
* igt@kms_psr@fbc-pr-sprite-render:
- shard-dg2-set2: NOTRUN -> [SKIP][77] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +1 other test skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_psr@fbc-pr-sprite-render.html
* igt@kms_psr@fbc-psr2-basic:
- shard-adlp: NOTRUN -> [SKIP][78] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +6 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@kms_psr@fbc-psr2-basic.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-adlp: NOTRUN -> [SKIP][79] ([Intel XE#1406] / [Intel XE#2939] / [Intel XE#5585])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-1/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-dg2-set2: NOTRUN -> [SKIP][80] ([Intel XE#1406] / [Intel XE#2939])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
- shard-adlp: NOTRUN -> [SKIP][81] ([Intel XE#1127])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-adlp: NOTRUN -> [SKIP][82] ([Intel XE#3414])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-bmg: NOTRUN -> [SKIP][83] ([Intel XE#2330])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_setmode@basic@pipe-a-hdmi-a-3:
- shard-bmg: [PASS][84] -> [FAIL][85] ([Intel XE#6361]) +1 other test fail
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-5/igt@kms_setmode@basic@pipe-a-hdmi-a-3.html
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-3/igt@kms_setmode@basic@pipe-a-hdmi-a-3.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-adlp: NOTRUN -> [SKIP][86] ([Intel XE#362])
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_vblank@ts-continuation-suspend:
- shard-adlp: [PASS][87] -> [ABORT][88] ([Intel XE#6675]) +5 other tests abort
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-adlp-3/igt@kms_vblank@ts-continuation-suspend.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-3/igt@kms_vblank@ts-continuation-suspend.html
- shard-bmg: NOTRUN -> [ABORT][89] ([Intel XE#6675]) +2 other tests abort
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@kms_vblank@ts-continuation-suspend.html
* igt@kms_vrr@flip-suspend:
- shard-adlp: NOTRUN -> [SKIP][90] ([Intel XE#455]) +15 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@kms_vrr@flip-suspend.html
* igt@kms_vrr@negative-basic:
- shard-bmg: [PASS][91] -> [SKIP][92] ([Intel XE#1499])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@kms_vrr@negative-basic.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_vrr@negative-basic.html
* igt@xe_ccs@block-copy-compressed-inc-dimension:
- shard-adlp: NOTRUN -> [SKIP][93] ([Intel XE#455] / [Intel XE#488] / [Intel XE#5607])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@xe_ccs@block-copy-compressed-inc-dimension.html
* igt@xe_compute_preempt@compute-preempt:
- shard-adlp: NOTRUN -> [SKIP][94] ([Intel XE#6360])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@xe_compute_preempt@compute-preempt.html
* igt@xe_compute_preempt@compute-preempt-many-vram:
- shard-adlp: NOTRUN -> [SKIP][95] ([Intel XE#5191])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@xe_compute_preempt@compute-preempt-many-vram.html
* igt@xe_compute_preempt@compute-preempt-many-vram-evict:
- shard-dg2-set2: NOTRUN -> [SKIP][96] ([Intel XE#6360])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@xe_compute_preempt@compute-preempt-many-vram-evict.html
* igt@xe_copy_basic@mem-copy-linear-0xfd:
- shard-adlp: NOTRUN -> [SKIP][97] ([Intel XE#1123])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_copy_basic@mem-copy-linear-0xfd.html
* igt@xe_copy_basic@mem-set-linear-0xfffe:
- shard-adlp: NOTRUN -> [SKIP][98] ([Intel XE#1126])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-8/igt@xe_copy_basic@mem-set-linear-0xfffe.html
* igt@xe_create@multigpu-create-massive-size:
- shard-adlp: NOTRUN -> [SKIP][99] ([Intel XE#944]) +1 other test skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@xe_create@multigpu-create-massive-size.html
* igt@xe_eudebug@basic-read-event:
- shard-adlp: NOTRUN -> [SKIP][100] ([Intel XE#4837] / [Intel XE#5565]) +7 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_eudebug@basic-read-event.html
* igt@xe_eudebug@vma-ufence-faultable:
- shard-dg2-set2: NOTRUN -> [SKIP][101] ([Intel XE#4837]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@xe_eudebug@vma-ufence-faultable.html
* igt@xe_eudebug_online@set-breakpoint:
- shard-bmg: NOTRUN -> [SKIP][102] ([Intel XE#4837]) +2 other tests skip
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_eudebug_online@set-breakpoint.html
* igt@xe_evict@evict-large-cm:
- shard-adlp: NOTRUN -> [SKIP][103] ([Intel XE#261] / [Intel XE#5564]) +1 other test skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-1/igt@xe_evict@evict-large-cm.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-adlp: NOTRUN -> [SKIP][104] ([Intel XE#261]) +1 other test skip
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_evict@evict-small-external-cm:
- shard-adlp: NOTRUN -> [SKIP][105] ([Intel XE#261] / [Intel XE#5564] / [Intel XE#688]) +2 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@xe_evict@evict-small-external-cm.html
* igt@xe_exec_basic@multigpu-no-exec-userptr-rebind:
- shard-bmg: NOTRUN -> [SKIP][106] ([Intel XE#2322]) +1 other test skip
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-userptr-rebind.html
* igt@xe_exec_basic@multigpu-once-basic-defer-bind:
- shard-adlp: NOTRUN -> [SKIP][107] ([Intel XE#1392] / [Intel XE#5575]) +5 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_exec_basic@multigpu-once-basic-defer-bind.html
* igt@xe_exec_fault_mode@many-bindexecqueue-imm:
- shard-adlp: NOTRUN -> [SKIP][108] ([Intel XE#288] / [Intel XE#5561]) +20 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@xe_exec_fault_mode@many-bindexecqueue-imm.html
* igt@xe_exec_fault_mode@once-bindexecqueue-rebind:
- shard-dg2-set2: NOTRUN -> [SKIP][109] ([Intel XE#288]) +5 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@xe_exec_fault_mode@once-bindexecqueue-rebind.html
* igt@xe_exec_system_allocator@many-large-malloc-nomemset:
- shard-dg2-set2: NOTRUN -> [SKIP][110] ([Intel XE#4915]) +74 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@xe_exec_system_allocator@many-large-malloc-nomemset.html
* igt@xe_exec_system_allocator@processes-evict-malloc:
- shard-adlp: NOTRUN -> [SKIP][111] ([Intel XE#4915]) +220 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-1/igt@xe_exec_system_allocator@processes-evict-malloc.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-free-huge:
- shard-bmg: NOTRUN -> [SKIP][112] ([Intel XE#4943]) +3 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-free-huge.html
* igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add:
- shard-adlp: NOTRUN -> [SKIP][113] ([Intel XE#6281])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add.html
* igt@xe_module_load@load:
- shard-bmg: ([PASS][114], [PASS][115], [PASS][116], [PASS][117], [PASS][118], [PASS][119], [PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126], [PASS][127], [PASS][128], [PASS][129], [PASS][130], [PASS][131], [PASS][132], [PASS][133], [PASS][134], [PASS][135], [PASS][136], [PASS][137]) -> ([PASS][138], [PASS][139], [PASS][140], [PASS][141], [PASS][142], [PASS][143], [PASS][144], [PASS][145], [PASS][146], [PASS][147], [PASS][148], [PASS][149], [PASS][150], [SKIP][151], [PASS][152], [PASS][153], [PASS][154], [PASS][155], [PASS][156], [PASS][157], [PASS][158], [PASS][159], [PASS][160], [PASS][161], [PASS][162], [PASS][163]) ([Intel XE#2457])
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-2/igt@xe_module_load@load.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-4/igt@xe_module_load@load.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-6/igt@xe_module_load@load.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-1/igt@xe_module_load@load.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-8/igt@xe_module_load@load.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-3/igt@xe_module_load@load.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-3/igt@xe_module_load@load.html
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-5/igt@xe_module_load@load.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-5/igt@xe_module_load@load.html
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-5/igt@xe_module_load@load.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-5/igt@xe_module_load@load.html
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-1/igt@xe_module_load@load.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@xe_module_load@load.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@xe_module_load@load.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-4/igt@xe_module_load@load.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-4/igt@xe_module_load@load.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-8/igt@xe_module_load@load.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-8/igt@xe_module_load@load.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@xe_module_load@load.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-6/igt@xe_module_load@load.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-6/igt@xe_module_load@load.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-3/igt@xe_module_load@load.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-6/igt@xe_module_load@load.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-2/igt@xe_module_load@load.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-4/igt@xe_module_load@load.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@xe_module_load@load.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@xe_module_load@load.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-4/igt@xe_module_load@load.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-4/igt@xe_module_load@load.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-3/igt@xe_module_load@load.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_module_load@load.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_module_load@load.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_module_load@load.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-2/igt@xe_module_load@load.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-1/igt@xe_module_load@load.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-5/igt@xe_module_load@load.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-5/igt@xe_module_load@load.html
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_module_load@load.html
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@xe_module_load@load.html
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-1/igt@xe_module_load@load.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-3/igt@xe_module_load@load.html
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-3/igt@xe_module_load@load.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-3/igt@xe_module_load@load.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-5/igt@xe_module_load@load.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_module_load@load.html
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-8/igt@xe_module_load@load.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@xe_module_load@load.html
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@xe_module_load@load.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-8/igt@xe_module_load@load.html
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-8/igt@xe_module_load@load.html
* igt@xe_oa@create-destroy-userspace-config:
- shard-dg2-set2: NOTRUN -> [SKIP][164] ([Intel XE#3573])
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@xe_oa@create-destroy-userspace-config.html
* igt@xe_oa@mmio-triggered-reports-read:
- shard-adlp: NOTRUN -> [SKIP][165] ([Intel XE#6032])
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_oa@mmio-triggered-reports-read.html
* igt@xe_oa@syncs-ufence-wait:
- shard-adlp: NOTRUN -> [SKIP][166] ([Intel XE#3573]) +5 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-1/igt@xe_oa@syncs-ufence-wait.html
* igt@xe_pat@pat-index-xehpc:
- shard-dg2-set2: NOTRUN -> [SKIP][167] ([Intel XE#2838] / [Intel XE#979])
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@xe_pat@pat-index-xehpc.html
* igt@xe_pm@d3cold-mocs:
- shard-adlp: NOTRUN -> [SKIP][168] ([Intel XE#2284])
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_pm@d3cold-mocs.html
* igt@xe_pm@d3hot-i2c:
- shard-adlp: NOTRUN -> [SKIP][169] ([Intel XE#5742])
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-6/igt@xe_pm@d3hot-i2c.html
* igt@xe_pm@s2idle-vm-bind-prefetch:
- shard-bmg: [PASS][170] -> [ABORT][171] ([Intel XE#6675]) +1 other test abort
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-1/igt@xe_pm@s2idle-vm-bind-prefetch.html
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-4/igt@xe_pm@s2idle-vm-bind-prefetch.html
* igt@xe_pm@s3-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][172] ([Intel XE#2284])
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@xe_pm@s3-d3cold-basic-exec.html
* igt@xe_pm@s4-basic:
- shard-adlp: NOTRUN -> [ABORT][173] ([Intel XE#6675]) +4 other tests abort
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-2/igt@xe_pm@s4-basic.html
* igt@xe_pxp@pxp-termination-key-update-post-termination-irq:
- shard-adlp: NOTRUN -> [SKIP][174] ([Intel XE#4733] / [Intel XE#5594]) +1 other test skip
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_pxp@pxp-termination-key-update-post-termination-irq.html
* igt@xe_pxp@regular-src-to-pxp-dest-rendercopy:
- shard-dg2-set2: NOTRUN -> [SKIP][175] ([Intel XE#4733])
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-434/igt@xe_pxp@regular-src-to-pxp-dest-rendercopy.html
* igt@xe_render_copy@render-stress-4-copies:
- shard-adlp: NOTRUN -> [SKIP][176] ([Intel XE#4814] / [Intel XE#5614])
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_render_copy@render-stress-4-copies.html
* igt@xe_spin_batch@spin-mem-copy:
- shard-adlp: NOTRUN -> [SKIP][177] ([Intel XE#4821])
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@xe_spin_batch@spin-mem-copy.html
* igt@xe_sriov_vram@vf-access-provisioned:
- shard-adlp: NOTRUN -> [SKIP][178] ([Intel XE#6376])
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-8/igt@xe_sriov_vram@vf-access-provisioned.html
#### Possible fixes ####
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-adlp: [FAIL][179] ([Intel XE#1231]) -> [PASS][180]
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-adlp-9/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6:
- shard-dg2-set2: [ABORT][181] ([Intel XE#6675]) -> [PASS][182] +2 other tests pass
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-dg2-464/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-464/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank:
- shard-bmg: [SKIP][183] ([Intel XE#2316]) -> [PASS][184]
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-6/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-3/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
* igt@kms_pipe_crc_basic@read-crc-frame-sequence:
- shard-bmg: [ABORT][185] ([Intel XE#1727]) -> [PASS][186] +1 other test pass
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-2/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html
* igt@xe_pm_residency@cpg-basic:
- shard-adlp: [ABORT][187] ([Intel XE#6675]) -> [PASS][188] +9 other tests pass
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-adlp-8/igt@xe_pm_residency@cpg-basic.html
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-adlp-9/igt@xe_pm_residency@cpg-basic.html
#### Warnings ####
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
- shard-dg2-set2: [INCOMPLETE][189] ([Intel XE#3862]) -> [ABORT][190] ([Intel XE#6675])
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-dg2-435/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-dg2-436/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
* igt@kms_content_protection@suspend-resume:
- shard-bmg: [FAIL][191] ([Intel XE#1178]) -> [SKIP][192] ([Intel XE#6705])
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@kms_content_protection@suspend-resume.html
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_content_protection@suspend-resume.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-render:
- shard-bmg: [SKIP][193] ([Intel XE#2312]) -> [SKIP][194] ([Intel XE#2311]) +2 other tests skip
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-render.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-3/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render:
- shard-bmg: [SKIP][195] ([Intel XE#2311]) -> [SKIP][196] ([Intel XE#2312]) +3 other tests skip
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render:
- shard-bmg: [SKIP][197] ([Intel XE#2312]) -> [SKIP][198] ([Intel XE#4141])
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff:
- shard-bmg: [SKIP][199] ([Intel XE#2312]) -> [SKIP][200] ([Intel XE#2313]) +2 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][201] ([Intel XE#2313]) -> [SKIP][202] ([Intel XE#2312]) +3 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
[Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
[Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
[Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
[Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
[Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
[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#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#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#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2571
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
[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#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
[Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[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#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4356
[Intel XE#4418]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4418
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4814
[Intel XE#4821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4821
[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#5191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5191
[Intel XE#5195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5195
[Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
[Intel XE#5564]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5564
[Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5580]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5580
[Intel XE#5585]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5585
[Intel XE#5594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5594
[Intel XE#5607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5607
[Intel XE#5614]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5614
[Intel XE#5742]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5742
[Intel XE#6032]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6032
[Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
[Intel XE#6281]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6281
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6360
[Intel XE#6361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6361
[Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
[Intel XE#6507]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6507
[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#6662]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6662
[Intel XE#6675]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6675
[Intel XE#6704]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6704
[Intel XE#6705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6705
[Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
[Intel XE#702]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/702
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
Build changes
-------------
* Linux: xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65 -> xe-pw-158316v1
IGT_8647: 8647
xe-4178-639f325d8cbdc690de963db2fe5840444ac7ea65: 639f325d8cbdc690de963db2fe5840444ac7ea65
xe-pw-158316v1: 158316v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158316v1/index.html
[-- Attachment #2: Type: text/html, Size: 62320 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread