* [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-18 17:27 ` Danilo Krummrich
2025-08-18 20:49 ` Rob Clark
2025-08-14 10:59 ` [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init() Himal Prasad Ghimiray
` (29 subsequent siblings)
30 siblings, 2 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe
Cc: Matthew Brost, Thomas Hellström, Boris Brezillon,
Danilo Krummrich, Brendan King, Boris Brezillon, Caterina Shablia,
Rob Clark, dri-devel, Himal Prasad Ghimiray
From: Boris Brezillon <boris.brezillon@collabora.com>
We are about to pass more arguments to drm_gpuvm_sm_map[_ops_create](),
so, before we do that, let's pass arguments through a struct instead
of changing each call site every time a new optional argument is added.
v5
- Use drm_gpuva_op_map—same as drm_gpuvm_map_req
- Rebase changes for drm_gpuvm_sm_map_exec_lock()
- Fix kernel-docs
v6
- Use drm_gpuvm_map_req (Danilo/Matt)
v7
- change member name to map instead of op_map
- use local variable to minize the code changes in _sm_map
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Brendan King <Brendan.King@imgtec.com>
Cc: Boris Brezillon <bbrezillon@kernel.org>
Cc: Caterina Shablia <caterina.shablia@collabora.com>
Cc: Rob Clark <robin.clark@oss.qualcomm.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Co-developed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Danilo Krummrich <dakr@kernel.org> #v4
Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
---
drivers/gpu/drm/drm_gpuvm.c | 74 +++++++++++---------------
drivers/gpu/drm/imagination/pvr_vm.c | 15 ++++--
drivers/gpu/drm/msm/msm_gem_vma.c | 25 +++++++--
drivers/gpu/drm/nouveau/nouveau_uvmm.c | 11 ++--
drivers/gpu/drm/panthor/panthor_mmu.c | 13 +++--
drivers/gpu/drm/xe/xe_vm.c | 13 +++--
include/drm/drm_gpuvm.h | 20 ++++---
7 files changed, 102 insertions(+), 69 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index bbc7fecb6f4a..6c18cec70f11 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -486,13 +486,18 @@
* u64 addr, u64 range,
* struct drm_gem_object *obj, u64 offset)
* {
+ * struct drm_gpuvm_map_req map_req = {
+ * .map.va.addr = addr,
+ * .map.va.range = range,
+ * .map.gem.obj = obj,
+ * .map.gem.offset = offset,
+ * };
* struct drm_gpuva_ops *ops;
* struct drm_gpuva_op *op
* struct drm_gpuvm_bo *vm_bo;
*
* driver_lock_va_space();
- * ops = drm_gpuvm_sm_map_ops_create(gpuvm, addr, range,
- * obj, offset);
+ * ops = drm_gpuvm_sm_map_ops_create(gpuvm, &map_req);
* if (IS_ERR(ops))
* return PTR_ERR(ops);
*
@@ -2054,16 +2059,15 @@ EXPORT_SYMBOL_GPL(drm_gpuva_unmap);
static int
op_map_cb(const struct drm_gpuvm_ops *fn, void *priv,
- u64 addr, u64 range,
- struct drm_gem_object *obj, u64 offset)
+ const struct drm_gpuvm_map_req *req)
{
struct drm_gpuva_op op = {};
op.op = DRM_GPUVA_OP_MAP;
- op.map.va.addr = addr;
- op.map.va.range = range;
- op.map.gem.obj = obj;
- op.map.gem.offset = offset;
+ op.map.va.addr = req->map.va.addr;
+ op.map.va.range = req->map.va.range;
+ op.map.gem.obj = req->map.gem.obj;
+ op.map.gem.offset = req->map.gem.offset;
return fn->sm_step_map(&op, priv);
}
@@ -2102,10 +2106,14 @@ op_unmap_cb(const struct drm_gpuvm_ops *fn, void *priv,
static int
__drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
const struct drm_gpuvm_ops *ops, void *priv,
- u64 req_addr, u64 req_range,
- struct drm_gem_object *req_obj, u64 req_offset)
+ const struct drm_gpuvm_map_req *req)
{
+ struct drm_gem_object *req_obj = req->map.gem.obj;
struct drm_gpuva *va, *next;
+
+ u64 req_offset = req->map.gem.offset;
+ u64 req_range = req->map.va.range;
+ u64 req_addr = req->map.va.addr;
u64 req_end = req_addr + req_range;
int ret;
@@ -2236,9 +2244,7 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
}
}
- return op_map_cb(ops, priv,
- req_addr, req_range,
- req_obj, req_offset);
+ return op_map_cb(ops, priv, req);
}
static int
@@ -2303,10 +2309,7 @@ __drm_gpuvm_sm_unmap(struct drm_gpuvm *gpuvm,
* drm_gpuvm_sm_map() - calls the &drm_gpuva_op split/merge steps
* @gpuvm: the &drm_gpuvm representing the GPU VA space
* @priv: pointer to a driver private data structure
- * @req_addr: the start address of the new mapping
- * @req_range: the range of the new mapping
- * @req_obj: the &drm_gem_object to map
- * @req_offset: the offset within the &drm_gem_object
+ * @req: ptr to struct drm_gpuvm_map_req
*
* This function iterates the given range of the GPU VA space. It utilizes the
* &drm_gpuvm_ops to call back into the driver providing the split and merge
@@ -2333,8 +2336,7 @@ __drm_gpuvm_sm_unmap(struct drm_gpuvm *gpuvm,
*/
int
drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm, void *priv,
- u64 req_addr, u64 req_range,
- struct drm_gem_object *req_obj, u64 req_offset)
+ const struct drm_gpuvm_map_req *req)
{
const struct drm_gpuvm_ops *ops = gpuvm->ops;
@@ -2343,9 +2345,7 @@ drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm, void *priv,
ops->sm_step_unmap)))
return -EINVAL;
- return __drm_gpuvm_sm_map(gpuvm, ops, priv,
- req_addr, req_range,
- req_obj, req_offset);
+ return __drm_gpuvm_sm_map(gpuvm, ops, priv, req);
}
EXPORT_SYMBOL_GPL(drm_gpuvm_sm_map);
@@ -2421,10 +2421,7 @@ static const struct drm_gpuvm_ops lock_ops = {
* @gpuvm: the &drm_gpuvm representing the GPU VA space
* @exec: the &drm_exec locking context
* @num_fences: for newly mapped objects, the # of fences to reserve
- * @req_addr: the start address of the range to unmap
- * @req_range: the range of the mappings to unmap
- * @req_obj: the &drm_gem_object to map
- * @req_offset: the offset within the &drm_gem_object
+ * @req: ptr to drm_gpuvm_map_req struct
*
* This function locks (drm_exec_lock_obj()) objects that will be unmapped/
* remapped, and locks+prepares (drm_exec_prepare_object()) objects that
@@ -2445,9 +2442,7 @@ static const struct drm_gpuvm_ops lock_ops = {
* ret = drm_gpuvm_sm_unmap_exec_lock(gpuvm, &exec, op->addr, op->range);
* break;
* case DRIVER_OP_MAP:
- * ret = drm_gpuvm_sm_map_exec_lock(gpuvm, &exec, num_fences,
- * op->addr, op->range,
- * obj, op->obj_offset);
+ * ret = drm_gpuvm_sm_map_exec_lock(gpuvm, &exec, num_fences, &req);
* break;
* }
*
@@ -2478,18 +2473,17 @@ static const struct drm_gpuvm_ops lock_ops = {
int
drm_gpuvm_sm_map_exec_lock(struct drm_gpuvm *gpuvm,
struct drm_exec *exec, unsigned int num_fences,
- u64 req_addr, u64 req_range,
- struct drm_gem_object *req_obj, u64 req_offset)
+ struct drm_gpuvm_map_req *req)
{
+ struct drm_gem_object *req_obj = req->map.gem.obj;
+
if (req_obj) {
int ret = drm_exec_prepare_obj(exec, req_obj, num_fences);
if (ret)
return ret;
}
- return __drm_gpuvm_sm_map(gpuvm, &lock_ops, exec,
- req_addr, req_range,
- req_obj, req_offset);
+ return __drm_gpuvm_sm_map(gpuvm, &lock_ops, exec, req);
}
EXPORT_SYMBOL_GPL(drm_gpuvm_sm_map_exec_lock);
@@ -2611,10 +2605,7 @@ static const struct drm_gpuvm_ops gpuvm_list_ops = {
/**
* drm_gpuvm_sm_map_ops_create() - creates the &drm_gpuva_ops to split and merge
* @gpuvm: the &drm_gpuvm representing the GPU VA space
- * @req_addr: the start address of the new mapping
- * @req_range: the range of the new mapping
- * @req_obj: the &drm_gem_object to map
- * @req_offset: the offset within the &drm_gem_object
+ * @req: map request arguments
*
* This function creates a list of operations to perform splitting and merging
* of existent mapping(s) with the newly requested one.
@@ -2642,8 +2633,7 @@ static const struct drm_gpuvm_ops gpuvm_list_ops = {
*/
struct drm_gpuva_ops *
drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
- u64 req_addr, u64 req_range,
- struct drm_gem_object *req_obj, u64 req_offset)
+ const struct drm_gpuvm_map_req *req)
{
struct drm_gpuva_ops *ops;
struct {
@@ -2661,9 +2651,7 @@ drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
args.vm = gpuvm;
args.ops = ops;
- ret = __drm_gpuvm_sm_map(gpuvm, &gpuvm_list_ops, &args,
- req_addr, req_range,
- req_obj, req_offset);
+ ret = __drm_gpuvm_sm_map(gpuvm, &gpuvm_list_ops, &args, req);
if (ret)
goto err_free_ops;
diff --git a/drivers/gpu/drm/imagination/pvr_vm.c b/drivers/gpu/drm/imagination/pvr_vm.c
index 2896fa7501b1..3d97990170bf 100644
--- a/drivers/gpu/drm/imagination/pvr_vm.c
+++ b/drivers/gpu/drm/imagination/pvr_vm.c
@@ -185,12 +185,17 @@ struct pvr_vm_bind_op {
static int pvr_vm_bind_op_exec(struct pvr_vm_bind_op *bind_op)
{
switch (bind_op->type) {
- case PVR_VM_BIND_TYPE_MAP:
+ case PVR_VM_BIND_TYPE_MAP: {
+ const struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = bind_op->device_addr,
+ .map.va.range = bind_op->size,
+ .map.gem.obj = gem_from_pvr_gem(bind_op->pvr_obj),
+ .map.gem.offset = bind_op->offset,
+ };
+
return drm_gpuvm_sm_map(&bind_op->vm_ctx->gpuvm_mgr,
- bind_op, bind_op->device_addr,
- bind_op->size,
- gem_from_pvr_gem(bind_op->pvr_obj),
- bind_op->offset);
+ bind_op, &map_req);
+ }
case PVR_VM_BIND_TYPE_UNMAP:
return drm_gpuvm_sm_unmap(&bind_op->vm_ctx->gpuvm_mgr,
diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
index 3cd8562a5109..e106428369ef 100644
--- a/drivers/gpu/drm/msm/msm_gem_vma.c
+++ b/drivers/gpu/drm/msm/msm_gem_vma.c
@@ -1172,10 +1172,17 @@ vm_bind_job_lock_objects(struct msm_vm_bind_job *job, struct drm_exec *exec)
break;
case MSM_VM_BIND_OP_MAP:
case MSM_VM_BIND_OP_MAP_NULL:
- ret = drm_gpuvm_sm_map_exec_lock(job->vm, exec, 1,
- op->iova, op->range,
- op->obj, op->obj_offset);
+ {
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = op->iova,
+ .map.va.range = op->range,
+ .map.gem.obj = op->obj,
+ .map.gem.offset = op->obj_offset,
+ };
+
+ ret = drm_gpuvm_sm_map_exec_lock(job->vm, exec, 1, &map_req);
break;
+ }
default:
/*
* lookup_op() should have already thrown an error for
@@ -1283,9 +1290,17 @@ vm_bind_job_prepare(struct msm_vm_bind_job *job)
arg.flags |= MSM_VMA_DUMP;
fallthrough;
case MSM_VM_BIND_OP_MAP_NULL:
- ret = drm_gpuvm_sm_map(job->vm, &arg, op->iova,
- op->range, op->obj, op->obj_offset);
+ {
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = op->iova,
+ .map.va.range = op->range,
+ .map.gem.obj = op->obj,
+ .map.gem.offset = op->obj_offset,
+ };
+
+ ret = drm_gpuvm_sm_map(job->vm, &arg, &map_req);
break;
+ }
default:
/*
* lookup_op() should have already thrown an error for
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index ddfc46bc1b3e..d94a85509176 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1276,6 +1276,12 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job,
break;
case OP_MAP: {
struct nouveau_uvma_region *reg;
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = op->va.addr,
+ .map.va.range = op->va.range,
+ .map.gem.obj = op->gem.obj,
+ .map.gem.offset = op->gem.offset,
+ };
reg = nouveau_uvma_region_find_first(uvmm,
op->va.addr,
@@ -1301,10 +1307,7 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job,
}
op->ops = drm_gpuvm_sm_map_ops_create(&uvmm->base,
- op->va.addr,
- op->va.range,
- op->gem.obj,
- op->gem.offset);
+ &map_req);
if (IS_ERR(op->ops)) {
ret = PTR_ERR(op->ops);
goto unwind_continue;
diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
index 4140f697ba5a..e3cdaa73fd38 100644
--- a/drivers/gpu/drm/panthor/panthor_mmu.c
+++ b/drivers/gpu/drm/panthor/panthor_mmu.c
@@ -2169,15 +2169,22 @@ panthor_vm_exec_op(struct panthor_vm *vm, struct panthor_vm_op_ctx *op,
mutex_lock(&vm->op_lock);
vm->op_ctx = op;
switch (op_type) {
- case DRM_PANTHOR_VM_BIND_OP_TYPE_MAP:
+ case DRM_PANTHOR_VM_BIND_OP_TYPE_MAP: {
+ const struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = op->va.addr,
+ .map.va.range = op->va.range,
+ .map.gem.obj = op->map.vm_bo->obj,
+ .map.gem.offset = op->map.bo_offset,
+ };
+
if (vm->unusable) {
ret = -EINVAL;
break;
}
- ret = drm_gpuvm_sm_map(&vm->base, vm, op->va.addr, op->va.range,
- op->map.vm_bo->obj, op->map.bo_offset);
+ ret = drm_gpuvm_sm_map(&vm->base, vm, &map_req);
break;
+ }
case DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP:
ret = drm_gpuvm_sm_unmap(&vm->base, vm, op->va.addr, op->va.range);
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index d40d2d43c041..15359ee738e6 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2337,10 +2337,17 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
switch (operation) {
case DRM_XE_VM_BIND_OP_MAP:
- case DRM_XE_VM_BIND_OP_MAP_USERPTR:
- ops = drm_gpuvm_sm_map_ops_create(&vm->gpuvm, addr, range,
- obj, bo_offset_or_userptr);
+ case DRM_XE_VM_BIND_OP_MAP_USERPTR: {
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = addr,
+ .map.va.range = range,
+ .map.gem.obj = obj,
+ .map.gem.offset = bo_offset_or_userptr,
+ };
+
+ ops = drm_gpuvm_sm_map_ops_create(&vm->gpuvm, &map_req);
break;
+ }
case DRM_XE_VM_BIND_OP_UNMAP:
ops = drm_gpuvm_sm_unmap_ops_create(&vm->gpuvm, addr, range);
break;
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 274532facfd6..a9fa44148e0c 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -1058,10 +1058,20 @@ struct drm_gpuva_ops {
*/
#define drm_gpuva_next_op(op) list_next_entry(op, entry)
+/**
+ * struct drm_gpuvm_map_req - arguments passed to drm_gpuvm_sm_map[_ops_create]()
+ */
+struct drm_gpuvm_map_req {
+ /**
+ * @op_map: struct drm_gpuva_op_map
+ */
+ struct drm_gpuva_op_map map;
+};
+
struct drm_gpuva_ops *
drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
- u64 addr, u64 range,
- struct drm_gem_object *obj, u64 offset);
+ const struct drm_gpuvm_map_req *req);
+
struct drm_gpuva_ops *
drm_gpuvm_sm_unmap_ops_create(struct drm_gpuvm *gpuvm,
u64 addr, u64 range);
@@ -1205,16 +1215,14 @@ struct drm_gpuvm_ops {
};
int drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm, void *priv,
- u64 addr, u64 range,
- struct drm_gem_object *obj, u64 offset);
+ const struct drm_gpuvm_map_req *req);
int drm_gpuvm_sm_unmap(struct drm_gpuvm *gpuvm, void *priv,
u64 addr, u64 range);
int drm_gpuvm_sm_map_exec_lock(struct drm_gpuvm *gpuvm,
struct drm_exec *exec, unsigned int num_fences,
- u64 req_addr, u64 req_range,
- struct drm_gem_object *obj, u64 offset);
+ struct drm_gpuvm_map_req *req);
int drm_gpuvm_sm_unmap_exec_lock(struct drm_gpuvm *gpuvm, struct drm_exec *exec,
u64 req_addr, u64 req_range);
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* Re: [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct
2025-08-14 10:59 ` [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct Himal Prasad Ghimiray
@ 2025-08-18 17:27 ` Danilo Krummrich
2025-08-18 18:12 ` Ghimiray, Himal Prasad
2025-08-18 20:49 ` Rob Clark
1 sibling, 1 reply; 41+ messages in thread
From: Danilo Krummrich @ 2025-08-18 17:27 UTC (permalink / raw)
To: Himal Prasad Ghimiray
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
Brendan King, Boris Brezillon, Caterina Shablia, Rob Clark,
dri-devel
On Thu Aug 14, 2025 at 12:59 PM CEST, Himal Prasad Ghimiray wrote:
> From: Boris Brezillon <boris.brezillon@collabora.com>
>
> We are about to pass more arguments to drm_gpuvm_sm_map[_ops_create](),
> so, before we do that, let's pass arguments through a struct instead
> of changing each call site every time a new optional argument is added.
>
> v5
> - Use drm_gpuva_op_map—same as drm_gpuvm_map_req
> - Rebase changes for drm_gpuvm_sm_map_exec_lock()
> - Fix kernel-docs
>
> v6
> - Use drm_gpuvm_map_req (Danilo/Matt)
>
> v7
> - change member name to map instead of op_map
> - use local variable to minize the code changes in _sm_map
I know it's a thing in DRM, but I'd rather not have the version changes in the
commit message. Please move them below "---" or into the cover letter.
(No need to resend for this. :)
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: Brendan King <Brendan.King@imgtec.com>
> Cc: Boris Brezillon <bbrezillon@kernel.org>
> Cc: Caterina Shablia <caterina.shablia@collabora.com>
> Cc: Rob Clark <robin.clark@oss.qualcomm.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: <dri-devel@lists.freedesktop.org>
> Co-developed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> Acked-by: Danilo Krummrich <dakr@kernel.org> #v4
> Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct
2025-08-18 17:27 ` Danilo Krummrich
@ 2025-08-18 18:12 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 41+ messages in thread
From: Ghimiray, Himal Prasad @ 2025-08-18 18:12 UTC (permalink / raw)
To: Danilo Krummrich
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
Brendan King, Boris Brezillon, Caterina Shablia, Rob Clark,
dri-devel
On 18-08-2025 22:57, Danilo Krummrich wrote:
> On Thu Aug 14, 2025 at 12:59 PM CEST, Himal Prasad Ghimiray wrote:
>> From: Boris Brezillon <boris.brezillon@collabora.com>
>>
>> We are about to pass more arguments to drm_gpuvm_sm_map[_ops_create](),
>> so, before we do that, let's pass arguments through a struct instead
>> of changing each call site every time a new optional argument is added.
>>
>> v5
>> - Use drm_gpuva_op_map—same as drm_gpuvm_map_req
>> - Rebase changes for drm_gpuvm_sm_map_exec_lock()
>> - Fix kernel-docs
>>
>> v6
>> - Use drm_gpuvm_map_req (Danilo/Matt)
>>
>> v7
>> - change member name to map instead of op_map
>> - use local variable to minize the code changes in _sm_map
>
> I know it's a thing in DRM, but I'd rather not have the version changes in the
> commit message. Please move them below "---" or into the cover letter.
>
> (No need to resend for this. :)
Sure. Thanks
>
>> Cc: Danilo Krummrich <dakr@kernel.org>
>> Cc: Brendan King <Brendan.King@imgtec.com>
>> Cc: Boris Brezillon <bbrezillon@kernel.org>
>> Cc: Caterina Shablia <caterina.shablia@collabora.com>
>> Cc: Rob Clark <robin.clark@oss.qualcomm.com>
>> Cc: Matthew Brost <matthew.brost@intel.com>
>> Cc: <dri-devel@lists.freedesktop.org>
>> Co-developed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
>> Acked-by: Danilo Krummrich <dakr@kernel.org> #v4
>> Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct
2025-08-14 10:59 ` [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct Himal Prasad Ghimiray
2025-08-18 17:27 ` Danilo Krummrich
@ 2025-08-18 20:49 ` Rob Clark
1 sibling, 0 replies; 41+ messages in thread
From: Rob Clark @ 2025-08-18 20:49 UTC (permalink / raw)
To: Himal Prasad Ghimiray
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
Danilo Krummrich, Brendan King, Boris Brezillon, Caterina Shablia,
dri-devel
On Thu, Aug 14, 2025 at 3:32 AM Himal Prasad Ghimiray
<himal.prasad.ghimiray@intel.com> wrote:
>
> From: Boris Brezillon <boris.brezillon@collabora.com>
>
> We are about to pass more arguments to drm_gpuvm_sm_map[_ops_create](),
> so, before we do that, let's pass arguments through a struct instead
> of changing each call site every time a new optional argument is added.
>
> v5
> - Use drm_gpuva_op_map—same as drm_gpuvm_map_req
> - Rebase changes for drm_gpuvm_sm_map_exec_lock()
> - Fix kernel-docs
>
> v6
> - Use drm_gpuvm_map_req (Danilo/Matt)
>
> v7
> - change member name to map instead of op_map
> - use local variable to minize the code changes in _sm_map
>
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: Brendan King <Brendan.King@imgtec.com>
> Cc: Boris Brezillon <bbrezillon@kernel.org>
> Cc: Caterina Shablia <caterina.shablia@collabora.com>
> Cc: Rob Clark <robin.clark@oss.qualcomm.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: <dri-devel@lists.freedesktop.org>
> Co-developed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> Acked-by: Danilo Krummrich <dakr@kernel.org> #v4
> Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
> ---
> drivers/gpu/drm/drm_gpuvm.c | 74 +++++++++++---------------
> drivers/gpu/drm/imagination/pvr_vm.c | 15 ++++--
> drivers/gpu/drm/msm/msm_gem_vma.c | 25 +++++++--
> drivers/gpu/drm/nouveau/nouveau_uvmm.c | 11 ++--
> drivers/gpu/drm/panthor/panthor_mmu.c | 13 +++--
> drivers/gpu/drm/xe/xe_vm.c | 13 +++--
> include/drm/drm_gpuvm.h | 20 ++++---
> 7 files changed, 102 insertions(+), 69 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
> index bbc7fecb6f4a..6c18cec70f11 100644
> --- a/drivers/gpu/drm/drm_gpuvm.c
> +++ b/drivers/gpu/drm/drm_gpuvm.c
> @@ -486,13 +486,18 @@
> * u64 addr, u64 range,
> * struct drm_gem_object *obj, u64 offset)
> * {
> + * struct drm_gpuvm_map_req map_req = {
> + * .map.va.addr = addr,
> + * .map.va.range = range,
> + * .map.gem.obj = obj,
> + * .map.gem.offset = offset,
> + * };
> * struct drm_gpuva_ops *ops;
> * struct drm_gpuva_op *op
> * struct drm_gpuvm_bo *vm_bo;
> *
> * driver_lock_va_space();
> - * ops = drm_gpuvm_sm_map_ops_create(gpuvm, addr, range,
> - * obj, offset);
> + * ops = drm_gpuvm_sm_map_ops_create(gpuvm, &map_req);
> * if (IS_ERR(ops))
> * return PTR_ERR(ops);
> *
> @@ -2054,16 +2059,15 @@ EXPORT_SYMBOL_GPL(drm_gpuva_unmap);
>
> static int
> op_map_cb(const struct drm_gpuvm_ops *fn, void *priv,
> - u64 addr, u64 range,
> - struct drm_gem_object *obj, u64 offset)
> + const struct drm_gpuvm_map_req *req)
> {
> struct drm_gpuva_op op = {};
>
> op.op = DRM_GPUVA_OP_MAP;
> - op.map.va.addr = addr;
> - op.map.va.range = range;
> - op.map.gem.obj = obj;
> - op.map.gem.offset = offset;
> + op.map.va.addr = req->map.va.addr;
> + op.map.va.range = req->map.va.range;
> + op.map.gem.obj = req->map.gem.obj;
> + op.map.gem.offset = req->map.gem.offset;
>
> return fn->sm_step_map(&op, priv);
> }
> @@ -2102,10 +2106,14 @@ op_unmap_cb(const struct drm_gpuvm_ops *fn, void *priv,
> static int
> __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
> const struct drm_gpuvm_ops *ops, void *priv,
> - u64 req_addr, u64 req_range,
> - struct drm_gem_object *req_obj, u64 req_offset)
> + const struct drm_gpuvm_map_req *req)
> {
> + struct drm_gem_object *req_obj = req->map.gem.obj;
> struct drm_gpuva *va, *next;
> +
> + u64 req_offset = req->map.gem.offset;
> + u64 req_range = req->map.va.range;
> + u64 req_addr = req->map.va.addr;
> u64 req_end = req_addr + req_range;
> int ret;
>
> @@ -2236,9 +2244,7 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
> }
> }
>
> - return op_map_cb(ops, priv,
> - req_addr, req_range,
> - req_obj, req_offset);
> + return op_map_cb(ops, priv, req);
> }
>
> static int
> @@ -2303,10 +2309,7 @@ __drm_gpuvm_sm_unmap(struct drm_gpuvm *gpuvm,
> * drm_gpuvm_sm_map() - calls the &drm_gpuva_op split/merge steps
> * @gpuvm: the &drm_gpuvm representing the GPU VA space
> * @priv: pointer to a driver private data structure
> - * @req_addr: the start address of the new mapping
> - * @req_range: the range of the new mapping
> - * @req_obj: the &drm_gem_object to map
> - * @req_offset: the offset within the &drm_gem_object
> + * @req: ptr to struct drm_gpuvm_map_req
> *
> * This function iterates the given range of the GPU VA space. It utilizes the
> * &drm_gpuvm_ops to call back into the driver providing the split and merge
> @@ -2333,8 +2336,7 @@ __drm_gpuvm_sm_unmap(struct drm_gpuvm *gpuvm,
> */
> int
> drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm, void *priv,
> - u64 req_addr, u64 req_range,
> - struct drm_gem_object *req_obj, u64 req_offset)
> + const struct drm_gpuvm_map_req *req)
> {
> const struct drm_gpuvm_ops *ops = gpuvm->ops;
>
> @@ -2343,9 +2345,7 @@ drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm, void *priv,
> ops->sm_step_unmap)))
> return -EINVAL;
>
> - return __drm_gpuvm_sm_map(gpuvm, ops, priv,
> - req_addr, req_range,
> - req_obj, req_offset);
> + return __drm_gpuvm_sm_map(gpuvm, ops, priv, req);
> }
> EXPORT_SYMBOL_GPL(drm_gpuvm_sm_map);
>
> @@ -2421,10 +2421,7 @@ static const struct drm_gpuvm_ops lock_ops = {
> * @gpuvm: the &drm_gpuvm representing the GPU VA space
> * @exec: the &drm_exec locking context
> * @num_fences: for newly mapped objects, the # of fences to reserve
> - * @req_addr: the start address of the range to unmap
> - * @req_range: the range of the mappings to unmap
> - * @req_obj: the &drm_gem_object to map
> - * @req_offset: the offset within the &drm_gem_object
> + * @req: ptr to drm_gpuvm_map_req struct
> *
> * This function locks (drm_exec_lock_obj()) objects that will be unmapped/
> * remapped, and locks+prepares (drm_exec_prepare_object()) objects that
> @@ -2445,9 +2442,7 @@ static const struct drm_gpuvm_ops lock_ops = {
> * ret = drm_gpuvm_sm_unmap_exec_lock(gpuvm, &exec, op->addr, op->range);
> * break;
> * case DRIVER_OP_MAP:
> - * ret = drm_gpuvm_sm_map_exec_lock(gpuvm, &exec, num_fences,
> - * op->addr, op->range,
> - * obj, op->obj_offset);
> + * ret = drm_gpuvm_sm_map_exec_lock(gpuvm, &exec, num_fences, &req);
> * break;
> * }
> *
> @@ -2478,18 +2473,17 @@ static const struct drm_gpuvm_ops lock_ops = {
> int
> drm_gpuvm_sm_map_exec_lock(struct drm_gpuvm *gpuvm,
> struct drm_exec *exec, unsigned int num_fences,
> - u64 req_addr, u64 req_range,
> - struct drm_gem_object *req_obj, u64 req_offset)
> + struct drm_gpuvm_map_req *req)
> {
> + struct drm_gem_object *req_obj = req->map.gem.obj;
> +
> if (req_obj) {
> int ret = drm_exec_prepare_obj(exec, req_obj, num_fences);
> if (ret)
> return ret;
> }
>
> - return __drm_gpuvm_sm_map(gpuvm, &lock_ops, exec,
> - req_addr, req_range,
> - req_obj, req_offset);
> + return __drm_gpuvm_sm_map(gpuvm, &lock_ops, exec, req);
>
> }
> EXPORT_SYMBOL_GPL(drm_gpuvm_sm_map_exec_lock);
> @@ -2611,10 +2605,7 @@ static const struct drm_gpuvm_ops gpuvm_list_ops = {
> /**
> * drm_gpuvm_sm_map_ops_create() - creates the &drm_gpuva_ops to split and merge
> * @gpuvm: the &drm_gpuvm representing the GPU VA space
> - * @req_addr: the start address of the new mapping
> - * @req_range: the range of the new mapping
> - * @req_obj: the &drm_gem_object to map
> - * @req_offset: the offset within the &drm_gem_object
> + * @req: map request arguments
> *
> * This function creates a list of operations to perform splitting and merging
> * of existent mapping(s) with the newly requested one.
> @@ -2642,8 +2633,7 @@ static const struct drm_gpuvm_ops gpuvm_list_ops = {
> */
> struct drm_gpuva_ops *
> drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
> - u64 req_addr, u64 req_range,
> - struct drm_gem_object *req_obj, u64 req_offset)
> + const struct drm_gpuvm_map_req *req)
> {
> struct drm_gpuva_ops *ops;
> struct {
> @@ -2661,9 +2651,7 @@ drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
> args.vm = gpuvm;
> args.ops = ops;
>
> - ret = __drm_gpuvm_sm_map(gpuvm, &gpuvm_list_ops, &args,
> - req_addr, req_range,
> - req_obj, req_offset);
> + ret = __drm_gpuvm_sm_map(gpuvm, &gpuvm_list_ops, &args, req);
> if (ret)
> goto err_free_ops;
>
> diff --git a/drivers/gpu/drm/imagination/pvr_vm.c b/drivers/gpu/drm/imagination/pvr_vm.c
> index 2896fa7501b1..3d97990170bf 100644
> --- a/drivers/gpu/drm/imagination/pvr_vm.c
> +++ b/drivers/gpu/drm/imagination/pvr_vm.c
> @@ -185,12 +185,17 @@ struct pvr_vm_bind_op {
> static int pvr_vm_bind_op_exec(struct pvr_vm_bind_op *bind_op)
> {
> switch (bind_op->type) {
> - case PVR_VM_BIND_TYPE_MAP:
> + case PVR_VM_BIND_TYPE_MAP: {
> + const struct drm_gpuvm_map_req map_req = {
> + .map.va.addr = bind_op->device_addr,
> + .map.va.range = bind_op->size,
> + .map.gem.obj = gem_from_pvr_gem(bind_op->pvr_obj),
> + .map.gem.offset = bind_op->offset,
> + };
> +
> return drm_gpuvm_sm_map(&bind_op->vm_ctx->gpuvm_mgr,
> - bind_op, bind_op->device_addr,
> - bind_op->size,
> - gem_from_pvr_gem(bind_op->pvr_obj),
> - bind_op->offset);
> + bind_op, &map_req);
> + }
>
> case PVR_VM_BIND_TYPE_UNMAP:
> return drm_gpuvm_sm_unmap(&bind_op->vm_ctx->gpuvm_mgr,
> diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
> index 3cd8562a5109..e106428369ef 100644
> --- a/drivers/gpu/drm/msm/msm_gem_vma.c
> +++ b/drivers/gpu/drm/msm/msm_gem_vma.c
> @@ -1172,10 +1172,17 @@ vm_bind_job_lock_objects(struct msm_vm_bind_job *job, struct drm_exec *exec)
> break;
> case MSM_VM_BIND_OP_MAP:
> case MSM_VM_BIND_OP_MAP_NULL:
> - ret = drm_gpuvm_sm_map_exec_lock(job->vm, exec, 1,
> - op->iova, op->range,
> - op->obj, op->obj_offset);
> + {
nit (here and below), I'd prefer the opening brace on the same line as
the case statement (no need to resend for that, you can fixup when you
apply)
Reviewed-by: Rob Clark <robin.clark@oss.qualcomm.com>
> + struct drm_gpuvm_map_req map_req = {
> + .map.va.addr = op->iova,
> + .map.va.range = op->range,
> + .map.gem.obj = op->obj,
> + .map.gem.offset = op->obj_offset,
> + };
> +
> + ret = drm_gpuvm_sm_map_exec_lock(job->vm, exec, 1, &map_req);
> break;
> + }
> default:
> /*
> * lookup_op() should have already thrown an error for
> @@ -1283,9 +1290,17 @@ vm_bind_job_prepare(struct msm_vm_bind_job *job)
> arg.flags |= MSM_VMA_DUMP;
> fallthrough;
> case MSM_VM_BIND_OP_MAP_NULL:
> - ret = drm_gpuvm_sm_map(job->vm, &arg, op->iova,
> - op->range, op->obj, op->obj_offset);
> + {
> + struct drm_gpuvm_map_req map_req = {
> + .map.va.addr = op->iova,
> + .map.va.range = op->range,
> + .map.gem.obj = op->obj,
> + .map.gem.offset = op->obj_offset,
> + };
> +
> + ret = drm_gpuvm_sm_map(job->vm, &arg, &map_req);
> break;
> + }
> default:
> /*
> * lookup_op() should have already thrown an error for
> diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
> index ddfc46bc1b3e..d94a85509176 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
> @@ -1276,6 +1276,12 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job,
> break;
> case OP_MAP: {
> struct nouveau_uvma_region *reg;
> + struct drm_gpuvm_map_req map_req = {
> + .map.va.addr = op->va.addr,
> + .map.va.range = op->va.range,
> + .map.gem.obj = op->gem.obj,
> + .map.gem.offset = op->gem.offset,
> + };
>
> reg = nouveau_uvma_region_find_first(uvmm,
> op->va.addr,
> @@ -1301,10 +1307,7 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job,
> }
>
> op->ops = drm_gpuvm_sm_map_ops_create(&uvmm->base,
> - op->va.addr,
> - op->va.range,
> - op->gem.obj,
> - op->gem.offset);
> + &map_req);
> if (IS_ERR(op->ops)) {
> ret = PTR_ERR(op->ops);
> goto unwind_continue;
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index 4140f697ba5a..e3cdaa73fd38 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -2169,15 +2169,22 @@ panthor_vm_exec_op(struct panthor_vm *vm, struct panthor_vm_op_ctx *op,
> mutex_lock(&vm->op_lock);
> vm->op_ctx = op;
> switch (op_type) {
> - case DRM_PANTHOR_VM_BIND_OP_TYPE_MAP:
> + case DRM_PANTHOR_VM_BIND_OP_TYPE_MAP: {
> + const struct drm_gpuvm_map_req map_req = {
> + .map.va.addr = op->va.addr,
> + .map.va.range = op->va.range,
> + .map.gem.obj = op->map.vm_bo->obj,
> + .map.gem.offset = op->map.bo_offset,
> + };
> +
> if (vm->unusable) {
> ret = -EINVAL;
> break;
> }
>
> - ret = drm_gpuvm_sm_map(&vm->base, vm, op->va.addr, op->va.range,
> - op->map.vm_bo->obj, op->map.bo_offset);
> + ret = drm_gpuvm_sm_map(&vm->base, vm, &map_req);
> break;
> + }
>
> case DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP:
> ret = drm_gpuvm_sm_unmap(&vm->base, vm, op->va.addr, op->va.range);
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index d40d2d43c041..15359ee738e6 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -2337,10 +2337,17 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
>
> switch (operation) {
> case DRM_XE_VM_BIND_OP_MAP:
> - case DRM_XE_VM_BIND_OP_MAP_USERPTR:
> - ops = drm_gpuvm_sm_map_ops_create(&vm->gpuvm, addr, range,
> - obj, bo_offset_or_userptr);
> + case DRM_XE_VM_BIND_OP_MAP_USERPTR: {
> + struct drm_gpuvm_map_req map_req = {
> + .map.va.addr = addr,
> + .map.va.range = range,
> + .map.gem.obj = obj,
> + .map.gem.offset = bo_offset_or_userptr,
> + };
> +
> + ops = drm_gpuvm_sm_map_ops_create(&vm->gpuvm, &map_req);
> break;
> + }
> case DRM_XE_VM_BIND_OP_UNMAP:
> ops = drm_gpuvm_sm_unmap_ops_create(&vm->gpuvm, addr, range);
> break;
> diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
> index 274532facfd6..a9fa44148e0c 100644
> --- a/include/drm/drm_gpuvm.h
> +++ b/include/drm/drm_gpuvm.h
> @@ -1058,10 +1058,20 @@ struct drm_gpuva_ops {
> */
> #define drm_gpuva_next_op(op) list_next_entry(op, entry)
>
> +/**
> + * struct drm_gpuvm_map_req - arguments passed to drm_gpuvm_sm_map[_ops_create]()
> + */
> +struct drm_gpuvm_map_req {
> + /**
> + * @op_map: struct drm_gpuva_op_map
> + */
> + struct drm_gpuva_op_map map;
> +};
> +
> struct drm_gpuva_ops *
> drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
> - u64 addr, u64 range,
> - struct drm_gem_object *obj, u64 offset);
> + const struct drm_gpuvm_map_req *req);
> +
> struct drm_gpuva_ops *
> drm_gpuvm_sm_unmap_ops_create(struct drm_gpuvm *gpuvm,
> u64 addr, u64 range);
> @@ -1205,16 +1215,14 @@ struct drm_gpuvm_ops {
> };
>
> int drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm, void *priv,
> - u64 addr, u64 range,
> - struct drm_gem_object *obj, u64 offset);
> + const struct drm_gpuvm_map_req *req);
>
> int drm_gpuvm_sm_unmap(struct drm_gpuvm *gpuvm, void *priv,
> u64 addr, u64 range);
>
> int drm_gpuvm_sm_map_exec_lock(struct drm_gpuvm *gpuvm,
> struct drm_exec *exec, unsigned int num_fences,
> - u64 req_addr, u64 req_range,
> - struct drm_gem_object *obj, u64 offset);
> + struct drm_gpuvm_map_req *req);
>
> int drm_gpuvm_sm_unmap_exec_lock(struct drm_gpuvm *gpuvm, struct drm_exec *exec,
> u64 req_addr, u64 req_range);
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 41+ messages in thread
* [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init()
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 14:08 ` Rob Clark
2025-08-18 17:29 ` Danilo Krummrich
2025-08-14 10:59 ` [PATCH v7 03/24] drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create Himal Prasad Ghimiray
` (28 subsequent siblings)
30 siblings, 2 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe
Cc: Matthew Brost, Thomas Hellström, Boris Brezillon,
Danilo Krummrich, Rob Clark, Caterina Shablia,
Himal Prasad Ghimiray
From: Boris Brezillon <boris.brezillon@collabora.com>
drm_gpuva_init() only has one internal user, and given we are about to
add new optional fields, it only add maintenance burden for no real
benefit, so let's kill the thing now.
v2
- Remove usage from msm
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Rob Clark <robin.clark@oss.qualcomm.com>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Caterina Shablia <caterina.shablia@collabora.com>
Acked-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/msm/msm_gem_vma.c | 8 +++++++-
include/drm/drm_gpuvm.h | 15 ++++-----------
2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
index e106428369ef..3e97d3d61430 100644
--- a/drivers/gpu/drm/msm/msm_gem_vma.c
+++ b/drivers/gpu/drm/msm/msm_gem_vma.c
@@ -371,6 +371,12 @@ struct drm_gpuva *
msm_gem_vma_new(struct drm_gpuvm *gpuvm, struct drm_gem_object *obj,
u64 offset, u64 range_start, u64 range_end)
{
+ struct drm_gpuva_op_map op_map = {
+ .va.addr = range_start,
+ .va.range = range_end - range_start,
+ .gem.obj = obj,
+ .gem.offset = offset,
+ };
struct msm_gem_vm *vm = to_msm_vm(gpuvm);
struct drm_gpuvm_bo *vm_bo;
struct msm_gem_vma *vma;
@@ -399,7 +405,7 @@ msm_gem_vma_new(struct drm_gpuvm *gpuvm, struct drm_gem_object *obj,
if (obj)
GEM_WARN_ON((range_end - range_start) > obj->size);
- drm_gpuva_init(&vma->base, range_start, range_end - range_start, obj, offset);
+ drm_gpuva_init_from_op(&vma->base, &op_map);
vma->mapped = false;
ret = drm_gpuva_insert(&vm->base, &vma->base);
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index a9fa44148e0c..05347ac6cc73 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -160,15 +160,6 @@ struct drm_gpuva *drm_gpuva_find_first(struct drm_gpuvm *gpuvm,
struct drm_gpuva *drm_gpuva_find_prev(struct drm_gpuvm *gpuvm, u64 start);
struct drm_gpuva *drm_gpuva_find_next(struct drm_gpuvm *gpuvm, u64 end);
-static inline void drm_gpuva_init(struct drm_gpuva *va, u64 addr, u64 range,
- struct drm_gem_object *obj, u64 offset)
-{
- va->va.addr = addr;
- va->va.range = range;
- va->gem.obj = obj;
- va->gem.offset = offset;
-}
-
/**
* drm_gpuva_invalidate() - sets whether the backing GEM of this &drm_gpuva is
* invalidated
@@ -1089,8 +1080,10 @@ void drm_gpuva_ops_free(struct drm_gpuvm *gpuvm,
static inline void drm_gpuva_init_from_op(struct drm_gpuva *va,
struct drm_gpuva_op_map *op)
{
- drm_gpuva_init(va, op->va.addr, op->va.range,
- op->gem.obj, op->gem.offset);
+ va->va.addr = op->va.addr;
+ va->va.range = op->va.range;
+ va->gem.obj = op->gem.obj;
+ va->gem.offset = op->gem.offset;
}
/**
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* Re: [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init()
2025-08-14 10:59 ` [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init() Himal Prasad Ghimiray
@ 2025-08-14 14:08 ` Rob Clark
2025-08-18 17:29 ` Danilo Krummrich
1 sibling, 0 replies; 41+ messages in thread
From: Rob Clark @ 2025-08-14 14:08 UTC (permalink / raw)
To: Himal Prasad Ghimiray
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
Danilo Krummrich, Caterina Shablia
On Thu, Aug 14, 2025 at 3:32 AM Himal Prasad Ghimiray
<himal.prasad.ghimiray@intel.com> wrote:
>
> From: Boris Brezillon <boris.brezillon@collabora.com>
>
> drm_gpuva_init() only has one internal user, and given we are about to
> add new optional fields, it only add maintenance burden for no real
> benefit, so let's kill the thing now.
>
> v2
> - Remove usage from msm
>
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: Rob Clark <robin.clark@oss.qualcomm.com>
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> Signed-off-by: Caterina Shablia <caterina.shablia@collabora.com>
> Acked-by: Danilo Krummrich <dakr@kernel.org>
> Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Rob Clark <robin.clark@oss.qualcomm.com>
> ---
> drivers/gpu/drm/msm/msm_gem_vma.c | 8 +++++++-
> include/drm/drm_gpuvm.h | 15 ++++-----------
> 2 files changed, 11 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
> index e106428369ef..3e97d3d61430 100644
> --- a/drivers/gpu/drm/msm/msm_gem_vma.c
> +++ b/drivers/gpu/drm/msm/msm_gem_vma.c
> @@ -371,6 +371,12 @@ struct drm_gpuva *
> msm_gem_vma_new(struct drm_gpuvm *gpuvm, struct drm_gem_object *obj,
> u64 offset, u64 range_start, u64 range_end)
> {
> + struct drm_gpuva_op_map op_map = {
> + .va.addr = range_start,
> + .va.range = range_end - range_start,
> + .gem.obj = obj,
> + .gem.offset = offset,
> + };
> struct msm_gem_vm *vm = to_msm_vm(gpuvm);
> struct drm_gpuvm_bo *vm_bo;
> struct msm_gem_vma *vma;
> @@ -399,7 +405,7 @@ msm_gem_vma_new(struct drm_gpuvm *gpuvm, struct drm_gem_object *obj,
> if (obj)
> GEM_WARN_ON((range_end - range_start) > obj->size);
>
> - drm_gpuva_init(&vma->base, range_start, range_end - range_start, obj, offset);
> + drm_gpuva_init_from_op(&vma->base, &op_map);
> vma->mapped = false;
>
> ret = drm_gpuva_insert(&vm->base, &vma->base);
> diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
> index a9fa44148e0c..05347ac6cc73 100644
> --- a/include/drm/drm_gpuvm.h
> +++ b/include/drm/drm_gpuvm.h
> @@ -160,15 +160,6 @@ struct drm_gpuva *drm_gpuva_find_first(struct drm_gpuvm *gpuvm,
> struct drm_gpuva *drm_gpuva_find_prev(struct drm_gpuvm *gpuvm, u64 start);
> struct drm_gpuva *drm_gpuva_find_next(struct drm_gpuvm *gpuvm, u64 end);
>
> -static inline void drm_gpuva_init(struct drm_gpuva *va, u64 addr, u64 range,
> - struct drm_gem_object *obj, u64 offset)
> -{
> - va->va.addr = addr;
> - va->va.range = range;
> - va->gem.obj = obj;
> - va->gem.offset = offset;
> -}
> -
> /**
> * drm_gpuva_invalidate() - sets whether the backing GEM of this &drm_gpuva is
> * invalidated
> @@ -1089,8 +1080,10 @@ void drm_gpuva_ops_free(struct drm_gpuvm *gpuvm,
> static inline void drm_gpuva_init_from_op(struct drm_gpuva *va,
> struct drm_gpuva_op_map *op)
> {
> - drm_gpuva_init(va, op->va.addr, op->va.range,
> - op->gem.obj, op->gem.offset);
> + va->va.addr = op->va.addr;
> + va->va.range = op->va.range;
> + va->gem.obj = op->gem.obj;
> + va->gem.offset = op->gem.offset;
> }
>
> /**
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init()
2025-08-14 10:59 ` [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init() Himal Prasad Ghimiray
2025-08-14 14:08 ` Rob Clark
@ 2025-08-18 17:29 ` Danilo Krummrich
2025-08-18 18:15 ` Ghimiray, Himal Prasad
1 sibling, 1 reply; 41+ messages in thread
From: Danilo Krummrich @ 2025-08-18 17:29 UTC (permalink / raw)
To: Himal Prasad Ghimiray
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
Rob Clark, Caterina Shablia
On Thu Aug 14, 2025 at 12:59 PM CEST, Himal Prasad Ghimiray wrote:
> From: Boris Brezillon <boris.brezillon@collabora.com>
>
> drm_gpuva_init() only has one internal user, and given we are about to
> add new optional fields, it only add maintenance burden for no real
> benefit, so let's kill the thing now.
>
> v2
> - Remove usage from msm
>
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: Rob Clark <robin.clark@oss.qualcomm.com>
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> Signed-off-by: Caterina Shablia <caterina.shablia@collabora.com>
Caterina doesn't seem to be involved in the handling of this patch, please
either add her Co-developed-by: in case that is approprite or remove her SoB.
(Also, no need to resend, you can fix this when applying the patch AFAIC.)
> Acked-by: Danilo Krummrich <dakr@kernel.org>
> Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init()
2025-08-18 17:29 ` Danilo Krummrich
@ 2025-08-18 18:15 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 41+ messages in thread
From: Ghimiray, Himal Prasad @ 2025-08-18 18:15 UTC (permalink / raw)
To: Danilo Krummrich
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
Rob Clark, Caterina Shablia
On 18-08-2025 22:59, Danilo Krummrich wrote:
> On Thu Aug 14, 2025 at 12:59 PM CEST, Himal Prasad Ghimiray wrote:
>> From: Boris Brezillon <boris.brezillon@collabora.com>
>>
>> drm_gpuva_init() only has one internal user, and given we are about to
>> add new optional fields, it only add maintenance burden for no real
>> benefit, so let's kill the thing now.
>>
>> v2
>> - Remove usage from msm
>>
>> Cc: Danilo Krummrich <dakr@kernel.org>
>> Cc: Rob Clark <robin.clark@oss.qualcomm.com>
>> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
>> Signed-off-by: Caterina Shablia <caterina.shablia@collabora.com>
>
> Caterina doesn't seem to be involved in the handling of this patch, please
> either add her Co-developed-by: in case that is approprite or remove her SoB.
>
> (Also, no need to resend, you can fix this when applying the patch AFAIC.)
Sure. Will Remove SoB.
>
>> Acked-by: Danilo Krummrich <dakr@kernel.org>
>> Reviewed-by: Matthew Brost <matthew.brost@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
^ permalink raw reply [flat|nested] 41+ messages in thread
* [PATCH v7 03/24] drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 01/24] drm/gpuvm: Pass map arguments through a struct Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 02/24] drm/gpuvm: Kill drm_gpuva_init() Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-18 17:32 ` Danilo Krummrich
2025-08-14 10:59 ` [PATCH v7 04/24] drm/xe/uapi: Add madvise interface Himal Prasad Ghimiray
` (27 subsequent siblings)
30 siblings, 1 reply; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe
Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray,
Danilo Krummrich, Boris Brezillon, dri-devel
This ops is used to iterate over GPUVA's in the user-provided range
and split the existing sparse VMA's if the start or end of the input
range lies within it. The operations can create up to 2 REMAPS and 2 MAPs.
The primary use case is for drivers to assign attributes to GPU VAs in
the specified range without performing unmaps or merging mappings,
supporting fine-grained control over sparse va's.
v2
- use drm_gpuvm_sm_map_ops_create with flags instead of defining new
ops_create (Danilo)
- Add doc (Danilo)
v3
- Fix doc
- Fix unmapping check
v4
- Fix mapping for non madvise ops
v5
- Fix mapping (Matthew Brost)
- Rebase on top of struct changes
v6
- flag moved to map_req
v7 (Danilo)
- Use different functions
- Add kernel-doc
- Modify op_unmap_cb and op_map_cb to handle madvise and NULL ptr
- use gem_obj check in single place
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Boris Brezillon <bbrezillon@kernel.org>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Himal Prasad Ghimiray<himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
---
drivers/gpu/drm/drm_gpuvm.c | 225 ++++++++++++++++++++++++++++++------
include/drm/drm_gpuvm.h | 3 +
2 files changed, 191 insertions(+), 37 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 6c18cec70f11..d6bea8a4fffd 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -420,6 +420,71 @@
* new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
*/
+/**
+ * DOC: Madvise Logic - Splitting and Traversal
+ *
+ * This logic handles GPU VA range updates by generating remap and map operations
+ * without performing unmaps or merging existing mappings.
+ *
+ * 1) The requested range lies entirely within a single drm_gpuva. The logic splits
+ * the existing mapping at the start and end boundaries and inserts a new map.
+ *
+ * ::
+ * a start end b
+ * pre: |-----------------------|
+ * drm_gpuva1
+ *
+ * a start end b
+ * new: |-----|=========|-------|
+ * remap map remap
+ *
+ * one REMAP and one MAP : Same behaviour as SPLIT and MERGE
+ *
+ * 2) The requested range spans multiple drm_gpuva regions. The logic traverses
+ * across boundaries, remapping the start and end segments, and inserting two
+ * map operations to cover the full range.
+ *
+ * :: a start b c end d
+ * pre: |------------------|--------------|------------------|
+ * drm_gpuva1 drm_gpuva2 drm_gpuva3
+ *
+ * a start b c end d
+ * new: |-------|==========|--------------|========|---------|
+ * remap1 map1 drm_gpuva2 map2 remap2
+ *
+ * two REMAPS and two MAPS
+ *
+ * 3) Either start or end lies within a drm_gpuva. A single remap and map operation
+ * are generated to update the affected portion.
+ *
+ *
+ * :: a/start b c end d
+ * pre: |------------------|--------------|------------------|
+ * drm_gpuva1 drm_gpuva2 drm_gpuva3
+ *
+ * a/start b c end d
+ * new: |------------------|--------------|========|---------|
+ * drm_gpuva1 drm_gpuva2 map1 remap1
+ *
+ * :: a start b c/end d
+ * pre: |------------------|--------------|------------------|
+ * drm_gpuva1 drm_gpuva2 drm_gpuva3
+ *
+ * a start b c/end d
+ * new: |-------|==========|--------------|------------------|
+ * remap1 map1 drm_gpuva2 drm_gpuva3
+ *
+ * one REMAP and one MAP
+ *
+ * 4) Both start and end align with existing drm_gpuva boundaries. No operations
+ * are needed as the range is already covered.
+ *
+ * 5) No existing drm_gpuvas. No operations.
+ *
+ * Unlike drm_gpuvm_sm_map_ops_create, this logic avoids unmaps and merging,
+ * focusing solely on remap and map operations for efficient traversal and update.
+ */
+
/**
* DOC: Locking
*
@@ -2063,6 +2128,9 @@ op_map_cb(const struct drm_gpuvm_ops *fn, void *priv,
{
struct drm_gpuva_op op = {};
+ if (!req)
+ return 0;
+
op.op = DRM_GPUVA_OP_MAP;
op.map.va.addr = req->map.va.addr;
op.map.va.range = req->map.va.range;
@@ -2092,10 +2160,13 @@ op_remap_cb(const struct drm_gpuvm_ops *fn, void *priv,
static int
op_unmap_cb(const struct drm_gpuvm_ops *fn, void *priv,
- struct drm_gpuva *va, bool merge)
+ struct drm_gpuva *va, bool merge, bool madvise)
{
struct drm_gpuva_op op = {};
+ if (madvise)
+ return 0;
+
op.op = DRM_GPUVA_OP_UNMAP;
op.unmap.va = va;
op.unmap.keep = merge;
@@ -2106,11 +2177,12 @@ op_unmap_cb(const struct drm_gpuvm_ops *fn, void *priv,
static int
__drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
const struct drm_gpuvm_ops *ops, void *priv,
- const struct drm_gpuvm_map_req *req)
+ const struct drm_gpuvm_map_req *req,
+ bool madvise)
{
struct drm_gem_object *req_obj = req->map.gem.obj;
+ const struct drm_gpuvm_map_req *op_map = madvise ? NULL : req;
struct drm_gpuva *va, *next;
-
u64 req_offset = req->map.gem.offset;
u64 req_range = req->map.va.range;
u64 req_addr = req->map.va.addr;
@@ -2128,19 +2200,22 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
u64 end = addr + range;
bool merge = !!va->gem.obj;
+ if (madvise && obj)
+ continue;
+
if (addr == req_addr) {
merge &= obj == req_obj &&
offset == req_offset;
if (end == req_end) {
- ret = op_unmap_cb(ops, priv, va, merge);
+ ret = op_unmap_cb(ops, priv, va, merge, madvise);
if (ret)
return ret;
break;
}
if (end < req_end) {
- ret = op_unmap_cb(ops, priv, va, merge);
+ ret = op_unmap_cb(ops, priv, va, merge, madvise);
if (ret)
return ret;
continue;
@@ -2161,6 +2236,9 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
ret = op_remap_cb(ops, priv, NULL, &n, &u);
if (ret)
return ret;
+
+ if (madvise)
+ op_map = req;
break;
}
} else if (addr < req_addr) {
@@ -2181,6 +2259,9 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
ret = op_remap_cb(ops, priv, &p, NULL, &u);
if (ret)
return ret;
+
+ if (madvise)
+ op_map = req;
break;
}
@@ -2188,6 +2269,18 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
ret = op_remap_cb(ops, priv, &p, NULL, &u);
if (ret)
return ret;
+
+ if (madvise) {
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = req_addr,
+ .map.va.range = end - req_addr,
+ };
+
+ ret = op_map_cb(ops, priv, &map_req);
+ if (ret)
+ return ret;
+ }
+
continue;
}
@@ -2203,6 +2296,9 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
ret = op_remap_cb(ops, priv, &p, &n, &u);
if (ret)
return ret;
+
+ if (madvise)
+ op_map = req;
break;
}
} else if (addr > req_addr) {
@@ -2211,16 +2307,18 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
(addr - req_addr);
if (end == req_end) {
- ret = op_unmap_cb(ops, priv, va, merge);
+ ret = op_unmap_cb(ops, priv, va, merge, madvise);
if (ret)
return ret;
+
break;
}
if (end < req_end) {
- ret = op_unmap_cb(ops, priv, va, merge);
+ ret = op_unmap_cb(ops, priv, va, merge, madvise);
if (ret)
return ret;
+
continue;
}
@@ -2239,12 +2337,20 @@ __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
ret = op_remap_cb(ops, priv, NULL, &n, &u);
if (ret)
return ret;
+
+ if (madvise) {
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = addr,
+ .map.va.range = req_end - addr,
+ };
+
+ return op_map_cb(ops, priv, &map_req);
+ }
break;
}
}
}
-
- return op_map_cb(ops, priv, req);
+ return op_map_cb(ops, priv, op_map);
}
static int
@@ -2296,7 +2402,7 @@ __drm_gpuvm_sm_unmap(struct drm_gpuvm *gpuvm,
if (ret)
return ret;
} else {
- ret = op_unmap_cb(ops, priv, va, false);
+ ret = op_unmap_cb(ops, priv, va, false, false);
if (ret)
return ret;
}
@@ -2345,7 +2451,7 @@ drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm, void *priv,
ops->sm_step_unmap)))
return -EINVAL;
- return __drm_gpuvm_sm_map(gpuvm, ops, priv, req);
+ return __drm_gpuvm_sm_map(gpuvm, ops, priv, req, false);
}
EXPORT_SYMBOL_GPL(drm_gpuvm_sm_map);
@@ -2483,7 +2589,7 @@ drm_gpuvm_sm_map_exec_lock(struct drm_gpuvm *gpuvm,
return ret;
}
- return __drm_gpuvm_sm_map(gpuvm, &lock_ops, exec, req);
+ return __drm_gpuvm_sm_map(gpuvm, &lock_ops, exec, req, false);
}
EXPORT_SYMBOL_GPL(drm_gpuvm_sm_map_exec_lock);
@@ -2602,6 +2708,38 @@ static const struct drm_gpuvm_ops gpuvm_list_ops = {
.sm_step_unmap = drm_gpuva_sm_step,
};
+static struct drm_gpuva_ops *
+__drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
+ const struct drm_gpuvm_map_req *req,
+ bool madvise)
+{
+ struct drm_gpuva_ops *ops;
+ struct {
+ struct drm_gpuvm *vm;
+ struct drm_gpuva_ops *ops;
+ } args;
+ int ret;
+
+ ops = kzalloc(sizeof(*ops), GFP_KERNEL);
+ if (unlikely(!ops))
+ return ERR_PTR(-ENOMEM);
+
+ INIT_LIST_HEAD(&ops->list);
+
+ args.vm = gpuvm;
+ args.ops = ops;
+
+ ret = __drm_gpuvm_sm_map(gpuvm, &gpuvm_list_ops, &args, req, madvise);
+ if (ret)
+ goto err_free_ops;
+
+ return ops;
+
+err_free_ops:
+ drm_gpuva_ops_free(gpuvm, ops);
+ return ERR_PTR(ret);
+}
+
/**
* drm_gpuvm_sm_map_ops_create() - creates the &drm_gpuva_ops to split and merge
* @gpuvm: the &drm_gpuvm representing the GPU VA space
@@ -2635,34 +2773,47 @@ struct drm_gpuva_ops *
drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
const struct drm_gpuvm_map_req *req)
{
- struct drm_gpuva_ops *ops;
- struct {
- struct drm_gpuvm *vm;
- struct drm_gpuva_ops *ops;
- } args;
- int ret;
-
- ops = kzalloc(sizeof(*ops), GFP_KERNEL);
- if (unlikely(!ops))
- return ERR_PTR(-ENOMEM);
-
- INIT_LIST_HEAD(&ops->list);
-
- args.vm = gpuvm;
- args.ops = ops;
-
- ret = __drm_gpuvm_sm_map(gpuvm, &gpuvm_list_ops, &args, req);
- if (ret)
- goto err_free_ops;
-
- return ops;
-
-err_free_ops:
- drm_gpuva_ops_free(gpuvm, ops);
- return ERR_PTR(ret);
+ return __drm_gpuvm_sm_map_ops_create(gpuvm, req, false);
}
EXPORT_SYMBOL_GPL(drm_gpuvm_sm_map_ops_create);
+/**
+ * drm_gpuvm_madvise_ops_create() - creates the &drm_gpuva_ops to split
+ * @gpuvm: the &drm_gpuvm representing the GPU VA space
+ * @req: map request arguments
+ *
+ * This function creates a list of operations to perform splitting
+ * of existent mapping(s) at start or end, based on the request map.
+ *
+ * The list can be iterated with &drm_gpuva_for_each_op and must be processed
+ * in the given order. It can contain map and remap operations, but it
+ * also can be empty if no operation is required, e.g. if the requested mapping
+ * already exists is the exact same way.
+ *
+ * There will be no unmap operations, a maximum of two remap operations and two
+ * map operations. The two map operations correspond to: one from start to the
+ * end of drm_gpuvaX, and another from the start of drm_gpuvaY to end.
+ *
+ * Note that before calling this function again with another mapping request it
+ * is necessary to update the &drm_gpuvm's view of the GPU VA space. The
+ * previously obtained operations must be either processed or abandoned. To
+ * update the &drm_gpuvm's view of the GPU VA space drm_gpuva_insert(),
+ * drm_gpuva_destroy_locked() and/or drm_gpuva_destroy_unlocked() should be
+ * used.
+ *
+ * After the caller finished processing the returned &drm_gpuva_ops, they must
+ * be freed with &drm_gpuva_ops_free.
+ *
+ * Returns: a pointer to the &drm_gpuva_ops on success, an ERR_PTR on failure
+ */
+struct drm_gpuva_ops *
+drm_gpuvm_madvise_ops_create(struct drm_gpuvm *gpuvm,
+ const struct drm_gpuvm_map_req *req)
+{
+ return __drm_gpuvm_sm_map_ops_create(gpuvm, req, true);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_madvise_ops_create);
+
/**
* drm_gpuvm_sm_unmap_ops_create() - creates the &drm_gpuva_ops to split on
* unmap
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 05347ac6cc73..4a22b9d848f7 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -1062,6 +1062,9 @@ struct drm_gpuvm_map_req {
struct drm_gpuva_ops *
drm_gpuvm_sm_map_ops_create(struct drm_gpuvm *gpuvm,
const struct drm_gpuvm_map_req *req);
+struct drm_gpuva_ops *
+drm_gpuvm_madvise_ops_create(struct drm_gpuvm *gpuvm,
+ const struct drm_gpuvm_map_req *req);
struct drm_gpuva_ops *
drm_gpuvm_sm_unmap_ops_create(struct drm_gpuvm *gpuvm,
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* Re: [PATCH v7 03/24] drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create
2025-08-14 10:59 ` [PATCH v7 03/24] drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create Himal Prasad Ghimiray
@ 2025-08-18 17:32 ` Danilo Krummrich
2025-08-18 18:16 ` Ghimiray, Himal Prasad
0 siblings, 1 reply; 41+ messages in thread
From: Danilo Krummrich @ 2025-08-18 17:32 UTC (permalink / raw)
To: Himal Prasad Ghimiray
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
dri-devel
On Thu Aug 14, 2025 at 12:59 PM CEST, Himal Prasad Ghimiray wrote:
> This ops is used to iterate over GPUVA's in the user-provided range
> and split the existing sparse VMA's if the start or end of the input
> range lies within it. The operations can create up to 2 REMAPS and 2 MAPs.
>
> The primary use case is for drivers to assign attributes to GPU VAs in
> the specified range without performing unmaps or merging mappings,
> supporting fine-grained control over sparse va's.
>
> v2
> - use drm_gpuvm_sm_map_ops_create with flags instead of defining new
> ops_create (Danilo)
> - Add doc (Danilo)
>
> v3
> - Fix doc
> - Fix unmapping check
>
> v4
> - Fix mapping for non madvise ops
>
> v5
> - Fix mapping (Matthew Brost)
> - Rebase on top of struct changes
>
> v6
> - flag moved to map_req
>
> v7 (Danilo)
> - Use different functions
> - Add kernel-doc
> - Modify op_unmap_cb and op_map_cb to handle madvise and NULL ptr
> - use gem_obj check in single place
(Same comment as in patch 1.)
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Boris Brezillon <bbrezillon@kernel.org>
> Cc: <dri-devel@lists.freedesktop.org>
> Signed-off-by: Himal Prasad Ghimiray<himal.prasad.ghimiray@intel.com>
> Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
This looks pretty clean now, and thanks for adding the documentation.
Acked-by: Danilo Krummrich <dakr@kernel.org>
Feel free to take this through the Xe tree if necessary.
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v7 03/24] drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create
2025-08-18 17:32 ` Danilo Krummrich
@ 2025-08-18 18:16 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 41+ messages in thread
From: Ghimiray, Himal Prasad @ 2025-08-18 18:16 UTC (permalink / raw)
To: Danilo Krummrich
Cc: intel-xe, Matthew Brost, Thomas Hellström, Boris Brezillon,
dri-devel
On 18-08-2025 23:02, Danilo Krummrich wrote:
> On Thu Aug 14, 2025 at 12:59 PM CEST, Himal Prasad Ghimiray wrote:
>> This ops is used to iterate over GPUVA's in the user-provided range
>> and split the existing sparse VMA's if the start or end of the input
>> range lies within it. The operations can create up to 2 REMAPS and 2 MAPs.
>>
>> The primary use case is for drivers to assign attributes to GPU VAs in
>> the specified range without performing unmaps or merging mappings,
>> supporting fine-grained control over sparse va's.
>>
>> v2
>> - use drm_gpuvm_sm_map_ops_create with flags instead of defining new
>> ops_create (Danilo)
>> - Add doc (Danilo)
>>
>> v3
>> - Fix doc
>> - Fix unmapping check
>>
>> v4
>> - Fix mapping for non madvise ops
>>
>> v5
>> - Fix mapping (Matthew Brost)
>> - Rebase on top of struct changes
>>
>> v6
>> - flag moved to map_req
>>
>> v7 (Danilo)
>> - Use different functions
>> - Add kernel-doc
>> - Modify op_unmap_cb and op_map_cb to handle madvise and NULL ptr
>> - use gem_obj check in single place
>
> (Same comment as in patch 1.)
>
>> Cc: Danilo Krummrich <dakr@kernel.org>
>> Cc: Matthew Brost <matthew.brost@intel.com>
>> Cc: Boris Brezillon <bbrezillon@kernel.org>
>> Cc: <dri-devel@lists.freedesktop.org>
>> Signed-off-by: Himal Prasad Ghimiray<himal.prasad.ghimiray@intel.com>
>> Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
>
> This looks pretty clean now, and thanks for adding the documentation.
>
> Acked-by: Danilo Krummrich <dakr@kernel.org>
>
> Feel free to take this through the Xe tree if necessary.
Thanks
^ permalink raw reply [flat|nested] 41+ messages in thread
* [PATCH v7 04/24] drm/xe/uapi: Add madvise interface
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (2 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 03/24] drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 05/24] drm/xe/vm: Add attributes struct as member of vma Himal Prasad Ghimiray
` (26 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
This commit introduces a new madvise interface to support
driver-specific ioctl operations. The madvise interface allows for more
efficient memory management by providing hints to the driver about the
expected memory usage and pte update policy for gpuvma.
v2 (Matthew/Thomas)
- Drop num_ops support
- Drop purgeable support
- Add kernel-docs
- IOWR/IOW
v3 (Matthew/Thomas)
- Reorder attributes
- use __u16 for migration_policy
- use __u64 for reserved in unions
- Avoid usage of vma
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
include/uapi/drm/xe_drm.h | 130 ++++++++++++++++++++++++++++++++++++++
1 file changed, 130 insertions(+)
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index c721e130c1d2..4e6e9a9164ee 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -81,6 +81,7 @@ extern "C" {
* - &DRM_IOCTL_XE_EXEC
* - &DRM_IOCTL_XE_WAIT_USER_FENCE
* - &DRM_IOCTL_XE_OBSERVATION
+ * - &DRM_IOCTL_XE_MADVISE
*/
/*
@@ -102,6 +103,7 @@ extern "C" {
#define DRM_XE_EXEC 0x09
#define DRM_XE_WAIT_USER_FENCE 0x0a
#define DRM_XE_OBSERVATION 0x0b
+#define DRM_XE_MADVISE 0x0c
/* Must be kept compact -- no holes */
@@ -117,6 +119,7 @@ extern "C" {
#define DRM_IOCTL_XE_EXEC DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC, struct drm_xe_exec)
#define DRM_IOCTL_XE_WAIT_USER_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_WAIT_USER_FENCE, struct drm_xe_wait_user_fence)
#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)
/**
* DOC: Xe IOCTL Extensions
@@ -1978,6 +1981,133 @@ struct drm_xe_query_eu_stall {
__u64 sampling_rates[];
};
+/**
+ * struct drm_xe_madvise - Input of &DRM_IOCTL_XE_MADVISE
+ *
+ * This structure is used to set memory attributes for a virtual address range
+ * in a VM. The type of attribute is specified by @type, and the corresponding
+ * union member is used to provide additional parameters for @type.
+ *
+ * Supported attribute types:
+ * - DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC: Set preferred memory location.
+ * - DRM_XE_MEM_RANGE_ATTR_ATOMIC: Set atomic access policy.
+ * - DRM_XE_MEM_RANGE_ATTR_PAT: Set page attribute table index.
+ *
+ * Example:
+ *
+ * .. code-block:: C
+ *
+ * struct drm_xe_madvise madvise = {
+ * .vm_id = vm_id,
+ * .start = 0x100000,
+ * .range = 0x2000,
+ * .type = DRM_XE_MEM_RANGE_ATTR_ATOMIC,
+ * .atomic_val = DRM_XE_ATOMIC_DEVICE,
+ * };
+ *
+ * ioctl(fd, DRM_IOCTL_XE_MADVISE, &madvise);
+ *
+ */
+struct drm_xe_madvise {
+ /** @extensions: Pointer to the first extension struct, if any */
+ __u64 extensions;
+
+ /** @start: start of the virtual address range */
+ __u64 start;
+
+ /** @range: size of the virtual address range */
+ __u64 range;
+
+ /** @vm_id: vm_id of the virtual range */
+ __u32 vm_id;
+
+#define DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC 0
+#define DRM_XE_MEM_RANGE_ATTR_ATOMIC 1
+#define DRM_XE_MEM_RANGE_ATTR_PAT 2
+ /** @type: type of attribute */
+ __u32 type;
+
+ union {
+ /**
+ * @preferred_mem_loc: preferred memory location
+ *
+ * Used when @type == DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC
+ *
+ * Supported values for @preferred_mem_loc.devmem_fd:
+ * - DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE: set vram of faulting tile as preferred loc
+ * - DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM: set smem as preferred loc
+ *
+ * Supported values for @preferred_mem_loc.migration_policy:
+ * - DRM_XE_MIGRATE_ALL_PAGES
+ * - DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES
+ */
+ struct {
+#define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0
+#define DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -1
+ /** @preferred_mem_loc.devmem_fd: fd for preferred loc */
+ __u32 devmem_fd;
+
+#define DRM_XE_MIGRATE_ALL_PAGES 0
+#define DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES 1
+ /** @preferred_mem_loc.migration_policy: Page migration policy */
+ __u16 migration_policy;
+
+ /** @preferred_mem_loc.pad : MBZ */
+ __u16 pad;
+
+ /** @preferred_mem_loc.reserved : Reserved */
+ __u64 reserved;
+ } preferred_mem_loc;
+
+ /**
+ * @atomic: Atomic access policy
+ *
+ * Used when @type == DRM_XE_MEM_RANGE_ATTR_ATOMIC.
+ *
+ * Supported values for @atomic.val:
+ * - DRM_XE_ATOMIC_UNDEFINED: Undefined or default behaviour
+ * Support both GPU and CPU atomic operations for system allocator
+ * Support GPU atomic operations for normal(bo) allocator
+ * - DRM_XE_ATOMIC_DEVICE: Support GPU atomic operations
+ * - DRM_XE_ATOMIC_GLOBAL: Support both GPU and CPU atomic operations
+ * - DRM_XE_ATOMIC_CPU: Support CPU atomic
+ */
+ struct {
+#define DRM_XE_ATOMIC_UNDEFINED 0
+#define DRM_XE_ATOMIC_DEVICE 1
+#define DRM_XE_ATOMIC_GLOBAL 2
+#define DRM_XE_ATOMIC_CPU 3
+ /** @atomic.val: value of atomic operation */
+ __u32 val;
+
+ /** @atomic.pad: MBZ */
+ __u32 pad;
+
+ /** @atomic.reserved: Reserved */
+ __u64 reserved;
+ } atomic;
+
+ /**
+ * @pat_index: Page attribute table index
+ *
+ * Used when @type == DRM_XE_MEM_RANGE_ATTR_PAT.
+ */
+ struct {
+ /** @pat_index.val: PAT index value */
+ __u32 val;
+
+ /** @pat_index.pad: MBZ */
+ __u32 pad;
+
+ /** @pat_index.reserved: Reserved */
+ __u64 reserved;
+ } pat_index;
+ };
+
+ /** @reserved: Reserved */
+ __u64 reserved[2];
+};
+
#if defined(__cplusplus)
}
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 05/24] drm/xe/vm: Add attributes struct as member of vma
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (3 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 04/24] drm/xe/uapi: Add madvise interface Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 06/24] drm/xe/vma: Move pat_index to vma attributes Himal Prasad Ghimiray
` (25 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
The attribute of xe_vma will determine the migration policy and the
encoding of the page table entries (PTEs) for that vma.
This attribute helps manage how memory pages are moved and how their
addresses are translated. It will be used by madvise to set the
behavior of the vma.
v2 (Matthew Brost)
- Add docs
v3 (Matthew Brost)
- Add uapi references
- 80 characters line wrap
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
drivers/gpu/drm/xe/xe_vm_types.h | 33 ++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 8a07feef503b..8e8138c2b80a 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -77,6 +77,33 @@ struct xe_userptr {
#endif
};
+/**
+ * struct xe_vma_mem_attr - memory attributes associated with vma
+ */
+struct xe_vma_mem_attr {
+ /** @preferred_loc: perferred memory_location */
+ struct {
+ /** @preferred_loc.migration_policy: Pages migration policy */
+ u32 migration_policy;
+
+ /**
+ * @preferred_loc.devmem_fd: used for determining pagemap_fd
+ * requested by user DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM and
+ * DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE mean system memory or
+ * closest device memory respectively.
+ */
+ u32 devmem_fd;
+ } preferred_loc;
+
+ /**
+ * @atomic_access: The atomic access type for the vma
+ * See %DRM_XE_VMA_ATOMIC_UNDEFINED, %DRM_XE_VMA_ATOMIC_DEVICE,
+ * %DRM_XE_VMA_ATOMIC_GLOBAL, and %DRM_XE_VMA_ATOMIC_CPU for possible
+ * values. These are defined in uapi/drm/xe_drm.h.
+ */
+ u32 atomic_access;
+};
+
struct xe_vma {
/** @gpuva: Base GPUVA object */
struct drm_gpuva gpuva;
@@ -135,6 +162,12 @@ struct xe_vma {
* Needs to be signalled before UNMAP can be processed.
*/
struct xe_user_fence *ufence;
+
+ /**
+ * @attr: The attributes of vma which determines the migration policy
+ * and encoding of the PTEs for this vma.
+ */
+ struct xe_vma_mem_attr attr;
};
/**
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 06/24] drm/xe/vma: Move pat_index to vma attributes
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (4 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 05/24] drm/xe/vm: Add attributes struct as member of vma Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 07/24] drm/xe/vma: Modify new_vma to accept struct xe_vma_mem_attr as parameter Himal Prasad Ghimiray
` (24 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
The PAT index determines how PTEs are encoded and can be modified by
madvise. Therefore, it is now part of the vma attributes.
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_pt.c | 2 +-
drivers/gpu/drm/xe/xe_vm.c | 6 +++---
drivers/gpu/drm/xe/xe_vm_types.h | 10 +++++-----
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index f3a39e734a90..ba7a50bf3a2d 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -518,7 +518,7 @@ xe_pt_stage_bind_entry(struct xe_ptw *parent, pgoff_t offset,
{
struct xe_pt_stage_bind_walk *xe_walk =
container_of(walk, typeof(*xe_walk), base);
- u16 pat_index = xe_walk->vma->pat_index;
+ u16 pat_index = xe_walk->vma->attr.pat_index;
struct xe_pt *xe_parent = container_of(parent, typeof(*xe_parent), base);
struct xe_vm *vm = xe_walk->vm;
struct xe_pt *xe_child;
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 15359ee738e6..d1055edd8aaf 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1223,7 +1223,7 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
if (vm->xe->info.has_atomic_enable_pte_bit)
vma->gpuva.flags |= XE_VMA_ATOMIC_PTE_BIT;
- vma->pat_index = pat_index;
+ vma->attr.pat_index = pat_index;
if (bo) {
struct drm_gpuvm_bo *vm_bo;
@@ -2700,7 +2700,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
if (op->base.remap.prev) {
vma = new_vma(vm, op->base.remap.prev,
- old->pat_index, flags);
+ old->attr.pat_index, flags);
if (IS_ERR(vma))
return PTR_ERR(vma);
@@ -2730,7 +2730,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
if (op->base.remap.next) {
vma = new_vma(vm, op->base.remap.next,
- old->pat_index, flags);
+ old->attr.pat_index, flags);
if (IS_ERR(vma))
return PTR_ERR(vma);
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 8e8138c2b80a..c7b2bfa0a0d1 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -102,6 +102,11 @@ struct xe_vma_mem_attr {
* values. These are defined in uapi/drm/xe_drm.h.
*/
u32 atomic_access;
+
+ /**
+ * @pat_index: The pat index to use when encoding the PTEs for this vma.
+ */
+ u16 pat_index;
};
struct xe_vma {
@@ -152,11 +157,6 @@ struct xe_vma {
/** @tile_staged: bind is staged for this VMA */
u8 tile_staged;
- /**
- * @pat_index: The pat index to use when encoding the PTEs for this vma.
- */
- u16 pat_index;
-
/**
* @ufence: The user fence that was provided with MAP.
* Needs to be signalled before UNMAP can be processed.
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 07/24] drm/xe/vma: Modify new_vma to accept struct xe_vma_mem_attr as parameter
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (5 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 06/24] drm/xe/vma: Move pat_index to vma attributes Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 08/24] drm/gpusvm: Make drm_gpusvm_for_each_* macros public Himal Prasad Ghimiray
` (23 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
This change simplifies the logic by ensuring that remapped previous or
next VMAs are created with the same memory attributes as the original VMA.
By passing struct xe_vma_mem_attr as a parameter, we maintain consistency
in memory attributes.
-v2
*dst = *src (Matthew Brost)
-v3 (Matthew Brost)
Drop unnecessary helper
pass attr ptr as input to new_vma and vma_create
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_vm.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index d1055edd8aaf..fc8bacef7597 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1168,7 +1168,8 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
struct xe_bo *bo,
u64 bo_offset_or_userptr,
u64 start, u64 end,
- u16 pat_index, unsigned int flags)
+ struct xe_vma_mem_attr *attr,
+ unsigned int flags)
{
struct xe_vma *vma;
struct xe_tile *tile;
@@ -1223,7 +1224,7 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
if (vm->xe->info.has_atomic_enable_pte_bit)
vma->gpuva.flags |= XE_VMA_ATOMIC_PTE_BIT;
- vma->attr.pat_index = pat_index;
+ vma->attr = *attr;
if (bo) {
struct drm_gpuvm_bo *vm_bo;
@@ -2471,7 +2472,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
ALLOW_ERROR_INJECTION(vm_bind_ioctl_ops_create, ERRNO);
static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
- u16 pat_index, unsigned int flags)
+ struct xe_vma_mem_attr *attr, unsigned int flags)
{
struct xe_bo *bo = op->gem.obj ? gem_to_xe_bo(op->gem.obj) : NULL;
struct drm_exec exec;
@@ -2500,7 +2501,7 @@ static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
}
vma = xe_vma_create(vm, bo, op->gem.offset,
op->va.addr, op->va.addr +
- op->va.range - 1, pat_index, flags);
+ op->va.range - 1, attr, flags);
if (IS_ERR(vma))
goto err_unlock;
@@ -2643,6 +2644,15 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
switch (op->base.op) {
case DRM_GPUVA_OP_MAP:
{
+ struct xe_vma_mem_attr default_attr = {
+ .preferred_loc = {
+ .devmem_fd = DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE,
+ .migration_policy = DRM_XE_MIGRATE_ALL_PAGES,
+ },
+ .atomic_access = DRM_XE_ATOMIC_UNDEFINED,
+ .pat_index = op->map.pat_index,
+ };
+
flags |= op->map.read_only ?
VMA_CREATE_FLAG_READ_ONLY : 0;
flags |= op->map.is_null ?
@@ -2652,7 +2662,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
flags |= op->map.is_cpu_addr_mirror ?
VMA_CREATE_FLAG_IS_SYSTEM_ALLOCATOR : 0;
- vma = new_vma(vm, &op->base.map, op->map.pat_index,
+ vma = new_vma(vm, &op->base.map, &default_attr,
flags);
if (IS_ERR(vma))
return PTR_ERR(vma);
@@ -2700,7 +2710,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
if (op->base.remap.prev) {
vma = new_vma(vm, op->base.remap.prev,
- old->attr.pat_index, flags);
+ &old->attr, flags);
if (IS_ERR(vma))
return PTR_ERR(vma);
@@ -2730,7 +2740,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
if (op->base.remap.next) {
vma = new_vma(vm, op->base.remap.next,
- old->attr.pat_index, flags);
+ &old->attr, flags);
if (IS_ERR(vma))
return PTR_ERR(vma);
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 08/24] drm/gpusvm: Make drm_gpusvm_for_each_* macros public
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (6 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 07/24] drm/xe/vma: Modify new_vma to accept struct xe_vma_mem_attr as parameter Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 09/24] drm/xe/svm: Split system allocator vma incase of madvise call Himal Prasad Ghimiray
` (22 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
The drm_gpusvm_for_each_notifier, drm_gpusvm_for_each_notifier_safe and
drm_gpusvm_for_each_range_safe macros are useful for locating notifiers
and ranges within a user-specified range. By making these macros public,
we enable broader access and utility for developers who need to leverage
them in their implementations.
v2 (Matthew Brost)
- drop inline __drm_gpusvm_range_find
- /s/notifier_iter_first/drm_gpusvm_notifier_find
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/drm_gpusvm.c | 122 +++++++----------------------------
include/drm/drm_gpusvm.h | 70 ++++++++++++++++++++
2 files changed, 95 insertions(+), 97 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index 661306da6b2d..e2a9a6ae1d54 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -271,107 +271,50 @@ npages_in_range(unsigned long start, unsigned long end)
}
/**
- * drm_gpusvm_range_find() - Find GPU SVM range from GPU SVM notifier
- * @notifier: Pointer to the GPU SVM notifier structure.
- * @start: Start address of the range
- * @end: End address of the range
+ * drm_gpusvm_notifier_find() - Find GPU SVM notifier from GPU SVM
+ * @gpusvm: Pointer to the GPU SVM structure.
+ * @start: Start address of the notifier
+ * @end: End address of the notifier
*
- * Return: A pointer to the drm_gpusvm_range if found or NULL
+ * Return: A pointer to the drm_gpusvm_notifier if found or NULL
*/
-struct drm_gpusvm_range *
-drm_gpusvm_range_find(struct drm_gpusvm_notifier *notifier, unsigned long start,
- unsigned long end)
+struct drm_gpusvm_notifier *
+drm_gpusvm_notifier_find(struct drm_gpusvm *gpusvm, unsigned long start,
+ unsigned long end)
{
struct interval_tree_node *itree;
- itree = interval_tree_iter_first(¬ifier->root, start, end - 1);
+ itree = interval_tree_iter_first(&gpusvm->root, start, end - 1);
if (itree)
- return container_of(itree, struct drm_gpusvm_range, itree);
+ return container_of(itree, struct drm_gpusvm_notifier, itree);
else
return NULL;
}
-EXPORT_SYMBOL_GPL(drm_gpusvm_range_find);
+EXPORT_SYMBOL_GPL(drm_gpusvm_notifier_find);
/**
- * drm_gpusvm_for_each_range_safe() - Safely iterate over GPU SVM ranges in a notifier
- * @range__: Iterator variable for the ranges
- * @next__: Iterator variable for the ranges temporay storage
- * @notifier__: Pointer to the GPU SVM notifier
- * @start__: Start address of the range
- * @end__: End address of the range
- *
- * This macro is used to iterate over GPU SVM ranges in a notifier while
- * removing ranges from it.
- */
-#define drm_gpusvm_for_each_range_safe(range__, next__, notifier__, start__, end__) \
- for ((range__) = drm_gpusvm_range_find((notifier__), (start__), (end__)), \
- (next__) = __drm_gpusvm_range_next(range__); \
- (range__) && (drm_gpusvm_range_start(range__) < (end__)); \
- (range__) = (next__), (next__) = __drm_gpusvm_range_next(range__))
-
-/**
- * __drm_gpusvm_notifier_next() - get the next drm_gpusvm_notifier in the list
- * @notifier: a pointer to the current drm_gpusvm_notifier
+ * drm_gpusvm_range_find() - Find GPU SVM range from GPU SVM notifier
+ * @notifier: Pointer to the GPU SVM notifier structure.
+ * @start: Start address of the range
+ * @end: End address of the range
*
- * Return: A pointer to the next drm_gpusvm_notifier if available, or NULL if
- * the current notifier is the last one or if the input notifier is
- * NULL.
+ * Return: A pointer to the drm_gpusvm_range if found or NULL
*/
-static struct drm_gpusvm_notifier *
-__drm_gpusvm_notifier_next(struct drm_gpusvm_notifier *notifier)
-{
- if (notifier && !list_is_last(¬ifier->entry,
- ¬ifier->gpusvm->notifier_list))
- return list_next_entry(notifier, entry);
-
- return NULL;
-}
-
-static struct drm_gpusvm_notifier *
-notifier_iter_first(struct rb_root_cached *root, unsigned long start,
- unsigned long last)
+struct drm_gpusvm_range *
+drm_gpusvm_range_find(struct drm_gpusvm_notifier *notifier, unsigned long start,
+ unsigned long end)
{
struct interval_tree_node *itree;
- itree = interval_tree_iter_first(root, start, last);
+ itree = interval_tree_iter_first(¬ifier->root, start, end - 1);
if (itree)
- return container_of(itree, struct drm_gpusvm_notifier, itree);
+ return container_of(itree, struct drm_gpusvm_range, itree);
else
return NULL;
}
-
-/**
- * drm_gpusvm_for_each_notifier() - Iterate over GPU SVM notifiers in a gpusvm
- * @notifier__: Iterator variable for the notifiers
- * @notifier__: Pointer to the GPU SVM notifier
- * @start__: Start address of the notifier
- * @end__: End address of the notifier
- *
- * This macro is used to iterate over GPU SVM notifiers in a gpusvm.
- */
-#define drm_gpusvm_for_each_notifier(notifier__, gpusvm__, start__, end__) \
- for ((notifier__) = notifier_iter_first(&(gpusvm__)->root, (start__), (end__) - 1); \
- (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
- (notifier__) = __drm_gpusvm_notifier_next(notifier__))
-
-/**
- * drm_gpusvm_for_each_notifier_safe() - Safely iterate over GPU SVM notifiers in a gpusvm
- * @notifier__: Iterator variable for the notifiers
- * @next__: Iterator variable for the notifiers temporay storage
- * @notifier__: Pointer to the GPU SVM notifier
- * @start__: Start address of the notifier
- * @end__: End address of the notifier
- *
- * This macro is used to iterate over GPU SVM notifiers in a gpusvm while
- * removing notifiers from it.
- */
-#define drm_gpusvm_for_each_notifier_safe(notifier__, next__, gpusvm__, start__, end__) \
- for ((notifier__) = notifier_iter_first(&(gpusvm__)->root, (start__), (end__) - 1), \
- (next__) = __drm_gpusvm_notifier_next(notifier__); \
- (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
- (notifier__) = (next__), (next__) = __drm_gpusvm_notifier_next(notifier__))
+EXPORT_SYMBOL_GPL(drm_gpusvm_range_find);
/**
* drm_gpusvm_notifier_invalidate() - Invalidate a GPU SVM notifier.
@@ -472,22 +415,6 @@ int drm_gpusvm_init(struct drm_gpusvm *gpusvm,
}
EXPORT_SYMBOL_GPL(drm_gpusvm_init);
-/**
- * drm_gpusvm_notifier_find() - Find GPU SVM notifier
- * @gpusvm: Pointer to the GPU SVM structure
- * @fault_addr: Fault address
- *
- * This function finds the GPU SVM notifier associated with the fault address.
- *
- * Return: Pointer to the GPU SVM notifier on success, NULL otherwise.
- */
-static struct drm_gpusvm_notifier *
-drm_gpusvm_notifier_find(struct drm_gpusvm *gpusvm,
- unsigned long fault_addr)
-{
- return notifier_iter_first(&gpusvm->root, fault_addr, fault_addr + 1);
-}
-
/**
* to_drm_gpusvm_notifier() - retrieve the container struct for a given rbtree node
* @node: a pointer to the rbtree node embedded within a drm_gpusvm_notifier struct
@@ -943,7 +870,7 @@ drm_gpusvm_range_find_or_insert(struct drm_gpusvm *gpusvm,
if (!mmget_not_zero(mm))
return ERR_PTR(-EFAULT);
- notifier = drm_gpusvm_notifier_find(gpusvm, fault_addr);
+ notifier = drm_gpusvm_notifier_find(gpusvm, fault_addr, fault_addr + 1);
if (!notifier) {
notifier = drm_gpusvm_notifier_alloc(gpusvm, fault_addr);
if (IS_ERR(notifier)) {
@@ -1107,7 +1034,8 @@ void drm_gpusvm_range_remove(struct drm_gpusvm *gpusvm,
drm_gpusvm_driver_lock_held(gpusvm);
notifier = drm_gpusvm_notifier_find(gpusvm,
- drm_gpusvm_range_start(range));
+ drm_gpusvm_range_start(range),
+ drm_gpusvm_range_start(range) + 1);
if (WARN_ON_ONCE(!notifier))
return;
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 8d613e9b2690..0e336148309d 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -282,6 +282,10 @@ void drm_gpusvm_range_unmap_pages(struct drm_gpusvm *gpusvm,
bool drm_gpusvm_has_mapping(struct drm_gpusvm *gpusvm, unsigned long start,
unsigned long end);
+struct drm_gpusvm_notifier *
+drm_gpusvm_notifier_find(struct drm_gpusvm *gpusvm, unsigned long start,
+ unsigned long end);
+
struct drm_gpusvm_range *
drm_gpusvm_range_find(struct drm_gpusvm_notifier *notifier, unsigned long start,
unsigned long end);
@@ -434,4 +438,70 @@ __drm_gpusvm_range_next(struct drm_gpusvm_range *range)
(range__) && (drm_gpusvm_range_start(range__) < (end__)); \
(range__) = __drm_gpusvm_range_next(range__))
+/**
+ * drm_gpusvm_for_each_range_safe() - Safely iterate over GPU SVM ranges in a notifier
+ * @range__: Iterator variable for the ranges
+ * @next__: Iterator variable for the ranges temporay storage
+ * @notifier__: Pointer to the GPU SVM notifier
+ * @start__: Start address of the range
+ * @end__: End address of the range
+ *
+ * This macro is used to iterate over GPU SVM ranges in a notifier while
+ * removing ranges from it.
+ */
+#define drm_gpusvm_for_each_range_safe(range__, next__, notifier__, start__, end__) \
+ for ((range__) = drm_gpusvm_range_find((notifier__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_range_next(range__); \
+ (range__) && (drm_gpusvm_range_start(range__) < (end__)); \
+ (range__) = (next__), (next__) = __drm_gpusvm_range_next(range__))
+
+/**
+ * __drm_gpusvm_notifier_next() - get the next drm_gpusvm_notifier in the list
+ * @notifier: a pointer to the current drm_gpusvm_notifier
+ *
+ * Return: A pointer to the next drm_gpusvm_notifier if available, or NULL if
+ * the current notifier is the last one or if the input notifier is
+ * NULL.
+ */
+static inline struct drm_gpusvm_notifier *
+__drm_gpusvm_notifier_next(struct drm_gpusvm_notifier *notifier)
+{
+ if (notifier && !list_is_last(¬ifier->entry,
+ ¬ifier->gpusvm->notifier_list))
+ return list_next_entry(notifier, entry);
+
+ return NULL;
+}
+
+/**
+ * drm_gpusvm_for_each_notifier() - Iterate over GPU SVM notifiers in a gpusvm
+ * @notifier__: Iterator variable for the notifiers
+ * @gpusvm__: Pointer to the GPU SVM notifier
+ * @start__: Start address of the notifier
+ * @end__: End address of the notifier
+ *
+ * This macro is used to iterate over GPU SVM notifiers in a gpusvm.
+ */
+#define drm_gpusvm_for_each_notifier(notifier__, gpusvm__, start__, end__) \
+ for ((notifier__) = drm_gpusvm_notifier_find((gpusvm__), (start__), (end__)); \
+ (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
+ (notifier__) = __drm_gpusvm_notifier_next(notifier__))
+
+/**
+ * drm_gpusvm_for_each_notifier_safe() - Safely iterate over GPU SVM notifiers in a gpusvm
+ * @notifier__: Iterator variable for the notifiers
+ * @next__: Iterator variable for the notifiers temporay storage
+ * @gpusvm__: Pointer to the GPU SVM notifier
+ * @start__: Start address of the notifier
+ * @end__: End address of the notifier
+ *
+ * This macro is used to iterate over GPU SVM notifiers in a gpusvm while
+ * removing notifiers from it.
+ */
+#define drm_gpusvm_for_each_notifier_safe(notifier__, next__, gpusvm__, start__, end__) \
+ for ((notifier__) = drm_gpusvm_notifier_find((gpusvm__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_notifier_next(notifier__); \
+ (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
+ (notifier__) = (next__), (next__) = __drm_gpusvm_notifier_next(notifier__))
+
#endif /* __DRM_GPUSVM_H__ */
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 09/24] drm/xe/svm: Split system allocator vma incase of madvise call
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (7 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 08/24] drm/gpusvm: Make drm_gpusvm_for_each_* macros public Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 10/24] drm/xe: Allow CPU address mirror VMA unbind with gpu bindings for madvise Himal Prasad Ghimiray
` (21 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
If the start or end of input address range lies within system allocator
vma split the vma to create new vma's as per input range.
v2 (Matthew Brost)
- Add lockdep_assert_write for vm->lock
- Remove unnecessary page aligned checks
- Add kerrnel-doc and comments
- Remove unnecessary unwind_ops and return
v3
- Fix copying of attributes
v4
- Nit fixes
v5
- Squash identifier for madvise in xe_vma_ops to this patch
v6/v7/v8
- Rebase on drm_gpuvm changes
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_vm.c | 108 +++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vm.h | 2 +
drivers/gpu/drm/xe/xe_vm_types.h | 1 +
3 files changed, 111 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index fc8bacef7597..aca52d573b6b 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -4199,3 +4199,111 @@ void xe_vm_snapshot_free(struct xe_vm_snapshot *snap)
}
kvfree(snap);
}
+
+/**
+ * xe_vm_alloc_madvise_vma - Allocate VMA's with madvise ops
+ * @vm: Pointer to the xe_vm structure
+ * @start: Starting input address
+ * @range: Size of the input range
+ *
+ * This function splits existing vma to create new vma for user provided input range
+ *
+ * Return: 0 if success
+ */
+int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
+{
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = start,
+ .map.va.range = range,
+ };
+
+ struct xe_vma_ops vops;
+ struct drm_gpuva_ops *ops = NULL;
+ struct drm_gpuva_op *__op;
+ bool is_cpu_addr_mirror = false;
+ bool remap_op = false;
+ struct xe_vma_mem_attr tmp_attr;
+ int err;
+
+ lockdep_assert_held_write(&vm->lock);
+
+ vm_dbg(&vm->xe->drm, "MADVISE_OPS_CREATE: addr=0x%016llx, size=0x%016llx", start, range);
+ ops = drm_gpuvm_madvise_ops_create(&vm->gpuvm, &map_req);
+ if (IS_ERR(ops))
+ return PTR_ERR(ops);
+
+ if (list_empty(&ops->list)) {
+ err = 0;
+ goto free_ops;
+ }
+
+ drm_gpuva_for_each_op(__op, ops) {
+ struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
+
+ if (__op->op == DRM_GPUVA_OP_REMAP) {
+ xe_assert(vm->xe, !remap_op);
+ remap_op = true;
+
+ if (xe_vma_is_cpu_addr_mirror(gpuva_to_vma(op->base.remap.unmap->va)))
+ is_cpu_addr_mirror = true;
+ else
+ is_cpu_addr_mirror = false;
+ }
+
+ if (__op->op == DRM_GPUVA_OP_MAP) {
+ xe_assert(vm->xe, remap_op);
+ remap_op = false;
+
+ /* In case of madvise ops DRM_GPUVA_OP_MAP is always after
+ * DRM_GPUVA_OP_REMAP, so ensure we assign op->map.is_cpu_addr_mirror true
+ * if REMAP is for xe_vma_is_cpu_addr_mirror vma
+ */
+ op->map.is_cpu_addr_mirror = is_cpu_addr_mirror;
+ }
+
+ print_op(vm->xe, __op);
+ }
+
+ xe_vma_ops_init(&vops, vm, NULL, NULL, 0);
+ vops.flags |= XE_VMA_OPS_FLAG_MADVISE;
+ err = vm_bind_ioctl_ops_parse(vm, ops, &vops);
+ if (err)
+ goto unwind_ops;
+
+ xe_vm_lock(vm, false);
+
+ drm_gpuva_for_each_op(__op, ops) {
+ struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
+ struct xe_vma *vma;
+
+ if (__op->op == DRM_GPUVA_OP_UNMAP) {
+ /* There should be no unmap */
+ XE_WARN_ON("UNEXPECTED UNMAP");
+ xe_vma_destroy(gpuva_to_vma(op->base.unmap.va), NULL);
+ } else if (__op->op == DRM_GPUVA_OP_REMAP) {
+ vma = gpuva_to_vma(op->base.remap.unmap->va);
+ /* Store attributes for REMAP UNMAPPED VMA, so they can be assigned
+ * to newly MAP created vma.
+ */
+ tmp_attr = vma->attr;
+ xe_vma_destroy(gpuva_to_vma(op->base.remap.unmap->va), NULL);
+ } else if (__op->op == DRM_GPUVA_OP_MAP) {
+ vma = op->map.vma;
+ /* In case of madvise call, MAP will always be follwed by REMAP.
+ * Therefore temp_attr will always have sane values, making it safe to
+ * copy them to new vma.
+ */
+ vma->attr = tmp_attr;
+ }
+ }
+
+ xe_vm_unlock(vm);
+ drm_gpuva_ops_free(&vm->gpuvm, ops);
+ return 0;
+
+unwind_ops:
+ vm_bind_ioctl_ops_unwind(vm, &ops, 1);
+free_ops:
+ drm_gpuva_ops_free(&vm->gpuvm, ops);
+ return err;
+}
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 2f213737c7e5..97073726dcdb 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -171,6 +171,8 @@ static inline bool xe_vma_is_userptr(struct xe_vma *vma)
struct xe_vma *xe_vm_find_vma_by_addr(struct xe_vm *vm, u64 page_addr);
+int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t addr, uint64_t size);
+
/**
* to_userptr_vma() - Return a pointer to an embedding userptr vma
* @vma: Pointer to the embedded struct xe_vma
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index c7b2bfa0a0d1..dde7218ceba6 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -495,6 +495,7 @@ struct xe_vma_ops {
struct xe_vm_pgtable_update_ops pt_update_ops[XE_MAX_TILES_PER_DEVICE];
/** @flag: signify the properties within xe_vma_ops*/
#define XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH BIT(0)
+#define XE_VMA_OPS_FLAG_MADVISE BIT(1)
u32 flags;
#ifdef TEST_VM_OPS_ERROR
/** @inject_error: inject error to test error handling */
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 10/24] drm/xe: Allow CPU address mirror VMA unbind with gpu bindings for madvise
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (8 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 09/24] drm/xe/svm: Split system allocator vma incase of madvise call Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 11/24] drm/xe/svm: Add xe_svm_ranges_zap_ptes_in_range() for PTE zapping Himal Prasad Ghimiray
` (20 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
In the case of the MADVISE ioctl, if the start or end addresses fall
within a VMA and existing SVM ranges are present, remove the existing
SVM mappings. Then, continue with ops_parse to create new VMAs by REMAP
unmapping of old one.
v2 (Matthew Brost)
- Use vops flag to call unmapping of ranges in vm_bind_ioctl_ops_parse
- Rename the function
v3
- Fix doc
v4
- check if range is already in garbage collector (Matthew Brost)
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_svm.c | 35 +++++++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_svm.h | 7 +++++++
drivers/gpu/drm/xe/xe_vm.c | 8 ++++++--
3 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index e35c6d4def20..ce42100cb753 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -932,6 +932,41 @@ bool xe_svm_has_mapping(struct xe_vm *vm, u64 start, u64 end)
return drm_gpusvm_has_mapping(&vm->svm.gpusvm, start, end);
}
+/**
+ * xe_svm_unmap_address_range - UNMAP SVM mappings and ranges
+ * @vm: The VM
+ * @start: start addr
+ * @end: end addr
+ *
+ * This function UNMAPS svm ranges if start or end address are inside them.
+ */
+void xe_svm_unmap_address_range(struct xe_vm *vm, u64 start, u64 end)
+{
+ struct drm_gpusvm_notifier *notifier, *next;
+
+ lockdep_assert_held_write(&vm->lock);
+
+ drm_gpusvm_for_each_notifier_safe(notifier, next, &vm->svm.gpusvm, start, end) {
+ struct drm_gpusvm_range *range, *__next;
+
+ drm_gpusvm_for_each_range_safe(range, __next, notifier, start, end) {
+ if (start > drm_gpusvm_range_start(range) ||
+ end < drm_gpusvm_range_end(range)) {
+ if (IS_DGFX(vm->xe) && xe_svm_range_in_vram(to_xe_range(range)))
+ drm_gpusvm_range_evict(&vm->svm.gpusvm, range);
+ drm_gpusvm_range_get(range);
+ __xe_svm_garbage_collector(vm, to_xe_range(range));
+ if (!list_empty(&to_xe_range(range)->garbage_collector_link)) {
+ spin_lock(&vm->svm.garbage_collector.lock);
+ list_del(&to_xe_range(range)->garbage_collector_link);
+ spin_unlock(&vm->svm.garbage_collector.lock);
+ }
+ drm_gpusvm_range_put(range);
+ }
+ }
+ }
+}
+
/**
* xe_svm_bo_evict() - SVM evict BO to system memory
* @bo: BO to evict
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 4bdccb56d25f..184b3f4f0b2a 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -90,6 +90,8 @@ bool xe_svm_range_validate(struct xe_vm *vm,
u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *vma);
+void xe_svm_unmap_address_range(struct xe_vm *vm, u64 start, u64 end);
+
/**
* xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
* @range: SVM range
@@ -303,6 +305,11 @@ u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *vm
return ULONG_MAX;
}
+static inline
+void xe_svm_unmap_address_range(struct xe_vm *vm, u64 start, u64 end)
+{
+}
+
#define xe_svm_assert_in_notifier(...) do {} while (0)
#define xe_svm_range_has_dma_mapping(...) false
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index aca52d573b6b..a69dd5dfc1f8 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2690,8 +2690,12 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
end = op->base.remap.next->va.addr;
if (xe_vma_is_cpu_addr_mirror(old) &&
- xe_svm_has_mapping(vm, start, end))
- return -EBUSY;
+ xe_svm_has_mapping(vm, start, end)) {
+ if (vops->flags & XE_VMA_OPS_FLAG_MADVISE)
+ xe_svm_unmap_address_range(vm, start, end);
+ else
+ return -EBUSY;
+ }
op->remap.start = xe_vma_start(old);
op->remap.range = xe_vma_size(old);
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 11/24] drm/xe/svm: Add xe_svm_ranges_zap_ptes_in_range() for PTE zapping
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (9 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 10/24] drm/xe: Allow CPU address mirror VMA unbind with gpu bindings for madvise Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 12/24] drm/xe: Implement madvise ioctl for xe Himal Prasad Ghimiray
` (19 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
Introduce xe_svm_ranges_zap_ptes_in_range(), a function to zap page table
entries (PTEs) for all SVM ranges within a user-specified address range.
-v2 (Matthew Brost)
Lock should be called even for tlb_invalidation
v3(Matthew Brost)
- Update comment
- s/notifier->itree.start/drm_gpusvm_notifier_start
- s/notifier->itree.last + 1/drm_gpusvm_notifier_end
- use WRITE_ONCE
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_pt.c | 14 ++++++++++-
drivers/gpu/drm/xe/xe_svm.c | 50 +++++++++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_svm.h | 8 ++++++
3 files changed, 71 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index ba7a50bf3a2d..bf50a821853e 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -950,7 +950,19 @@ bool xe_pt_zap_ptes_range(struct xe_tile *tile, struct xe_vm *vm,
struct xe_pt *pt = vm->pt_root[tile->id];
u8 pt_mask = (range->tile_present & ~range->tile_invalidated);
- xe_svm_assert_in_notifier(vm);
+ /*
+ * Locking rules:
+ *
+ * - notifier_lock (write): full protection against page table changes
+ * and MMU notifier invalidations.
+ *
+ * - notifier_lock (read) + vm_lock (write): combined protection against
+ * invalidations and concurrent page table modifications. (e.g., madvise)
+ *
+ */
+ lockdep_assert(lockdep_is_held_type(&vm->svm.gpusvm.notifier_lock, 0) ||
+ (lockdep_is_held_type(&vm->svm.gpusvm.notifier_lock, 1) &&
+ lockdep_is_held_type(&vm->lock, 0)));
if (!(pt_mask & BIT(tile->id)))
return false;
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index ce42100cb753..c2306000f15e 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -1031,6 +1031,56 @@ int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
return err;
}
+/**
+ * xe_svm_ranges_zap_ptes_in_range - clear ptes of svm ranges in input range
+ * @vm: Pointer to the xe_vm structure
+ * @start: Start of the input range
+ * @end: End of the input range
+ *
+ * This function removes the page table entries (PTEs) associated
+ * with the svm ranges within the given input start and end
+ *
+ * Return: tile_mask for which gt's need to be tlb invalidated.
+ */
+u8 xe_svm_ranges_zap_ptes_in_range(struct xe_vm *vm, u64 start, u64 end)
+{
+ struct drm_gpusvm_notifier *notifier;
+ struct xe_svm_range *range;
+ u64 adj_start, adj_end;
+ struct xe_tile *tile;
+ u8 tile_mask = 0;
+ u8 id;
+
+ lockdep_assert(lockdep_is_held_type(&vm->svm.gpusvm.notifier_lock, 1) &&
+ lockdep_is_held_type(&vm->lock, 0));
+
+ drm_gpusvm_for_each_notifier(notifier, &vm->svm.gpusvm, start, end) {
+ struct drm_gpusvm_range *r = NULL;
+
+ adj_start = max(start, drm_gpusvm_notifier_start(notifier));
+ adj_end = min(end, drm_gpusvm_notifier_end(notifier));
+ drm_gpusvm_for_each_range(r, notifier, adj_start, adj_end) {
+ range = to_xe_range(r);
+ for_each_tile(tile, vm->xe, id) {
+ if (xe_pt_zap_ptes_range(tile, vm, range)) {
+ tile_mask |= BIT(id);
+ /*
+ * WRITE_ONCE pairs with READ_ONCE in
+ * xe_vm_has_valid_gpu_mapping().
+ * Must not fail after setting
+ * tile_invalidated and before
+ * TLB invalidation.
+ */
+ WRITE_ONCE(range->tile_invalidated,
+ range->tile_invalidated | BIT(id));
+ }
+ }
+ }
+ }
+
+ return tile_mask;
+}
+
#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
static struct drm_pagemap *tile_local_pagemap(struct xe_tile *tile)
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 184b3f4f0b2a..046a9c4e95c2 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -92,6 +92,8 @@ u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *v
void xe_svm_unmap_address_range(struct xe_vm *vm, u64 start, u64 end);
+u8 xe_svm_ranges_zap_ptes_in_range(struct xe_vm *vm, u64 start, u64 end);
+
/**
* xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
* @range: SVM range
@@ -310,6 +312,12 @@ void xe_svm_unmap_address_range(struct xe_vm *vm, u64 start, u64 end)
{
}
+static inline
+u8 xe_svm_ranges_zap_ptes_in_range(struct xe_vm *vm, u64 start, u64 end)
+{
+ return 0;
+}
+
#define xe_svm_assert_in_notifier(...) do {} while (0)
#define xe_svm_range_has_dma_mapping(...) false
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 12/24] drm/xe: Implement madvise ioctl for xe
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (10 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 11/24] drm/xe/svm: Add xe_svm_ranges_zap_ptes_in_range() for PTE zapping Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 13/24] drm/xe/svm: Add svm ranges migration policy on atomic access Himal Prasad Ghimiray
` (18 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe
Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray,
Shuicheng Lin
This driver-specific ioctl enables UMDs to control the memory attributes
for GPU VMAs within a specified input range. If the start or end
addresses fall within an existing VMA, the VMA is split accordingly. The
attributes of the VMA are modified as provided by the users. The old
mappings of the VMAs are invalidated, and TLB invalidation is performed
if necessary.
v2(Matthew brost)
- xe_vm_in_fault_mode can't be enabled by Mesa, hence allow ioctl in non
fault mode too
- fix tlb invalidation skip for same ranges in multiple op
- use helper for tlb invalidation
- use xe_svm_notifier_lock/unlock helper
- s/lockdep_assert_held/lockdep_assert_held_write
- Add kernel-doc
v3(Matthew Brost)
- make vfunc fail safe
- Add sanitizing input args before vfunc
v4(Matthew Brost/Shuicheng)
- Make locks interruptable
- Error handling fixes
- vm_put fixes
v5(Matthew Brost)
- Flush garbage collector before any locking.
- Add check for null vma
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Shuicheng Lin <shuicheng.lin@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/xe_vm_madvise.c | 308 +++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vm_madvise.h | 15 ++
3 files changed, 324 insertions(+)
create mode 100644 drivers/gpu/drm/xe/xe_vm_madvise.c
create mode 100644 drivers/gpu/drm/xe/xe_vm_madvise.h
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 8e0c3412a757..d0ea869fcd24 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -128,6 +128,7 @@ xe-y += xe_bb.o \
xe_uc.o \
xe_uc_fw.o \
xe_vm.o \
+ xe_vm_madvise.o \
xe_vram.o \
xe_vram_freq.o \
xe_vsec.o \
diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c
new file mode 100644
index 000000000000..b861c3349b0a
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_vm_madvise.c
@@ -0,0 +1,308 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#include "xe_vm_madvise.h"
+
+#include <linux/nospec.h>
+#include <drm/xe_drm.h>
+
+#include "xe_bo.h"
+#include "xe_pt.h"
+#include "xe_svm.h"
+
+struct xe_vmas_in_madvise_range {
+ u64 addr;
+ u64 range;
+ struct xe_vma **vmas;
+ int num_vmas;
+ bool has_svm_vmas;
+ bool has_bo_vmas;
+ bool has_userptr_vmas;
+};
+
+static int get_vmas(struct xe_vm *vm, struct xe_vmas_in_madvise_range *madvise_range)
+{
+ u64 addr = madvise_range->addr;
+ u64 range = madvise_range->range;
+
+ struct xe_vma **__vmas;
+ struct drm_gpuva *gpuva;
+ int max_vmas = 8;
+
+ lockdep_assert_held(&vm->lock);
+
+ madvise_range->num_vmas = 0;
+ madvise_range->vmas = kmalloc_array(max_vmas, sizeof(*madvise_range->vmas), GFP_KERNEL);
+ if (!madvise_range->vmas)
+ return -ENOMEM;
+
+ vm_dbg(&vm->xe->drm, "VMA's in range: start=0x%016llx, end=0x%016llx", addr, addr + range);
+
+ drm_gpuvm_for_each_va_range(gpuva, &vm->gpuvm, addr, addr + range) {
+ struct xe_vma *vma = gpuva_to_vma(gpuva);
+
+ if (xe_vma_bo(vma))
+ madvise_range->has_bo_vmas = true;
+ else if (xe_vma_is_cpu_addr_mirror(vma))
+ madvise_range->has_svm_vmas = true;
+ else if (xe_vma_is_userptr(vma))
+ madvise_range->has_userptr_vmas = true;
+
+ if (madvise_range->num_vmas == max_vmas) {
+ max_vmas <<= 1;
+ __vmas = krealloc(madvise_range->vmas,
+ max_vmas * sizeof(*madvise_range->vmas),
+ GFP_KERNEL);
+ if (!__vmas) {
+ kfree(madvise_range->vmas);
+ return -ENOMEM;
+ }
+ madvise_range->vmas = __vmas;
+ }
+
+ madvise_range->vmas[madvise_range->num_vmas] = vma;
+ (madvise_range->num_vmas)++;
+ }
+
+ if (!madvise_range->num_vmas)
+ kfree(madvise_range->vmas);
+
+ vm_dbg(&vm->xe->drm, "madvise_range-num_vmas = %d\n", madvise_range->num_vmas);
+
+ return 0;
+}
+
+static void madvise_preferred_mem_loc(struct xe_device *xe, struct xe_vm *vm,
+ struct xe_vma **vmas, int num_vmas,
+ struct drm_xe_madvise *op)
+{
+ /* Implementation pending */
+}
+
+static void madvise_atomic(struct xe_device *xe, struct xe_vm *vm,
+ struct xe_vma **vmas, int num_vmas,
+ struct drm_xe_madvise *op)
+{
+ /* Implementation pending */
+}
+
+static void madvise_pat_index(struct xe_device *xe, struct xe_vm *vm,
+ struct xe_vma **vmas, int num_vmas,
+ struct drm_xe_madvise *op)
+{
+ /* Implementation pending */
+}
+
+typedef void (*madvise_func)(struct xe_device *xe, struct xe_vm *vm,
+ struct xe_vma **vmas, int num_vmas,
+ struct drm_xe_madvise *op);
+
+static const madvise_func madvise_funcs[] = {
+ [DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC] = madvise_preferred_mem_loc,
+ [DRM_XE_MEM_RANGE_ATTR_ATOMIC] = madvise_atomic,
+ [DRM_XE_MEM_RANGE_ATTR_PAT] = madvise_pat_index,
+};
+
+static u8 xe_zap_ptes_in_madvise_range(struct xe_vm *vm, u64 start, u64 end)
+{
+ struct drm_gpuva *gpuva;
+ struct xe_tile *tile;
+ u8 id, tile_mask;
+
+ lockdep_assert_held_write(&vm->lock);
+
+ /* Wait for pending binds */
+ if (dma_resv_wait_timeout(xe_vm_resv(vm), DMA_RESV_USAGE_BOOKKEEP,
+ false, MAX_SCHEDULE_TIMEOUT) <= 0)
+ XE_WARN_ON(1);
+
+ tile_mask = xe_svm_ranges_zap_ptes_in_range(vm, start, end);
+
+ drm_gpuvm_for_each_va_range(gpuva, &vm->gpuvm, start, end) {
+ struct xe_vma *vma = gpuva_to_vma(gpuva);
+
+ if (xe_vma_is_cpu_addr_mirror(vma) || xe_vma_is_null(vma))
+ continue;
+
+ for_each_tile(tile, vm->xe, id) {
+ if (xe_pt_zap_ptes(tile, vma)) {
+ tile_mask |= BIT(id);
+
+ /*
+ * WRITE_ONCE pairs with READ_ONCE
+ * in xe_vm_has_valid_gpu_mapping()
+ */
+ WRITE_ONCE(vma->tile_invalidated,
+ vma->tile_invalidated | BIT(id));
+ }
+ }
+ }
+
+ return tile_mask;
+}
+
+static int xe_vm_invalidate_madvise_range(struct xe_vm *vm, u64 start, u64 end)
+{
+ u8 tile_mask = xe_zap_ptes_in_madvise_range(vm, start, end);
+
+ if (!tile_mask)
+ return 0;
+
+ xe_device_wmb(vm->xe);
+
+ return xe_vm_range_tilemask_tlb_invalidation(vm, start, end, tile_mask);
+}
+
+static bool madvise_args_are_sane(struct xe_device *xe, const struct drm_xe_madvise *args)
+{
+ if (XE_IOCTL_DBG(xe, !args))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, !IS_ALIGNED(args->start, SZ_4K)))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, !IS_ALIGNED(args->range, SZ_4K)))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, args->range < SZ_4K))
+ return false;
+
+ switch (args->type) {
+ case DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC:
+ if (XE_IOCTL_DBG(xe, args->preferred_mem_loc.migration_policy >
+ DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, args->preferred_mem_loc.pad))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, args->atomic.reserved))
+ return false;
+ break;
+ case DRM_XE_MEM_RANGE_ATTR_ATOMIC:
+ if (XE_IOCTL_DBG(xe, args->atomic.val > DRM_XE_ATOMIC_CPU))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, args->atomic.pad))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, args->atomic.reserved))
+ return false;
+
+ break;
+ case DRM_XE_MEM_RANGE_ATTR_PAT:
+ /*TODO: Add valid pat check */
+ break;
+ default:
+ if (XE_IOCTL_DBG(xe, 1))
+ return false;
+ }
+
+ if (XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1]))
+ return false;
+
+ return true;
+}
+
+/**
+ * xe_vm_madvise_ioctl - Handle MADVise ioctl for a VM
+ * @dev: DRM device pointer
+ * @data: Pointer to ioctl data (drm_xe_madvise*)
+ * @file: DRM file pointer
+ *
+ * Handles the MADVISE ioctl to provide memory advice for vma's within
+ * input range.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int xe_vm_madvise_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
+{
+ struct xe_device *xe = to_xe_device(dev);
+ struct xe_file *xef = to_xe_file(file);
+ struct drm_xe_madvise *args = data;
+ struct xe_vmas_in_madvise_range madvise_range = {.addr = args->start,
+ .range = args->range, };
+ struct xe_vm *vm;
+ struct drm_exec exec;
+ int err, attr_type;
+
+ vm = xe_vm_lookup(xef, args->vm_id);
+ if (XE_IOCTL_DBG(xe, !vm))
+ return -EINVAL;
+
+ if (!madvise_args_are_sane(vm->xe, args)) {
+ err = -EINVAL;
+ goto put_vm;
+ }
+
+ xe_svm_flush(vm);
+
+ err = down_write_killable(&vm->lock);
+ if (err)
+ goto put_vm;
+
+ if (XE_IOCTL_DBG(xe, xe_vm_is_closed_or_banned(vm))) {
+ err = -ENOENT;
+ goto unlock_vm;
+ }
+
+ err = xe_vm_alloc_madvise_vma(vm, args->start, args->range);
+ if (err)
+ goto unlock_vm;
+
+ err = get_vmas(vm, &madvise_range);
+ if (err || !madvise_range.num_vmas)
+ goto unlock_vm;
+
+ if (madvise_range.has_bo_vmas) {
+ drm_exec_init(&exec, DRM_EXEC_IGNORE_DUPLICATES | DRM_EXEC_INTERRUPTIBLE_WAIT, 0);
+ drm_exec_until_all_locked(&exec) {
+ for (int i = 0; i < madvise_range.num_vmas; i++) {
+ struct xe_bo *bo = xe_vma_bo(madvise_range.vmas[i]);
+
+ if (!bo)
+ continue;
+ err = drm_exec_lock_obj(&exec, &bo->ttm.base);
+ drm_exec_retry_on_contention(&exec);
+ if (err)
+ goto err_fini;
+ }
+ }
+ }
+
+ if (madvise_range.has_userptr_vmas) {
+ err = down_read_interruptible(&vm->userptr.notifier_lock);
+ if (err)
+ goto err_fini;
+ }
+
+ if (madvise_range.has_svm_vmas) {
+ err = down_read_interruptible(&vm->svm.gpusvm.notifier_lock);
+ if (err)
+ goto unlock_userptr;
+ }
+
+ attr_type = array_index_nospec(args->type, ARRAY_SIZE(madvise_funcs));
+ madvise_funcs[attr_type](xe, vm, madvise_range.vmas, madvise_range.num_vmas, args);
+
+ err = xe_vm_invalidate_madvise_range(vm, args->start, args->start + args->range);
+
+ if (madvise_range.has_svm_vmas)
+ xe_svm_notifier_unlock(vm);
+
+unlock_userptr:
+ if (madvise_range.has_userptr_vmas)
+ up_read(&vm->userptr.notifier_lock);
+err_fini:
+ if (madvise_range.has_bo_vmas)
+ drm_exec_fini(&exec);
+ kfree(madvise_range.vmas);
+ madvise_range.vmas = NULL;
+unlock_vm:
+ up_write(&vm->lock);
+put_vm:
+ xe_vm_put(vm);
+ return err;
+}
diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.h b/drivers/gpu/drm/xe/xe_vm_madvise.h
new file mode 100644
index 000000000000..b0e1fc445f23
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_vm_madvise.h
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef _XE_VM_MADVISE_H_
+#define _XE_VM_MADVISE_H_
+
+struct drm_device;
+struct drm_file;
+
+int xe_vm_madvise_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *file);
+
+#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 13/24] drm/xe/svm: Add svm ranges migration policy on atomic access
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (11 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 12/24] drm/xe: Implement madvise ioctl for xe Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 14/24] drm/xe/madvise: Update migration policy based on preferred location Himal Prasad Ghimiray
` (17 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
If the platform does not support atomic access on system memory, and the
ranges are in system memory, but the user requires atomic accesses on
the VMA, then migrate the ranges to VRAM. Apply this policy for prefetch
operations as well.
v2
- Drop unnecessary vm_dbg
v3 (Matthew Brost)
- fix atomic policy
- prefetch shouldn't have any impact of atomic
- bo can be accessed from vma, avoid duplicate parameter
v4 (Matthew Brost)
- Remove TODO comment
- Fix comment
- Dont allow gpu atomic ops when user is setting atomic attr as CPU
v5 (Matthew Brost)
- Fix atomic checks
- Add userptr checks
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_pt.c | 23 ++++++++------
drivers/gpu/drm/xe/xe_svm.c | 50 ++++++++++++++++++------------
drivers/gpu/drm/xe/xe_vm.c | 39 +++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vm.h | 2 ++
drivers/gpu/drm/xe/xe_vm_madvise.c | 15 ++++++++-
5 files changed, 99 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index bf50a821853e..c0a70c80dff9 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -640,28 +640,31 @@ static const struct xe_pt_walk_ops xe_pt_stage_bind_ops = {
* - In all other cases device atomics will be disabled with AE=0 until an application
* request differently using a ioctl like madvise.
*/
-static bool xe_atomic_for_vram(struct xe_vm *vm)
+static bool xe_atomic_for_vram(struct xe_vm *vm, struct xe_vma *vma)
{
+ if (vma->attr.atomic_access == DRM_XE_ATOMIC_CPU)
+ return false;
+
return true;
}
-static bool xe_atomic_for_system(struct xe_vm *vm, struct xe_bo *bo)
+static bool xe_atomic_for_system(struct xe_vm *vm, struct xe_vma *vma)
{
struct xe_device *xe = vm->xe;
+ struct xe_bo *bo = xe_vma_bo(vma);
- if (!xe->info.has_device_atomics_on_smem)
+ if (!xe->info.has_device_atomics_on_smem ||
+ vma->attr.atomic_access == DRM_XE_ATOMIC_CPU)
return false;
+ if (vma->attr.atomic_access == DRM_XE_ATOMIC_DEVICE)
+ return true;
+
/*
* If a SMEM+LMEM allocation is backed by SMEM, a device
* atomics will cause a gpu page fault and which then
* gets migrated to LMEM, bind such allocations with
* device atomics enabled.
- *
- * TODO: Revisit this. Perhaps add something like a
- * fault_on_atomics_in_system UAPI flag.
- * Note that this also prohibits GPU atomics in LR mode for
- * userptr and system memory on DGFX.
*/
return (!IS_DGFX(xe) || (!xe_vm_in_lr_mode(vm) ||
(bo && xe_bo_has_single_placement(bo))));
@@ -744,8 +747,8 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma,
goto walk_pt;
if (vma->gpuva.flags & XE_VMA_ATOMIC_PTE_BIT) {
- xe_walk.default_vram_pte = xe_atomic_for_vram(vm) ? XE_USM_PPGTT_PTE_AE : 0;
- xe_walk.default_system_pte = xe_atomic_for_system(vm, bo) ?
+ xe_walk.default_vram_pte = xe_atomic_for_vram(vm, vma) ? XE_USM_PPGTT_PTE_AE : 0;
+ xe_walk.default_system_pte = xe_atomic_for_system(vm, vma) ?
XE_USM_PPGTT_PTE_AE : 0;
}
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index c2306000f15e..c660ccb21945 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -789,22 +789,9 @@ bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vm
return true;
}
-/**
- * xe_svm_handle_pagefault() - SVM handle page fault
- * @vm: The VM.
- * @vma: The CPU address mirror VMA.
- * @gt: The gt upon the fault occurred.
- * @fault_addr: The GPU fault address.
- * @atomic: The fault atomic access bit.
- *
- * Create GPU bindings for a SVM page fault. Optionally migrate to device
- * memory.
- *
- * Return: 0 on success, negative error code on error.
- */
-int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
- struct xe_gt *gt, u64 fault_addr,
- bool atomic)
+static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
+ struct xe_gt *gt, u64 fault_addr,
+ bool need_vram)
{
struct drm_gpusvm_ctx ctx = {
.read_only = xe_vma_read_only(vma),
@@ -812,9 +799,8 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
IS_ENABLED(CONFIG_DRM_XE_PAGEMAP),
.check_pages_threshold = IS_DGFX(vm->xe) &&
IS_ENABLED(CONFIG_DRM_XE_PAGEMAP) ? SZ_64K : 0,
- .devmem_only = atomic && IS_DGFX(vm->xe) &&
- IS_ENABLED(CONFIG_DRM_XE_PAGEMAP),
- .timeslice_ms = atomic && IS_DGFX(vm->xe) &&
+ .devmem_only = need_vram && IS_ENABLED(CONFIG_DRM_XE_PAGEMAP),
+ .timeslice_ms = need_vram && IS_DGFX(vm->xe) &&
IS_ENABLED(CONFIG_DRM_XE_PAGEMAP) ?
vm->xe->atomic_svm_timeslice_ms : 0,
};
@@ -917,6 +903,32 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
return err;
}
+/**
+ * xe_svm_handle_pagefault() - SVM handle page fault
+ * @vm: The VM.
+ * @vma: The CPU address mirror VMA.
+ * @gt: The gt upon the fault occurred.
+ * @fault_addr: The GPU fault address.
+ * @atomic: The fault atomic access bit.
+ *
+ * Create GPU bindings for a SVM page fault. Optionally migrate to device
+ * memory.
+ *
+ * Return: 0 on success, negative error code on error.
+ */
+int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
+ struct xe_gt *gt, u64 fault_addr,
+ bool atomic)
+{
+ int need_vram;
+
+ need_vram = xe_vma_need_vram_for_atomic(vm->xe, vma, atomic);
+ if (need_vram < 0)
+ return need_vram;
+
+ return __xe_svm_handle_pagefault(vm, vma, gt, fault_addr, need_vram ? true : false);
+}
+
/**
* xe_svm_has_mapping() - SVM has mappings
* @vm: The VM.
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index a69dd5dfc1f8..0921245a5f35 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -4204,6 +4204,45 @@ void xe_vm_snapshot_free(struct xe_vm_snapshot *snap)
kvfree(snap);
}
+/**
+ * xe_vma_need_vram_for_atomic - Check if VMA needs VRAM migration for atomic operations
+ * @xe: Pointer to the XE device structure
+ * @vma: Pointer to the virtual memory area (VMA) structure
+ * @is_atomic: In pagefault path and atomic operation
+ *
+ * This function determines whether the given VMA needs to be migrated to
+ * VRAM in order to do atomic GPU operation.
+ *
+ * Return:
+ * 1 - Migration to VRAM is required
+ * 0 - Migration is not required
+ * -EACCES - Invalid access for atomic memory attr
+ *
+ */
+int xe_vma_need_vram_for_atomic(struct xe_device *xe, struct xe_vma *vma, bool is_atomic)
+{
+ if (!IS_DGFX(xe) || !is_atomic)
+ return 0;
+
+ /*
+ * NOTE: The checks implemented here are platform-specific. For
+ * instance, on a device supporting CXL atomics, these would ideally
+ * work universally without additional handling.
+ */
+ switch (vma->attr.atomic_access) {
+ case DRM_XE_ATOMIC_DEVICE:
+ return !xe->info.has_device_atomics_on_smem;
+
+ case DRM_XE_ATOMIC_CPU:
+ return -EACCES;
+
+ case DRM_XE_ATOMIC_UNDEFINED:
+ case DRM_XE_ATOMIC_GLOBAL:
+ default:
+ return 1;
+ }
+}
+
/**
* xe_vm_alloc_madvise_vma - Allocate VMA's with madvise ops
* @vm: Pointer to the xe_vm structure
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 97073726dcdb..fe8648222ab7 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -171,6 +171,8 @@ static inline bool xe_vma_is_userptr(struct xe_vma *vma)
struct xe_vma *xe_vm_find_vma_by_addr(struct xe_vm *vm, u64 page_addr);
+int xe_vma_need_vram_for_atomic(struct xe_device *xe, struct xe_vma *vma, bool is_atomic);
+
int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t addr, uint64_t size);
/**
diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c
index b861c3349b0a..95258bb6a8ee 100644
--- a/drivers/gpu/drm/xe/xe_vm_madvise.c
+++ b/drivers/gpu/drm/xe/xe_vm_madvise.c
@@ -85,7 +85,20 @@ static void madvise_atomic(struct xe_device *xe, struct xe_vm *vm,
struct xe_vma **vmas, int num_vmas,
struct drm_xe_madvise *op)
{
- /* Implementation pending */
+ int i;
+
+ xe_assert(vm->xe, op->type == DRM_XE_MEM_RANGE_ATTR_ATOMIC);
+ xe_assert(vm->xe, op->atomic.val <= DRM_XE_ATOMIC_CPU);
+
+ for (i = 0; i < num_vmas; i++) {
+ if ((xe_vma_is_userptr(vmas[i]) &&
+ !(op->atomic.val == DRM_XE_ATOMIC_DEVICE &&
+ xe->info.has_device_atomics_on_smem)))
+ continue;
+
+ vmas[i]->attr.atomic_access = op->atomic.val;
+ /*TODO: handle bo backed vmas */
+ }
}
static void madvise_pat_index(struct xe_device *xe, struct xe_vm *vm,
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 14/24] drm/xe/madvise: Update migration policy based on preferred location
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (12 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 13/24] drm/xe/svm: Add svm ranges migration policy on atomic access Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 15/24] drm/xe/svm: Support DRM_XE_SVM_MEM_RANGE_ATTR_PAT memory attribute Himal Prasad Ghimiray
` (16 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
When the user sets the valid devmem_fd as a preferred location, GPU fault
will trigger migration to tile of device associated with devmem_fd.
If the user sets an invalid devmem_fd the preferred location is current
placement(smem) only.
v2(Matthew Brost)
- Default should be faulting tile
- remove devmem_fd used as region
v3 (Matthew Brost)
- Add migration_policy
- Fix return condition
- fix migrate condition
v4
-Rebase
v5
- Add check for userptr and bo based vmas
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_svm.c | 45 +++++++++++++++++++++++++++++-
drivers/gpu/drm/xe/xe_svm.h | 8 ++++++
drivers/gpu/drm/xe/xe_vm_madvise.c | 25 ++++++++++++++++-
3 files changed, 76 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index c660ccb21945..19585a3d9f69 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -806,6 +806,7 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
};
struct xe_svm_range *range;
struct dma_fence *fence;
+ struct drm_pagemap *dpagemap;
struct xe_tile *tile = gt_to_tile(gt);
int migrate_try_count = ctx.devmem_only ? 3 : 1;
ktime_t end = 0;
@@ -835,8 +836,14 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
range_debug(range, "PAGE FAULT");
+ dpagemap = xe_vma_resolve_pagemap(vma, tile);
if (--migrate_try_count >= 0 &&
- xe_svm_range_needs_migrate_to_vram(range, vma, IS_DGFX(vm->xe))) {
+ xe_svm_range_needs_migrate_to_vram(range, vma, !!dpagemap || ctx.devmem_only)) {
+ /* TODO : For multi-device dpagemap will be used to find the
+ * remote tile and remote device. Will need to modify
+ * xe_svm_alloc_vram to use dpagemap for future multi-device
+ * support.
+ */
err = xe_svm_alloc_vram(tile, range, &ctx);
ctx.timeslice_ms <<= 1; /* Double timeslice if we have to retry */
if (err) {
@@ -1100,6 +1107,37 @@ static struct drm_pagemap *tile_local_pagemap(struct xe_tile *tile)
return &tile->mem.vram->dpagemap;
}
+/**
+ * xe_vma_resolve_pagemap - Resolve the appropriate DRM pagemap for a VMA
+ * @vma: Pointer to the xe_vma structure containing memory attributes
+ * @tile: Pointer to the xe_tile structure used as fallback for VRAM mapping
+ *
+ * This function determines the correct DRM pagemap to use for a given VMA.
+ * It first checks if a valid devmem_fd is provided in the VMA's preferred
+ * location. If the devmem_fd is negative, it returns NULL, indicating no
+ * pagemap is available and smem to be used as preferred location.
+ * If the devmem_fd is equal to the default faulting
+ * GT identifier, it returns the VRAM pagemap associated with the tile.
+ *
+ * Future support for multi-device configurations may use drm_pagemap_from_fd()
+ * to resolve pagemaps from arbitrary file descriptors.
+ *
+ * Return: A pointer to the resolved drm_pagemap, or NULL if none is applicable.
+ */
+struct drm_pagemap *xe_vma_resolve_pagemap(struct xe_vma *vma, struct xe_tile *tile)
+{
+ s32 fd = (s32)vma->attr.preferred_loc.devmem_fd;
+
+ if (fd == DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM)
+ return NULL;
+
+ if (fd == DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE)
+ return IS_DGFX(tile_to_xe(tile)) ? tile_local_pagemap(tile) : NULL;
+
+ /* TODO: Support multi-device with drm_pagemap_from_fd(fd) */
+ return NULL;
+}
+
/**
* xe_svm_alloc_vram()- Allocate device memory pages for range,
* migrating existing data.
@@ -1212,6 +1250,11 @@ int xe_devm_add(struct xe_tile *tile, struct xe_vram_region *vr)
{
return 0;
}
+
+struct drm_pagemap *xe_vma_resolve_pagemap(struct xe_vma *vma, struct xe_tile *tile)
+{
+ return NULL;
+}
#endif
/**
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 046a9c4e95c2..9d6a8840a8b7 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -94,6 +94,8 @@ void xe_svm_unmap_address_range(struct xe_vm *vm, u64 start, u64 end);
u8 xe_svm_ranges_zap_ptes_in_range(struct xe_vm *vm, u64 start, u64 end);
+struct drm_pagemap *xe_vma_resolve_pagemap(struct xe_vma *vma, struct xe_tile *tile);
+
/**
* xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
* @range: SVM range
@@ -318,6 +320,12 @@ u8 xe_svm_ranges_zap_ptes_in_range(struct xe_vm *vm, u64 start, u64 end)
return 0;
}
+static inline
+struct drm_pagemap *xe_vma_resolve_pagemap(struct xe_vma *vma, struct xe_tile *tile)
+{
+ return NULL;
+}
+
#define xe_svm_assert_in_notifier(...) do {} while (0)
#define xe_svm_range_has_dma_mapping(...) false
diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c
index 95258bb6a8ee..b5fc1eedf095 100644
--- a/drivers/gpu/drm/xe/xe_vm_madvise.c
+++ b/drivers/gpu/drm/xe/xe_vm_madvise.c
@@ -78,7 +78,23 @@ static void madvise_preferred_mem_loc(struct xe_device *xe, struct xe_vm *vm,
struct xe_vma **vmas, int num_vmas,
struct drm_xe_madvise *op)
{
- /* Implementation pending */
+ int i;
+
+ xe_assert(vm->xe, op->type == DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC);
+
+ for (i = 0; i < num_vmas; i++) {
+ /*TODO: Extend attributes to bo based vmas */
+ if (!xe_vma_is_cpu_addr_mirror(vmas[i]))
+ continue;
+
+ vmas[i]->attr.preferred_loc.devmem_fd = op->preferred_mem_loc.devmem_fd;
+
+ /* Till multi-device support is not added migration_policy
+ * is of no use and can be ignored.
+ */
+ vmas[i]->attr.preferred_loc.migration_policy =
+ op->preferred_mem_loc.migration_policy;
+ }
}
static void madvise_atomic(struct xe_device *xe, struct xe_vm *vm,
@@ -184,6 +200,12 @@ static bool madvise_args_are_sane(struct xe_device *xe, const struct drm_xe_madv
switch (args->type) {
case DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC:
+ {
+ s32 fd = (s32)args->preferred_mem_loc.devmem_fd;
+
+ if (XE_IOCTL_DBG(xe, fd < DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM))
+ return false;
+
if (XE_IOCTL_DBG(xe, args->preferred_mem_loc.migration_policy >
DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES))
return false;
@@ -194,6 +216,7 @@ static bool madvise_args_are_sane(struct xe_device *xe, const struct drm_xe_madv
if (XE_IOCTL_DBG(xe, args->atomic.reserved))
return false;
break;
+ }
case DRM_XE_MEM_RANGE_ATTR_ATOMIC:
if (XE_IOCTL_DBG(xe, args->atomic.val > DRM_XE_ATOMIC_CPU))
return false;
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 15/24] drm/xe/svm: Support DRM_XE_SVM_MEM_RANGE_ATTR_PAT memory attribute
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (13 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 14/24] drm/xe/madvise: Update migration policy based on preferred location Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 16/24] drm/xe/uapi: Add flag for consulting madvise hints on svm prefetch Himal Prasad Ghimiray
` (15 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
This attributes sets the pat_index for the svm used vma range, which is
utilized to ascertain the coherence.
v2 (Matthew Brost)
- Pat index sanity check
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_vm_madvise.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c
index b5fc1eedf095..3bd52063f9c2 100644
--- a/drivers/gpu/drm/xe/xe_vm_madvise.c
+++ b/drivers/gpu/drm/xe/xe_vm_madvise.c
@@ -9,6 +9,7 @@
#include <drm/xe_drm.h>
#include "xe_bo.h"
+#include "xe_pat.h"
#include "xe_pt.h"
#include "xe_svm.h"
@@ -121,7 +122,12 @@ static void madvise_pat_index(struct xe_device *xe, struct xe_vm *vm,
struct xe_vma **vmas, int num_vmas,
struct drm_xe_madvise *op)
{
- /* Implementation pending */
+ int i;
+
+ xe_assert(vm->xe, op->type == DRM_XE_MEM_RANGE_ATTR_PAT);
+
+ for (i = 0; i < num_vmas; i++)
+ vmas[i]->attr.pat_index = op->pat_index.val;
}
typedef void (*madvise_func)(struct xe_device *xe, struct xe_vm *vm,
@@ -229,8 +235,22 @@ static bool madvise_args_are_sane(struct xe_device *xe, const struct drm_xe_madv
break;
case DRM_XE_MEM_RANGE_ATTR_PAT:
- /*TODO: Add valid pat check */
+ {
+ u16 coh_mode = xe_pat_index_get_coh_mode(xe, args->pat_index.val);
+
+ if (XE_IOCTL_DBG(xe, !coh_mode))
+ return false;
+
+ if (XE_WARN_ON(coh_mode > XE_COH_AT_LEAST_1WAY))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, args->pat_index.pad))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, args->pat_index.reserved))
+ return false;
break;
+ }
default:
if (XE_IOCTL_DBG(xe, 1))
return false;
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 16/24] drm/xe/uapi: Add flag for consulting madvise hints on svm prefetch
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (14 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 15/24] drm/xe/svm: Support DRM_XE_SVM_MEM_RANGE_ATTR_PAT memory attribute Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 17/24] drm/xe/svm: Consult madvise preferred location in prefetch Himal Prasad Ghimiray
` (14 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
Introduce flag DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC to ensure prefetching
in madvise-advised memory regions
v2 (Matthew Brost)
- Add kernel-doc
v3 (Matthew Brost)
- Fix kernel-doc
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
include/uapi/drm/xe_drm.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 4e6e9a9164ee..115b9bca2a25 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -1010,6 +1010,10 @@ struct drm_xe_vm_destroy {
* valid on VMs with DRM_XE_VM_CREATE_FLAG_FAULT_MODE set. The CPU address
* mirror flag are only valid for DRM_XE_VM_BIND_OP_MAP operations, the BO
* handle MBZ, and the BO offset MBZ.
+ *
+ * The @prefetch_mem_region_instance for %DRM_XE_VM_BIND_OP_PREFETCH can also be:
+ * - %DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC, which ensures prefetching occurs in
+ * the memory region advised by madvise.
*/
struct drm_xe_vm_bind_op {
/** @extensions: Pointer to the first extension struct, if any */
@@ -1115,6 +1119,7 @@ struct drm_xe_vm_bind_op {
/** @flags: Bind flags */
__u32 flags;
+#define DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC -1
/**
* @prefetch_mem_region_instance: Memory region to prefetch VMA to.
* It is a region instance, not a mask.
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 17/24] drm/xe/svm: Consult madvise preferred location in prefetch
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (15 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 16/24] drm/xe/uapi: Add flag for consulting madvise hints on svm prefetch Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 18/24] drm/xe/bo: Add attributes field to xe_bo Himal Prasad Ghimiray
` (13 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
When prefetch region is DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC, prefetch svm
ranges to preferred location provided by madvise.
v2 (Matthew Brost)
- Fix region, devmem_fd usages
- consult madvise is applicable for other vma's too.
v3
- Fix atomic handling
v4
- Fix xe_svm_range_validate to check for
DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC too.
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_vm.c | 47 ++++++++++++++++++++------------
drivers/gpu/drm/xe/xe_vm_types.h | 7 +++--
2 files changed, 35 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 0921245a5f35..ac64be6b4ac0 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -38,6 +38,7 @@
#include "xe_res_cursor.h"
#include "xe_svm.h"
#include "xe_sync.h"
+#include "xe_tile.h"
#include "xe_trace_bo.h"
#include "xe_wa.h"
#include "xe_hmm.h"
@@ -2396,9 +2397,10 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
__xe_vm_needs_clear_scratch_pages(vm, flags);
} else if (__op->op == DRM_GPUVA_OP_PREFETCH) {
struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
+ struct xe_tile *tile;
struct xe_svm_range *svm_range;
struct drm_gpusvm_ctx ctx = {};
- struct xe_tile *tile;
+ struct drm_pagemap *dpagemap;
u8 id, tile_mask = 0;
u32 i;
@@ -2415,8 +2417,24 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
tile_mask |= 0x1 << id;
xa_init_flags(&op->prefetch_range.range, XA_FLAGS_ALLOC);
- op->prefetch_range.region = prefetch_region;
op->prefetch_range.ranges_count = 0;
+ tile = NULL;
+
+ if (prefetch_region == DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC) {
+ dpagemap = xe_vma_resolve_pagemap(vma,
+ xe_device_get_root_tile(vm->xe));
+ /*
+ * TODO: Once multigpu support is enabled will need
+ * something to dereference tile from dpagemap.
+ */
+ if (dpagemap)
+ tile = xe_device_get_root_tile(vm->xe);
+ } else if (prefetch_region) {
+ tile = &vm->xe->tiles[region_to_mem_type[prefetch_region] -
+ XE_PL_VRAM0];
+ }
+
+ op->prefetch_range.tile = tile;
alloc_next_range:
svm_range = xe_svm_range_find_or_insert(vm, addr, vma, &ctx);
@@ -2435,7 +2453,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
goto unwind_prefetch_ops;
}
- if (xe_svm_range_validate(vm, svm_range, tile_mask, !!prefetch_region)) {
+ if (xe_svm_range_validate(vm, svm_range, tile_mask, !!tile)) {
xe_svm_range_debug(svm_range, "PREFETCH - RANGE IS VALID");
goto check_next_range;
}
@@ -2931,30 +2949,26 @@ static int prefetch_ranges(struct xe_vm *vm, struct xe_vma_op *op)
{
bool devmem_possible = IS_DGFX(vm->xe) && IS_ENABLED(CONFIG_DRM_XE_PAGEMAP);
struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
+ struct xe_tile *tile = op->prefetch_range.tile;
int err = 0;
struct xe_svm_range *svm_range;
struct drm_gpusvm_ctx ctx = {};
- struct xe_tile *tile;
unsigned long i;
- u32 region;
if (!xe_vma_is_cpu_addr_mirror(vma))
return 0;
- region = op->prefetch_range.region;
-
ctx.read_only = xe_vma_read_only(vma);
ctx.devmem_possible = devmem_possible;
ctx.check_pages_threshold = devmem_possible ? SZ_64K : 0;
/* TODO: Threading the migration */
xa_for_each(&op->prefetch_range.range, i, svm_range) {
- if (!region)
+ if (!tile)
xe_svm_range_migrate_to_smem(vm, svm_range);
- if (xe_svm_range_needs_migrate_to_vram(svm_range, vma, region)) {
- tile = &vm->xe->tiles[region_to_mem_type[region] - XE_PL_VRAM0];
+ if (xe_svm_range_needs_migrate_to_vram(svm_range, vma, !!tile)) {
err = xe_svm_alloc_vram(tile, svm_range, &ctx);
if (err) {
drm_dbg(&vm->xe->drm, "VRAM allocation failed, retry from userspace, asid=%u, gpusvm=%p, errno=%pe\n",
@@ -3017,12 +3031,11 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
u32 region;
- if (xe_vma_is_cpu_addr_mirror(vma))
- region = op->prefetch_range.region;
- else
+ if (!xe_vma_is_cpu_addr_mirror(vma)) {
region = op->prefetch.region;
-
- xe_assert(vm->xe, region <= ARRAY_SIZE(region_to_mem_type));
+ xe_assert(vm->xe, region == DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC ||
+ region <= ARRAY_SIZE(region_to_mem_type));
+ }
err = vma_lock_and_validate(exec,
gpuva_to_vma(op->base.prefetch.va),
@@ -3440,8 +3453,8 @@ static int vm_bind_ioctl_check_args(struct xe_device *xe, struct xe_vm *vm,
op == DRM_XE_VM_BIND_OP_PREFETCH) ||
XE_IOCTL_DBG(xe, prefetch_region &&
op != DRM_XE_VM_BIND_OP_PREFETCH) ||
- XE_IOCTL_DBG(xe, !(BIT(prefetch_region) &
- xe->info.mem_region_mask)) ||
+ XE_IOCTL_DBG(xe, (prefetch_region != DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC &&
+ !(BIT(prefetch_region) & xe->info.mem_region_mask))) ||
XE_IOCTL_DBG(xe, obj &&
op == DRM_XE_VM_BIND_OP_UNMAP)) {
err = -EINVAL;
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index dde7218ceba6..5704f379c225 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -428,8 +428,11 @@ struct xe_vma_op_prefetch_range {
struct xarray range;
/** @ranges_count: number of svm ranges to map */
u32 ranges_count;
- /** @region: memory region to prefetch to */
- u32 region;
+ /**
+ * @tile: Pointer to the tile structure containing memory to prefetch.
+ * NULL if prefetch requested region is smem
+ */
+ struct xe_tile *tile;
};
/** enum xe_vma_op_flags - flags for VMA operation */
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 18/24] drm/xe/bo: Add attributes field to xe_bo
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (16 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 17/24] drm/xe/svm: Consult madvise preferred location in prefetch Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 19/24] drm/xe/bo: Update atomic_access attribute on madvise Himal Prasad Ghimiray
` (12 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
A single BO can be linked to multiple VMAs, making VMA attributes
insufficient for determining the placement and PTE update attributes
of the BO. To address this, an attributes field has been added to the
BO.
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_bo_types.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index cf604adc13a3..314652afdca7 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -61,6 +61,14 @@ struct xe_bo {
*/
struct list_head client_link;
#endif
+ /** @attr: User controlled attributes for bo */
+ struct {
+ /**
+ * @atomic_access: type of atomic access bo needs
+ * protected by bo dma-resv lock
+ */
+ u32 atomic_access;
+ } attr;
/**
* @pxp_key_instance: PXP key instance this BO was created against. A
* 0 in this variable indicates that the BO does not use PXP encryption.
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 19/24] drm/xe/bo: Update atomic_access attribute on madvise
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (17 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 18/24] drm/xe/bo: Add attributes field to xe_bo Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 20/24] drm/xe/madvise: Skip vma invalidation if mem attr are unchanged Himal Prasad Ghimiray
` (11 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
Update the bo_atomic_access based on user-provided input and determine
the migration to smem during a CPU fault
v2 (Matthew Brost)
- Avoid cpu unmapping if bo is already in smem
- check atomics on smem too for ioctl
- Add comments
v3
- Avoid migration in prefetch
v4 (Matthew Brost)
- make sanity check function bool
- add assert for smem placement
- fix doc
v5 (Matthew Brost)
- NACK atomic fault with DRM_XE_ATOMIC_CPU
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_bo.c | 29 ++++++++++++--
drivers/gpu/drm/xe/xe_gt_pagefault.c | 35 ++++++-----------
drivers/gpu/drm/xe/xe_vm.c | 7 +++-
drivers/gpu/drm/xe/xe_vm_madvise.c | 59 +++++++++++++++++++++++++++-
4 files changed, 102 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 6fea39842e1e..72396d358a00 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1711,6 +1711,18 @@ static void xe_gem_object_close(struct drm_gem_object *obj,
}
}
+static bool should_migrate_to_smem(struct xe_bo *bo)
+{
+ /*
+ * NOTE: The following atomic checks are platform-specific. For example,
+ * if a device supports CXL atomics, these may not be necessary or
+ * may behave differently.
+ */
+
+ return bo->attr.atomic_access == DRM_XE_ATOMIC_GLOBAL ||
+ bo->attr.atomic_access == DRM_XE_ATOMIC_CPU;
+}
+
static vm_fault_t xe_gem_fault(struct vm_fault *vmf)
{
struct ttm_buffer_object *tbo = vmf->vma->vm_private_data;
@@ -1719,7 +1731,7 @@ static vm_fault_t xe_gem_fault(struct vm_fault *vmf)
struct xe_bo *bo = ttm_to_xe_bo(tbo);
bool needs_rpm = bo->flags & XE_BO_FLAG_VRAM_MASK;
vm_fault_t ret;
- int idx;
+ int idx, r = 0;
if (needs_rpm)
xe_pm_runtime_get(xe);
@@ -1731,8 +1743,19 @@ static vm_fault_t xe_gem_fault(struct vm_fault *vmf)
if (drm_dev_enter(ddev, &idx)) {
trace_xe_bo_cpu_fault(bo);
- ret = ttm_bo_vm_fault_reserved(vmf, vmf->vma->vm_page_prot,
- TTM_BO_VM_NUM_PREFAULT);
+ if (should_migrate_to_smem(bo)) {
+ xe_assert(xe, bo->flags & XE_BO_FLAG_SYSTEM);
+
+ r = xe_bo_migrate(bo, XE_PL_TT);
+ if (r == -EBUSY || r == -ERESTARTSYS || r == -EINTR)
+ ret = VM_FAULT_NOPAGE;
+ else if (r)
+ ret = VM_FAULT_SIGBUS;
+ }
+ if (!ret)
+ ret = ttm_bo_vm_fault_reserved(vmf,
+ vmf->vma->vm_page_prot,
+ TTM_BO_VM_NUM_PREFAULT);
drm_dev_exit(idx);
if (ret == VM_FAULT_RETRY &&
diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index ab43dec52776..4ea30fbce9bd 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -75,7 +75,7 @@ static bool vma_is_valid(struct xe_tile *tile, struct xe_vma *vma)
}
static int xe_pf_begin(struct drm_exec *exec, struct xe_vma *vma,
- bool atomic, struct xe_vram_region *vram)
+ bool need_vram_move, struct xe_vram_region *vram)
{
struct xe_bo *bo = xe_vma_bo(vma);
struct xe_vm *vm = xe_vma_vm(vma);
@@ -85,26 +85,13 @@ static int xe_pf_begin(struct drm_exec *exec, struct xe_vma *vma,
if (err)
return err;
- if (atomic && vram) {
- xe_assert(vm->xe, IS_DGFX(vm->xe));
+ if (!bo)
+ return 0;
- if (xe_vma_is_userptr(vma)) {
- err = -EACCES;
- return err;
- }
+ err = need_vram_move ? xe_bo_migrate(bo, vram->placement) :
+ xe_bo_validate(bo, vm, true);
- /* Migrate to VRAM, move should invalidate the VMA first */
- err = xe_bo_migrate(bo, vram->placement);
- if (err)
- return err;
- } else if (bo) {
- /* Create backing store if needed */
- err = xe_bo_validate(bo, vm, true);
- if (err)
- return err;
- }
-
- return 0;
+ return err;
}
static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma,
@@ -115,10 +102,14 @@ static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma,
struct drm_exec exec;
struct dma_fence *fence;
ktime_t end = 0;
- int err;
+ int err, needs_vram;
lockdep_assert_held_write(&vm->lock);
+ needs_vram = xe_vma_need_vram_for_atomic(vm->xe, vma, atomic);
+ if (needs_vram < 0 || (needs_vram && xe_vma_is_userptr(vma)))
+ return needs_vram < 0 ? needs_vram : -EACCES;
+
xe_gt_stats_incr(gt, XE_GT_STATS_ID_VMA_PAGEFAULT_COUNT, 1);
xe_gt_stats_incr(gt, XE_GT_STATS_ID_VMA_PAGEFAULT_KB, xe_vma_size(vma) / 1024);
@@ -141,7 +132,7 @@ static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma,
/* Lock VM and BOs dma-resv */
drm_exec_init(&exec, 0, 0);
drm_exec_until_all_locked(&exec) {
- err = xe_pf_begin(&exec, vma, atomic, tile->mem.vram);
+ err = xe_pf_begin(&exec, vma, needs_vram == 1, tile->mem.vram);
drm_exec_retry_on_contention(&exec);
if (xe_vm_validate_should_retry(&exec, err, &end))
err = -EAGAIN;
@@ -576,7 +567,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
/* Lock VM and BOs dma-resv */
drm_exec_init(&exec, 0, 0);
drm_exec_until_all_locked(&exec) {
- ret = xe_pf_begin(&exec, vma, true, tile->mem.vram);
+ ret = xe_pf_begin(&exec, vma, IS_DGFX(vm->xe), tile->mem.vram);
drm_exec_retry_on_contention(&exec);
if (ret)
break;
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index ac64be6b4ac0..d8faf5f34d05 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -4234,15 +4234,18 @@ void xe_vm_snapshot_free(struct xe_vm_snapshot *snap)
*/
int xe_vma_need_vram_for_atomic(struct xe_device *xe, struct xe_vma *vma, bool is_atomic)
{
+ u32 atomic_access = xe_vma_bo(vma) ? xe_vma_bo(vma)->attr.atomic_access :
+ vma->attr.atomic_access;
+
if (!IS_DGFX(xe) || !is_atomic)
- return 0;
+ return false;
/*
* NOTE: The checks implemented here are platform-specific. For
* instance, on a device supporting CXL atomics, these would ideally
* work universally without additional handling.
*/
- switch (vma->attr.atomic_access) {
+ switch (atomic_access) {
case DRM_XE_ATOMIC_DEVICE:
return !xe->info.has_device_atomics_on_smem;
diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c
index 3bd52063f9c2..212a03178d65 100644
--- a/drivers/gpu/drm/xe/xe_vm_madvise.c
+++ b/drivers/gpu/drm/xe/xe_vm_madvise.c
@@ -102,6 +102,7 @@ static void madvise_atomic(struct xe_device *xe, struct xe_vm *vm,
struct xe_vma **vmas, int num_vmas,
struct drm_xe_madvise *op)
{
+ struct xe_bo *bo;
int i;
xe_assert(vm->xe, op->type == DRM_XE_MEM_RANGE_ATTR_ATOMIC);
@@ -114,7 +115,19 @@ static void madvise_atomic(struct xe_device *xe, struct xe_vm *vm,
continue;
vmas[i]->attr.atomic_access = op->atomic.val;
- /*TODO: handle bo backed vmas */
+
+ bo = xe_vma_bo(vmas[i]);
+ if (!bo)
+ continue;
+
+ xe_bo_assert_held(bo);
+ bo->attr.atomic_access = op->atomic.val;
+
+ /* Invalidate cpu page table, so bo can migrate to smem in next access */
+ if (xe_bo_is_vram(bo) &&
+ (bo->attr.atomic_access == DRM_XE_ATOMIC_CPU ||
+ bo->attr.atomic_access == DRM_XE_ATOMIC_GLOBAL))
+ ttm_bo_unmap_virtual(&bo->ttm);
}
}
@@ -262,6 +275,41 @@ static bool madvise_args_are_sane(struct xe_device *xe, const struct drm_xe_madv
return true;
}
+static bool check_bo_args_are_sane(struct xe_vm *vm, struct xe_vma **vmas,
+ int num_vmas, u32 atomic_val)
+{
+ struct xe_device *xe = vm->xe;
+ struct xe_bo *bo;
+ int i;
+
+ for (i = 0; i < num_vmas; i++) {
+ bo = xe_vma_bo(vmas[i]);
+ if (!bo)
+ continue;
+ /*
+ * NOTE: The following atomic checks are platform-specific. For example,
+ * if a device supports CXL atomics, these may not be necessary or
+ * may behave differently.
+ */
+ if (XE_IOCTL_DBG(xe, atomic_val == DRM_XE_ATOMIC_CPU &&
+ !(bo->flags & XE_BO_FLAG_SYSTEM)))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, atomic_val == DRM_XE_ATOMIC_DEVICE &&
+ !(bo->flags & XE_BO_FLAG_VRAM0) &&
+ !(bo->flags & XE_BO_FLAG_VRAM1) &&
+ !(bo->flags & XE_BO_FLAG_SYSTEM &&
+ xe->info.has_device_atomics_on_smem)))
+ return false;
+
+ if (XE_IOCTL_DBG(xe, atomic_val == DRM_XE_ATOMIC_GLOBAL &&
+ (!(bo->flags & XE_BO_FLAG_SYSTEM) ||
+ (!(bo->flags & XE_BO_FLAG_VRAM0) &&
+ !(bo->flags & XE_BO_FLAG_VRAM1)))))
+ return false;
+ }
+ return true;
+}
/**
* xe_vm_madvise_ioctl - Handle MADVise ioctl for a VM
* @dev: DRM device pointer
@@ -313,6 +361,15 @@ int xe_vm_madvise_ioctl(struct drm_device *dev, void *data, struct drm_file *fil
goto unlock_vm;
if (madvise_range.has_bo_vmas) {
+ if (args->type == DRM_XE_MEM_RANGE_ATTR_ATOMIC) {
+ if (!check_bo_args_are_sane(vm, madvise_range.vmas,
+ madvise_range.num_vmas,
+ args->atomic.val)) {
+ err = -EINVAL;
+ goto unlock_vm;
+ }
+ }
+
drm_exec_init(&exec, DRM_EXEC_IGNORE_DUPLICATES | DRM_EXEC_INTERRUPTIBLE_WAIT, 0);
drm_exec_until_all_locked(&exec) {
for (int i = 0; i < madvise_range.num_vmas; i++) {
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 20/24] drm/xe/madvise: Skip vma invalidation if mem attr are unchanged
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (18 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 19/24] drm/xe/bo: Update atomic_access attribute on madvise Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 21/24] drm/xe/vm: Add helper to check for default VMA memory attributes Himal Prasad Ghimiray
` (10 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
If a VMA within the madvise input range already has the same memory
attribute as the one requested by the user, skip PTE zapping for that
VMA to avoid unnecessary invalidation.
v2 (Matthew Brost)
- fix skip_invalidation for new attributes
- s/u32/bool
- Remove unnecessary assignment for kzalloc'ed
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_vm_madvise.c | 68 ++++++++++++++++++++----------
drivers/gpu/drm/xe/xe_vm_types.h | 6 +++
2 files changed, 52 insertions(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c
index 212a03178d65..7813bdedacaa 100644
--- a/drivers/gpu/drm/xe/xe_vm_madvise.c
+++ b/drivers/gpu/drm/xe/xe_vm_madvise.c
@@ -85,16 +85,20 @@ static void madvise_preferred_mem_loc(struct xe_device *xe, struct xe_vm *vm,
for (i = 0; i < num_vmas; i++) {
/*TODO: Extend attributes to bo based vmas */
- if (!xe_vma_is_cpu_addr_mirror(vmas[i]))
- continue;
-
- vmas[i]->attr.preferred_loc.devmem_fd = op->preferred_mem_loc.devmem_fd;
-
- /* Till multi-device support is not added migration_policy
- * is of no use and can be ignored.
- */
- vmas[i]->attr.preferred_loc.migration_policy =
+ if ((vmas[i]->attr.preferred_loc.devmem_fd == op->preferred_mem_loc.devmem_fd &&
+ vmas[i]->attr.preferred_loc.migration_policy ==
+ op->preferred_mem_loc.migration_policy) ||
+ !xe_vma_is_cpu_addr_mirror(vmas[i])) {
+ vmas[i]->skip_invalidation = true;
+ } else {
+ vmas[i]->skip_invalidation = false;
+ vmas[i]->attr.preferred_loc.devmem_fd = op->preferred_mem_loc.devmem_fd;
+ /* Till multi-device support is not added migration_policy
+ * is of no use and can be ignored.
+ */
+ vmas[i]->attr.preferred_loc.migration_policy =
op->preferred_mem_loc.migration_policy;
+ }
}
}
@@ -109,17 +113,27 @@ static void madvise_atomic(struct xe_device *xe, struct xe_vm *vm,
xe_assert(vm->xe, op->atomic.val <= DRM_XE_ATOMIC_CPU);
for (i = 0; i < num_vmas; i++) {
- if ((xe_vma_is_userptr(vmas[i]) &&
- !(op->atomic.val == DRM_XE_ATOMIC_DEVICE &&
- xe->info.has_device_atomics_on_smem)))
+ if (xe_vma_is_userptr(vmas[i]) &&
+ !(op->atomic.val == DRM_XE_ATOMIC_DEVICE &&
+ xe->info.has_device_atomics_on_smem)) {
+ vmas[i]->skip_invalidation = true;
continue;
+ }
+
+ if (vmas[i]->attr.atomic_access == op->atomic.val) {
+ vmas[i]->skip_invalidation = true;
+ } else {
+ vmas[i]->skip_invalidation = false;
+ vmas[i]->attr.atomic_access = op->atomic.val;
+ }
vmas[i]->attr.atomic_access = op->atomic.val;
bo = xe_vma_bo(vmas[i]);
- if (!bo)
+ if (!bo || bo->attr.atomic_access == op->atomic.val)
continue;
+ vmas[i]->skip_invalidation = false;
xe_bo_assert_held(bo);
bo->attr.atomic_access = op->atomic.val;
@@ -139,8 +153,14 @@ static void madvise_pat_index(struct xe_device *xe, struct xe_vm *vm,
xe_assert(vm->xe, op->type == DRM_XE_MEM_RANGE_ATTR_PAT);
- for (i = 0; i < num_vmas; i++)
- vmas[i]->attr.pat_index = op->pat_index.val;
+ for (i = 0; i < num_vmas; i++) {
+ if (vmas[i]->attr.pat_index == op->pat_index.val) {
+ vmas[i]->skip_invalidation = true;
+ } else {
+ vmas[i]->skip_invalidation = false;
+ vmas[i]->attr.pat_index = op->pat_index.val;
+ }
+ }
}
typedef void (*madvise_func)(struct xe_device *xe, struct xe_vm *vm,
@@ -157,7 +177,7 @@ static u8 xe_zap_ptes_in_madvise_range(struct xe_vm *vm, u64 start, u64 end)
{
struct drm_gpuva *gpuva;
struct xe_tile *tile;
- u8 id, tile_mask;
+ u8 id, tile_mask = 0;
lockdep_assert_held_write(&vm->lock);
@@ -166,17 +186,20 @@ static u8 xe_zap_ptes_in_madvise_range(struct xe_vm *vm, u64 start, u64 end)
false, MAX_SCHEDULE_TIMEOUT) <= 0)
XE_WARN_ON(1);
- tile_mask = xe_svm_ranges_zap_ptes_in_range(vm, start, end);
-
drm_gpuvm_for_each_va_range(gpuva, &vm->gpuvm, start, end) {
struct xe_vma *vma = gpuva_to_vma(gpuva);
- if (xe_vma_is_cpu_addr_mirror(vma) || xe_vma_is_null(vma))
+ if (vma->skip_invalidation || xe_vma_is_null(vma))
continue;
- for_each_tile(tile, vm->xe, id) {
- if (xe_pt_zap_ptes(tile, vma)) {
- tile_mask |= BIT(id);
+ if (xe_vma_is_cpu_addr_mirror(vma)) {
+ tile_mask |= xe_svm_ranges_zap_ptes_in_range(vm,
+ xe_vma_start(vma),
+ xe_vma_end(vma));
+ } else {
+ for_each_tile(tile, vm->xe, id) {
+ if (xe_pt_zap_ptes(tile, vma)) {
+ tile_mask |= BIT(id);
/*
* WRITE_ONCE pairs with READ_ONCE
@@ -184,6 +207,7 @@ static u8 xe_zap_ptes_in_madvise_range(struct xe_vm *vm, u64 start, u64 end)
*/
WRITE_ONCE(vma->tile_invalidated,
vma->tile_invalidated | BIT(id));
+ }
}
}
}
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 5704f379c225..35b6344158f5 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -157,6 +157,12 @@ struct xe_vma {
/** @tile_staged: bind is staged for this VMA */
u8 tile_staged;
+ /**
+ * @skip_invalidation: Used in madvise to avoid invalidation
+ * if mem attributes doesn't change
+ */
+ bool skip_invalidation;
+
/**
* @ufence: The user fence that was provided with MAP.
* Needs to be signalled before UNMAP can be processed.
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 21/24] drm/xe/vm: Add helper to check for default VMA memory attributes
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (19 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 20/24] drm/xe/madvise: Skip vma invalidation if mem attr are unchanged Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 22/24] drm/xe: Reset VMA attributes to default in SVM garbage collector Himal Prasad Ghimiray
` (9 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
Introduce a new helper function `xe_vma_has_default_mem_attrs()` to
determine whether a VMA's memory attributes are set to their default
values. This includes checks for atomic access, PAT index, and preferred
location.
Also, add a new field `default_pat_index` to `struct xe_vma_mem_attr`
to track the initial PAT index set during the first bind. This helps
distinguish between default and user-modified pat index, such as those
changed via madvise.
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_vm.c | 24 ++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vm.h | 2 ++
drivers/gpu/drm/xe/xe_vm_types.h | 6 ++++++
3 files changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index d8faf5f34d05..2532c84e1a70 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2636,6 +2636,29 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
return err;
}
+/**
+ * xe_vma_has_default_mem_attrs - Check if a VMA has default memory attributes
+ * @vma: Pointer to the xe_vma structure to check
+ *
+ * This function determines whether the given VMA (Virtual Memory Area)
+ * has its memory attributes set to their default values. Specifically,
+ * it checks the following conditions:
+ *
+ * - `atomic_access` is `DRM_XE_VMA_ATOMIC_UNDEFINED`
+ * - `pat_index` is equal to `default_pat_index`
+ * - `preferred_loc.devmem_fd` is `DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE`
+ * - `preferred_loc.migration_policy` is `DRM_XE_MIGRATE_ALL_PAGES`
+ *
+ * Return: true if all attributes are at their default values, false otherwise.
+ */
+bool xe_vma_has_default_mem_attrs(struct xe_vma *vma)
+{
+ return (vma->attr.atomic_access == DRM_XE_ATOMIC_UNDEFINED &&
+ vma->attr.pat_index == vma->attr.default_pat_index &&
+ vma->attr.preferred_loc.devmem_fd == DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE &&
+ vma->attr.preferred_loc.migration_policy == DRM_XE_MIGRATE_ALL_PAGES);
+}
+
static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
struct xe_vma_ops *vops)
{
@@ -2668,6 +2691,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
.migration_policy = DRM_XE_MIGRATE_ALL_PAGES,
},
.atomic_access = DRM_XE_ATOMIC_UNDEFINED,
+ .default_pat_index = op->map.pat_index,
.pat_index = op->map.pat_index,
};
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index fe8648222ab7..83a61fcef3b4 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -66,6 +66,8 @@ static inline bool xe_vm_is_closed_or_banned(struct xe_vm *vm)
struct xe_vma *
xe_vm_find_overlapping_vma(struct xe_vm *vm, u64 start, u64 range);
+bool xe_vma_has_default_mem_attrs(struct xe_vma *vma);
+
/**
* xe_vm_has_scratch() - Whether the vm is configured for scratch PTEs
* @vm: The vm
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 35b6344158f5..b5108d010786 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -103,8 +103,14 @@ struct xe_vma_mem_attr {
*/
u32 atomic_access;
+ /**
+ * @default_pat_index: The pat index for VMA set during first bind by user.
+ */
+ u16 default_pat_index;
+
/**
* @pat_index: The pat index to use when encoding the PTEs for this vma.
+ * same as default_pat_index unless overwritten by madvise.
*/
u16 pat_index;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 22/24] drm/xe: Reset VMA attributes to default in SVM garbage collector
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (20 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 21/24] drm/xe/vm: Add helper to check for default VMA memory attributes Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 23/24] drm/xe: Enable madvise ioctl for xe Himal Prasad Ghimiray
` (8 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
Restore default memory attributes for VMAs during garbage collection
if they were modified by madvise. Reuse existing VMA if fully overlapping;
otherwise, allocate a new mirror VMA.
v2 (Matthew Brost)
- Add helper for vma split
- Add retry to get updated vma
v3
- Rebase on gpuvm layer
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_svm.c | 80 ++++++++++++++++--
drivers/gpu/drm/xe/xe_vm.c | 156 ++++++++++++++++++++++++++----------
drivers/gpu/drm/xe/xe_vm.h | 2 +
3 files changed, 190 insertions(+), 48 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 19585a3d9f69..0596039ef0a1 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -253,10 +253,56 @@ static int __xe_svm_garbage_collector(struct xe_vm *vm,
return 0;
}
+static int xe_svm_range_set_default_attr(struct xe_vm *vm, u64 range_start, u64 range_end)
+{
+ struct xe_vma *vma;
+ struct xe_vma_mem_attr default_attr = {
+ .preferred_loc = {
+ .devmem_fd = DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE,
+ .migration_policy = DRM_XE_MIGRATE_ALL_PAGES,
+ },
+ .atomic_access = DRM_XE_ATOMIC_UNDEFINED,
+ };
+ int err = 0;
+
+ vma = xe_vm_find_vma_by_addr(vm, range_start);
+ if (!vma)
+ return -EINVAL;
+
+ if (xe_vma_has_default_mem_attrs(vma))
+ return 0;
+
+ vm_dbg(&vm->xe->drm, "Existing VMA start=0x%016llx, vma_end=0x%016llx",
+ xe_vma_start(vma), xe_vma_end(vma));
+
+ if (xe_vma_start(vma) == range_start && xe_vma_end(vma) == range_end) {
+ default_attr.pat_index = vma->attr.default_pat_index;
+ default_attr.default_pat_index = vma->attr.default_pat_index;
+ vma->attr = default_attr;
+ } else {
+ vm_dbg(&vm->xe->drm, "Split VMA start=0x%016llx, vma_end=0x%016llx",
+ range_start, range_end);
+ err = xe_vm_alloc_cpu_addr_mirror_vma(vm, range_start, range_end - range_start);
+ if (err) {
+ drm_warn(&vm->xe->drm, "VMA SPLIT failed: %pe\n", ERR_PTR(err));
+ xe_vm_kill(vm, true);
+ return err;
+ }
+ }
+
+ /*
+ * On call from xe_svm_handle_pagefault original VMA might be changed
+ * signal this to lookup for VMA again.
+ */
+ return -EAGAIN;
+}
+
static int xe_svm_garbage_collector(struct xe_vm *vm)
{
struct xe_svm_range *range;
- int err;
+ u64 range_start;
+ u64 range_end;
+ int err, ret = 0;
lockdep_assert_held_write(&vm->lock);
@@ -271,6 +317,9 @@ static int xe_svm_garbage_collector(struct xe_vm *vm)
if (!range)
break;
+ range_start = xe_svm_range_start(range);
+ range_end = xe_svm_range_end(range);
+
list_del(&range->garbage_collector_link);
spin_unlock(&vm->svm.garbage_collector.lock);
@@ -283,11 +332,19 @@ static int xe_svm_garbage_collector(struct xe_vm *vm)
return err;
}
+ err = xe_svm_range_set_default_attr(vm, range_start, range_end);
+ if (err) {
+ if (err == -EAGAIN)
+ ret = -EAGAIN;
+ else
+ return err;
+ }
+
spin_lock(&vm->svm.garbage_collector.lock);
}
spin_unlock(&vm->svm.garbage_collector.lock);
- return 0;
+ return ret;
}
static void xe_svm_garbage_collector_work_func(struct work_struct *w)
@@ -927,13 +984,26 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
struct xe_gt *gt, u64 fault_addr,
bool atomic)
{
- int need_vram;
-
+ int need_vram, ret;
+retry:
need_vram = xe_vma_need_vram_for_atomic(vm->xe, vma, atomic);
if (need_vram < 0)
return need_vram;
- return __xe_svm_handle_pagefault(vm, vma, gt, fault_addr, need_vram ? true : false);
+ ret = __xe_svm_handle_pagefault(vm, vma, gt, fault_addr,
+ need_vram ? true : false);
+ if (ret == -EAGAIN) {
+ /*
+ * Retry once on -EAGAIN to re-lookup the VMA, as the original VMA
+ * may have been split by xe_svm_range_set_default_attr.
+ */
+ vma = xe_vm_find_vma_by_addr(vm, fault_addr);
+ if (!vma)
+ return -EINVAL;
+
+ goto retry;
+ }
+ return ret;
}
/**
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 2532c84e1a70..a76bcda8cf29 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -4283,35 +4283,26 @@ int xe_vma_need_vram_for_atomic(struct xe_device *xe, struct xe_vma *vma, bool i
}
}
-/**
- * xe_vm_alloc_madvise_vma - Allocate VMA's with madvise ops
- * @vm: Pointer to the xe_vm structure
- * @start: Starting input address
- * @range: Size of the input range
- *
- * This function splits existing vma to create new vma for user provided input range
- *
- * Return: 0 if success
- */
-int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
+static int xe_vm_alloc_vma(struct xe_vm *vm,
+ struct drm_gpuvm_map_req *map_req,
+ bool is_madvise)
{
- struct drm_gpuvm_map_req map_req = {
- .map.va.addr = start,
- .map.va.range = range,
- };
-
struct xe_vma_ops vops;
struct drm_gpuva_ops *ops = NULL;
struct drm_gpuva_op *__op;
bool is_cpu_addr_mirror = false;
bool remap_op = false;
struct xe_vma_mem_attr tmp_attr;
+ u16 default_pat;
int err;
lockdep_assert_held_write(&vm->lock);
- vm_dbg(&vm->xe->drm, "MADVISE_OPS_CREATE: addr=0x%016llx, size=0x%016llx", start, range);
- ops = drm_gpuvm_madvise_ops_create(&vm->gpuvm, &map_req);
+ if (is_madvise)
+ ops = drm_gpuvm_madvise_ops_create(&vm->gpuvm, map_req);
+ else
+ ops = drm_gpuvm_sm_map_ops_create(&vm->gpuvm, map_req);
+
if (IS_ERR(ops))
return PTR_ERR(ops);
@@ -4322,33 +4313,57 @@ int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
drm_gpuva_for_each_op(__op, ops) {
struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
+ struct xe_vma *vma = NULL;
- if (__op->op == DRM_GPUVA_OP_REMAP) {
- xe_assert(vm->xe, !remap_op);
- remap_op = true;
+ if (!is_madvise) {
+ if (__op->op == DRM_GPUVA_OP_UNMAP) {
+ vma = gpuva_to_vma(op->base.unmap.va);
+ XE_WARN_ON(!xe_vma_has_default_mem_attrs(vma));
+ default_pat = vma->attr.default_pat_index;
+ }
- if (xe_vma_is_cpu_addr_mirror(gpuva_to_vma(op->base.remap.unmap->va)))
- is_cpu_addr_mirror = true;
- else
- is_cpu_addr_mirror = false;
- }
+ if (__op->op == DRM_GPUVA_OP_REMAP) {
+ vma = gpuva_to_vma(op->base.remap.unmap->va);
+ default_pat = vma->attr.default_pat_index;
+ }
- if (__op->op == DRM_GPUVA_OP_MAP) {
- xe_assert(vm->xe, remap_op);
- remap_op = false;
+ if (__op->op == DRM_GPUVA_OP_MAP) {
+ op->map.is_cpu_addr_mirror = true;
+ op->map.pat_index = default_pat;
+ }
+ } else {
+ if (__op->op == DRM_GPUVA_OP_REMAP) {
+ vma = gpuva_to_vma(op->base.remap.unmap->va);
+ xe_assert(vm->xe, !remap_op);
+ xe_assert(vm->xe, xe_vma_has_no_bo(vma));
+ remap_op = true;
+
+ if (xe_vma_is_cpu_addr_mirror(vma))
+ is_cpu_addr_mirror = true;
+ else
+ is_cpu_addr_mirror = false;
+ }
- /* In case of madvise ops DRM_GPUVA_OP_MAP is always after
- * DRM_GPUVA_OP_REMAP, so ensure we assign op->map.is_cpu_addr_mirror true
- * if REMAP is for xe_vma_is_cpu_addr_mirror vma
- */
- op->map.is_cpu_addr_mirror = is_cpu_addr_mirror;
+ if (__op->op == DRM_GPUVA_OP_MAP) {
+ xe_assert(vm->xe, remap_op);
+ remap_op = false;
+ /*
+ * In case of madvise ops DRM_GPUVA_OP_MAP is
+ * always after DRM_GPUVA_OP_REMAP, so ensure
+ * we assign op->map.is_cpu_addr_mirror true
+ * if REMAP is for xe_vma_is_cpu_addr_mirror vma
+ */
+ op->map.is_cpu_addr_mirror = is_cpu_addr_mirror;
+ }
}
-
print_op(vm->xe, __op);
}
xe_vma_ops_init(&vops, vm, NULL, NULL, 0);
- vops.flags |= XE_VMA_OPS_FLAG_MADVISE;
+
+ if (is_madvise)
+ vops.flags |= XE_VMA_OPS_FLAG_MADVISE;
+
err = vm_bind_ioctl_ops_parse(vm, ops, &vops);
if (err)
goto unwind_ops;
@@ -4360,15 +4375,20 @@ int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
struct xe_vma *vma;
if (__op->op == DRM_GPUVA_OP_UNMAP) {
- /* There should be no unmap */
- XE_WARN_ON("UNEXPECTED UNMAP");
- xe_vma_destroy(gpuva_to_vma(op->base.unmap.va), NULL);
+ vma = gpuva_to_vma(op->base.unmap.va);
+ /* There should be no unmap for madvise */
+ if (is_madvise)
+ XE_WARN_ON("UNEXPECTED UNMAP");
+
+ xe_vma_destroy(vma, NULL);
} else if (__op->op == DRM_GPUVA_OP_REMAP) {
vma = gpuva_to_vma(op->base.remap.unmap->va);
- /* Store attributes for REMAP UNMAPPED VMA, so they can be assigned
- * to newly MAP created vma.
+ /* In case of madvise ops Store attributes for REMAP UNMAPPED
+ * VMA, so they can be assigned to newly MAP created vma.
*/
- tmp_attr = vma->attr;
+ if (is_madvise)
+ tmp_attr = vma->attr;
+
xe_vma_destroy(gpuva_to_vma(op->base.remap.unmap->va), NULL);
} else if (__op->op == DRM_GPUVA_OP_MAP) {
vma = op->map.vma;
@@ -4376,7 +4396,8 @@ int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
* Therefore temp_attr will always have sane values, making it safe to
* copy them to new vma.
*/
- vma->attr = tmp_attr;
+ if (is_madvise)
+ vma->attr = tmp_attr;
}
}
@@ -4390,3 +4411,52 @@ int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
drm_gpuva_ops_free(&vm->gpuvm, ops);
return err;
}
+
+/**
+ * xe_vm_alloc_madvise_vma - Allocate VMA's with madvise ops
+ * @vm: Pointer to the xe_vm structure
+ * @start: Starting input address
+ * @range: Size of the input range
+ *
+ * This function splits existing vma to create new vma for user provided input range
+ *
+ * Return: 0 if success
+ */
+int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
+{
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = start,
+ .map.va.range = range,
+ };
+
+ lockdep_assert_held_write(&vm->lock);
+
+ vm_dbg(&vm->xe->drm, "MADVISE_OPS_CREATE: addr=0x%016llx, size=0x%016llx", start, range);
+
+ return xe_vm_alloc_vma(vm, &map_req, true);
+}
+
+/**
+ * xe_vm_alloc_cpu_addr_mirror_vma - Allocate CPU addr mirror vma
+ * @vm: Pointer to the xe_vm structure
+ * @start: Starting input address
+ * @range: Size of the input range
+ *
+ * This function splits/merges existing vma to create new vma for user provided input range
+ *
+ * Return: 0 if success
+ */
+int xe_vm_alloc_cpu_addr_mirror_vma(struct xe_vm *vm, uint64_t start, uint64_t range)
+{
+ struct drm_gpuvm_map_req map_req = {
+ .map.va.addr = start,
+ .map.va.range = range,
+ };
+
+ lockdep_assert_held_write(&vm->lock);
+
+ vm_dbg(&vm->xe->drm, "CPU_ADDR_MIRROR_VMA_OPS_CREATE: addr=0x%016llx, size=0x%016llx",
+ start, range);
+
+ return xe_vm_alloc_vma(vm, &map_req, false);
+}
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 83a61fcef3b4..c8b8318fe61a 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -177,6 +177,8 @@ int xe_vma_need_vram_for_atomic(struct xe_device *xe, struct xe_vma *vma, bool i
int xe_vm_alloc_madvise_vma(struct xe_vm *vm, uint64_t addr, uint64_t size);
+int xe_vm_alloc_cpu_addr_mirror_vma(struct xe_vm *vm, uint64_t addr, uint64_t size);
+
/**
* to_userptr_vma() - Return a pointer to an embedding userptr vma
* @vma: Pointer to the embedded struct xe_vma
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 23/24] drm/xe: Enable madvise ioctl for xe
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (21 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 22/24] drm/xe: Reset VMA attributes to default in SVM garbage collector Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 10:59 ` [PATCH v7 24/24] drm/xe/uapi: Add UAPI for querying VMA count and memory attributes Himal Prasad Ghimiray
` (7 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray
Ioctl enables setting up of memory attributes in user provided range.
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 3e0402dff423..98a368a979eb 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -63,6 +63,7 @@
#include "xe_ttm_stolen_mgr.h"
#include "xe_ttm_sys_mgr.h"
#include "xe_vm.h"
+#include "xe_vm_madvise.h"
#include "xe_vram.h"
#include "xe_vram_types.h"
#include "xe_vsec.h"
@@ -201,6 +202,7 @@ static const struct drm_ioctl_desc xe_ioctls[] = {
DRM_IOCTL_DEF_DRV(XE_WAIT_USER_FENCE, xe_wait_user_fence_ioctl,
DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(XE_OBSERVATION, xe_observation_ioctl, DRM_RENDER_ALLOW),
+ DRM_IOCTL_DEF_DRV(XE_MADVISE, xe_vm_madvise_ioctl, DRM_RENDER_ALLOW),
};
static long xe_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v7 24/24] drm/xe/uapi: Add UAPI for querying VMA count and memory attributes
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (22 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 23/24] drm/xe: Enable madvise ioctl for xe Himal Prasad Ghimiray
@ 2025-08-14 10:59 ` Himal Prasad Ghimiray
2025-08-14 12:16 ` ✗ CI.checkpatch: warning for MADVISE FOR XE (rev7) Patchwork
` (6 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Himal Prasad Ghimiray @ 2025-08-14 10:59 UTC (permalink / raw)
To: intel-xe
Cc: Matthew Brost, Thomas Hellström, Himal Prasad Ghimiray,
Shuicheng Lin
Introduce the DRM_IOCTL_XE_VM_QUERY_MEMORY_RANGE_ATTRS ioctl to allow
userspace to query memory attributes of VMAs within a user specified
virtual address range.
Userspace first calls the ioctl with num_mem_ranges = 0,
sizeof_mem_ranges_attr = 0 and vector_of_vma_mem_attr = NULL to retrieve
the number of memory ranges (vmas) and size of each memory range attribute.
Then, it allocates a buffer of that size and calls the ioctl again to fill
the buffer with memory range attributes.
This two-step interface allows userspace to first query the required
buffer size, then retrieve detailed attributes efficiently.
v2 (Matthew Brost)
- Use same ioctl to overload functionality
v3
- Add kernel-doc
v4
- Make uapi future proof by passing struct size (Matthew Brost)
- make lock interruptible (Matthew Brost)
- set reserved bits to zero (Matthew Brost)
- s/__copy_to_user/copy_to_user (Matthew Brost)
- Avod using VMA term in uapi (Thomas)
- xe_vm_put(vm) is missing (Shuicheng)
v5
- Nits
- Fix kernel-doc
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Shuicheng Lin <shuicheng.lin@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 2 +
drivers/gpu/drm/xe/xe_vm.c | 102 ++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vm.h | 2 +-
include/uapi/drm/xe_drm.h | 139 +++++++++++++++++++++++++++++++++
4 files changed, 244 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 98a368a979eb..a9455c05f706 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -203,6 +203,8 @@ static const struct drm_ioctl_desc xe_ioctls[] = {
DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(XE_OBSERVATION, xe_observation_ioctl, DRM_RENDER_ALLOW),
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),
};
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 a76bcda8cf29..708b2b0c1ee8 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2192,6 +2192,108 @@ int xe_vm_destroy_ioctl(struct drm_device *dev, void *data,
return err;
}
+static int xe_vm_query_vmas(struct xe_vm *vm, u64 start, u64 end)
+{
+ struct drm_gpuva *gpuva;
+ u32 num_vmas = 0;
+
+ lockdep_assert_held(&vm->lock);
+ drm_gpuvm_for_each_va_range(gpuva, &vm->gpuvm, start, end)
+ num_vmas++;
+
+ return num_vmas;
+}
+
+static int get_mem_attrs(struct xe_vm *vm, u32 *num_vmas, u64 start,
+ u64 end, struct drm_xe_mem_range_attr *attrs)
+{
+ struct drm_gpuva *gpuva;
+ int i = 0;
+
+ lockdep_assert_held(&vm->lock);
+
+ drm_gpuvm_for_each_va_range(gpuva, &vm->gpuvm, start, end) {
+ struct xe_vma *vma = gpuva_to_vma(gpuva);
+
+ if (i == *num_vmas)
+ return -ENOSPC;
+
+ attrs[i].start = xe_vma_start(vma);
+ attrs[i].end = xe_vma_end(vma);
+ attrs[i].atomic.val = vma->attr.atomic_access;
+ attrs[i].pat_index.val = vma->attr.pat_index;
+ attrs[i].preferred_mem_loc.devmem_fd = vma->attr.preferred_loc.devmem_fd;
+ attrs[i].preferred_mem_loc.migration_policy =
+ vma->attr.preferred_loc.migration_policy;
+
+ i++;
+ }
+
+ *num_vmas = i;
+ return 0;
+}
+
+int xe_vm_query_vmas_attrs_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
+{
+ struct xe_device *xe = to_xe_device(dev);
+ struct xe_file *xef = to_xe_file(file);
+ struct drm_xe_mem_range_attr *mem_attrs;
+ struct drm_xe_vm_query_mem_range_attr *args = data;
+ u64 __user *attrs_user = u64_to_user_ptr(args->vector_of_mem_attr);
+ struct xe_vm *vm;
+ int err = 0;
+
+ if (XE_IOCTL_DBG(xe,
+ ((args->num_mem_ranges == 0 &&
+ (attrs_user || args->sizeof_mem_range_attr != 0)) ||
+ (args->num_mem_ranges > 0 &&
+ (!attrs_user ||
+ args->sizeof_mem_range_attr !=
+ sizeof(struct drm_xe_mem_range_attr))))))
+ return -EINVAL;
+
+ vm = xe_vm_lookup(xef, args->vm_id);
+ if (XE_IOCTL_DBG(xe, !vm))
+ return -EINVAL;
+
+ err = down_read_interruptible(&vm->lock);
+ if (err)
+ goto put_vm;
+
+ attrs_user = u64_to_user_ptr(args->vector_of_mem_attr);
+
+ if (args->num_mem_ranges == 0 && !attrs_user) {
+ args->num_mem_ranges = xe_vm_query_vmas(vm, args->start, args->start + args->range);
+ args->sizeof_mem_range_attr = sizeof(struct drm_xe_mem_range_attr);
+ goto unlock_vm;
+ }
+
+ mem_attrs = kvmalloc_array(args->num_mem_ranges, args->sizeof_mem_range_attr,
+ GFP_KERNEL | __GFP_ACCOUNT |
+ __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
+ if (!mem_attrs) {
+ err = args->num_mem_ranges > 1 ? -ENOBUFS : -ENOMEM;
+ goto unlock_vm;
+ }
+
+ memset(mem_attrs, 0, args->num_mem_ranges * args->sizeof_mem_range_attr);
+ err = get_mem_attrs(vm, &args->num_mem_ranges, args->start,
+ args->start + args->range, mem_attrs);
+ if (err)
+ goto free_mem_attrs;
+
+ err = copy_to_user(attrs_user, mem_attrs,
+ args->sizeof_mem_range_attr * args->num_mem_ranges);
+
+free_mem_attrs:
+ kvfree(mem_attrs);
+unlock_vm:
+ up_read(&vm->lock);
+put_vm:
+ xe_vm_put(vm);
+ return err;
+}
+
static bool vma_matches(struct xe_vma *vma, u64 page_addr)
{
if (page_addr > xe_vma_end(vma) - 1 ||
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index c8b8318fe61a..57f77c8430d6 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -199,7 +199,7 @@ int xe_vm_destroy_ioctl(struct drm_device *dev, void *data,
struct drm_file *file);
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);
void xe_vm_close_and_put(struct xe_vm *vm);
static inline bool xe_vm_in_fault_mode(struct xe_vm *vm)
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 115b9bca2a25..eaf713706387 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -82,6 +82,7 @@ extern "C" {
* - &DRM_IOCTL_XE_WAIT_USER_FENCE
* - &DRM_IOCTL_XE_OBSERVATION
* - &DRM_IOCTL_XE_MADVISE
+ * - &DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS
*/
/*
@@ -104,6 +105,7 @@ extern "C" {
#define DRM_XE_WAIT_USER_FENCE 0x0a
#define DRM_XE_OBSERVATION 0x0b
#define DRM_XE_MADVISE 0x0c
+#define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d
/* Must be kept compact -- no holes */
@@ -120,6 +122,7 @@ extern "C" {
#define DRM_IOCTL_XE_WAIT_USER_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_WAIT_USER_FENCE, struct drm_xe_wait_user_fence)
#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)
/**
* DOC: Xe IOCTL Extensions
@@ -2113,6 +2116,142 @@ struct drm_xe_madvise {
__u64 reserved[2];
};
+/**
+ * struct drm_xe_mem_range_attr - Output of &DRM_IOCTL_XE_VM_QUERY_MEM_RANGES_ATTRS
+ *
+ * This structure is provided by userspace and filled by KMD in response to the
+ * DRM_IOCTL_XE_VM_QUERY_MEM_RANGES_ATTRS ioctl. It describes memory attributes of
+ * a memory ranges within a user specified address range in a VM.
+ *
+ * The structure includes information such as atomic access policy,
+ * page attribute table (PAT) index, and preferred memory location.
+ * Userspace allocates an array of these structures and passes a pointer to the
+ * ioctl to retrieve attributes for each memory ranges
+ *
+ * @extensions: Pointer to the first extension struct, if any
+ * @start: Start address of the memory range
+ * @end: End address of the virtual memory range
+ *
+ */
+struct drm_xe_mem_range_attr {
+ /** @extensions: Pointer to the first extension struct, if any */
+ __u64 extensions;
+
+ /** @start: start of the memory range */
+ __u64 start;
+
+ /** @end: end of the memory range */
+ __u64 end;
+
+ /** @preferred_mem_loc: preferred memory location */
+ struct {
+ /** @preferred_mem_loc.devmem_fd: fd for preferred loc */
+ __u32 devmem_fd;
+
+ /** @preferred_mem_loc.migration_policy: Page migration policy */
+ __u32 migration_policy;
+ } preferred_mem_loc;
+
+ /** @atomic: Atomic access policy */
+ struct {
+ /** @atomic.val: atomic attribute */
+ __u32 val;
+
+ /** @atomic.reserved: Reserved */
+ __u32 reserved;
+ } atomic;
+
+ /** @pat_index: Page attribute table index */
+ struct {
+ /** @pat_index.val: PAT index */
+ __u32 val;
+
+ /** @pat_index.reserved: Reserved */
+ __u32 reserved;
+ } pat_index;
+
+ /** @reserved: Reserved */
+ __u64 reserved[2];
+};
+
+/**
+ * struct drm_xe_vm_query_mem_range_attr - Input of &DRM_IOCTL_XE_VM_QUERY_MEM_ATTRIBUTES
+ *
+ * This structure is used to query memory attributes of memory regions
+ * within a user specified address range in a VM. It provides detailed
+ * information about each memory range, including atomic access policy,
+ * page attribute table (PAT) index, and preferred memory location.
+ *
+ * Userspace first calls the ioctl with @num_mem_ranges = 0,
+ * @sizeof_mem_ranges_attr = 0 and @vector_of_vma_mem_attr = NULL to retrieve
+ * the number of memory regions and size of each memory range attribute.
+ * Then, it allocates a buffer of that size and calls the ioctl again to fill
+ * the buffer with memory range attributes.
+ *
+ * If second call fails with -ENOSPC, it means memory ranges changed between
+ * first call and now, retry IOCTL again with @num_mem_ranges = 0,
+ * @sizeof_mem_ranges_attr = 0 and @vector_of_vma_mem_attr = NULL followed by
+ * Second ioctl call.
+ *
+ * Example:
+ *
+ * .. code-block:: C
+ * struct drm_xe_vm_query_mem_range_attr query = {
+ * .vm_id = vm_id,
+ * .start = 0x100000,
+ * .range = 0x2000,
+ * };
+ *
+ * // First ioctl call to get num of mem regions and sizeof each attribute
+ * ioctl(fd, DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS, &query);
+ *
+ * // Allocate buffer for the memory region attributes
+ * void *ptr = malloc(query.num_mem_ranges * query.sizeof_mem_range_attr);
+ *
+ * query.vector_of_mem_attr = (uintptr_t)ptr;
+ *
+ * // Second ioctl call to actually fill the memory attributes
+ * ioctl(fd, DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS, &query);
+ *
+ * // Iterate over the returned memory region attributes
+ * for (unsigned int i = 0; i < query.num_mem_ranges; ++i) {
+ * struct drm_xe_mem_range_attr *attr = (struct drm_xe_mem_range_attr *)ptr;
+ *
+ * // Do something with attr
+ *
+ * // Move pointer by one entry
+ * ptr += query.sizeof_mem_range_attr;
+ * }
+ *
+ * free(ptr);
+ */
+struct drm_xe_vm_query_mem_range_attr {
+ /** @extensions: Pointer to the first extension struct, if any */
+ __u64 extensions;
+
+ /** @vm_id: vm_id of the virtual range */
+ __u32 vm_id;
+
+ /** @num_mem_ranges: number of mem_ranges in range */
+ __u32 num_mem_ranges;
+
+ /** @start: start of the virtual address range */
+ __u64 start;
+
+ /** @range: size of the virtual address range */
+ __u64 range;
+
+ /** @sizeof_mem_range_attr: size of struct drm_xe_mem_range_attr */
+ __u64 sizeof_mem_range_attr;
+
+ /** @vector_of_mem_attr: userptr to array of struct drm_xe_mem_range_attr */
+ __u64 vector_of_mem_attr;
+
+ /** @reserved: Reserved */
+ __u64 reserved[2];
+
+};
+
#if defined(__cplusplus)
}
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 41+ messages in thread
* ✗ CI.checkpatch: warning for MADVISE FOR XE (rev7)
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (23 preceding siblings ...)
2025-08-14 10:59 ` [PATCH v7 24/24] drm/xe/uapi: Add UAPI for querying VMA count and memory attributes Himal Prasad Ghimiray
@ 2025-08-14 12:16 ` Patchwork
2025-08-14 12:17 ` ✓ CI.KUnit: success " Patchwork
` (5 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Patchwork @ 2025-08-14 12:16 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
== Series Details ==
Series: MADVISE FOR XE (rev7)
URL : https://patchwork.freedesktop.org/series/149550/
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
6f9293a391ff3c575bc021f454be5d0a0c076f57
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 775344e277c4e260e4ce767f2e2d6a13d7b5d3a6
Author: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Date: Thu Aug 14 16:29:50 2025 +0530
drm/xe/uapi: Add UAPI for querying VMA count and memory attributes
Introduce the DRM_IOCTL_XE_VM_QUERY_MEMORY_RANGE_ATTRS ioctl to allow
userspace to query memory attributes of VMAs within a user specified
virtual address range.
Userspace first calls the ioctl with num_mem_ranges = 0,
sizeof_mem_ranges_attr = 0 and vector_of_vma_mem_attr = NULL to retrieve
the number of memory ranges (vmas) and size of each memory range attribute.
Then, it allocates a buffer of that size and calls the ioctl again to fill
the buffer with memory range attributes.
This two-step interface allows userspace to first query the required
buffer size, then retrieve detailed attributes efficiently.
v2 (Matthew Brost)
- Use same ioctl to overload functionality
v3
- Add kernel-doc
v4
- Make uapi future proof by passing struct size (Matthew Brost)
- make lock interruptible (Matthew Brost)
- set reserved bits to zero (Matthew Brost)
- s/__copy_to_user/copy_to_user (Matthew Brost)
- Avod using VMA term in uapi (Thomas)
- xe_vm_put(vm) is missing (Shuicheng)
v5
- Nits
- Fix kernel-doc
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Shuicheng Lin <shuicheng.lin@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch 7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb drm-intel
e368975cb6c7 drm/gpuvm: Pass map arguments through a struct
2f6d993299f0 drm/gpuvm: Kill drm_gpuva_init()
61c6905e1292 drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create
73df4157d7b6 drm/xe/uapi: Add madvise interface
-:51: WARNING:LONG_LINE: line length of 113 exceeds 100 columns
#51: FILE: include/uapi/drm/xe_drm.h:122:
+#define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise)
total: 0 errors, 1 warnings, 0 checks, 154 lines checked
3a7cc423b17f drm/xe/vm: Add attributes struct as member of vma
807084a1e409 drm/xe/vma: Move pat_index to vma attributes
75441e88204e drm/xe/vma: Modify new_vma to accept struct xe_vma_mem_attr as parameter
8252f2ac2e5b drm/gpusvm: Make drm_gpusvm_for_each_* macros public
-:225: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'range__' - possible side-effects?
#225: FILE: include/drm/drm_gpusvm.h:452:
+#define drm_gpusvm_for_each_range_safe(range__, next__, notifier__, start__, end__) \
+ for ((range__) = drm_gpusvm_range_find((notifier__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_range_next(range__); \
+ (range__) && (drm_gpusvm_range_start(range__) < (end__)); \
+ (range__) = (next__), (next__) = __drm_gpusvm_range_next(range__))
-:225: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'next__' - possible side-effects?
#225: FILE: include/drm/drm_gpusvm.h:452:
+#define drm_gpusvm_for_each_range_safe(range__, next__, notifier__, start__, end__) \
+ for ((range__) = drm_gpusvm_range_find((notifier__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_range_next(range__); \
+ (range__) && (drm_gpusvm_range_start(range__) < (end__)); \
+ (range__) = (next__), (next__) = __drm_gpusvm_range_next(range__))
-:225: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'end__' - possible side-effects?
#225: FILE: include/drm/drm_gpusvm.h:452:
+#define drm_gpusvm_for_each_range_safe(range__, next__, notifier__, start__, end__) \
+ for ((range__) = drm_gpusvm_range_find((notifier__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_range_next(range__); \
+ (range__) && (drm_gpusvm_range_start(range__) < (end__)); \
+ (range__) = (next__), (next__) = __drm_gpusvm_range_next(range__))
-:258: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'notifier__' - possible side-effects?
#258: FILE: include/drm/drm_gpusvm.h:485:
+#define drm_gpusvm_for_each_notifier(notifier__, gpusvm__, start__, end__) \
+ for ((notifier__) = drm_gpusvm_notifier_find((gpusvm__), (start__), (end__)); \
+ (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
+ (notifier__) = __drm_gpusvm_notifier_next(notifier__))
-:258: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'end__' - possible side-effects?
#258: FILE: include/drm/drm_gpusvm.h:485:
+#define drm_gpusvm_for_each_notifier(notifier__, gpusvm__, start__, end__) \
+ for ((notifier__) = drm_gpusvm_notifier_find((gpusvm__), (start__), (end__)); \
+ (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
+ (notifier__) = __drm_gpusvm_notifier_next(notifier__))
-:274: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'notifier__' - possible side-effects?
#274: FILE: include/drm/drm_gpusvm.h:501:
+#define drm_gpusvm_for_each_notifier_safe(notifier__, next__, gpusvm__, start__, end__) \
+ for ((notifier__) = drm_gpusvm_notifier_find((gpusvm__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_notifier_next(notifier__); \
+ (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
+ (notifier__) = (next__), (next__) = __drm_gpusvm_notifier_next(notifier__))
-:274: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'next__' - possible side-effects?
#274: FILE: include/drm/drm_gpusvm.h:501:
+#define drm_gpusvm_for_each_notifier_safe(notifier__, next__, gpusvm__, start__, end__) \
+ for ((notifier__) = drm_gpusvm_notifier_find((gpusvm__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_notifier_next(notifier__); \
+ (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
+ (notifier__) = (next__), (next__) = __drm_gpusvm_notifier_next(notifier__))
-:274: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'end__' - possible side-effects?
#274: FILE: include/drm/drm_gpusvm.h:501:
+#define drm_gpusvm_for_each_notifier_safe(notifier__, next__, gpusvm__, start__, end__) \
+ for ((notifier__) = drm_gpusvm_notifier_find((gpusvm__), (start__), (end__)), \
+ (next__) = __drm_gpusvm_notifier_next(notifier__); \
+ (notifier__) && (drm_gpusvm_notifier_start(notifier__) < (end__)); \
+ (notifier__) = (next__), (next__) = __drm_gpusvm_notifier_next(notifier__))
total: 0 errors, 0 warnings, 8 checks, 248 lines checked
b5c214c9e09d drm/xe/svm: Split system allocator vma incase of madvise call
ac204891ef23 drm/xe: Allow CPU address mirror VMA unbind with gpu bindings for madvise
d8a3f218d8ee drm/xe/svm: Add xe_svm_ranges_zap_ptes_in_range() for PTE zapping
b7b7f9cd3f9b drm/xe: Implement madvise ioctl for xe
-:53: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#53:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 330 lines checked
089e09768bad drm/xe/svm: Add svm ranges migration policy on atomic access
11af52b70487 drm/xe/madvise: Update migration policy based on preferred location
66352771e16f drm/xe/svm: Support DRM_XE_SVM_MEM_RANGE_ATTR_PAT memory attribute
4b0e8633c614 drm/xe/uapi: Add flag for consulting madvise hints on svm prefetch
6e70c08e9b3e drm/xe/svm: Consult madvise preferred location in prefetch
903a62ebaad8 drm/xe/bo: Add attributes field to xe_bo
5186b82c21c4 drm/xe/bo: Update atomic_access attribute on madvise
be29fcc18871 drm/xe/madvise: Skip vma invalidation if mem attr are unchanged
6adffcd7b38b drm/xe/vm: Add helper to check for default VMA memory attributes
2dc209520c89 drm/xe: Reset VMA attributes to default in SVM garbage collector
4cb0401c4f5d drm/xe: Enable madvise ioctl for xe
775344e277c4 drm/xe/uapi: Add UAPI for querying VMA count and memory attributes
-:210: WARNING:LONG_LINE: line length of 147 exceeds 100 columns
#210: FILE: include/uapi/drm/xe_drm.h:125:
+#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)
total: 0 errors, 1 warnings, 0 checks, 287 lines checked
^ permalink raw reply [flat|nested] 41+ messages in thread
* ✓ CI.KUnit: success for MADVISE FOR XE (rev7)
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (24 preceding siblings ...)
2025-08-14 12:16 ` ✗ CI.checkpatch: warning for MADVISE FOR XE (rev7) Patchwork
@ 2025-08-14 12:17 ` Patchwork
2025-08-14 12:35 ` ✗ CI.checksparse: warning " Patchwork
` (4 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Patchwork @ 2025-08-14 12:17 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
== Series Details ==
Series: MADVISE FOR XE (rev7)
URL : https://patchwork.freedesktop.org/series/149550/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[12:16:35] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:16:39] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=25
[12:17:14] Starting KUnit Kernel (1/1)...
[12:17:14] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:17:14] ================== guc_buf (11 subtests) ===================
[12:17:14] [PASSED] test_smallest
[12:17:14] [PASSED] test_largest
[12:17:15] [PASSED] test_granular
[12:17:15] [PASSED] test_unique
[12:17:15] [PASSED] test_overlap
[12:17:15] [PASSED] test_reusable
[12:17:15] [PASSED] test_too_big
[12:17:15] [PASSED] test_flush
[12:17:15] [PASSED] test_lookup
[12:17:15] [PASSED] test_data
[12:17:15] [PASSED] test_class
[12:17:15] ===================== [PASSED] guc_buf =====================
[12:17:15] =================== guc_dbm (7 subtests) ===================
[12:17:15] [PASSED] test_empty
[12:17:15] [PASSED] test_default
[12:17:15] ======================== test_size ========================
[12:17:15] [PASSED] 4
[12:17:15] [PASSED] 8
[12:17:15] [PASSED] 32
[12:17:15] [PASSED] 256
[12:17:15] ==================== [PASSED] test_size ====================
[12:17:15] ======================= test_reuse ========================
[12:17:15] [PASSED] 4
[12:17:15] [PASSED] 8
[12:17:15] [PASSED] 32
[12:17:15] [PASSED] 256
[12:17:15] =================== [PASSED] test_reuse ====================
[12:17:15] =================== test_range_overlap ====================
[12:17:15] [PASSED] 4
[12:17:15] [PASSED] 8
[12:17:15] [PASSED] 32
[12:17:15] [PASSED] 256
[12:17:15] =============== [PASSED] test_range_overlap ================
[12:17:15] =================== test_range_compact ====================
[12:17:15] [PASSED] 4
[12:17:15] [PASSED] 8
[12:17:15] [PASSED] 32
[12:17:15] [PASSED] 256
[12:17:15] =============== [PASSED] test_range_compact ================
[12:17:15] ==================== test_range_spare =====================
[12:17:15] [PASSED] 4
[12:17:15] [PASSED] 8
[12:17:15] [PASSED] 32
[12:17:15] [PASSED] 256
[12:17:15] ================ [PASSED] test_range_spare =================
[12:17:15] ===================== [PASSED] guc_dbm =====================
[12:17:15] =================== guc_idm (6 subtests) ===================
[12:17:15] [PASSED] bad_init
[12:17:15] [PASSED] no_init
[12:17:15] [PASSED] init_fini
[12:17:15] [PASSED] check_used
[12:17:15] [PASSED] check_quota
[12:17:15] [PASSED] check_all
[12:17:15] ===================== [PASSED] guc_idm =====================
[12:17:15] ================== no_relay (3 subtests) ===================
[12:17:15] [PASSED] xe_drops_guc2pf_if_not_ready
[12:17:15] [PASSED] xe_drops_guc2vf_if_not_ready
[12:17:15] [PASSED] xe_rejects_send_if_not_ready
[12:17:15] ==================== [PASSED] no_relay =====================
[12:17:15] ================== pf_relay (14 subtests) ==================
[12:17:15] [PASSED] pf_rejects_guc2pf_too_short
[12:17:15] [PASSED] pf_rejects_guc2pf_too_long
[12:17:15] [PASSED] pf_rejects_guc2pf_no_payload
[12:17:15] [PASSED] pf_fails_no_payload
[12:17:15] [PASSED] pf_fails_bad_origin
[12:17:15] [PASSED] pf_fails_bad_type
[12:17:15] [PASSED] pf_txn_reports_error
[12:17:15] [PASSED] pf_txn_sends_pf2guc
[12:17:15] [PASSED] pf_sends_pf2guc
[12:17:15] [SKIPPED] pf_loopback_nop
[12:17:15] [SKIPPED] pf_loopback_echo
[12:17:15] [SKIPPED] pf_loopback_fail
[12:17:15] [SKIPPED] pf_loopback_busy
[12:17:15] [SKIPPED] pf_loopback_retry
[12:17:15] ==================== [PASSED] pf_relay =====================
[12:17:15] ================== vf_relay (3 subtests) ===================
[12:17:15] [PASSED] vf_rejects_guc2vf_too_short
[12:17:15] [PASSED] vf_rejects_guc2vf_too_long
[12:17:15] [PASSED] vf_rejects_guc2vf_no_payload
[12:17:15] ==================== [PASSED] vf_relay =====================
[12:17:15] ===================== lmtt (1 subtest) =====================
[12:17:15] ======================== test_ops =========================
[12:17:15] [PASSED] 2-level
[12:17:15] [PASSED] multi-level
[12:17:15] ==================== [PASSED] test_ops =====================
[12:17:15] ====================== [PASSED] lmtt =======================
[12:17:15] ================= pf_service (11 subtests) =================
[12:17:15] [PASSED] pf_negotiate_any
[12:17:15] [PASSED] pf_negotiate_base_match
[12:17:15] [PASSED] pf_negotiate_base_newer
[12:17:15] [PASSED] pf_negotiate_base_next
[12:17:15] [SKIPPED] pf_negotiate_base_older
[12:17:15] [PASSED] pf_negotiate_base_prev
[12:17:15] [PASSED] pf_negotiate_latest_match
[12:17:15] [PASSED] pf_negotiate_latest_newer
[12:17:15] [PASSED] pf_negotiate_latest_next
[12:17:15] [SKIPPED] pf_negotiate_latest_older
[12:17:15] [SKIPPED] pf_negotiate_latest_prev
[12:17:15] =================== [PASSED] pf_service ====================
[12:17:15] =================== xe_mocs (2 subtests) ===================
[12:17:15] ================ xe_live_mocs_kernel_kunit ================
[12:17:15] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[12:17:15] ================ xe_live_mocs_reset_kunit =================
[12:17:15] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[12:17:15] ==================== [SKIPPED] xe_mocs =====================
[12:17:15] ================= xe_migrate (2 subtests) ==================
[12:17:15] ================= xe_migrate_sanity_kunit =================
[12:17:15] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[12:17:15] ================== xe_validate_ccs_kunit ==================
[12:17:15] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[12:17:15] =================== [SKIPPED] xe_migrate ===================
[12:17:15] ================== xe_dma_buf (1 subtest) ==================
[12:17:15] ==================== xe_dma_buf_kunit =====================
[12:17:15] ================ [SKIPPED] xe_dma_buf_kunit ================
[12:17:15] =================== [SKIPPED] xe_dma_buf ===================
[12:17:15] ================= xe_bo_shrink (1 subtest) =================
[12:17:15] =================== xe_bo_shrink_kunit ====================
[12:17:15] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[12:17:15] ================== [SKIPPED] xe_bo_shrink ==================
[12:17:15] ==================== xe_bo (2 subtests) ====================
[12:17:15] ================== xe_ccs_migrate_kunit ===================
[12:17:15] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[12:17:15] ==================== xe_bo_evict_kunit ====================
[12:17:15] =============== [SKIPPED] xe_bo_evict_kunit ================
[12:17:15] ===================== [SKIPPED] xe_bo ======================
[12:17:15] ==================== args (11 subtests) ====================
[12:17:15] [PASSED] count_args_test
[12:17:15] [PASSED] call_args_example
[12:17:15] [PASSED] call_args_test
[12:17:15] [PASSED] drop_first_arg_example
[12:17:15] [PASSED] drop_first_arg_test
[12:17:15] [PASSED] first_arg_example
[12:17:15] [PASSED] first_arg_test
[12:17:15] [PASSED] last_arg_example
[12:17:15] [PASSED] last_arg_test
[12:17:15] [PASSED] pick_arg_example
[12:17:15] [PASSED] sep_comma_example
[12:17:15] ====================== [PASSED] args =======================
[12:17:15] =================== xe_pci (3 subtests) ====================
[12:17:15] ==================== check_graphics_ip ====================
[12:17:15] [PASSED] 12.70 Xe_LPG
[12:17:15] [PASSED] 12.71 Xe_LPG
[12:17:15] [PASSED] 12.74 Xe_LPG+
[12:17:15] [PASSED] 20.01 Xe2_HPG
[12:17:15] [PASSED] 20.02 Xe2_HPG
[12:17:15] [PASSED] 20.04 Xe2_LPG
[12:17:15] [PASSED] 30.00 Xe3_LPG
[12:17:15] [PASSED] 30.01 Xe3_LPG
[12:17:15] [PASSED] 30.03 Xe3_LPG
[12:17:15] ================ [PASSED] check_graphics_ip ================
[12:17:15] ===================== check_media_ip ======================
[12:17:15] [PASSED] 13.00 Xe_LPM+
[12:17:15] [PASSED] 13.01 Xe2_HPM
[12:17:15] [PASSED] 20.00 Xe2_LPM
[12:17:15] [PASSED] 30.00 Xe3_LPM
[12:17:15] [PASSED] 30.02 Xe3_LPM
[12:17:15] ================= [PASSED] check_media_ip ==================
[12:17:15] ================= check_platform_gt_count =================
[12:17:15] [PASSED] 0x9A60 (TIGERLAKE)
[12:17:15] [PASSED] 0x9A68 (TIGERLAKE)
[12:17:15] [PASSED] 0x9A70 (TIGERLAKE)
[12:17:15] [PASSED] 0x9A40 (TIGERLAKE)
[12:17:15] [PASSED] 0x9A49 (TIGERLAKE)
[12:17:15] [PASSED] 0x9A59 (TIGERLAKE)
[12:17:15] [PASSED] 0x9A78 (TIGERLAKE)
[12:17:15] [PASSED] 0x9AC0 (TIGERLAKE)
[12:17:15] [PASSED] 0x9AC9 (TIGERLAKE)
[12:17:15] [PASSED] 0x9AD9 (TIGERLAKE)
[12:17:15] [PASSED] 0x9AF8 (TIGERLAKE)
[12:17:15] [PASSED] 0x4C80 (ROCKETLAKE)
[12:17:15] [PASSED] 0x4C8A (ROCKETLAKE)
[12:17:15] [PASSED] 0x4C8B (ROCKETLAKE)
[12:17:15] [PASSED] 0x4C8C (ROCKETLAKE)
[12:17:15] [PASSED] 0x4C90 (ROCKETLAKE)
[12:17:15] [PASSED] 0x4C9A (ROCKETLAKE)
[12:17:15] [PASSED] 0x4680 (ALDERLAKE_S)
[12:17:15] [PASSED] 0x4682 (ALDERLAKE_S)
[12:17:15] [PASSED] 0x4688 (ALDERLAKE_S)
[12:17:15] [PASSED] 0x468A (ALDERLAKE_S)
[12:17:15] [PASSED] 0x468B (ALDERLAKE_S)
[12:17:15] [PASSED] 0x4690 (ALDERLAKE_S)
[12:17:15] [PASSED] 0x4692 (ALDERLAKE_S)
[12:17:15] [PASSED] 0x4693 (ALDERLAKE_S)
[12:17:15] [PASSED] 0x46A0 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46A1 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46A2 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46A3 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46A6 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46A8 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46AA (ALDERLAKE_P)
[12:17:15] [PASSED] 0x462A (ALDERLAKE_P)
[12:17:15] [PASSED] 0x4626 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x4628 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46B0 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46B1 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46B2 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46B3 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46C0 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46C1 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46C2 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46C3 (ALDERLAKE_P)
[12:17:15] [PASSED] 0x46D0 (ALDERLAKE_N)
[12:17:15] [PASSED] 0x46D1 (ALDERLAKE_N)
[12:17:15] [PASSED] 0x46D2 (ALDERLAKE_N)
[12:17:15] [PASSED] 0x46D3 (ALDERLAKE_N)
[12:17:15] [PASSED] 0x46D4 (ALDERLAKE_N)
[12:17:15] [PASSED] 0xA721 (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7A1 (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7A9 (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7AC (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7AD (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA720 (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7A0 (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7A8 (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7AA (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA7AB (ALDERLAKE_P)
[12:17:15] [PASSED] 0xA780 (ALDERLAKE_S)
[12:17:15] [PASSED] 0xA781 (ALDERLAKE_S)
[12:17:15] [PASSED] 0xA782 (ALDERLAKE_S)
[12:17:15] [PASSED] 0xA783 (ALDERLAKE_S)
[12:17:15] [PASSED] 0xA788 (ALDERLAKE_S)
[12:17:15] [PASSED] 0xA789 (ALDERLAKE_S)
[12:17:15] [PASSED] 0xA78A (ALDERLAKE_S)
[12:17:15] [PASSED] 0xA78B (ALDERLAKE_S)
[12:17:15] [PASSED] 0x4905 (DG1)
[12:17:15] [PASSED] 0x4906 (DG1)
[12:17:15] [PASSED] 0x4907 (DG1)
[12:17:15] [PASSED] 0x4908 (DG1)
[12:17:15] [PASSED] 0x4909 (DG1)
[12:17:15] [PASSED] 0x56C0 (DG2)
[12:17:15] [PASSED] 0x56C2 (DG2)
[12:17:15] [PASSED] 0x56C1 (DG2)
[12:17:15] [PASSED] 0x7D51 (METEORLAKE)
[12:17:15] [PASSED] 0x7DD1 (METEORLAKE)
[12:17:15] [PASSED] 0x7D41 (METEORLAKE)
[12:17:15] [PASSED] 0x7D67 (METEORLAKE)
[12:17:15] [PASSED] 0xB640 (METEORLAKE)
[12:17:15] [PASSED] 0x56A0 (DG2)
[12:17:15] [PASSED] 0x56A1 (DG2)
[12:17:15] [PASSED] 0x56A2 (DG2)
[12:17:15] [PASSED] 0x56BE (DG2)
[12:17:15] [PASSED] 0x56BF (DG2)
[12:17:15] [PASSED] 0x5690 (DG2)
[12:17:15] [PASSED] 0x5691 (DG2)
[12:17:15] [PASSED] 0x5692 (DG2)
[12:17:15] [PASSED] 0x56A5 (DG2)
[12:17:15] [PASSED] 0x56A6 (DG2)
[12:17:15] [PASSED] 0x56B0 (DG2)
[12:17:15] [PASSED] 0x56B1 (DG2)
[12:17:15] [PASSED] 0x56BA (DG2)
[12:17:15] [PASSED] 0x56BB (DG2)
[12:17:15] [PASSED] 0x56BC (DG2)
[12:17:15] [PASSED] 0x56BD (DG2)
[12:17:15] [PASSED] 0x5693 (DG2)
[12:17:15] [PASSED] 0x5694 (DG2)
[12:17:15] [PASSED] 0x5695 (DG2)
[12:17:15] [PASSED] 0x56A3 (DG2)
[12:17:15] [PASSED] 0x56A4 (DG2)
[12:17:15] [PASSED] 0x56B2 (DG2)
[12:17:15] [PASSED] 0x56B3 (DG2)
[12:17:15] [PASSED] 0x5696 (DG2)
[12:17:15] [PASSED] 0x5697 (DG2)
[12:17:15] [PASSED] 0xB69 (PVC)
[12:17:15] [PASSED] 0xB6E (PVC)
[12:17:15] [PASSED] 0xBD4 (PVC)
[12:17:15] [PASSED] 0xBD5 (PVC)
[12:17:15] [PASSED] 0xBD6 (PVC)
[12:17:15] [PASSED] 0xBD7 (PVC)
[12:17:15] [PASSED] 0xBD8 (PVC)
[12:17:15] [PASSED] 0xBD9 (PVC)
[12:17:15] [PASSED] 0xBDA (PVC)
[12:17:15] [PASSED] 0xBDB (PVC)
[12:17:15] [PASSED] 0xBE0 (PVC)
[12:17:15] [PASSED] 0xBE1 (PVC)
[12:17:15] [PASSED] 0xBE5 (PVC)
[12:17:15] [PASSED] 0x7D40 (METEORLAKE)
[12:17:15] [PASSED] 0x7D45 (METEORLAKE)
[12:17:15] [PASSED] 0x7D55 (METEORLAKE)
[12:17:15] [PASSED] 0x7D60 (METEORLAKE)
[12:17:15] [PASSED] 0x7DD5 (METEORLAKE)
[12:17:15] [PASSED] 0x6420 (LUNARLAKE)
[12:17:15] [PASSED] 0x64A0 (LUNARLAKE)
[12:17:15] [PASSED] 0x64B0 (LUNARLAKE)
[12:17:15] [PASSED] 0xE202 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE209 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE20B (BATTLEMAGE)
[12:17:15] [PASSED] 0xE20C (BATTLEMAGE)
[12:17:15] [PASSED] 0xE20D (BATTLEMAGE)
[12:17:15] [PASSED] 0xE210 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE211 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE212 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE216 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE220 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE221 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE222 (BATTLEMAGE)
[12:17:15] [PASSED] 0xE223 (BATTLEMAGE)
[12:17:15] [PASSED] 0xB080 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB081 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB082 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB083 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB084 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB085 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB086 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB087 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB08F (PANTHERLAKE)
[12:17:15] [PASSED] 0xB090 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB0A0 (PANTHERLAKE)
[12:17:15] [PASSED] 0xB0B0 (PANTHERLAKE)
[12:17:15] [PASSED] 0xFD80 (PANTHERLAKE)
[12:17:15] [PASSED] 0xFD81 (PANTHERLAKE)
[12:17:15] ============= [PASSED] check_platform_gt_count =============
[12:17:15] ===================== [PASSED] xe_pci ======================
[12:17:15] =================== xe_rtp (2 subtests) ====================
[12:17:15] =============== xe_rtp_process_to_sr_tests ================
[12:17:15] [PASSED] coalesce-same-reg
[12:17:15] [PASSED] no-match-no-add
[12:17:15] [PASSED] match-or
[12:17:15] [PASSED] match-or-xfail
[12:17:15] [PASSED] no-match-no-add-multiple-rules
[12:17:15] [PASSED] two-regs-two-entries
[12:17:15] [PASSED] clr-one-set-other
[12:17:15] [PASSED] set-field
[12:17:15] [PASSED] conflict-duplicate
[12:17:15] [PASSED] conflict-not-disjoint
[12:17:15] [PASSED] conflict-reg-type
[12:17:15] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[12:17:15] ================== xe_rtp_process_tests ===================
[12:17:15] [PASSED] active1
[12:17:15] [PASSED] active2
[12:17:15] [PASSED] active-inactive
[12:17:15] [PASSED] inactive-active
[12:17:15] [PASSED] inactive-1st_or_active-inactive
[12:17:15] [PASSED] inactive-2nd_or_active-inactive
[12:17:15] [PASSED] inactive-last_or_active-inactive
[12:17:15] [PASSED] inactive-no_or_active-inactive
[12:17:15] ============== [PASSED] xe_rtp_process_tests ===============
[12:17:15] ===================== [PASSED] xe_rtp ======================
[12:17:15] ==================== xe_wa (1 subtest) =====================
[12:17:15] ======================== xe_wa_gt =========================
[12:17:15] [PASSED] TIGERLAKE (B0)
[12:17:15] [PASSED] DG1 (A0)
[12:17:15] [PASSED] DG1 (B0)
[12:17:15] [PASSED] ALDERLAKE_S (A0)
[12:17:15] [PASSED] ALDERLAKE_S (B0)
[12:17:15] [PASSED] ALDERLAKE_S (C0)
[12:17:15] [PASSED] ALDERLAKE_S (D0)
[12:17:15] [PASSED] ALDERLAKE_P (A0)
[12:17:15] [PASSED] ALDERLAKE_P (B0)
[12:17:15] [PASSED] ALDERLAKE_P (C0)
[12:17:15] [PASSED] ALDERLAKE_S_RPLS (D0)
[12:17:15] [PASSED] ALDERLAKE_P_RPLU (E0)
[12:17:15] [PASSED] DG2_G10 (C0)
[12:17:15] [PASSED] DG2_G11 (B1)
[12:17:15] [PASSED] DG2_G12 (A1)
[12:17:15] [PASSED] METEORLAKE (g:A0, m:A0)
[12:17:15] [PASSED] METEORLAKE (g:A0, m:A0)
[12:17:15] [PASSED] METEORLAKE (g:A0, m:A0)
[12:17:15] [PASSED] LUNARLAKE (g:A0, m:A0)
[12:17:15] [PASSED] LUNARLAKE (g:B0, m:A0)
stty: 'standard input': Inappropriate ioctl for device
[12:17:15] [PASSED] BATTLEMAGE (g:A0, m:A1)
[12:17:15] ==================== [PASSED] xe_wa_gt =====================
[12:17:15] ====================== [PASSED] xe_wa ======================
[12:17:15] ============================================================
[12:17:15] Testing complete. Ran 297 tests: passed: 281, skipped: 16
[12:17:15] Elapsed time: 39.913s total, 4.341s configuring, 35.205s building, 0.330s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[12:17:15] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:17:16] 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
[12:17:44] Starting KUnit Kernel (1/1)...
[12:17:44] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:17:44] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[12:17:44] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[12:17:44] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[12:17:44] =========== drm_validate_clone_mode (2 subtests) ===========
[12:17:44] ============== drm_test_check_in_clone_mode ===============
[12:17:44] [PASSED] in_clone_mode
[12:17:44] [PASSED] not_in_clone_mode
[12:17:44] ========== [PASSED] drm_test_check_in_clone_mode ===========
[12:17:44] =============== drm_test_check_valid_clones ===============
[12:17:44] [PASSED] not_in_clone_mode
[12:17:44] [PASSED] valid_clone
[12:17:44] [PASSED] invalid_clone
[12:17:44] =========== [PASSED] drm_test_check_valid_clones ===========
[12:17:44] ============= [PASSED] drm_validate_clone_mode =============
[12:17:44] ============= drm_validate_modeset (1 subtest) =============
[12:17:44] [PASSED] drm_test_check_connector_changed_modeset
[12:17:44] ============== [PASSED] drm_validate_modeset ===============
[12:17:44] ====== drm_test_bridge_get_current_state (2 subtests) ======
[12:17:44] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[12:17:44] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[12:17:44] ======== [PASSED] drm_test_bridge_get_current_state ========
[12:17:44] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[12:17:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[12:17:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[12:17:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[12:17:44] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[12:17:44] ============== drm_bridge_alloc (2 subtests) ===============
[12:17:44] [PASSED] drm_test_drm_bridge_alloc_basic
[12:17:44] [PASSED] drm_test_drm_bridge_alloc_get_put
[12:17:44] ================ [PASSED] drm_bridge_alloc =================
[12:17:44] ================== drm_buddy (7 subtests) ==================
[12:17:44] [PASSED] drm_test_buddy_alloc_limit
[12:17:44] [PASSED] drm_test_buddy_alloc_optimistic
[12:17:44] [PASSED] drm_test_buddy_alloc_pessimistic
[12:17:44] [PASSED] drm_test_buddy_alloc_pathological
[12:17:44] [PASSED] drm_test_buddy_alloc_contiguous
[12:17:44] [PASSED] drm_test_buddy_alloc_clear
[12:17:44] [PASSED] drm_test_buddy_alloc_range_bias
[12:17:44] ==================== [PASSED] drm_buddy ====================
[12:17:44] ============= drm_cmdline_parser (40 subtests) =============
[12:17:44] [PASSED] drm_test_cmdline_force_d_only
[12:17:44] [PASSED] drm_test_cmdline_force_D_only_dvi
[12:17:44] [PASSED] drm_test_cmdline_force_D_only_hdmi
[12:17:44] [PASSED] drm_test_cmdline_force_D_only_not_digital
[12:17:44] [PASSED] drm_test_cmdline_force_e_only
[12:17:44] [PASSED] drm_test_cmdline_res
[12:17:44] [PASSED] drm_test_cmdline_res_vesa
[12:17:44] [PASSED] drm_test_cmdline_res_vesa_rblank
[12:17:44] [PASSED] drm_test_cmdline_res_rblank
[12:17:44] [PASSED] drm_test_cmdline_res_bpp
[12:17:44] [PASSED] drm_test_cmdline_res_refresh
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[12:17:44] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[12:17:44] [PASSED] drm_test_cmdline_res_margins_force_on
[12:17:44] [PASSED] drm_test_cmdline_res_vesa_margins
[12:17:44] [PASSED] drm_test_cmdline_name
[12:17:44] [PASSED] drm_test_cmdline_name_bpp
[12:17:44] [PASSED] drm_test_cmdline_name_option
[12:17:44] [PASSED] drm_test_cmdline_name_bpp_option
[12:17:44] [PASSED] drm_test_cmdline_rotate_0
[12:17:44] [PASSED] drm_test_cmdline_rotate_90
[12:17:44] [PASSED] drm_test_cmdline_rotate_180
[12:17:44] [PASSED] drm_test_cmdline_rotate_270
[12:17:44] [PASSED] drm_test_cmdline_hmirror
[12:17:44] [PASSED] drm_test_cmdline_vmirror
[12:17:44] [PASSED] drm_test_cmdline_margin_options
[12:17:44] [PASSED] drm_test_cmdline_multiple_options
[12:17:44] [PASSED] drm_test_cmdline_bpp_extra_and_option
[12:17:44] [PASSED] drm_test_cmdline_extra_and_option
[12:17:44] [PASSED] drm_test_cmdline_freestanding_options
[12:17:44] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[12:17:44] [PASSED] drm_test_cmdline_panel_orientation
[12:17:44] ================ drm_test_cmdline_invalid =================
[12:17:44] [PASSED] margin_only
[12:17:44] [PASSED] interlace_only
[12:17:44] [PASSED] res_missing_x
[12:17:44] [PASSED] res_missing_y
[12:17:44] [PASSED] res_bad_y
[12:17:44] [PASSED] res_missing_y_bpp
[12:17:44] [PASSED] res_bad_bpp
[12:17:44] [PASSED] res_bad_refresh
[12:17:44] [PASSED] res_bpp_refresh_force_on_off
[12:17:44] [PASSED] res_invalid_mode
[12:17:44] [PASSED] res_bpp_wrong_place_mode
[12:17:44] [PASSED] name_bpp_refresh
[12:17:44] [PASSED] name_refresh
[12:17:44] [PASSED] name_refresh_wrong_mode
[12:17:44] [PASSED] name_refresh_invalid_mode
[12:17:44] [PASSED] rotate_multiple
[12:17:44] [PASSED] rotate_invalid_val
[12:17:44] [PASSED] rotate_truncated
[12:17:44] [PASSED] invalid_option
[12:17:44] [PASSED] invalid_tv_option
[12:17:44] [PASSED] truncated_tv_option
[12:17:44] ============ [PASSED] drm_test_cmdline_invalid =============
[12:17:44] =============== drm_test_cmdline_tv_options ===============
[12:17:44] [PASSED] NTSC
[12:17:44] [PASSED] NTSC_443
[12:17:44] [PASSED] NTSC_J
[12:17:44] [PASSED] PAL
[12:17:44] [PASSED] PAL_M
[12:17:44] [PASSED] PAL_N
[12:17:44] [PASSED] SECAM
[12:17:44] [PASSED] MONO_525
[12:17:44] [PASSED] MONO_625
[12:17:44] =========== [PASSED] drm_test_cmdline_tv_options ===========
[12:17:44] =============== [PASSED] drm_cmdline_parser ================
[12:17:44] ========== drmm_connector_hdmi_init (20 subtests) ==========
[12:17:44] [PASSED] drm_test_connector_hdmi_init_valid
[12:17:44] [PASSED] drm_test_connector_hdmi_init_bpc_8
[12:17:44] [PASSED] drm_test_connector_hdmi_init_bpc_10
[12:17:44] [PASSED] drm_test_connector_hdmi_init_bpc_12
[12:17:44] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[12:17:44] [PASSED] drm_test_connector_hdmi_init_bpc_null
[12:17:44] [PASSED] drm_test_connector_hdmi_init_formats_empty
[12:17:44] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[12:17:44] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:17:44] [PASSED] supported_formats=0x9 yuv420_allowed=1
[12:17:44] [PASSED] supported_formats=0x9 yuv420_allowed=0
[12:17:44] [PASSED] supported_formats=0x3 yuv420_allowed=1
[12:17:44] [PASSED] supported_formats=0x3 yuv420_allowed=0
[12:17:44] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:17:44] [PASSED] drm_test_connector_hdmi_init_null_ddc
[12:17:44] [PASSED] drm_test_connector_hdmi_init_null_product
[12:17:44] [PASSED] drm_test_connector_hdmi_init_null_vendor
[12:17:44] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[12:17:44] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[12:17:44] [PASSED] drm_test_connector_hdmi_init_product_valid
[12:17:44] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[12:17:44] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[12:17:44] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[12:17:44] ========= drm_test_connector_hdmi_init_type_valid =========
[12:17:44] [PASSED] HDMI-A
[12:17:44] [PASSED] HDMI-B
[12:17:44] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[12:17:44] ======== drm_test_connector_hdmi_init_type_invalid ========
[12:17:44] [PASSED] Unknown
[12:17:44] [PASSED] VGA
[12:17:44] [PASSED] DVI-I
[12:17:44] [PASSED] DVI-D
[12:17:44] [PASSED] DVI-A
[12:17:44] [PASSED] Composite
[12:17:44] [PASSED] SVIDEO
[12:17:44] [PASSED] LVDS
[12:17:44] [PASSED] Component
[12:17:44] [PASSED] DIN
[12:17:44] [PASSED] DP
[12:17:44] [PASSED] TV
[12:17:44] [PASSED] eDP
[12:17:44] [PASSED] Virtual
[12:17:44] [PASSED] DSI
[12:17:44] [PASSED] DPI
[12:17:44] [PASSED] Writeback
[12:17:44] [PASSED] SPI
[12:17:44] [PASSED] USB
[12:17:44] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[12:17:44] ============ [PASSED] drmm_connector_hdmi_init =============
[12:17:44] ============= drmm_connector_init (3 subtests) =============
[12:17:44] [PASSED] drm_test_drmm_connector_init
[12:17:44] [PASSED] drm_test_drmm_connector_init_null_ddc
[12:17:44] ========= drm_test_drmm_connector_init_type_valid =========
[12:17:44] [PASSED] Unknown
[12:17:44] [PASSED] VGA
[12:17:44] [PASSED] DVI-I
[12:17:44] [PASSED] DVI-D
[12:17:44] [PASSED] DVI-A
[12:17:44] [PASSED] Composite
[12:17:44] [PASSED] SVIDEO
[12:17:44] [PASSED] LVDS
[12:17:44] [PASSED] Component
[12:17:44] [PASSED] DIN
[12:17:44] [PASSED] DP
[12:17:44] [PASSED] HDMI-A
[12:17:44] [PASSED] HDMI-B
[12:17:44] [PASSED] TV
[12:17:44] [PASSED] eDP
[12:17:44] [PASSED] Virtual
[12:17:44] [PASSED] DSI
[12:17:44] [PASSED] DPI
[12:17:44] [PASSED] Writeback
[12:17:44] [PASSED] SPI
[12:17:44] [PASSED] USB
[12:17:44] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[12:17:44] =============== [PASSED] drmm_connector_init ===============
[12:17:44] ========= drm_connector_dynamic_init (6 subtests) ==========
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_init
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_init_properties
[12:17:44] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[12:17:44] [PASSED] Unknown
[12:17:44] [PASSED] VGA
[12:17:44] [PASSED] DVI-I
[12:17:44] [PASSED] DVI-D
[12:17:44] [PASSED] DVI-A
[12:17:44] [PASSED] Composite
[12:17:44] [PASSED] SVIDEO
[12:17:44] [PASSED] LVDS
[12:17:44] [PASSED] Component
[12:17:44] [PASSED] DIN
[12:17:44] [PASSED] DP
[12:17:44] [PASSED] HDMI-A
[12:17:44] [PASSED] HDMI-B
[12:17:44] [PASSED] TV
[12:17:44] [PASSED] eDP
[12:17:44] [PASSED] Virtual
[12:17:44] [PASSED] DSI
[12:17:44] [PASSED] DPI
[12:17:44] [PASSED] Writeback
[12:17:44] [PASSED] SPI
[12:17:44] [PASSED] USB
[12:17:44] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[12:17:44] ======== drm_test_drm_connector_dynamic_init_name =========
[12:17:44] [PASSED] Unknown
[12:17:44] [PASSED] VGA
[12:17:44] [PASSED] DVI-I
[12:17:44] [PASSED] DVI-D
[12:17:44] [PASSED] DVI-A
[12:17:44] [PASSED] Composite
[12:17:44] [PASSED] SVIDEO
[12:17:44] [PASSED] LVDS
[12:17:44] [PASSED] Component
[12:17:44] [PASSED] DIN
[12:17:44] [PASSED] DP
[12:17:44] [PASSED] HDMI-A
[12:17:44] [PASSED] HDMI-B
[12:17:44] [PASSED] TV
[12:17:44] [PASSED] eDP
[12:17:44] [PASSED] Virtual
[12:17:44] [PASSED] DSI
[12:17:44] [PASSED] DPI
[12:17:44] [PASSED] Writeback
[12:17:44] [PASSED] SPI
[12:17:44] [PASSED] USB
[12:17:44] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[12:17:44] =========== [PASSED] drm_connector_dynamic_init ============
[12:17:44] ==== drm_connector_dynamic_register_early (4 subtests) =====
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[12:17:44] ====== [PASSED] drm_connector_dynamic_register_early =======
[12:17:44] ======= drm_connector_dynamic_register (7 subtests) ========
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[12:17:44] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[12:17:44] ========= [PASSED] drm_connector_dynamic_register ==========
[12:17:44] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[12:17:44] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[12:17:44] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[12:17:44] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[12:17:44] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[12:17:44] ========== drm_test_get_tv_mode_from_name_valid ===========
[12:17:44] [PASSED] NTSC
[12:17:44] [PASSED] NTSC-443
[12:17:44] [PASSED] NTSC-J
[12:17:44] [PASSED] PAL
[12:17:44] [PASSED] PAL-M
[12:17:44] [PASSED] PAL-N
[12:17:44] [PASSED] SECAM
[12:17:44] [PASSED] Mono
[12:17:44] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[12:17:44] [PASSED] drm_test_get_tv_mode_from_name_truncated
[12:17:44] ============ [PASSED] drm_get_tv_mode_from_name ============
[12:17:44] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[12:17:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[12:17:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[12:17:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[12:17:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[12:17:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[12:17:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[12:17:44] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[12:17:44] [PASSED] VIC 96
[12:17:44] [PASSED] VIC 97
[12:17:44] [PASSED] VIC 101
[12:17:44] [PASSED] VIC 102
[12:17:44] [PASSED] VIC 106
[12:17:44] [PASSED] VIC 107
[12:17:44] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[12:17:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[12:17:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[12:17:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[12:17:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[12:17:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[12:17:44] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[12:17:44] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[12:17:44] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[12:17:44] [PASSED] Automatic
[12:17:44] [PASSED] Full
[12:17:44] [PASSED] Limited 16:235
[12:17:44] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[12:17:44] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[12:17:44] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[12:17:44] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[12:17:44] === drm_test_drm_hdmi_connector_get_output_format_name ====
[12:17:44] [PASSED] RGB
[12:17:44] [PASSED] YUV 4:2:0
[12:17:44] [PASSED] YUV 4:2:2
[12:17:44] [PASSED] YUV 4:4:4
[12:17:44] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[12:17:44] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[12:17:44] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[12:17:44] ============= drm_damage_helper (21 subtests) ==============
[12:17:44] [PASSED] drm_test_damage_iter_no_damage
[12:17:44] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[12:17:44] [PASSED] drm_test_damage_iter_no_damage_src_moved
[12:17:44] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[12:17:44] [PASSED] drm_test_damage_iter_no_damage_not_visible
[12:17:44] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[12:17:44] [PASSED] drm_test_damage_iter_no_damage_no_fb
[12:17:44] [PASSED] drm_test_damage_iter_simple_damage
[12:17:44] [PASSED] drm_test_damage_iter_single_damage
[12:17:44] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[12:17:44] [PASSED] drm_test_damage_iter_single_damage_outside_src
[12:17:44] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[12:17:44] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[12:17:44] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[12:17:44] [PASSED] drm_test_damage_iter_single_damage_src_moved
[12:17:44] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[12:17:44] [PASSED] drm_test_damage_iter_damage
[12:17:44] [PASSED] drm_test_damage_iter_damage_one_intersect
[12:17:44] [PASSED] drm_test_damage_iter_damage_one_outside
[12:17:44] [PASSED] drm_test_damage_iter_damage_src_moved
[12:17:44] [PASSED] drm_test_damage_iter_damage_not_visible
[12:17:44] ================ [PASSED] drm_damage_helper ================
[12:17:44] ============== drm_dp_mst_helper (3 subtests) ==============
[12:17:44] ============== drm_test_dp_mst_calc_pbn_mode ==============
[12:17:44] [PASSED] Clock 154000 BPP 30 DSC disabled
[12:17:44] [PASSED] Clock 234000 BPP 30 DSC disabled
[12:17:44] [PASSED] Clock 297000 BPP 24 DSC disabled
[12:17:44] [PASSED] Clock 332880 BPP 24 DSC enabled
[12:17:44] [PASSED] Clock 324540 BPP 24 DSC enabled
[12:17:44] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[12:17:44] ============== drm_test_dp_mst_calc_pbn_div ===============
[12:17:44] [PASSED] Link rate 2000000 lane count 4
[12:17:44] [PASSED] Link rate 2000000 lane count 2
[12:17:44] [PASSED] Link rate 2000000 lane count 1
[12:17:44] [PASSED] Link rate 1350000 lane count 4
[12:17:44] [PASSED] Link rate 1350000 lane count 2
[12:17:44] [PASSED] Link rate 1350000 lane count 1
[12:17:44] [PASSED] Link rate 1000000 lane count 4
[12:17:44] [PASSED] Link rate 1000000 lane count 2
[12:17:44] [PASSED] Link rate 1000000 lane count 1
[12:17:44] [PASSED] Link rate 810000 lane count 4
[12:17:44] [PASSED] Link rate 810000 lane count 2
[12:17:44] [PASSED] Link rate 810000 lane count 1
[12:17:44] [PASSED] Link rate 540000 lane count 4
[12:17:44] [PASSED] Link rate 540000 lane count 2
[12:17:44] [PASSED] Link rate 540000 lane count 1
[12:17:44] [PASSED] Link rate 270000 lane count 4
[12:17:44] [PASSED] Link rate 270000 lane count 2
[12:17:44] [PASSED] Link rate 270000 lane count 1
[12:17:44] [PASSED] Link rate 162000 lane count 4
[12:17:44] [PASSED] Link rate 162000 lane count 2
[12:17:44] [PASSED] Link rate 162000 lane count 1
[12:17:44] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[12:17:44] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[12:17:44] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[12:17:44] [PASSED] DP_POWER_UP_PHY with port number
[12:17:44] [PASSED] DP_POWER_DOWN_PHY with port number
[12:17:44] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[12:17:44] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[12:17:44] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[12:17:44] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[12:17:44] [PASSED] DP_QUERY_PAYLOAD with port number
[12:17:44] [PASSED] DP_QUERY_PAYLOAD with VCPI
[12:17:44] [PASSED] DP_REMOTE_DPCD_READ with port number
[12:17:44] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[12:17:44] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[12:17:44] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[12:17:44] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[12:17:44] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[12:17:44] [PASSED] DP_REMOTE_I2C_READ with port number
[12:17:44] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[12:17:44] [PASSED] DP_REMOTE_I2C_READ with transactions array
[12:17:44] [PASSED] DP_REMOTE_I2C_WRITE with port number
[12:17:44] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[12:17:44] [PASSED] DP_REMOTE_I2C_WRITE with data array
[12:17:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[12:17:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[12:17:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[12:17:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[12:17:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[12:17:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[12:17:44] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[12:17:44] ================ [PASSED] drm_dp_mst_helper ================
[12:17:44] ================== drm_exec (7 subtests) ===================
[12:17:44] [PASSED] sanitycheck
[12:17:44] [PASSED] test_lock
[12:17:44] [PASSED] test_lock_unlock
[12:17:44] [PASSED] test_duplicates
[12:17:44] [PASSED] test_prepare
[12:17:44] [PASSED] test_prepare_array
[12:17:44] [PASSED] test_multiple_loops
[12:17:44] ==================== [PASSED] drm_exec =====================
[12:17:44] =========== drm_format_helper_test (17 subtests) ===========
[12:17:44] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[12:17:44] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[12:17:44] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[12:17:44] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[12:17:44] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[12:17:44] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[12:17:44] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[12:17:44] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[12:17:44] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[12:17:44] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[12:17:44] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[12:17:44] ============== drm_test_fb_xrgb8888_to_mono ===============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[12:17:44] ==================== drm_test_fb_swab =====================
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ================ [PASSED] drm_test_fb_swab =================
[12:17:44] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[12:17:44] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[12:17:44] [PASSED] single_pixel_source_buffer
[12:17:44] [PASSED] single_pixel_clip_rectangle
[12:17:44] [PASSED] well_known_colors
[12:17:44] [PASSED] destination_pitch
[12:17:44] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[12:17:44] ================= drm_test_fb_clip_offset =================
[12:17:44] [PASSED] pass through
[12:17:44] [PASSED] horizontal offset
[12:17:44] [PASSED] vertical offset
[12:17:44] [PASSED] horizontal and vertical offset
[12:17:44] [PASSED] horizontal offset (custom pitch)
[12:17:44] [PASSED] vertical offset (custom pitch)
[12:17:44] [PASSED] horizontal and vertical offset (custom pitch)
[12:17:44] ============= [PASSED] drm_test_fb_clip_offset =============
[12:17:44] =================== drm_test_fb_memcpy ====================
[12:17:44] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[12:17:44] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[12:17:44] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[12:17:44] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[12:17:44] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[12:17:44] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[12:17:44] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[12:17:44] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[12:17:44] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[12:17:44] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[12:17:44] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[12:17:44] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[12:17:44] =============== [PASSED] drm_test_fb_memcpy ================
[12:17:44] ============= [PASSED] drm_format_helper_test ==============
[12:17:44] ================= drm_format (18 subtests) =================
[12:17:44] [PASSED] drm_test_format_block_width_invalid
[12:17:44] [PASSED] drm_test_format_block_width_one_plane
[12:17:44] [PASSED] drm_test_format_block_width_two_plane
[12:17:44] [PASSED] drm_test_format_block_width_three_plane
[12:17:44] [PASSED] drm_test_format_block_width_tiled
[12:17:44] [PASSED] drm_test_format_block_height_invalid
[12:17:44] [PASSED] drm_test_format_block_height_one_plane
[12:17:44] [PASSED] drm_test_format_block_height_two_plane
[12:17:44] [PASSED] drm_test_format_block_height_three_plane
[12:17:44] [PASSED] drm_test_format_block_height_tiled
[12:17:44] [PASSED] drm_test_format_min_pitch_invalid
[12:17:44] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[12:17:44] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[12:17:44] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[12:17:44] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[12:17:44] [PASSED] drm_test_format_min_pitch_two_plane
[12:17:44] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[12:17:44] [PASSED] drm_test_format_min_pitch_tiled
[12:17:44] =================== [PASSED] drm_format ====================
[12:17:44] ============== drm_framebuffer (10 subtests) ===============
[12:17:44] ========== drm_test_framebuffer_check_src_coords ==========
[12:17:44] [PASSED] Success: source fits into fb
[12:17:44] [PASSED] Fail: overflowing fb with x-axis coordinate
[12:17:44] [PASSED] Fail: overflowing fb with y-axis coordinate
[12:17:44] [PASSED] Fail: overflowing fb with source width
[12:17:44] [PASSED] Fail: overflowing fb with source height
[12:17:44] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[12:17:44] [PASSED] drm_test_framebuffer_cleanup
[12:17:44] =============== drm_test_framebuffer_create ===============
[12:17:44] [PASSED] ABGR8888 normal sizes
[12:17:44] [PASSED] ABGR8888 max sizes
[12:17:44] [PASSED] ABGR8888 pitch greater than min required
[12:17:44] [PASSED] ABGR8888 pitch less than min required
[12:17:44] [PASSED] ABGR8888 Invalid width
[12:17:44] [PASSED] ABGR8888 Invalid buffer handle
[12:17:44] [PASSED] No pixel format
[12:17:44] [PASSED] ABGR8888 Width 0
[12:17:44] [PASSED] ABGR8888 Height 0
[12:17:44] [PASSED] ABGR8888 Out of bound height * pitch combination
[12:17:44] [PASSED] ABGR8888 Large buffer offset
[12:17:44] [PASSED] ABGR8888 Buffer offset for inexistent plane
[12:17:44] [PASSED] ABGR8888 Invalid flag
[12:17:44] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[12:17:44] [PASSED] ABGR8888 Valid buffer modifier
[12:17:44] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[12:17:44] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[12:17:44] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[12:17:44] [PASSED] NV12 Normal sizes
[12:17:44] [PASSED] NV12 Max sizes
[12:17:44] [PASSED] NV12 Invalid pitch
[12:17:44] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[12:17:44] [PASSED] NV12 different modifier per-plane
[12:17:44] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[12:17:44] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[12:17:44] [PASSED] NV12 Modifier for inexistent plane
[12:17:44] [PASSED] NV12 Handle for inexistent plane
[12:17:44] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[12:17:44] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[12:17:44] [PASSED] YVU420 Normal sizes
[12:17:44] [PASSED] YVU420 Max sizes
[12:17:44] [PASSED] YVU420 Invalid pitch
[12:17:44] [PASSED] YVU420 Different pitches
[12:17:44] [PASSED] YVU420 Different buffer offsets/pitches
[12:17:44] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[12:17:44] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[12:17:44] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[12:17:44] [PASSED] YVU420 Valid modifier
[12:17:44] [PASSED] YVU420 Different modifiers per plane
[12:17:44] [PASSED] YVU420 Modifier for inexistent plane
[12:17:44] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[12:17:44] [PASSED] X0L2 Normal sizes
[12:17:44] [PASSED] X0L2 Max sizes
[12:17:44] [PASSED] X0L2 Invalid pitch
[12:17:44] [PASSED] X0L2 Pitch greater than minimum required
[12:17:44] [PASSED] X0L2 Handle for inexistent plane
[12:17:44] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[12:17:44] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[12:17:44] [PASSED] X0L2 Valid modifier
[12:17:44] [PASSED] X0L2 Modifier for inexistent plane
[12:17:44] =========== [PASSED] drm_test_framebuffer_create ===========
[12:17:44] [PASSED] drm_test_framebuffer_free
[12:17:44] [PASSED] drm_test_framebuffer_init
[12:17:44] [PASSED] drm_test_framebuffer_init_bad_format
[12:17:44] [PASSED] drm_test_framebuffer_init_dev_mismatch
[12:17:44] [PASSED] drm_test_framebuffer_lookup
[12:17:44] [PASSED] drm_test_framebuffer_lookup_inexistent
[12:17:44] [PASSED] drm_test_framebuffer_modifiers_not_supported
[12:17:44] ================= [PASSED] drm_framebuffer =================
[12:17:44] ================ drm_gem_shmem (8 subtests) ================
[12:17:44] [PASSED] drm_gem_shmem_test_obj_create
[12:17:44] [PASSED] drm_gem_shmem_test_obj_create_private
[12:17:44] [PASSED] drm_gem_shmem_test_pin_pages
[12:17:44] [PASSED] drm_gem_shmem_test_vmap
[12:17:44] [PASSED] drm_gem_shmem_test_get_pages_sgt
[12:17:44] [PASSED] drm_gem_shmem_test_get_sg_table
[12:17:44] [PASSED] drm_gem_shmem_test_madvise
[12:17:44] [PASSED] drm_gem_shmem_test_purge
[12:17:44] ================== [PASSED] drm_gem_shmem ==================
[12:17:44] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[12:17:44] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[12:17:44] [PASSED] Automatic
[12:17:44] [PASSED] Full
[12:17:44] [PASSED] Limited 16:235
[12:17:44] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[12:17:44] [PASSED] drm_test_check_disable_connector
[12:17:44] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[12:17:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[12:17:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[12:17:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[12:17:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[12:17:44] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[12:17:44] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[12:17:44] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[12:17:44] [PASSED] drm_test_check_output_bpc_dvi
[12:17:44] [PASSED] drm_test_check_output_bpc_format_vic_1
[12:17:44] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[12:17:44] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[12:17:44] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[12:17:44] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[12:17:44] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[12:17:44] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[12:17:44] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[12:17:44] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[12:17:44] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[12:17:44] [PASSED] drm_test_check_broadcast_rgb_value
[12:17:44] [PASSED] drm_test_check_bpc_8_value
[12:17:44] [PASSED] drm_test_check_bpc_10_value
[12:17:44] [PASSED] drm_test_check_bpc_12_value
[12:17:44] [PASSED] drm_test_check_format_value
[12:17:44] [PASSED] drm_test_check_tmds_char_value
[12:17:44] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[12:17:44] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[12:17:44] [PASSED] drm_test_check_mode_valid
[12:17:44] [PASSED] drm_test_check_mode_valid_reject
[12:17:44] [PASSED] drm_test_check_mode_valid_reject_rate
[12:17:44] [PASSED] drm_test_check_mode_valid_reject_max_clock
[12:17:44] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[12:17:44] ================= drm_managed (2 subtests) =================
[12:17:44] [PASSED] drm_test_managed_release_action
[12:17:44] [PASSED] drm_test_managed_run_action
[12:17:44] =================== [PASSED] drm_managed ===================
[12:17:44] =================== drm_mm (6 subtests) ====================
[12:17:44] [PASSED] drm_test_mm_init
[12:17:44] [PASSED] drm_test_mm_debug
[12:17:44] [PASSED] drm_test_mm_align32
[12:17:44] [PASSED] drm_test_mm_align64
[12:17:44] [PASSED] drm_test_mm_lowest
[12:17:44] [PASSED] drm_test_mm_highest
[12:17:44] ===================== [PASSED] drm_mm ======================
[12:17:44] ============= drm_modes_analog_tv (5 subtests) =============
[12:17:44] [PASSED] drm_test_modes_analog_tv_mono_576i
[12:17:44] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[12:17:44] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[12:17:44] [PASSED] drm_test_modes_analog_tv_pal_576i
[12:17:44] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[12:17:44] =============== [PASSED] drm_modes_analog_tv ===============
[12:17:44] ============== drm_plane_helper (2 subtests) ===============
[12:17:44] =============== drm_test_check_plane_state ================
[12:17:44] [PASSED] clipping_simple
[12:17:44] [PASSED] clipping_rotate_reflect
[12:17:44] [PASSED] positioning_simple
[12:17:44] [PASSED] upscaling
[12:17:44] [PASSED] downscaling
[12:17:44] [PASSED] rounding1
[12:17:44] [PASSED] rounding2
[12:17:44] [PASSED] rounding3
[12:17:44] [PASSED] rounding4
[12:17:44] =========== [PASSED] drm_test_check_plane_state ============
[12:17:44] =========== drm_test_check_invalid_plane_state ============
[12:17:44] [PASSED] positioning_invalid
[12:17:44] [PASSED] upscaling_invalid
[12:17:44] [PASSED] downscaling_invalid
[12:17:44] ======= [PASSED] drm_test_check_invalid_plane_state ========
[12:17:44] ================ [PASSED] drm_plane_helper =================
[12:17:44] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[12:17:44] ====== drm_test_connector_helper_tv_get_modes_check =======
[12:17:44] [PASSED] None
[12:17:44] [PASSED] PAL
[12:17:44] [PASSED] NTSC
[12:17:44] [PASSED] Both, NTSC Default
[12:17:44] [PASSED] Both, PAL Default
[12:17:44] [PASSED] Both, NTSC Default, with PAL on command-line
[12:17:44] [PASSED] Both, PAL Default, with NTSC on command-line
[12:17:44] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[12:17:44] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[12:17:44] ================== drm_rect (9 subtests) ===================
[12:17:44] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[12:17:44] [PASSED] drm_test_rect_clip_scaled_not_clipped
[12:17:44] [PASSED] drm_test_rect_clip_scaled_clipped
[12:17:44] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[12:17:44] ================= drm_test_rect_intersect =================
[12:17:44] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[12:17:44] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[12:17:44] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[12:17:44] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[12:17:44] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[12:17:44] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[12:17:44] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[12:17:44] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[12:17:44] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[12:17:44] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[12:17:44] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[12:17:44] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[12:17:44] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[12:17:44] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[12:17:44] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[12:17:44] ============= [PASSED] drm_test_rect_intersect =============
[12:17:44] ================ drm_test_rect_calc_hscale ================
[12:17:44] [PASSED] normal use
[12:17:44] [PASSED] out of max range
[12:17:44] [PASSED] out of min range
[12:17:44] [PASSED] zero dst
[12:17:44] [PASSED] negative src
[12:17:44] [PASSED] negative dst
[12:17:44] ============ [PASSED] drm_test_rect_calc_hscale ============
[12:17:44] ================ drm_test_rect_calc_vscale ================
[12:17:44] [PASSED] normal use
[12:17:44] [PASSED] out of max range
[12:17:44] [PASSED] out of min range
[12:17:44] [PASSED] zero dst
[12:17:44] [PASSED] negative src
[12:17:44] [PASSED] negative dst
[12:17:44] ============ [PASSED] drm_test_rect_calc_vscale ============
[12:17:44] ================== drm_test_rect_rotate ===================
[12:17:44] [PASSED] reflect-x
[12:17:44] [PASSED] reflect-y
[12:17:44] [PASSED] rotate-0
[12:17:44] [PASSED] rotate-90
[12:17:44] [PASSED] rotate-180
[12:17:44] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[12:17:44] ============== [PASSED] drm_test_rect_rotate ===============
[12:17:44] ================ drm_test_rect_rotate_inv =================
[12:17:44] [PASSED] reflect-x
[12:17:44] [PASSED] reflect-y
[12:17:44] [PASSED] rotate-0
[12:17:44] [PASSED] rotate-90
[12:17:44] [PASSED] rotate-180
[12:17:44] [PASSED] rotate-270
[12:17:44] ============ [PASSED] drm_test_rect_rotate_inv =============
[12:17:44] ==================== [PASSED] drm_rect =====================
[12:17:44] ============ drm_sysfb_modeset_test (1 subtest) ============
[12:17:44] ============ drm_test_sysfb_build_fourcc_list =============
[12:17:44] [PASSED] no native formats
[12:17:44] [PASSED] XRGB8888 as native format
[12:17:44] [PASSED] remove duplicates
[12:17:44] [PASSED] convert alpha formats
[12:17:44] [PASSED] random formats
[12:17:44] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[12:17:44] ============= [PASSED] drm_sysfb_modeset_test ==============
[12:17:44] ============================================================
[12:17:44] Testing complete. Ran 616 tests: passed: 616
[12:17:44] Elapsed time: 29.038s total, 1.647s configuring, 27.173s building, 0.189s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[12:17:44] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:17:46] 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
[12:17:53] Starting KUnit Kernel (1/1)...
[12:17:53] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:17:54] ================= ttm_device (5 subtests) ==================
[12:17:54] [PASSED] ttm_device_init_basic
[12:17:54] [PASSED] ttm_device_init_multiple
[12:17:54] [PASSED] ttm_device_fini_basic
[12:17:54] [PASSED] ttm_device_init_no_vma_man
[12:17:54] ================== ttm_device_init_pools ==================
[12:17:54] [PASSED] No DMA allocations, no DMA32 required
[12:17:54] [PASSED] DMA allocations, DMA32 required
[12:17:54] [PASSED] No DMA allocations, DMA32 required
[12:17:54] [PASSED] DMA allocations, no DMA32 required
[12:17:54] ============== [PASSED] ttm_device_init_pools ==============
[12:17:54] =================== [PASSED] ttm_device ====================
[12:17:54] ================== ttm_pool (8 subtests) ===================
[12:17:54] ================== ttm_pool_alloc_basic ===================
[12:17:54] [PASSED] One page
[12:17:54] [PASSED] More than one page
[12:17:54] [PASSED] Above the allocation limit
[12:17:54] [PASSED] One page, with coherent DMA mappings enabled
[12:17:54] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:17:54] ============== [PASSED] ttm_pool_alloc_basic ===============
[12:17:54] ============== ttm_pool_alloc_basic_dma_addr ==============
[12:17:54] [PASSED] One page
[12:17:54] [PASSED] More than one page
[12:17:54] [PASSED] Above the allocation limit
[12:17:54] [PASSED] One page, with coherent DMA mappings enabled
[12:17:54] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:17:54] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[12:17:54] [PASSED] ttm_pool_alloc_order_caching_match
[12:17:54] [PASSED] ttm_pool_alloc_caching_mismatch
[12:17:54] [PASSED] ttm_pool_alloc_order_mismatch
[12:17:54] [PASSED] ttm_pool_free_dma_alloc
[12:17:54] [PASSED] ttm_pool_free_no_dma_alloc
[12:17:54] [PASSED] ttm_pool_fini_basic
[12:17:54] ==================== [PASSED] ttm_pool =====================
[12:17:54] ================ ttm_resource (8 subtests) =================
[12:17:54] ================= ttm_resource_init_basic =================
[12:17:54] [PASSED] Init resource in TTM_PL_SYSTEM
[12:17:54] [PASSED] Init resource in TTM_PL_VRAM
[12:17:54] [PASSED] Init resource in a private placement
[12:17:54] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[12:17:54] ============= [PASSED] ttm_resource_init_basic =============
[12:17:54] [PASSED] ttm_resource_init_pinned
[12:17:54] [PASSED] ttm_resource_fini_basic
[12:17:54] [PASSED] ttm_resource_manager_init_basic
[12:17:54] [PASSED] ttm_resource_manager_usage_basic
[12:17:54] [PASSED] ttm_resource_manager_set_used_basic
[12:17:54] [PASSED] ttm_sys_man_alloc_basic
[12:17:54] [PASSED] ttm_sys_man_free_basic
[12:17:54] ================== [PASSED] ttm_resource ===================
[12:17:54] =================== ttm_tt (15 subtests) ===================
[12:17:54] ==================== ttm_tt_init_basic ====================
[12:17:54] [PASSED] Page-aligned size
[12:17:54] [PASSED] Extra pages requested
[12:17:54] ================ [PASSED] ttm_tt_init_basic ================
[12:17:54] [PASSED] ttm_tt_init_misaligned
[12:17:54] [PASSED] ttm_tt_fini_basic
[12:17:54] [PASSED] ttm_tt_fini_sg
[12:17:54] [PASSED] ttm_tt_fini_shmem
[12:17:54] [PASSED] ttm_tt_create_basic
[12:17:54] [PASSED] ttm_tt_create_invalid_bo_type
[12:17:54] [PASSED] ttm_tt_create_ttm_exists
[12:17:54] [PASSED] ttm_tt_create_failed
[12:17:54] [PASSED] ttm_tt_destroy_basic
[12:17:54] [PASSED] ttm_tt_populate_null_ttm
[12:17:54] [PASSED] ttm_tt_populate_populated_ttm
[12:17:54] [PASSED] ttm_tt_unpopulate_basic
[12:17:54] [PASSED] ttm_tt_unpopulate_empty_ttm
[12:17:54] [PASSED] ttm_tt_swapin_basic
[12:17:54] ===================== [PASSED] ttm_tt ======================
[12:17:54] =================== ttm_bo (14 subtests) ===================
[12:17:54] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[12:17:54] [PASSED] Cannot be interrupted and sleeps
[12:17:54] [PASSED] Cannot be interrupted, locks straight away
[12:17:54] [PASSED] Can be interrupted, sleeps
[12:17:54] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[12:17:54] [PASSED] ttm_bo_reserve_locked_no_sleep
[12:17:54] [PASSED] ttm_bo_reserve_no_wait_ticket
[12:17:54] [PASSED] ttm_bo_reserve_double_resv
[12:17:54] [PASSED] ttm_bo_reserve_interrupted
[12:17:54] [PASSED] ttm_bo_reserve_deadlock
[12:17:54] [PASSED] ttm_bo_unreserve_basic
[12:17:54] [PASSED] ttm_bo_unreserve_pinned
[12:17:54] [PASSED] ttm_bo_unreserve_bulk
[12:17:54] [PASSED] ttm_bo_put_basic
[12:17:54] [PASSED] ttm_bo_put_shared_resv
[12:17:54] [PASSED] ttm_bo_pin_basic
[12:17:54] [PASSED] ttm_bo_pin_unpin_resource
[12:17:54] [PASSED] ttm_bo_multiple_pin_one_unpin
[12:17:54] ===================== [PASSED] ttm_bo ======================
[12:17:54] ============== ttm_bo_validate (21 subtests) ===============
[12:17:54] ============== ttm_bo_init_reserved_sys_man ===============
[12:17:54] [PASSED] Buffer object for userspace
[12:17:54] [PASSED] Kernel buffer object
[12:17:54] [PASSED] Shared buffer object
[12:17:54] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[12:17:54] ============== ttm_bo_init_reserved_mock_man ==============
[12:17:54] [PASSED] Buffer object for userspace
[12:17:54] [PASSED] Kernel buffer object
[12:17:54] [PASSED] Shared buffer object
[12:17:54] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[12:17:54] [PASSED] ttm_bo_init_reserved_resv
[12:17:54] ================== ttm_bo_validate_basic ==================
[12:17:54] [PASSED] Buffer object for userspace
[12:17:54] [PASSED] Kernel buffer object
[12:17:54] [PASSED] Shared buffer object
[12:17:54] ============== [PASSED] ttm_bo_validate_basic ==============
[12:17:54] [PASSED] ttm_bo_validate_invalid_placement
[12:17:54] ============= ttm_bo_validate_same_placement ==============
[12:17:54] [PASSED] System manager
[12:17:54] [PASSED] VRAM manager
[12:17:54] ========= [PASSED] ttm_bo_validate_same_placement ==========
[12:17:54] [PASSED] ttm_bo_validate_failed_alloc
[12:17:54] [PASSED] ttm_bo_validate_pinned
[12:17:54] [PASSED] ttm_bo_validate_busy_placement
[12:17:54] ================ ttm_bo_validate_multihop =================
[12:17:54] [PASSED] Buffer object for userspace
[12:17:54] [PASSED] Kernel buffer object
[12:17:54] [PASSED] Shared buffer object
[12:17:54] ============ [PASSED] ttm_bo_validate_multihop =============
[12:17:54] ========== ttm_bo_validate_no_placement_signaled ==========
[12:17:54] [PASSED] Buffer object in system domain, no page vector
[12:17:54] [PASSED] Buffer object in system domain with an existing page vector
[12:17:54] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[12:17:54] ======== ttm_bo_validate_no_placement_not_signaled ========
[12:17:54] [PASSED] Buffer object for userspace
[12:17:54] [PASSED] Kernel buffer object
[12:17:54] [PASSED] Shared buffer object
[12:17:54] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[12:17:54] [PASSED] ttm_bo_validate_move_fence_signaled
[12:17:54] ========= ttm_bo_validate_move_fence_not_signaled =========
[12:17:54] [PASSED] Waits for GPU
[12:17:54] [PASSED] Tries to lock straight away
[12:17:54] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[12:17:54] [PASSED] ttm_bo_validate_happy_evict
[12:17:54] [PASSED] ttm_bo_validate_all_pinned_evict
[12:17:54] [PASSED] ttm_bo_validate_allowed_only_evict
[12:17:54] [PASSED] ttm_bo_validate_deleted_evict
[12:17:54] [PASSED] ttm_bo_validate_busy_domain_evict
[12:17:54] [PASSED] ttm_bo_validate_evict_gutting
[12:17:54] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[12:17:54] ================= [PASSED] ttm_bo_validate =================
[12:17:54] ============================================================
[12:17:54] Testing complete. Ran 101 tests: passed: 101
[12:17:54] Elapsed time: 9.868s total, 1.671s configuring, 7.931s building, 0.227s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 41+ messages in thread
* ✗ CI.checksparse: warning for MADVISE FOR XE (rev7)
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (25 preceding siblings ...)
2025-08-14 12:17 ` ✓ CI.KUnit: success " Patchwork
@ 2025-08-14 12:35 ` Patchwork
2025-08-14 13:23 ` ✓ Xe.CI.BAT: success " Patchwork
` (3 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Patchwork @ 2025-08-14 12:35 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
== Series Details ==
Series: MADVISE FOR XE (rev7)
URL : https://patchwork.freedesktop.org/series/149550/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 41+ messages in thread
* ✓ Xe.CI.BAT: success for MADVISE FOR XE (rev7)
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (26 preceding siblings ...)
2025-08-14 12:35 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-08-14 13:23 ` Patchwork
2025-08-14 15:33 ` ✗ Xe.CI.Full: failure " Patchwork
` (2 subsequent siblings)
30 siblings, 0 replies; 41+ messages in thread
From: Patchwork @ 2025-08-14 13:23 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1498 bytes --]
== Series Details ==
Series: MADVISE FOR XE (rev7)
URL : https://patchwork.freedesktop.org/series/149550/
State : success
== Summary ==
CI Bug Log - changes from xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb_BAT -> xe-pw-149550v7_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (11 -> 9)
------------------------------
Missing (2): bat-adlp-vm bat-ptl-vm
Known issues
------------
Here are the changes found in xe-pw-149550v7_BAT that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@kms_flip@basic-plain-flip@b-edp1:
- bat-adlp-7: [DMESG-WARN][1] ([Intel XE#4543]) -> [PASS][2] +1 other test pass
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/bat-adlp-7/igt@kms_flip@basic-plain-flip@b-edp1.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/bat-adlp-7/igt@kms_flip@basic-plain-flip@b-edp1.html
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
Build changes
-------------
* IGT: IGT_8493 -> IGT_8494
* Linux: xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb -> xe-pw-149550v7
IGT_8493: 8493
IGT_8494: 8494
xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb: 7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb
xe-pw-149550v7: 149550v7
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/index.html
[-- Attachment #2: Type: text/html, Size: 2077 bytes --]
^ permalink raw reply [flat|nested] 41+ messages in thread
* ✗ Xe.CI.Full: failure for MADVISE FOR XE (rev7)
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (27 preceding siblings ...)
2025-08-14 13:23 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-08-14 15:33 ` Patchwork
2025-08-14 19:01 ` Matthew Brost
2025-08-18 18:31 ` [PATCH v7 00/24] MADVISE FOR XE Ghimiray, Himal Prasad
2025-08-18 20:28 ` Rodrigo Vivi
30 siblings, 1 reply; 41+ messages in thread
From: Patchwork @ 2025-08-14 15:33 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 92047 bytes --]
== Series Details ==
Series: MADVISE FOR XE (rev7)
URL : https://patchwork.freedesktop.org/series/149550/
State : failure
== Summary ==
CI Bug Log - changes from xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb_FULL -> xe-pw-149550v7_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-149550v7_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-149550v7_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-149550v7_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_system_allocator@process-many-large-mmap-remap-dontunmap:
- shard-bmg: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-2/igt@xe_exec_system_allocator@process-many-large-mmap-remap-dontunmap.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@xe_exec_system_allocator@process-many-large-mmap-remap-dontunmap.html
Known issues
------------
Here are the changes found in xe-pw-149550v7_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@hotreplug-lateclose:
- shard-adlp: [PASS][3] -> [ABORT][4] ([Intel XE#5826])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-6/igt@core_hotunplug@hotreplug-lateclose.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@core_hotunplug@hotreplug-lateclose.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#2233])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- shard-lnl: NOTRUN -> [SKIP][6] ([Intel XE#1466])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-b-hdmi-a-1-y:
- shard-adlp: NOTRUN -> [DMESG-WARN][7] ([Intel XE#4543]) +6 other tests dmesg-warn
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-b-hdmi-a-1-y.html
* igt@kms_async_flips@invalid-async-flip-atomic:
- shard-lnl: NOTRUN -> [SKIP][8] ([Intel XE#3768])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_async_flips@invalid-async-flip-atomic.html
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#3768])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_async_flips@invalid-async-flip-atomic.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2370])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][11] ([Intel XE#316]) +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1407]) +4 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#3658])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_big_fb@linear-64bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2327]) +4 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_big_fb@linear-64bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-0:
- shard-adlp: [PASS][15] -> [DMESG-FAIL][16] ([Intel XE#4543]) +6 other tests dmesg-fail
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-0:
- shard-adlp: NOTRUN -> [DMESG-FAIL][17] ([Intel XE#4543]) +1 other test dmesg-fail
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html
* igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
- shard-lnl: NOTRUN -> [SKIP][18] ([Intel XE#1477])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#610])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#1124]) +15 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#1124]) +11 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][22] ([Intel XE#1124]) +5 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
- shard-dg2-set2: NOTRUN -> [SKIP][23] ([Intel XE#1124]) +11 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
* igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p:
- shard-adlp: NOTRUN -> [SKIP][24] ([Intel XE#2191])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#2191])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
* igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
- shard-bmg: [PASS][26] -> [SKIP][27] ([Intel XE#2314] / [Intel XE#2894])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#2314] / [Intel XE#2894])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html
- shard-dg2-set2: NOTRUN -> [SKIP][29] ([Intel XE#2191])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#1512]) +1 other test skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p.html
* igt@kms_bw@linear-tiling-2-displays-2560x1440p:
- shard-adlp: NOTRUN -> [SKIP][31] ([Intel XE#367]) +4 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#367]) +5 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html
* igt@kms_bw@linear-tiling-3-displays-2160x1440p:
- shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#367]) +2 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
- shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#367]) +3 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#2887]) +18 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
- shard-adlp: NOTRUN -> [SKIP][36] ([Intel XE#2907]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
- shard-dg2-set2: NOTRUN -> [SKIP][37] ([Intel XE#2907]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#2669]) +7 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#2887]) +15 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][40] -> [INCOMPLETE][41] ([Intel XE#3862]) +1 other test incomplete
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#3432]) +2 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#3432]) +3 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][44] ([Intel XE#455] / [Intel XE#787]) +13 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2652] / [Intel XE#787]) +17 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-6:
- shard-dg2-set2: NOTRUN -> [SKIP][46] ([Intel XE#787]) +209 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-6.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-d-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][47] ([Intel XE#455] / [Intel XE#787]) +41 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-d-dp-2.html
* igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][48] ([Intel XE#787]) +20 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][49] ([Intel XE#1727] / [Intel XE#3113])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][50] ([Intel XE#3113])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2.html
* igt@kms_cdclk@plane-scaling:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#2724])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_cdclk@plane-scaling.html
* igt@kms_cdclk@plane-scaling@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][52] ([Intel XE#4416]) +3 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_cdclk@plane-scaling@pipe-b-dp-4.html
* igt@kms_chamelium_audio@dp-audio:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#373]) +12 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_chamelium_audio@dp-audio.html
* igt@kms_chamelium_audio@hdmi-audio-edid:
- shard-adlp: NOTRUN -> [SKIP][54] ([Intel XE#373]) +5 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_chamelium_audio@hdmi-audio-edid.html
* igt@kms_chamelium_color@ctm-0-25:
- shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#306])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_chamelium_color@ctm-0-25.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#2252]) +10 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode:
- shard-dg2-set2: NOTRUN -> [SKIP][57] ([Intel XE#373]) +8 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html
* igt@kms_content_protection@atomic-dpms:
- shard-dg2-set2: NOTRUN -> [FAIL][58] ([Intel XE#1178]) +1 other test fail
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_content_protection@atomic-dpms.html
- shard-lnl: NOTRUN -> [SKIP][59] ([Intel XE#3278])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@atomic-dpms@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][60] ([Intel XE#1178]) +2 other tests fail
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_content_protection@atomic-dpms@pipe-a-dp-2.html
* igt@kms_content_protection@content-type-change:
- shard-bmg: NOTRUN -> [SKIP][61] ([Intel XE#2341]) +1 other test skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_content_protection@content-type-change.html
* igt@kms_cursor_crc@cursor-offscreen-256x85:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#2320]) +7 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_cursor_crc@cursor-offscreen-256x85.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#2321]) +2 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#2321]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_cursor_crc@cursor-random-512x170.html
- shard-dg2-set2: NOTRUN -> [SKIP][65] ([Intel XE#308])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_cursor_crc@cursor-random-max-size:
- shard-lnl: NOTRUN -> [SKIP][66] ([Intel XE#1424]) +7 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_cursor_crc@cursor-random-max-size.html
* igt@kms_cursor_crc@cursor-sliding-512x170:
- shard-adlp: NOTRUN -> [SKIP][67] ([Intel XE#308])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_cursor_crc@cursor-sliding-512x170.html
* igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
- shard-bmg: [PASS][68] -> [SKIP][69] ([Intel XE#2291])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#2291]) +1 other test skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
- shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#309]) +3 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
* igt@kms_cursor_legacy@forked-move:
- shard-bmg: NOTRUN -> [ABORT][72] ([Intel XE#5826]) +1 other test abort
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_cursor_legacy@forked-move.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-dg2-set2: NOTRUN -> [SKIP][73] ([Intel XE#323])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
- shard-bmg: NOTRUN -> [SKIP][74] ([Intel XE#2286])
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@torture-move@pipe-a:
- shard-lnl: NOTRUN -> [ABORT][75] ([Intel XE#5826]) +3 other tests abort
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_cursor_legacy@torture-move@pipe-a.html
* igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
- shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#1508])
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#5428])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#1340])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#2244]) +2 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#2244]) +3 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
- shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#4422]) +1 other test skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
- shard-adlp: NOTRUN -> [SKIP][82] ([Intel XE#4422])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-bmg: NOTRUN -> [SKIP][83] ([Intel XE#5425])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_feature_discovery@display-2x:
- shard-bmg: [PASS][84] -> [SKIP][85] ([Intel XE#2373])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-4/igt@kms_feature_discovery@display-2x.html
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_feature_discovery@display-2x.html
* igt@kms_feature_discovery@dp-mst:
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#2375])
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_feature_discovery@dp-mst.html
- shard-dg2-set2: NOTRUN -> [SKIP][87] ([Intel XE#1137])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_feature_discovery@dp-mst.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank:
- shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#1421]) +3 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
- shard-bmg: [PASS][89] -> [SKIP][90] ([Intel XE#2316]) +3 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html
* igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4:
- shard-dg2-set2: [PASS][91] -> [INCOMPLETE][92] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-463/igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4.html
* igt@kms_flip@2x-nonexisting-fb-interruptible:
- shard-adlp: NOTRUN -> [SKIP][93] ([Intel XE#310]) +2 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_flip@2x-nonexisting-fb-interruptible.html
* igt@kms_flip@2x-plain-flip-ts-check-interruptible:
- shard-bmg: NOTRUN -> [SKIP][94] ([Intel XE#2316])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
* igt@kms_flip@flip-vs-dpms-off-vs-modeset-interruptible@a-hdmi-a1:
- shard-adlp: NOTRUN -> [INCOMPLETE][95] ([Intel XE#5753]) +1 other test incomplete
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_flip@flip-vs-dpms-off-vs-modeset-interruptible@a-hdmi-a1.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:
- shard-lnl: [PASS][96] -> [FAIL][97] ([Intel XE#301])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1:
- shard-adlp: [PASS][98] -> [DMESG-WARN][99] ([Intel XE#4543]) +4 other tests dmesg-warn
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: NOTRUN -> [FAIL][100] ([Intel XE#301]) +1 other test fail
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-adlp: [PASS][101] -> [DMESG-WARN][102] ([Intel XE#2953] / [Intel XE#4173]) +4 other tests dmesg-warn
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-2/igt@kms_flip@flip-vs-suspend-interruptible.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling:
- shard-lnl: NOTRUN -> [FAIL][103] ([Intel XE#4683]) +3 other tests fail
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling:
- shard-dg2-set2: NOTRUN -> [SKIP][104] ([Intel XE#455]) +14 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html
- shard-lnl: NOTRUN -> [SKIP][105] ([Intel XE#1401] / [Intel XE#1745]) +2 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][106] ([Intel XE#1401]) +2 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][107] ([Intel XE#2293] / [Intel XE#2380]) +2 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#2293]) +2 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-bmg: NOTRUN -> [SKIP][109] ([Intel XE#2380]) +1 other test skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][110] ([Intel XE#1397] / [Intel XE#1745])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][111] ([Intel XE#1397])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
- shard-adlp: NOTRUN -> [SKIP][112] ([Intel XE#651]) +8 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
- shard-bmg: NOTRUN -> [SKIP][113] ([Intel XE#2311]) +35 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: NOTRUN -> [SKIP][114] ([Intel XE#5390]) +9 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][115] ([Intel XE#2312]) +8 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte:
- shard-lnl: NOTRUN -> [SKIP][116] ([Intel XE#651]) +14 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][117] ([Intel XE#656]) +17 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc:
- shard-dg2-set2: NOTRUN -> [SKIP][118] ([Intel XE#651]) +30 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
- shard-lnl: NOTRUN -> [SKIP][119] ([Intel XE#1469])
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][120] ([Intel XE#2352]) +1 other test skip
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
- shard-dg2-set2: NOTRUN -> [SKIP][121] ([Intel XE#658])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move:
- shard-dg2-set2: NOTRUN -> [SKIP][122] ([Intel XE#653]) +24 other tests skip
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][123] ([Intel XE#656]) +42 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc:
- shard-adlp: NOTRUN -> [SKIP][124] ([Intel XE#653]) +10 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html
- shard-bmg: NOTRUN -> [SKIP][125] ([Intel XE#2313]) +34 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-lnl: NOTRUN -> [SKIP][126] ([Intel XE#1503]) +1 other test skip
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_hdr@invalid-metadata-sizes.html
- shard-bmg: [PASS][127] -> [SKIP][128] ([Intel XE#1503])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_hdr@invalid-metadata-sizes.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_joiner@basic-big-joiner:
- shard-adlp: NOTRUN -> [SKIP][129] ([Intel XE#346])
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_joiner@basic-big-joiner.html
- shard-bmg: NOTRUN -> [SKIP][130] ([Intel XE#346])
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_joiner@basic-big-joiner.html
- shard-dg2-set2: NOTRUN -> [SKIP][131] ([Intel XE#346])
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_joiner@basic-big-joiner.html
- shard-lnl: NOTRUN -> [SKIP][132] ([Intel XE#346])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_joiner@basic-big-joiner.html
* igt@kms_joiner@basic-max-non-joiner:
- shard-lnl: NOTRUN -> [SKIP][133] ([Intel XE#4298])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_joiner@basic-max-non-joiner.html
* igt@kms_joiner@invalid-modeset-force-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][134] ([Intel XE#2934])
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
- shard-lnl: NOTRUN -> [SKIP][135] ([Intel XE#2925])
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
* igt@kms_panel_fitting@legacy:
- shard-adlp: NOTRUN -> [SKIP][136] ([Intel XE#455]) +15 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_panel_fitting@legacy.html
- shard-bmg: NOTRUN -> [SKIP][137] ([Intel XE#2486])
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_panel_fitting@legacy.html
* igt@kms_pipe_stress@stress-xrgb8888-ytiled:
- shard-dg2-set2: NOTRUN -> [SKIP][138] ([Intel XE#4359])
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-433/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html
* igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-0:
- shard-lnl: NOTRUN -> [FAIL][139] ([Intel XE#5195]) +2 other tests fail
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-0.html
* igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256:
- shard-dg2-set2: NOTRUN -> [FAIL][140] ([Intel XE#616]) +3 other tests fail
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256.html
* igt@kms_plane_lowres@tiling-4:
- shard-lnl: NOTRUN -> [SKIP][141] ([Intel XE#599]) +3 other tests skip
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_plane_lowres@tiling-4.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-bmg: NOTRUN -> [SKIP][142] ([Intel XE#4596])
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_plane_multiple@2x-tiling-yf:
- shard-adlp: NOTRUN -> [SKIP][143] ([Intel XE#4596])
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_plane_multiple@2x-tiling-yf.html
- shard-bmg: NOTRUN -> [SKIP][144] ([Intel XE#5021])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_plane_multiple@2x-tiling-yf.html
- shard-dg2-set2: NOTRUN -> [SKIP][145] ([Intel XE#5021])
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@kms_plane_multiple@2x-tiling-yf.html
- shard-lnl: NOTRUN -> [SKIP][146] ([Intel XE#4596])
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_plane_multiple@2x-tiling-yf.html
* igt@kms_plane_multiple@tiling-yf:
- shard-adlp: NOTRUN -> [SKIP][147] ([Intel XE#5020])
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_plane_multiple@tiling-yf.html
- shard-bmg: NOTRUN -> [SKIP][148] ([Intel XE#5020])
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_plane_multiple@tiling-yf.html
- shard-dg2-set2: NOTRUN -> [SKIP][149] ([Intel XE#5020])
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_plane_multiple@tiling-yf.html
- shard-lnl: NOTRUN -> [SKIP][150] ([Intel XE#5020])
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_plane_multiple@tiling-yf.html
* igt@kms_plane_scaling@2x-scaler-multi-pipe:
- shard-adlp: NOTRUN -> [SKIP][151] ([Intel XE#309])
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
* igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a:
- shard-bmg: NOTRUN -> [SKIP][152] ([Intel XE#2763]) +9 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a.html
* igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-b:
- shard-lnl: NOTRUN -> [SKIP][153] ([Intel XE#2763]) +15 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-b.html
* igt@kms_pm_backlight@bad-brightness:
- shard-bmg: NOTRUN -> [SKIP][154] ([Intel XE#870])
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_pm_backlight@bad-brightness.html
- shard-dg2-set2: NOTRUN -> [SKIP][155] ([Intel XE#870])
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_dc@dc5-dpms-negative:
- shard-lnl: NOTRUN -> [SKIP][156] ([Intel XE#1131])
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_pm_dc@dc5-dpms-negative.html
* igt@kms_pm_dc@dc5-psr:
- shard-bmg: NOTRUN -> [SKIP][157] ([Intel XE#2392])
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_pm_dc@dc5-psr.html
- shard-dg2-set2: NOTRUN -> [SKIP][158] ([Intel XE#1129])
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc5-retention-flops:
- shard-dg2-set2: NOTRUN -> [SKIP][159] ([Intel XE#3309])
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_pm_dc@dc5-retention-flops.html
- shard-lnl: NOTRUN -> [SKIP][160] ([Intel XE#3309])
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_pm_dc@dc5-retention-flops.html
- shard-adlp: NOTRUN -> [SKIP][161] ([Intel XE#3309])
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_pm_dc@dc5-retention-flops.html
- shard-bmg: NOTRUN -> [SKIP][162] ([Intel XE#3309])
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_pm_dc@dc5-retention-flops.html
* igt@kms_pm_dc@dc6-dpms:
- shard-lnl: [PASS][163] -> [FAIL][164] ([Intel XE#718]) +1 other test fail
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-2/igt@kms_pm_dc@dc6-dpms.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-lnl: NOTRUN -> [SKIP][165] ([Intel XE#1439] / [Intel XE#836])
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-lnl: NOTRUN -> [SKIP][166] ([Intel XE#1439] / [Intel XE#3141]) +1 other test skip
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][167] ([Intel XE#1489] / [Intel XE#5899]) +8 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
- shard-lnl: NOTRUN -> [SKIP][168] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#5899]) +1 other test skip
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][169] ([Intel XE#4608] / [Intel XE#5899]) +4 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
- shard-adlp: NOTRUN -> [SKIP][170] ([Intel XE#1489] / [Intel XE#5899]) +3 other tests skip
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][171] ([Intel XE#2893] / [Intel XE#5899])
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][172] ([Intel XE#1489] / [Intel XE#5899]) +10 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-lnl: NOTRUN -> [SKIP][173] ([Intel XE#1128] / [Intel XE#5899])
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html
- shard-adlp: NOTRUN -> [SKIP][174] ([Intel XE#1122] / [Intel XE#5580] / [Intel XE#5899])
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html
- shard-dg2-set2: NOTRUN -> [SKIP][175] ([Intel XE#1122] / [Intel XE#5899])
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_psr2_su@frontbuffer-xrgb8888.html
* igt@kms_psr@fbc-psr-cursor-render:
- shard-lnl: NOTRUN -> [SKIP][176] ([Intel XE#5784] / [Intel XE#5899]) +4 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_psr@fbc-psr-cursor-render.html
* igt@kms_psr@fbc-psr-primary-render:
- shard-bmg: NOTRUN -> [SKIP][177] ([Intel XE#2234] / [Intel XE#2850] / [Intel XE#5899]) +16 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_psr@fbc-psr-primary-render.html
* igt@kms_psr@fbc-psr2-cursor-plane-onoff:
- shard-dg2-set2: NOTRUN -> [SKIP][178] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +11 other tests skip
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html
* igt@kms_psr@fbc-psr2-dpms@edp-1:
- shard-lnl: NOTRUN -> [SKIP][179] ([Intel XE#4609] / [Intel XE#5899]) +2 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_psr@fbc-psr2-dpms@edp-1.html
* igt@kms_psr@pr-primary-blt:
- shard-lnl: NOTRUN -> [SKIP][180] ([Intel XE#1406] / [Intel XE#5899]) +6 other tests skip
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_psr@pr-primary-blt.html
* igt@kms_psr@psr-cursor-blt:
- shard-adlp: NOTRUN -> [SKIP][181] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +6 other tests skip
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_psr@psr-cursor-blt.html
* igt@kms_psr@psr2-primary-render:
- shard-bmg: NOTRUN -> [SKIP][182] ([Intel XE#2234] / [Intel XE#5899])
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_psr@psr2-primary-render.html
* igt@kms_rotation_crc@bad-tiling:
- shard-dg2-set2: NOTRUN -> [SKIP][183] ([Intel XE#3414]) +1 other test skip
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_rotation_crc@bad-tiling.html
* igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
- shard-adlp: NOTRUN -> [SKIP][184] ([Intel XE#1127])
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
- shard-lnl: NOTRUN -> [SKIP][185] ([Intel XE#3414] / [Intel XE#3904])
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
* igt@kms_rotation_crc@sprite-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][186] ([Intel XE#3414] / [Intel XE#3904])
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_rotation_crc@sprite-rotation-90.html
* igt@kms_scaling_modes@scaling-mode-center:
- shard-bmg: NOTRUN -> [SKIP][187] ([Intel XE#2413])
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_scaling_modes@scaling-mode-center.html
* igt@kms_setmode@clone-exclusive-crtc:
- shard-lnl: NOTRUN -> [SKIP][188] ([Intel XE#1435])
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_setmode@clone-exclusive-crtc.html
* igt@kms_vrr@seamless-rr-switch-drrs:
- shard-lnl: NOTRUN -> [SKIP][189] ([Intel XE#1499])
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_vrr@seamless-rr-switch-drrs.html
* igt@kms_vrr@seamless-rr-switch-virtual:
- shard-bmg: NOTRUN -> [SKIP][190] ([Intel XE#1499]) +1 other test skip
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_vrr@seamless-rr-switch-virtual.html
* igt@xe_compute@ccs-mode-basic:
- shard-bmg: NOTRUN -> [FAIL][191] ([Intel XE#5794])
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_compute@ccs-mode-basic.html
* igt@xe_configfs@survivability-mode:
- shard-dg2-set2: NOTRUN -> [SKIP][192] ([Intel XE#5249])
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@xe_configfs@survivability-mode.html
- shard-lnl: NOTRUN -> [SKIP][193] ([Intel XE#5249])
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@xe_configfs@survivability-mode.html
- shard-adlp: NOTRUN -> [SKIP][194] ([Intel XE#5249])
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_configfs@survivability-mode.html
* igt@xe_copy_basic@mem-copy-linear-0x3fff:
- shard-dg2-set2: NOTRUN -> [SKIP][195] ([Intel XE#1123])
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
- shard-adlp: NOTRUN -> [SKIP][196] ([Intel XE#1123])
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
* igt@xe_copy_basic@mem-set-linear-0xfd:
- shard-dg2-set2: NOTRUN -> [SKIP][197] ([Intel XE#1126]) +1 other test skip
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_copy_basic@mem-set-linear-0xfd.html
* igt@xe_eu_stall@blocking-read:
- shard-adlp: NOTRUN -> [SKIP][198] ([Intel XE#5626])
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@xe_eu_stall@blocking-read.html
- shard-dg2-set2: NOTRUN -> [SKIP][199] ([Intel XE#5626])
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_eu_stall@blocking-read.html
* igt@xe_eudebug@vma-ufence-faultable:
- shard-dg2-set2: NOTRUN -> [SKIP][200] ([Intel XE#4837]) +9 other tests skip
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@xe_eudebug@vma-ufence-faultable.html
- shard-lnl: NOTRUN -> [SKIP][201] ([Intel XE#4837]) +13 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_eudebug@vma-ufence-faultable.html
* igt@xe_eudebug_online@basic-breakpoint:
- shard-bmg: NOTRUN -> [SKIP][202] ([Intel XE#4837]) +13 other tests skip
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@xe_eudebug_online@basic-breakpoint.html
- shard-adlp: NOTRUN -> [SKIP][203] ([Intel XE#4837] / [Intel XE#5565]) +5 other tests skip
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_eudebug_online@basic-breakpoint.html
* igt@xe_evict@evict-beng-large-multi-vm:
- shard-adlp: NOTRUN -> [SKIP][204] ([Intel XE#261] / [Intel XE#5564]) +1 other test skip
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@xe_evict@evict-beng-large-multi-vm.html
* igt@xe_evict@evict-beng-small:
- shard-adlp: NOTRUN -> [SKIP][205] ([Intel XE#261] / [Intel XE#5564] / [Intel XE#688]) +1 other test skip
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_evict@evict-beng-small.html
* igt@xe_evict_ccs@evict-overcommit-parallel-nofree-reopen:
- shard-lnl: NOTRUN -> [SKIP][206] ([Intel XE#688]) +6 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-reopen.html
* igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd:
- shard-adlp: NOTRUN -> [SKIP][207] ([Intel XE#688])
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-rebind:
- shard-dg2-set2: NOTRUN -> [SKIP][208] ([Intel XE#1392])
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-rebind.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
- shard-bmg: NOTRUN -> [SKIP][209] ([Intel XE#2322]) +11 other tests skip
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html
* igt@xe_exec_basic@multigpu-no-exec-bindexecqueue:
- shard-dg2-set2: [PASS][210] -> [SKIP][211] ([Intel XE#1392]) +2 other tests skip
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-466/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue.html
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue.html
* igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr:
- shard-adlp: NOTRUN -> [SKIP][212] ([Intel XE#1392] / [Intel XE#5575]) +4 other tests skip
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr.html
* igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][213] ([Intel XE#1392]) +9 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
* igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch:
- shard-adlp: NOTRUN -> [SKIP][214] ([Intel XE#288] / [Intel XE#5561]) +10 other tests skip
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch.html
* igt@xe_exec_fault_mode@twice-userptr-rebind-imm:
- shard-dg2-set2: NOTRUN -> [SKIP][215] ([Intel XE#288]) +18 other tests skip
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
* igt@xe_exec_mix_modes@exec-spinner-interrupted-lr:
- shard-adlp: NOTRUN -> [SKIP][216] ([Intel XE#2360] / [Intel XE#5573])
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@xe_exec_mix_modes@exec-spinner-interrupted-lr.html
- shard-dg2-set2: NOTRUN -> [SKIP][217] ([Intel XE#2360])
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@xe_exec_mix_modes@exec-spinner-interrupted-lr.html
* igt@xe_exec_reset@parallel-gt-reset:
- shard-adlp: [PASS][218] -> [DMESG-WARN][219] ([Intel XE#3876])
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@xe_exec_reset@parallel-gt-reset.html
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@xe_exec_reset@parallel-gt-reset.html
- shard-bmg: NOTRUN -> [DMESG-WARN][220] ([Intel XE#3876])
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@xe_exec_reset@parallel-gt-reset.html
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][221] ([Intel XE#3876])
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@xe_exec_reset@parallel-gt-reset.html
* igt@xe_exec_system_allocator@process-many-large-execqueues-new-bo-map-nomemset:
- shard-dg2-set2: NOTRUN -> [SKIP][222] ([Intel XE#4915]) +222 other tests skip
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_exec_system_allocator@process-many-large-execqueues-new-bo-map-nomemset.html
* igt@xe_exec_system_allocator@process-many-mmap-new-huge-nomemset:
- shard-lnl: NOTRUN -> [SKIP][223] ([Intel XE#4943]) +30 other tests skip
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_exec_system_allocator@process-many-mmap-new-huge-nomemset.html
* igt@xe_exec_system_allocator@threads-many-mmap-new-huge-nomemset:
- shard-bmg: NOTRUN -> [SKIP][224] ([Intel XE#4943]) +24 other tests skip
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@xe_exec_system_allocator@threads-many-mmap-new-huge-nomemset.html
* igt@xe_exec_system_allocator@twice-large-new-race:
- shard-adlp: NOTRUN -> [SKIP][225] ([Intel XE#4915]) +151 other tests skip
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_exec_system_allocator@twice-large-new-race.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-adlp: NOTRUN -> [ABORT][226] ([Intel XE#4917] / [Intel XE#5530])
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
* igt@xe_mmap@pci-membarrier-bad-pagesize:
- shard-lnl: NOTRUN -> [SKIP][227] ([Intel XE#5100]) +1 other test skip
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_mmap@pci-membarrier-bad-pagesize.html
- shard-adlp: NOTRUN -> [SKIP][228] ([Intel XE#5100])
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@xe_mmap@pci-membarrier-bad-pagesize.html
* igt@xe_mmap@vram:
- shard-lnl: NOTRUN -> [SKIP][229] ([Intel XE#1416])
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_mmap@vram.html
* igt@xe_module_load@force-load:
- shard-bmg: NOTRUN -> [SKIP][230] ([Intel XE#2457])
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_module_load@force-load.html
* igt@xe_oa@buffer-size:
- shard-dg2-set2: NOTRUN -> [SKIP][231] ([Intel XE#5103])
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-434/igt@xe_oa@buffer-size.html
* igt@xe_oa@invalid-create-userspace-config:
- shard-dg2-set2: NOTRUN -> [SKIP][232] ([Intel XE#3573]) +5 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@xe_oa@invalid-create-userspace-config.html
* igt@xe_oa@oa-tlb-invalidate:
- shard-lnl: NOTRUN -> [SKIP][233] ([Intel XE#2248])
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@xe_oa@oa-tlb-invalidate.html
- shard-bmg: NOTRUN -> [SKIP][234] ([Intel XE#2248])
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@xe_oa@oa-tlb-invalidate.html
* igt@xe_oa@rc6-disable:
- shard-adlp: NOTRUN -> [SKIP][235] ([Intel XE#3573]) +6 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_oa@rc6-disable.html
* igt@xe_pat@display-vs-wb-transient:
- shard-adlp: NOTRUN -> [SKIP][236] ([Intel XE#1337] / [Intel XE#5572])
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_pat@display-vs-wb-transient.html
- shard-dg2-set2: NOTRUN -> [SKIP][237] ([Intel XE#1337])
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_pat@display-vs-wb-transient.html
* igt@xe_peer2peer@read:
- shard-adlp: NOTRUN -> [SKIP][238] ([Intel XE#1061] / [Intel XE#5568])
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_peer2peer@read.html
- shard-bmg: NOTRUN -> [SKIP][239] ([Intel XE#2427])
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_peer2peer@read.html
- shard-lnl: NOTRUN -> [SKIP][240] ([Intel XE#1061])
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@xe_peer2peer@read.html
* igt@xe_pm@d3cold-mmap-system:
- shard-dg2-set2: NOTRUN -> [SKIP][241] ([Intel XE#2284] / [Intel XE#366])
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_pm@d3cold-mmap-system.html
* igt@xe_pm@d3cold-mmap-vram:
- shard-lnl: NOTRUN -> [SKIP][242] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_pm@d3cold-mmap-vram.html
* igt@xe_pm@s3-d3cold-basic-exec:
- shard-adlp: NOTRUN -> [SKIP][243] ([Intel XE#2284] / [Intel XE#366])
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_pm@s3-d3cold-basic-exec.html
- shard-bmg: NOTRUN -> [SKIP][244] ([Intel XE#2284]) +1 other test skip
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@xe_pm@s3-d3cold-basic-exec.html
* igt@xe_pm@s3-mocs:
- shard-bmg: [PASS][245] -> [DMESG-FAIL][246] ([Intel XE#5545])
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@xe_pm@s3-mocs.html
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@xe_pm@s3-mocs.html
- shard-adlp: [PASS][247] -> [DMESG-FAIL][248] ([Intel XE#5545])
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-1/igt@xe_pm@s3-mocs.html
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@xe_pm@s3-mocs.html
* igt@xe_pm@s3-vm-bind-unbind-all:
- shard-lnl: NOTRUN -> [SKIP][249] ([Intel XE#584]) +3 other tests skip
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_pm@s3-vm-bind-unbind-all.html
* igt@xe_pxp@display-pxp-fb:
- shard-adlp: NOTRUN -> [SKIP][250] ([Intel XE#4733])
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_pxp@display-pxp-fb.html
* igt@xe_pxp@pxp-stale-bo-bind-post-rpm:
- shard-dg2-set2: NOTRUN -> [SKIP][251] ([Intel XE#4733]) +3 other tests skip
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html
- shard-adlp: NOTRUN -> [SKIP][252] ([Intel XE#4733] / [Intel XE#5594])
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html
* igt@xe_pxp@pxp-termination-key-update-post-suspend:
- shard-bmg: NOTRUN -> [SKIP][253] ([Intel XE#4733]) +3 other tests skip
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@xe_pxp@pxp-termination-key-update-post-suspend.html
* igt@xe_query@multigpu-query-config:
- shard-adlp: NOTRUN -> [SKIP][254] ([Intel XE#944]) +1 other test skip
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_query@multigpu-query-config.html
* igt@xe_query@multigpu-query-cs-cycles:
- shard-bmg: NOTRUN -> [SKIP][255] ([Intel XE#944]) +4 other tests skip
[255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@xe_query@multigpu-query-cs-cycles.html
* igt@xe_query@multigpu-query-pxp-status:
- shard-lnl: NOTRUN -> [SKIP][256] ([Intel XE#944]) +2 other tests skip
[256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@xe_query@multigpu-query-pxp-status.html
* igt@xe_query@multigpu-query-uc-fw-version-guc:
- shard-dg2-set2: NOTRUN -> [SKIP][257] ([Intel XE#944]) +4 other tests skip
[257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_query@multigpu-query-uc-fw-version-guc.html
* igt@xe_spin_batch@spin-mem-copy:
- shard-dg2-set2: NOTRUN -> [SKIP][258] ([Intel XE#4821])
[258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@xe_spin_batch@spin-mem-copy.html
* igt@xe_sriov_auto_provisioning@exclusive-ranges:
- shard-dg2-set2: NOTRUN -> [SKIP][259] ([Intel XE#4130])
[259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-433/igt@xe_sriov_auto_provisioning@exclusive-ranges.html
- shard-lnl: NOTRUN -> [SKIP][260] ([Intel XE#4130]) +1 other test skip
[260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@xe_sriov_auto_provisioning@exclusive-ranges.html
#### Possible fixes ####
* igt@core_hotunplug@unplug-rescan:
- shard-lnl: [ABORT][261] ([Intel XE#5826]) -> [PASS][262]
[261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-3/igt@core_hotunplug@unplug-rescan.html
[262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@core_hotunplug@unplug-rescan.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
- shard-dg2-set2: [INCOMPLETE][263] ([Intel XE#3862]) -> [PASS][264]
[263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-432/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
[264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2:
- shard-bmg: [FAIL][265] ([Intel XE#5376]) -> [PASS][266] +1 other test pass
[265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2.html
[266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:
- shard-bmg: [SKIP][267] ([Intel XE#2291]) -> [PASS][268] +2 other tests pass
[267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html
[268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-adlp: [ABORT][269] ([Intel XE#4847]) -> [PASS][270]
[269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@kms_fbcon_fbt@fbc-suspend.html
[270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_flip@2x-nonexisting-fb:
- shard-bmg: [SKIP][271] ([Intel XE#2316]) -> [PASS][272] +4 other tests pass
[271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_flip@2x-nonexisting-fb.html
[272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_flip@2x-nonexisting-fb.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
- shard-lnl: [FAIL][273] ([Intel XE#301]) -> [PASS][274]
[273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
[274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
* igt@kms_flip@plain-flip-interruptible@b-hdmi-a1:
- shard-adlp: [DMESG-WARN][275] ([Intel XE#4543]) -> [PASS][276] +10 other tests pass
[275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-4/igt@kms_flip@plain-flip-interruptible@b-hdmi-a1.html
[276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_flip@plain-flip-interruptible@b-hdmi-a1.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-adlp: [DMESG-FAIL][277] ([Intel XE#4543]) -> [PASS][278] +9 other tests pass
[277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
[278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
* igt@kms_plane@plane-panning-bottom-right-suspend:
- shard-adlp: [DMESG-WARN][279] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][280] +4 other tests pass
[279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-1/igt@kms_plane@plane-panning-bottom-right-suspend.html
[280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_plane@plane-panning-bottom-right-suspend.html
* igt@kms_plane_multiple@2x-tiling-4:
- shard-bmg: [SKIP][281] ([Intel XE#4596]) -> [PASS][282]
[281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-4.html
[282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_plane_multiple@2x-tiling-4.html
* igt@kms_psr@fbc-psr-suspend@edp-1:
- shard-lnl: [ABORT][283] ([Intel XE#2625] / [Intel XE#4847]) -> [PASS][284] +1 other test pass
[283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-7/igt@kms_psr@fbc-psr-suspend@edp-1.html
[284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_psr@fbc-psr-suspend@edp-1.html
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [FAIL][285] ([Intel XE#4459]) -> [PASS][286] +1 other test pass
[285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-2/igt@kms_vrr@cmrr@pipe-a-edp-1.html
[286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_vrr@cmrr@pipe-a-edp-1.html
* igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
- shard-dg2-set2: [SKIP][287] ([Intel XE#1392]) -> [PASS][288] +4 other tests pass
[287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-432/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
[288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-prefetch:
- shard-lnl: [FAIL][289] -> [PASS][290]
[289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-prefetch.html
[290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-prefetch.html
#### Warnings ####
* igt@kms_content_protection@legacy:
- shard-bmg: [SKIP][291] ([Intel XE#2341]) -> [FAIL][292] ([Intel XE#1178])
[291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_content_protection@legacy.html
[292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_content_protection@legacy.html
* igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
- shard-bmg: [ABORT][293] ([Intel XE#5826]) -> [SKIP][294] ([Intel XE#2291])
[293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-7/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html
[294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][295] ([Intel XE#301] / [Intel XE#3149]) -> [FAIL][296] ([Intel XE#301])
[295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-rmfb:
- shard-adlp: [DMESG-WARN][297] ([Intel XE#5208]) -> [DMESG-WARN][298] ([Intel XE#4543] / [Intel XE#5208])
[297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-4/igt@kms_flip@flip-vs-rmfb.html
[298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_flip@flip-vs-rmfb.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][299] ([Intel XE#2312]) -> [SKIP][300] ([Intel XE#2311]) +10 other tests skip
[299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
[300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
- shard-bmg: [SKIP][301] ([Intel XE#5390]) -> [SKIP][302] ([Intel XE#2312]) +1 other test skip
[301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html
[302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][303] ([Intel XE#2312]) -> [SKIP][304] ([Intel XE#5390])
[303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html
[304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][305] ([Intel XE#2311]) -> [SKIP][306] ([Intel XE#2312]) +11 other tests skip
[305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
[306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
- shard-bmg: [SKIP][307] ([Intel XE#2313]) -> [SKIP][308] ([Intel XE#2312]) +5 other tests skip
[307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
[308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
- shard-bmg: [SKIP][309] ([Intel XE#2312]) -> [SKIP][310] ([Intel XE#2313]) +3 other tests skip
[309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
[310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-adlp: [SKIP][311] ([Intel XE#5915]) -> [SKIP][312] ([Intel XE#836])
[311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][313] ([Intel XE#2426]) -> [FAIL][314] ([Intel XE#1729])
[313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern.html
[314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern.html
- shard-dg2-set2: [FAIL][315] ([Intel XE#1729]) -> [SKIP][316] ([Intel XE#362])
[315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-436/igt@kms_tiled_display@basic-test-pattern.html
[316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][317] ([Intel XE#2426]) -> [SKIP][318] ([Intel XE#2509])
[317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[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#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
[Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
[Intel XE#1131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1131
[Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1337
[Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
[Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
[Intel XE#1477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1477
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
[Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2248]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2248
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
[Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
[Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
[Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
[Intel XE#2375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2375
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
[Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2625
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
[Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
[Intel XE#2934]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2934
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
[Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
[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#3658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3658
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3768]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3768
[Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
[Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4298]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4298
[Intel XE#4359]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4359
[Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#4683]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4683
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4821
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4847]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4847
[Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
[Intel XE#4917]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4917
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
[Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
[Intel XE#5103]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5103
[Intel XE#5195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5195
[Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
[Intel XE#5249]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5249
[Intel XE#5376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5376
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5425
[Intel XE#5428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5428
[Intel XE#5530]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5530
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[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#5568]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5568
[Intel XE#5572]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5572
[Intel XE#5573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5573
[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#5594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5594
[Intel XE#5626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5626
[Intel XE#5745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5745
[Intel XE#5753]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5753
[Intel XE#5784]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5784
[Intel XE#5794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5794
[Intel XE#5826]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5826
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#5899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5899
[Intel XE#5915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5915
[Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
[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#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[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#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[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
Build changes
-------------
* IGT: IGT_8493 -> IGT_8494
* Linux: xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb -> xe-pw-149550v7
IGT_8493: 8493
IGT_8494: 8494
xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb: 7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb
xe-pw-149550v7: 149550v7
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/index.html
[-- Attachment #2: Type: text/html, Size: 108683 bytes --]
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: ✗ Xe.CI.Full: failure for MADVISE FOR XE (rev7)
2025-08-14 15:33 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-08-14 19:01 ` Matthew Brost
0 siblings, 0 replies; 41+ messages in thread
From: Matthew Brost @ 2025-08-14 19:01 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray
On Thu, Aug 14, 2025 at 03:33:38PM +0000, Patchwork wrote:
> == Series Details ==
>
> Series: MADVISE FOR XE (rev7)
> URL : https://patchwork.freedesktop.org/series/149550/
> State : failure
>
> == Summary ==
>
> CI Bug Log - changes from xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb_FULL -> xe-pw-149550v7_FULL
> ====================================================
>
> Summary
> -------
>
> **FAILURE**
>
> Serious unknown changes coming with xe-pw-149550v7_FULL absolutely need to be
> verified manually.
>
> If you think the reported changes have nothing to do with the changes
> introduced in xe-pw-149550v7_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-149550v7_FULL:
>
> ### IGT changes ###
>
> #### Possible regressions ####
>
> * igt@xe_exec_system_allocator@process-many-large-mmap-remap-dontunmap:
> - shard-bmg: [PASS][1] -> [ABORT][2]
> [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-2/igt@xe_exec_system_allocator@process-many-large-mmap-remap-dontunmap.html
> [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@xe_exec_system_allocator@process-many-large-mmap-remap-dontunmap.html
>
This might be a legitimate issue. On my BMG, I can run
xe_exec_system_allocator 100% reliably, so I suggest testing on BMG to
see if you can reproduce failures with xe_exec_system_allocator before
and after this series. If failures appear only after, we’ll need to fix
them. Let me know if you need any help with debugging—I’ve spent a long
time getting xe_exec_system_allocator stable.
Matt
>
> Known issues
> ------------
>
> Here are the changes found in xe-pw-149550v7_FULL that come from known issues:
>
> ### IGT changes ###
>
> #### Issues hit ####
>
> * igt@core_hotunplug@hotreplug-lateclose:
> - shard-adlp: [PASS][3] -> [ABORT][4] ([Intel XE#5826])
> [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-6/igt@core_hotunplug@hotreplug-lateclose.html
> [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@core_hotunplug@hotreplug-lateclose.html
>
> * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
> - shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#2233])
> [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
> - shard-lnl: NOTRUN -> [SKIP][6] ([Intel XE#1466])
> [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
>
> * igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-b-hdmi-a-1-y:
> - shard-adlp: NOTRUN -> [DMESG-WARN][7] ([Intel XE#4543]) +6 other tests dmesg-warn
> [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-b-hdmi-a-1-y.html
>
> * igt@kms_async_flips@invalid-async-flip-atomic:
> - shard-lnl: NOTRUN -> [SKIP][8] ([Intel XE#3768])
> [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_async_flips@invalid-async-flip-atomic.html
> - shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#3768])
> [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_async_flips@invalid-async-flip-atomic.html
>
> * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
> - shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2370])
> [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
>
> * igt@kms_big_fb@4-tiled-8bpp-rotate-270:
> - shard-dg2-set2: NOTRUN -> [SKIP][11] ([Intel XE#316]) +1 other test skip
> [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
>
> * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
> - shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1407]) +4 other tests skip
> [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
>
> * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
> - shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#3658])
> [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
>
> * igt@kms_big_fb@linear-64bpp-rotate-90:
> - shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2327]) +4 other tests skip
> [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_big_fb@linear-64bpp-rotate-90.html
>
> * igt@kms_big_fb@x-tiled-8bpp-rotate-0:
> - shard-adlp: [PASS][15] -> [DMESG-FAIL][16] ([Intel XE#4543]) +6 other tests dmesg-fail
> [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
> [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
>
> * igt@kms_big_fb@y-tiled-64bpp-rotate-0:
> - shard-adlp: NOTRUN -> [DMESG-FAIL][17] ([Intel XE#4543]) +1 other test dmesg-fail
> [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html
>
> * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
> - shard-lnl: NOTRUN -> [SKIP][18] ([Intel XE#1477])
> [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
>
> * igt@kms_big_fb@y-tiled-addfb-size-overflow:
> - shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#610])
> [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
>
> * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
> - shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#1124]) +15 other tests skip
> [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
>
> * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
> - shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#1124]) +11 other tests skip
> [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html
>
> * igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
> - shard-adlp: NOTRUN -> [SKIP][22] ([Intel XE#1124]) +5 other tests skip
> [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
>
> * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
> - shard-dg2-set2: NOTRUN -> [SKIP][23] ([Intel XE#1124]) +11 other tests skip
> [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
>
> * igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p:
> - shard-adlp: NOTRUN -> [SKIP][24] ([Intel XE#2191])
> [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
> - shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#2191])
> [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
>
> * igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
> - shard-bmg: [PASS][26] -> [SKIP][27] ([Intel XE#2314] / [Intel XE#2894])
> [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
> [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
>
> * igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p:
> - shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#2314] / [Intel XE#2894])
> [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html
> - shard-dg2-set2: NOTRUN -> [SKIP][29] ([Intel XE#2191])
> [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html
>
> * igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p:
> - shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#1512]) +1 other test skip
> [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p.html
>
> * igt@kms_bw@linear-tiling-2-displays-2560x1440p:
> - shard-adlp: NOTRUN -> [SKIP][31] ([Intel XE#367]) +4 other tests skip
> [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html
> - shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#367]) +5 other tests skip
> [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html
>
> * igt@kms_bw@linear-tiling-3-displays-2160x1440p:
> - shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#367]) +2 other tests skip
> [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
> - shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#367]) +3 other tests skip
> [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
>
> * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs:
> - shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#2887]) +18 other tests skip
> [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs.html
>
> * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
> - shard-adlp: NOTRUN -> [SKIP][36] ([Intel XE#2907]) +1 other test skip
> [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
> - shard-dg2-set2: NOTRUN -> [SKIP][37] ([Intel XE#2907]) +1 other test skip
> [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
>
> * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1:
> - shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#2669]) +7 other tests skip
> [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1.html
>
> * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs:
> - shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#2887]) +15 other tests skip
> [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs.html
>
> * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
> - shard-bmg: [PASS][40] -> [INCOMPLETE][41] ([Intel XE#3862]) +1 other test incomplete
> [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
> [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
>
> * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs:
> - shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#3432]) +2 other tests skip
> [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html
>
> * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc:
> - shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#3432]) +3 other tests skip
> [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc.html
>
> * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1:
> - shard-adlp: NOTRUN -> [SKIP][44] ([Intel XE#455] / [Intel XE#787]) +13 other tests skip
> [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1.html
>
> * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3:
> - shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2652] / [Intel XE#787]) +17 other tests skip
> [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3.html
>
> * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-6:
> - shard-dg2-set2: NOTRUN -> [SKIP][46] ([Intel XE#787]) +209 other tests skip
> [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-6.html
>
> * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-d-dp-2:
> - shard-dg2-set2: NOTRUN -> [SKIP][47] ([Intel XE#455] / [Intel XE#787]) +41 other tests skip
> [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-d-dp-2.html
>
> * igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1:
> - shard-adlp: NOTRUN -> [SKIP][48] ([Intel XE#787]) +20 other tests skip
> [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1.html
>
> * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
> - shard-dg2-set2: NOTRUN -> [INCOMPLETE][49] ([Intel XE#1727] / [Intel XE#3113])
> [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
>
> * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2:
> - shard-dg2-set2: NOTRUN -> [INCOMPLETE][50] ([Intel XE#3113])
> [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2.html
>
> * igt@kms_cdclk@plane-scaling:
> - shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#2724])
> [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_cdclk@plane-scaling.html
>
> * igt@kms_cdclk@plane-scaling@pipe-b-dp-4:
> - shard-dg2-set2: NOTRUN -> [SKIP][52] ([Intel XE#4416]) +3 other tests skip
> [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_cdclk@plane-scaling@pipe-b-dp-4.html
>
> * igt@kms_chamelium_audio@dp-audio:
> - shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#373]) +12 other tests skip
> [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_chamelium_audio@dp-audio.html
>
> * igt@kms_chamelium_audio@hdmi-audio-edid:
> - shard-adlp: NOTRUN -> [SKIP][54] ([Intel XE#373]) +5 other tests skip
> [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_chamelium_audio@hdmi-audio-edid.html
>
> * igt@kms_chamelium_color@ctm-0-25:
> - shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#306])
> [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_chamelium_color@ctm-0-25.html
>
> * igt@kms_chamelium_hpd@common-hpd-after-suspend:
> - shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#2252]) +10 other tests skip
> [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
>
> * igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode:
> - shard-dg2-set2: NOTRUN -> [SKIP][57] ([Intel XE#373]) +8 other tests skip
> [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html
>
> * igt@kms_content_protection@atomic-dpms:
> - shard-dg2-set2: NOTRUN -> [FAIL][58] ([Intel XE#1178]) +1 other test fail
> [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_content_protection@atomic-dpms.html
> - shard-lnl: NOTRUN -> [SKIP][59] ([Intel XE#3278])
> [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_content_protection@atomic-dpms.html
>
> * igt@kms_content_protection@atomic-dpms@pipe-a-dp-2:
> - shard-bmg: NOTRUN -> [FAIL][60] ([Intel XE#1178]) +2 other tests fail
> [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_content_protection@atomic-dpms@pipe-a-dp-2.html
>
> * igt@kms_content_protection@content-type-change:
> - shard-bmg: NOTRUN -> [SKIP][61] ([Intel XE#2341]) +1 other test skip
> [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_content_protection@content-type-change.html
>
> * igt@kms_cursor_crc@cursor-offscreen-256x85:
> - shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#2320]) +7 other tests skip
> [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_cursor_crc@cursor-offscreen-256x85.html
>
> * igt@kms_cursor_crc@cursor-onscreen-512x170:
> - shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#2321]) +2 other tests skip
> [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_cursor_crc@cursor-onscreen-512x170.html
>
> * igt@kms_cursor_crc@cursor-random-512x170:
> - shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#2321]) +1 other test skip
> [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_cursor_crc@cursor-random-512x170.html
> - shard-dg2-set2: NOTRUN -> [SKIP][65] ([Intel XE#308])
> [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_cursor_crc@cursor-random-512x170.html
>
> * igt@kms_cursor_crc@cursor-random-max-size:
> - shard-lnl: NOTRUN -> [SKIP][66] ([Intel XE#1424]) +7 other tests skip
> [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_cursor_crc@cursor-random-max-size.html
>
> * igt@kms_cursor_crc@cursor-sliding-512x170:
> - shard-adlp: NOTRUN -> [SKIP][67] ([Intel XE#308])
> [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_cursor_crc@cursor-sliding-512x170.html
>
> * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
> - shard-bmg: [PASS][68] -> [SKIP][69] ([Intel XE#2291])
> [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
> [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
>
> * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
> - shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#2291]) +1 other test skip
> [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
>
> * igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
> - shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#309]) +3 other tests skip
> [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
>
> * igt@kms_cursor_legacy@forked-move:
> - shard-bmg: NOTRUN -> [ABORT][72] ([Intel XE#5826]) +1 other test abort
> [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_cursor_legacy@forked-move.html
>
> * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
> - shard-dg2-set2: NOTRUN -> [SKIP][73] ([Intel XE#323])
> [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
> - shard-bmg: NOTRUN -> [SKIP][74] ([Intel XE#2286])
> [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
>
> * igt@kms_cursor_legacy@torture-move@pipe-a:
> - shard-lnl: NOTRUN -> [ABORT][75] ([Intel XE#5826]) +3 other tests abort
> [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_cursor_legacy@torture-move@pipe-a.html
>
> * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
> - shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#1508])
> [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
>
> * igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
> - shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#5428])
> [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
>
> * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3:
> - shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#1340])
> [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3.html
>
> * igt@kms_dsc@dsc-with-output-formats:
> - shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#2244]) +2 other tests skip
> [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_dsc@dsc-with-output-formats.html
>
> * igt@kms_dsc@dsc-with-output-formats-with-bpc:
> - shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#2244]) +3 other tests skip
> [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
>
> * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
> - shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#4422]) +1 other test skip
> [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
>
> * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
> - shard-adlp: NOTRUN -> [SKIP][82] ([Intel XE#4422])
> [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
>
> * igt@kms_fbcon_fbt@fbc-suspend:
> - shard-bmg: NOTRUN -> [SKIP][83] ([Intel XE#5425])
> [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_fbcon_fbt@fbc-suspend.html
>
> * igt@kms_feature_discovery@display-2x:
> - shard-bmg: [PASS][84] -> [SKIP][85] ([Intel XE#2373])
> [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-4/igt@kms_feature_discovery@display-2x.html
> [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_feature_discovery@display-2x.html
>
> * igt@kms_feature_discovery@dp-mst:
> - shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#2375])
> [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_feature_discovery@dp-mst.html
> - shard-dg2-set2: NOTRUN -> [SKIP][87] ([Intel XE#1137])
> [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_feature_discovery@dp-mst.html
>
> * igt@kms_flip@2x-blocking-absolute-wf_vblank:
> - shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#1421]) +3 other tests skip
> [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
>
> * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
> - shard-bmg: [PASS][89] -> [SKIP][90] ([Intel XE#2316]) +3 other tests skip
> [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html
> [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html
>
> * igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4:
> - shard-dg2-set2: [PASS][91] -> [INCOMPLETE][92] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
> [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-463/igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4.html
> [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_flip@2x-flip-vs-suspend@cd-hdmi-a6-dp4.html
>
> * igt@kms_flip@2x-nonexisting-fb-interruptible:
> - shard-adlp: NOTRUN -> [SKIP][93] ([Intel XE#310]) +2 other tests skip
> [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_flip@2x-nonexisting-fb-interruptible.html
>
> * igt@kms_flip@2x-plain-flip-ts-check-interruptible:
> - shard-bmg: NOTRUN -> [SKIP][94] ([Intel XE#2316])
> [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
>
> * igt@kms_flip@flip-vs-dpms-off-vs-modeset-interruptible@a-hdmi-a1:
> - shard-adlp: NOTRUN -> [INCOMPLETE][95] ([Intel XE#5753]) +1 other test incomplete
> [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_flip@flip-vs-dpms-off-vs-modeset-interruptible@a-hdmi-a1.html
>
> * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:
> - shard-lnl: [PASS][96] -> [FAIL][97] ([Intel XE#301])
> [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
> [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
>
> * igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1:
> - shard-adlp: [PASS][98] -> [DMESG-WARN][99] ([Intel XE#4543]) +4 other tests dmesg-warn
> [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
> [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
>
> * igt@kms_flip@flip-vs-expired-vblank@a-edp1:
> - shard-lnl: NOTRUN -> [FAIL][100] ([Intel XE#301]) +1 other test fail
> [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
>
> * igt@kms_flip@flip-vs-suspend-interruptible:
> - shard-adlp: [PASS][101] -> [DMESG-WARN][102] ([Intel XE#2953] / [Intel XE#4173]) +4 other tests dmesg-warn
> [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-2/igt@kms_flip@flip-vs-suspend-interruptible.html
> [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_flip@flip-vs-suspend-interruptible.html
>
> * igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling:
> - shard-lnl: NOTRUN -> [FAIL][103] ([Intel XE#4683]) +3 other tests fail
> [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling.html
>
> * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling:
> - shard-dg2-set2: NOTRUN -> [SKIP][104] ([Intel XE#455]) +14 other tests skip
> [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html
> - shard-lnl: NOTRUN -> [SKIP][105] ([Intel XE#1401] / [Intel XE#1745]) +2 other tests skip
> [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html
>
> * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode:
> - shard-lnl: NOTRUN -> [SKIP][106] ([Intel XE#1401]) +2 other tests skip
> [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode.html
>
> * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
> - shard-bmg: NOTRUN -> [SKIP][107] ([Intel XE#2293] / [Intel XE#2380]) +2 other tests skip
> [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
>
> * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
> - shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#2293]) +2 other tests skip
> [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html
>
> * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
> - shard-bmg: NOTRUN -> [SKIP][109] ([Intel XE#2380]) +1 other test skip
> [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
>
> * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling:
> - shard-lnl: NOTRUN -> [SKIP][110] ([Intel XE#1397] / [Intel XE#1745])
> [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
>
> * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode:
> - shard-lnl: NOTRUN -> [SKIP][111] ([Intel XE#1397])
> [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html
>
> * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
> - shard-adlp: NOTRUN -> [SKIP][112] ([Intel XE#651]) +8 other tests skip
> [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html
>
> * igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
> - shard-bmg: NOTRUN -> [SKIP][113] ([Intel XE#2311]) +35 other tests skip
> [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html
>
> * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
> - shard-bmg: NOTRUN -> [SKIP][114] ([Intel XE#5390]) +9 other tests skip
> [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
>
> * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
> - shard-bmg: NOTRUN -> [SKIP][115] ([Intel XE#2312]) +8 other tests skip
> [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
>
> * igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte:
> - shard-lnl: NOTRUN -> [SKIP][116] ([Intel XE#651]) +14 other tests skip
> [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte.html
>
> * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render:
> - shard-adlp: NOTRUN -> [SKIP][117] ([Intel XE#656]) +17 other tests skip
> [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render.html
>
> * igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc:
> - shard-dg2-set2: NOTRUN -> [SKIP][118] ([Intel XE#651]) +30 other tests skip
> [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc.html
>
> * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
> - shard-lnl: NOTRUN -> [SKIP][119] ([Intel XE#1469])
> [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
>
> * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
> - shard-bmg: NOTRUN -> [SKIP][120] ([Intel XE#2352]) +1 other test skip
> [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
> - shard-dg2-set2: NOTRUN -> [SKIP][121] ([Intel XE#658])
> [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
>
> * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move:
> - shard-dg2-set2: NOTRUN -> [SKIP][122] ([Intel XE#653]) +24 other tests skip
> [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move.html
>
> * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render:
> - shard-lnl: NOTRUN -> [SKIP][123] ([Intel XE#656]) +42 other tests skip
> [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html
>
> * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc:
> - shard-adlp: NOTRUN -> [SKIP][124] ([Intel XE#653]) +10 other tests skip
> [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html
> - shard-bmg: NOTRUN -> [SKIP][125] ([Intel XE#2313]) +34 other tests skip
> [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html
>
> * igt@kms_hdr@invalid-metadata-sizes:
> - shard-lnl: NOTRUN -> [SKIP][126] ([Intel XE#1503]) +1 other test skip
> [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_hdr@invalid-metadata-sizes.html
> - shard-bmg: [PASS][127] -> [SKIP][128] ([Intel XE#1503])
> [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-1/igt@kms_hdr@invalid-metadata-sizes.html
> [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_hdr@invalid-metadata-sizes.html
>
> * igt@kms_joiner@basic-big-joiner:
> - shard-adlp: NOTRUN -> [SKIP][129] ([Intel XE#346])
> [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_joiner@basic-big-joiner.html
> - shard-bmg: NOTRUN -> [SKIP][130] ([Intel XE#346])
> [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_joiner@basic-big-joiner.html
> - shard-dg2-set2: NOTRUN -> [SKIP][131] ([Intel XE#346])
> [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_joiner@basic-big-joiner.html
> - shard-lnl: NOTRUN -> [SKIP][132] ([Intel XE#346])
> [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_joiner@basic-big-joiner.html
>
> * igt@kms_joiner@basic-max-non-joiner:
> - shard-lnl: NOTRUN -> [SKIP][133] ([Intel XE#4298])
> [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_joiner@basic-max-non-joiner.html
>
> * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
> - shard-bmg: NOTRUN -> [SKIP][134] ([Intel XE#2934])
> [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
> - shard-lnl: NOTRUN -> [SKIP][135] ([Intel XE#2925])
> [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
>
> * igt@kms_panel_fitting@legacy:
> - shard-adlp: NOTRUN -> [SKIP][136] ([Intel XE#455]) +15 other tests skip
> [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_panel_fitting@legacy.html
> - shard-bmg: NOTRUN -> [SKIP][137] ([Intel XE#2486])
> [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_panel_fitting@legacy.html
>
> * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
> - shard-dg2-set2: NOTRUN -> [SKIP][138] ([Intel XE#4359])
> [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-433/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html
>
> * igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-0:
> - shard-lnl: NOTRUN -> [FAIL][139] ([Intel XE#5195]) +2 other tests fail
> [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-0.html
>
> * igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256:
> - shard-dg2-set2: NOTRUN -> [FAIL][140] ([Intel XE#616]) +3 other tests fail
> [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256.html
>
> * igt@kms_plane_lowres@tiling-4:
> - shard-lnl: NOTRUN -> [SKIP][141] ([Intel XE#599]) +3 other tests skip
> [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_plane_lowres@tiling-4.html
>
> * igt@kms_plane_multiple@2x-tiling-none:
> - shard-bmg: NOTRUN -> [SKIP][142] ([Intel XE#4596])
> [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-none.html
>
> * igt@kms_plane_multiple@2x-tiling-yf:
> - shard-adlp: NOTRUN -> [SKIP][143] ([Intel XE#4596])
> [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_plane_multiple@2x-tiling-yf.html
> - shard-bmg: NOTRUN -> [SKIP][144] ([Intel XE#5021])
> [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_plane_multiple@2x-tiling-yf.html
> - shard-dg2-set2: NOTRUN -> [SKIP][145] ([Intel XE#5021])
> [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@kms_plane_multiple@2x-tiling-yf.html
> - shard-lnl: NOTRUN -> [SKIP][146] ([Intel XE#4596])
> [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_plane_multiple@2x-tiling-yf.html
>
> * igt@kms_plane_multiple@tiling-yf:
> - shard-adlp: NOTRUN -> [SKIP][147] ([Intel XE#5020])
> [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_plane_multiple@tiling-yf.html
> - shard-bmg: NOTRUN -> [SKIP][148] ([Intel XE#5020])
> [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_plane_multiple@tiling-yf.html
> - shard-dg2-set2: NOTRUN -> [SKIP][149] ([Intel XE#5020])
> [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_plane_multiple@tiling-yf.html
> - shard-lnl: NOTRUN -> [SKIP][150] ([Intel XE#5020])
> [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_plane_multiple@tiling-yf.html
>
> * igt@kms_plane_scaling@2x-scaler-multi-pipe:
> - shard-adlp: NOTRUN -> [SKIP][151] ([Intel XE#309])
> [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
>
> * igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a:
> - shard-bmg: NOTRUN -> [SKIP][152] ([Intel XE#2763]) +9 other tests skip
> [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a.html
>
> * igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-b:
> - shard-lnl: NOTRUN -> [SKIP][153] ([Intel XE#2763]) +15 other tests skip
> [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-b.html
>
> * igt@kms_pm_backlight@bad-brightness:
> - shard-bmg: NOTRUN -> [SKIP][154] ([Intel XE#870])
> [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_pm_backlight@bad-brightness.html
> - shard-dg2-set2: NOTRUN -> [SKIP][155] ([Intel XE#870])
> [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@kms_pm_backlight@bad-brightness.html
>
> * igt@kms_pm_dc@dc5-dpms-negative:
> - shard-lnl: NOTRUN -> [SKIP][156] ([Intel XE#1131])
> [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_pm_dc@dc5-dpms-negative.html
>
> * igt@kms_pm_dc@dc5-psr:
> - shard-bmg: NOTRUN -> [SKIP][157] ([Intel XE#2392])
> [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_pm_dc@dc5-psr.html
> - shard-dg2-set2: NOTRUN -> [SKIP][158] ([Intel XE#1129])
> [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@kms_pm_dc@dc5-psr.html
>
> * igt@kms_pm_dc@dc5-retention-flops:
> - shard-dg2-set2: NOTRUN -> [SKIP][159] ([Intel XE#3309])
> [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@kms_pm_dc@dc5-retention-flops.html
> - shard-lnl: NOTRUN -> [SKIP][160] ([Intel XE#3309])
> [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_pm_dc@dc5-retention-flops.html
> - shard-adlp: NOTRUN -> [SKIP][161] ([Intel XE#3309])
> [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_pm_dc@dc5-retention-flops.html
> - shard-bmg: NOTRUN -> [SKIP][162] ([Intel XE#3309])
> [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@kms_pm_dc@dc5-retention-flops.html
>
> * igt@kms_pm_dc@dc6-dpms:
> - shard-lnl: [PASS][163] -> [FAIL][164] ([Intel XE#718]) +1 other test fail
> [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-2/igt@kms_pm_dc@dc6-dpms.html
> [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_pm_dc@dc6-dpms.html
>
> * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
> - shard-lnl: NOTRUN -> [SKIP][165] ([Intel XE#1439] / [Intel XE#836])
> [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
>
> * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
> - shard-lnl: NOTRUN -> [SKIP][166] ([Intel XE#1439] / [Intel XE#3141]) +1 other test skip
> [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
>
> * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
> - shard-dg2-set2: NOTRUN -> [SKIP][167] ([Intel XE#1489] / [Intel XE#5899]) +8 other tests skip
> [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
> - shard-lnl: NOTRUN -> [SKIP][168] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#5899]) +1 other test skip
> [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
>
> * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1:
> - shard-lnl: NOTRUN -> [SKIP][169] ([Intel XE#4608] / [Intel XE#5899]) +4 other tests skip
> [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html
>
> * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
> - shard-adlp: NOTRUN -> [SKIP][170] ([Intel XE#1489] / [Intel XE#5899]) +3 other tests skip
> [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html
>
> * igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area:
> - shard-lnl: NOTRUN -> [SKIP][171] ([Intel XE#2893] / [Intel XE#5899])
> [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area.html
>
> * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
> - shard-bmg: NOTRUN -> [SKIP][172] ([Intel XE#1489] / [Intel XE#5899]) +10 other tests skip
> [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html
>
> * igt@kms_psr2_su@frontbuffer-xrgb8888:
> - shard-lnl: NOTRUN -> [SKIP][173] ([Intel XE#1128] / [Intel XE#5899])
> [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html
> - shard-adlp: NOTRUN -> [SKIP][174] ([Intel XE#1122] / [Intel XE#5580] / [Intel XE#5899])
> [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html
> - shard-dg2-set2: NOTRUN -> [SKIP][175] ([Intel XE#1122] / [Intel XE#5899])
> [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_psr2_su@frontbuffer-xrgb8888.html
>
> * igt@kms_psr@fbc-psr-cursor-render:
> - shard-lnl: NOTRUN -> [SKIP][176] ([Intel XE#5784] / [Intel XE#5899]) +4 other tests skip
> [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@kms_psr@fbc-psr-cursor-render.html
>
> * igt@kms_psr@fbc-psr-primary-render:
> - shard-bmg: NOTRUN -> [SKIP][177] ([Intel XE#2234] / [Intel XE#2850] / [Intel XE#5899]) +16 other tests skip
> [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_psr@fbc-psr-primary-render.html
>
> * igt@kms_psr@fbc-psr2-cursor-plane-onoff:
> - shard-dg2-set2: NOTRUN -> [SKIP][178] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +11 other tests skip
> [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html
>
> * igt@kms_psr@fbc-psr2-dpms@edp-1:
> - shard-lnl: NOTRUN -> [SKIP][179] ([Intel XE#4609] / [Intel XE#5899]) +2 other tests skip
> [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@kms_psr@fbc-psr2-dpms@edp-1.html
>
> * igt@kms_psr@pr-primary-blt:
> - shard-lnl: NOTRUN -> [SKIP][180] ([Intel XE#1406] / [Intel XE#5899]) +6 other tests skip
> [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@kms_psr@pr-primary-blt.html
>
> * igt@kms_psr@psr-cursor-blt:
> - shard-adlp: NOTRUN -> [SKIP][181] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +6 other tests skip
> [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_psr@psr-cursor-blt.html
>
> * igt@kms_psr@psr2-primary-render:
> - shard-bmg: NOTRUN -> [SKIP][182] ([Intel XE#2234] / [Intel XE#5899])
> [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_psr@psr2-primary-render.html
>
> * igt@kms_rotation_crc@bad-tiling:
> - shard-dg2-set2: NOTRUN -> [SKIP][183] ([Intel XE#3414]) +1 other test skip
> [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@kms_rotation_crc@bad-tiling.html
>
> * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
> - shard-adlp: NOTRUN -> [SKIP][184] ([Intel XE#1127])
> [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
> - shard-lnl: NOTRUN -> [SKIP][185] ([Intel XE#3414] / [Intel XE#3904])
> [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
>
> * igt@kms_rotation_crc@sprite-rotation-90:
> - shard-bmg: NOTRUN -> [SKIP][186] ([Intel XE#3414] / [Intel XE#3904])
> [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_rotation_crc@sprite-rotation-90.html
>
> * igt@kms_scaling_modes@scaling-mode-center:
> - shard-bmg: NOTRUN -> [SKIP][187] ([Intel XE#2413])
> [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_scaling_modes@scaling-mode-center.html
>
> * igt@kms_setmode@clone-exclusive-crtc:
> - shard-lnl: NOTRUN -> [SKIP][188] ([Intel XE#1435])
> [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@kms_setmode@clone-exclusive-crtc.html
>
> * igt@kms_vrr@seamless-rr-switch-drrs:
> - shard-lnl: NOTRUN -> [SKIP][189] ([Intel XE#1499])
> [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_vrr@seamless-rr-switch-drrs.html
>
> * igt@kms_vrr@seamless-rr-switch-virtual:
> - shard-bmg: NOTRUN -> [SKIP][190] ([Intel XE#1499]) +1 other test skip
> [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_vrr@seamless-rr-switch-virtual.html
>
> * igt@xe_compute@ccs-mode-basic:
> - shard-bmg: NOTRUN -> [FAIL][191] ([Intel XE#5794])
> [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_compute@ccs-mode-basic.html
>
> * igt@xe_configfs@survivability-mode:
> - shard-dg2-set2: NOTRUN -> [SKIP][192] ([Intel XE#5249])
> [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@xe_configfs@survivability-mode.html
> - shard-lnl: NOTRUN -> [SKIP][193] ([Intel XE#5249])
> [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@xe_configfs@survivability-mode.html
> - shard-adlp: NOTRUN -> [SKIP][194] ([Intel XE#5249])
> [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_configfs@survivability-mode.html
>
> * igt@xe_copy_basic@mem-copy-linear-0x3fff:
> - shard-dg2-set2: NOTRUN -> [SKIP][195] ([Intel XE#1123])
> [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
> - shard-adlp: NOTRUN -> [SKIP][196] ([Intel XE#1123])
> [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
>
> * igt@xe_copy_basic@mem-set-linear-0xfd:
> - shard-dg2-set2: NOTRUN -> [SKIP][197] ([Intel XE#1126]) +1 other test skip
> [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_copy_basic@mem-set-linear-0xfd.html
>
> * igt@xe_eu_stall@blocking-read:
> - shard-adlp: NOTRUN -> [SKIP][198] ([Intel XE#5626])
> [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@xe_eu_stall@blocking-read.html
> - shard-dg2-set2: NOTRUN -> [SKIP][199] ([Intel XE#5626])
> [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_eu_stall@blocking-read.html
>
> * igt@xe_eudebug@vma-ufence-faultable:
> - shard-dg2-set2: NOTRUN -> [SKIP][200] ([Intel XE#4837]) +9 other tests skip
> [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@xe_eudebug@vma-ufence-faultable.html
> - shard-lnl: NOTRUN -> [SKIP][201] ([Intel XE#4837]) +13 other tests skip
> [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_eudebug@vma-ufence-faultable.html
>
> * igt@xe_eudebug_online@basic-breakpoint:
> - shard-bmg: NOTRUN -> [SKIP][202] ([Intel XE#4837]) +13 other tests skip
> [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@xe_eudebug_online@basic-breakpoint.html
> - shard-adlp: NOTRUN -> [SKIP][203] ([Intel XE#4837] / [Intel XE#5565]) +5 other tests skip
> [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_eudebug_online@basic-breakpoint.html
>
> * igt@xe_evict@evict-beng-large-multi-vm:
> - shard-adlp: NOTRUN -> [SKIP][204] ([Intel XE#261] / [Intel XE#5564]) +1 other test skip
> [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@xe_evict@evict-beng-large-multi-vm.html
>
> * igt@xe_evict@evict-beng-small:
> - shard-adlp: NOTRUN -> [SKIP][205] ([Intel XE#261] / [Intel XE#5564] / [Intel XE#688]) +1 other test skip
> [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_evict@evict-beng-small.html
>
> * igt@xe_evict_ccs@evict-overcommit-parallel-nofree-reopen:
> - shard-lnl: NOTRUN -> [SKIP][206] ([Intel XE#688]) +6 other tests skip
> [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-reopen.html
>
> * igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd:
> - shard-adlp: NOTRUN -> [SKIP][207] ([Intel XE#688])
> [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd.html
>
> * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-rebind:
> - shard-dg2-set2: NOTRUN -> [SKIP][208] ([Intel XE#1392])
> [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-rebind.html
>
> * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
> - shard-bmg: NOTRUN -> [SKIP][209] ([Intel XE#2322]) +11 other tests skip
> [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html
>
> * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue:
> - shard-dg2-set2: [PASS][210] -> [SKIP][211] ([Intel XE#1392]) +2 other tests skip
> [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-466/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue.html
> [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue.html
>
> * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr:
> - shard-adlp: NOTRUN -> [SKIP][212] ([Intel XE#1392] / [Intel XE#5575]) +4 other tests skip
> [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr.html
>
> * igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
> - shard-lnl: NOTRUN -> [SKIP][213] ([Intel XE#1392]) +9 other tests skip
> [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
>
> * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch:
> - shard-adlp: NOTRUN -> [SKIP][214] ([Intel XE#288] / [Intel XE#5561]) +10 other tests skip
> [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch.html
>
> * igt@xe_exec_fault_mode@twice-userptr-rebind-imm:
> - shard-dg2-set2: NOTRUN -> [SKIP][215] ([Intel XE#288]) +18 other tests skip
> [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-464/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
>
> * igt@xe_exec_mix_modes@exec-spinner-interrupted-lr:
> - shard-adlp: NOTRUN -> [SKIP][216] ([Intel XE#2360] / [Intel XE#5573])
> [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@xe_exec_mix_modes@exec-spinner-interrupted-lr.html
> - shard-dg2-set2: NOTRUN -> [SKIP][217] ([Intel XE#2360])
> [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@xe_exec_mix_modes@exec-spinner-interrupted-lr.html
>
> * igt@xe_exec_reset@parallel-gt-reset:
> - shard-adlp: [PASS][218] -> [DMESG-WARN][219] ([Intel XE#3876])
> [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@xe_exec_reset@parallel-gt-reset.html
> [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@xe_exec_reset@parallel-gt-reset.html
> - shard-bmg: NOTRUN -> [DMESG-WARN][220] ([Intel XE#3876])
> [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@xe_exec_reset@parallel-gt-reset.html
> - shard-dg2-set2: NOTRUN -> [DMESG-WARN][221] ([Intel XE#3876])
> [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@xe_exec_reset@parallel-gt-reset.html
>
> * igt@xe_exec_system_allocator@process-many-large-execqueues-new-bo-map-nomemset:
> - shard-dg2-set2: NOTRUN -> [SKIP][222] ([Intel XE#4915]) +222 other tests skip
> [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_exec_system_allocator@process-many-large-execqueues-new-bo-map-nomemset.html
>
> * igt@xe_exec_system_allocator@process-many-mmap-new-huge-nomemset:
> - shard-lnl: NOTRUN -> [SKIP][223] ([Intel XE#4943]) +30 other tests skip
> [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_exec_system_allocator@process-many-mmap-new-huge-nomemset.html
>
> * igt@xe_exec_system_allocator@threads-many-mmap-new-huge-nomemset:
> - shard-bmg: NOTRUN -> [SKIP][224] ([Intel XE#4943]) +24 other tests skip
> [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@xe_exec_system_allocator@threads-many-mmap-new-huge-nomemset.html
>
> * igt@xe_exec_system_allocator@twice-large-new-race:
> - shard-adlp: NOTRUN -> [SKIP][225] ([Intel XE#4915]) +151 other tests skip
> [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_exec_system_allocator@twice-large-new-race.html
>
> * igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
> - shard-adlp: NOTRUN -> [ABORT][226] ([Intel XE#4917] / [Intel XE#5530])
> [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
>
> * igt@xe_mmap@pci-membarrier-bad-pagesize:
> - shard-lnl: NOTRUN -> [SKIP][227] ([Intel XE#5100]) +1 other test skip
> [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_mmap@pci-membarrier-bad-pagesize.html
> - shard-adlp: NOTRUN -> [SKIP][228] ([Intel XE#5100])
> [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-9/igt@xe_mmap@pci-membarrier-bad-pagesize.html
>
> * igt@xe_mmap@vram:
> - shard-lnl: NOTRUN -> [SKIP][229] ([Intel XE#1416])
> [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-1/igt@xe_mmap@vram.html
>
> * igt@xe_module_load@force-load:
> - shard-bmg: NOTRUN -> [SKIP][230] ([Intel XE#2457])
> [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_module_load@force-load.html
>
> * igt@xe_oa@buffer-size:
> - shard-dg2-set2: NOTRUN -> [SKIP][231] ([Intel XE#5103])
> [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-434/igt@xe_oa@buffer-size.html
>
> * igt@xe_oa@invalid-create-userspace-config:
> - shard-dg2-set2: NOTRUN -> [SKIP][232] ([Intel XE#3573]) +5 other tests skip
> [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-466/igt@xe_oa@invalid-create-userspace-config.html
>
> * igt@xe_oa@oa-tlb-invalidate:
> - shard-lnl: NOTRUN -> [SKIP][233] ([Intel XE#2248])
> [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-5/igt@xe_oa@oa-tlb-invalidate.html
> - shard-bmg: NOTRUN -> [SKIP][234] ([Intel XE#2248])
> [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@xe_oa@oa-tlb-invalidate.html
>
> * igt@xe_oa@rc6-disable:
> - shard-adlp: NOTRUN -> [SKIP][235] ([Intel XE#3573]) +6 other tests skip
> [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_oa@rc6-disable.html
>
> * igt@xe_pat@display-vs-wb-transient:
> - shard-adlp: NOTRUN -> [SKIP][236] ([Intel XE#1337] / [Intel XE#5572])
> [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_pat@display-vs-wb-transient.html
> - shard-dg2-set2: NOTRUN -> [SKIP][237] ([Intel XE#1337])
> [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@xe_pat@display-vs-wb-transient.html
>
> * igt@xe_peer2peer@read:
> - shard-adlp: NOTRUN -> [SKIP][238] ([Intel XE#1061] / [Intel XE#5568])
> [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_peer2peer@read.html
> - shard-bmg: NOTRUN -> [SKIP][239] ([Intel XE#2427])
> [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@xe_peer2peer@read.html
> - shard-lnl: NOTRUN -> [SKIP][240] ([Intel XE#1061])
> [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@xe_peer2peer@read.html
>
> * igt@xe_pm@d3cold-mmap-system:
> - shard-dg2-set2: NOTRUN -> [SKIP][241] ([Intel XE#2284] / [Intel XE#366])
> [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_pm@d3cold-mmap-system.html
>
> * igt@xe_pm@d3cold-mmap-vram:
> - shard-lnl: NOTRUN -> [SKIP][242] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
> [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_pm@d3cold-mmap-vram.html
>
> * igt@xe_pm@s3-d3cold-basic-exec:
> - shard-adlp: NOTRUN -> [SKIP][243] ([Intel XE#2284] / [Intel XE#366])
> [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@xe_pm@s3-d3cold-basic-exec.html
> - shard-bmg: NOTRUN -> [SKIP][244] ([Intel XE#2284]) +1 other test skip
> [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@xe_pm@s3-d3cold-basic-exec.html
>
> * igt@xe_pm@s3-mocs:
> - shard-bmg: [PASS][245] -> [DMESG-FAIL][246] ([Intel XE#5545])
> [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@xe_pm@s3-mocs.html
> [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@xe_pm@s3-mocs.html
> - shard-adlp: [PASS][247] -> [DMESG-FAIL][248] ([Intel XE#5545])
> [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-1/igt@xe_pm@s3-mocs.html
> [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@xe_pm@s3-mocs.html
>
> * igt@xe_pm@s3-vm-bind-unbind-all:
> - shard-lnl: NOTRUN -> [SKIP][249] ([Intel XE#584]) +3 other tests skip
> [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_pm@s3-vm-bind-unbind-all.html
>
> * igt@xe_pxp@display-pxp-fb:
> - shard-adlp: NOTRUN -> [SKIP][250] ([Intel XE#4733])
> [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_pxp@display-pxp-fb.html
>
> * igt@xe_pxp@pxp-stale-bo-bind-post-rpm:
> - shard-dg2-set2: NOTRUN -> [SKIP][251] ([Intel XE#4733]) +3 other tests skip
> [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-432/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html
> - shard-adlp: NOTRUN -> [SKIP][252] ([Intel XE#4733] / [Intel XE#5594])
> [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html
>
> * igt@xe_pxp@pxp-termination-key-update-post-suspend:
> - shard-bmg: NOTRUN -> [SKIP][253] ([Intel XE#4733]) +3 other tests skip
> [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-8/igt@xe_pxp@pxp-termination-key-update-post-suspend.html
>
> * igt@xe_query@multigpu-query-config:
> - shard-adlp: NOTRUN -> [SKIP][254] ([Intel XE#944]) +1 other test skip
> [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@xe_query@multigpu-query-config.html
>
> * igt@xe_query@multigpu-query-cs-cycles:
> - shard-bmg: NOTRUN -> [SKIP][255] ([Intel XE#944]) +4 other tests skip
> [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@xe_query@multigpu-query-cs-cycles.html
>
> * igt@xe_query@multigpu-query-pxp-status:
> - shard-lnl: NOTRUN -> [SKIP][256] ([Intel XE#944]) +2 other tests skip
> [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-3/igt@xe_query@multigpu-query-pxp-status.html
>
> * igt@xe_query@multigpu-query-uc-fw-version-guc:
> - shard-dg2-set2: NOTRUN -> [SKIP][257] ([Intel XE#944]) +4 other tests skip
> [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_query@multigpu-query-uc-fw-version-guc.html
>
> * igt@xe_spin_batch@spin-mem-copy:
> - shard-dg2-set2: NOTRUN -> [SKIP][258] ([Intel XE#4821])
> [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@xe_spin_batch@spin-mem-copy.html
>
> * igt@xe_sriov_auto_provisioning@exclusive-ranges:
> - shard-dg2-set2: NOTRUN -> [SKIP][259] ([Intel XE#4130])
> [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-433/igt@xe_sriov_auto_provisioning@exclusive-ranges.html
> - shard-lnl: NOTRUN -> [SKIP][260] ([Intel XE#4130]) +1 other test skip
> [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@xe_sriov_auto_provisioning@exclusive-ranges.html
>
>
> #### Possible fixes ####
>
> * igt@core_hotunplug@unplug-rescan:
> - shard-lnl: [ABORT][261] ([Intel XE#5826]) -> [PASS][262]
> [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-3/igt@core_hotunplug@unplug-rescan.html
> [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-8/igt@core_hotunplug@unplug-rescan.html
>
> * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
> - shard-dg2-set2: [INCOMPLETE][263] ([Intel XE#3862]) -> [PASS][264]
> [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-432/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
> [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-436/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
>
> * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2:
> - shard-bmg: [FAIL][265] ([Intel XE#5376]) -> [PASS][266] +1 other test pass
> [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2.html
> [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2.html
>
> * igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:
> - shard-bmg: [SKIP][267] ([Intel XE#2291]) -> [PASS][268] +2 other tests pass
> [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html
> [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html
>
> * igt@kms_fbcon_fbt@fbc-suspend:
> - shard-adlp: [ABORT][269] ([Intel XE#4847]) -> [PASS][270]
> [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@kms_fbcon_fbt@fbc-suspend.html
> [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-4/igt@kms_fbcon_fbt@fbc-suspend.html
>
> * igt@kms_flip@2x-nonexisting-fb:
> - shard-bmg: [SKIP][271] ([Intel XE#2316]) -> [PASS][272] +4 other tests pass
> [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_flip@2x-nonexisting-fb.html
> [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-7/igt@kms_flip@2x-nonexisting-fb.html
>
> * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
> - shard-lnl: [FAIL][273] ([Intel XE#301]) -> [PASS][274]
> [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
> [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
>
> * igt@kms_flip@plain-flip-interruptible@b-hdmi-a1:
> - shard-adlp: [DMESG-WARN][275] ([Intel XE#4543]) -> [PASS][276] +10 other tests pass
> [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-4/igt@kms_flip@plain-flip-interruptible@b-hdmi-a1.html
> [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-6/igt@kms_flip@plain-flip-interruptible@b-hdmi-a1.html
>
> * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
> - shard-adlp: [DMESG-FAIL][277] ([Intel XE#4543]) -> [PASS][278] +9 other tests pass
> [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
> [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-3/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
>
> * igt@kms_plane@plane-panning-bottom-right-suspend:
> - shard-adlp: [DMESG-WARN][279] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][280] +4 other tests pass
> [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-1/igt@kms_plane@plane-panning-bottom-right-suspend.html
> [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-8/igt@kms_plane@plane-panning-bottom-right-suspend.html
>
> * igt@kms_plane_multiple@2x-tiling-4:
> - shard-bmg: [SKIP][281] ([Intel XE#4596]) -> [PASS][282]
> [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-4.html
> [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_plane_multiple@2x-tiling-4.html
>
> * igt@kms_psr@fbc-psr-suspend@edp-1:
> - shard-lnl: [ABORT][283] ([Intel XE#2625] / [Intel XE#4847]) -> [PASS][284] +1 other test pass
> [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-7/igt@kms_psr@fbc-psr-suspend@edp-1.html
> [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_psr@fbc-psr-suspend@edp-1.html
>
> * igt@kms_vrr@cmrr@pipe-a-edp-1:
> - shard-lnl: [FAIL][285] ([Intel XE#4459]) -> [PASS][286] +1 other test pass
> [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-2/igt@kms_vrr@cmrr@pipe-a-edp-1.html
> [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-7/igt@kms_vrr@cmrr@pipe-a-edp-1.html
>
> * igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
> - shard-dg2-set2: [SKIP][287] ([Intel XE#1392]) -> [PASS][288] +4 other tests pass
> [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-432/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
> [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-435/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
>
> * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-prefetch:
> - shard-lnl: [FAIL][289] -> [PASS][290]
> [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-prefetch.html
> [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-4/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-prefetch.html
>
>
> #### Warnings ####
>
> * igt@kms_content_protection@legacy:
> - shard-bmg: [SKIP][291] ([Intel XE#2341]) -> [FAIL][292] ([Intel XE#1178])
> [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_content_protection@legacy.html
> [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-3/igt@kms_content_protection@legacy.html
>
> * igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
> - shard-bmg: [ABORT][293] ([Intel XE#5826]) -> [SKIP][294] ([Intel XE#2291])
> [293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-7/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html
> [294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html
>
> * igt@kms_flip@flip-vs-expired-vblank-interruptible:
> - shard-lnl: [FAIL][295] ([Intel XE#301] / [Intel XE#3149]) -> [FAIL][296] ([Intel XE#301])
> [295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
> [296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
>
> * igt@kms_flip@flip-vs-rmfb:
> - shard-adlp: [DMESG-WARN][297] ([Intel XE#5208]) -> [DMESG-WARN][298] ([Intel XE#4543] / [Intel XE#5208])
> [297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-4/igt@kms_flip@flip-vs-rmfb.html
> [298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-2/igt@kms_flip@flip-vs-rmfb.html
>
> * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt:
> - shard-bmg: [SKIP][299] ([Intel XE#2312]) -> [SKIP][300] ([Intel XE#2311]) +10 other tests skip
> [299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
> [300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
>
> * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
> - shard-bmg: [SKIP][301] ([Intel XE#5390]) -> [SKIP][302] ([Intel XE#2312]) +1 other test skip
> [301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html
> [302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html
>
> * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc:
> - shard-bmg: [SKIP][303] ([Intel XE#2312]) -> [SKIP][304] ([Intel XE#5390])
> [303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html
> [304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html
>
> * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc:
> - shard-bmg: [SKIP][305] ([Intel XE#2311]) -> [SKIP][306] ([Intel XE#2312]) +11 other tests skip
> [305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
> [306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
>
> * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
> - shard-bmg: [SKIP][307] ([Intel XE#2313]) -> [SKIP][308] ([Intel XE#2312]) +5 other tests skip
> [307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
> [308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
>
> * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
> - shard-bmg: [SKIP][309] ([Intel XE#2312]) -> [SKIP][310] ([Intel XE#2313]) +3 other tests skip
> [309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
> [310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
>
> * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
> - shard-adlp: [SKIP][311] ([Intel XE#5915]) -> [SKIP][312] ([Intel XE#836])
> [311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-adlp-3/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
> [312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-adlp-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
>
> * igt@kms_tiled_display@basic-test-pattern:
> - shard-bmg: [SKIP][313] ([Intel XE#2426]) -> [FAIL][314] ([Intel XE#1729])
> [313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern.html
> [314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern.html
> - shard-dg2-set2: [FAIL][315] ([Intel XE#1729]) -> [SKIP][316] ([Intel XE#362])
> [315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-dg2-436/igt@kms_tiled_display@basic-test-pattern.html
> [316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
>
> * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
> - shard-bmg: [SKIP][317] ([Intel XE#2426]) -> [SKIP][318] ([Intel XE#2509])
> [317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
> [318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
>
>
> {name}: This element is suppressed. This means it is ignored when computing
> the status of the difference (SUCCESS, WARNING, or FAILURE).
>
> [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
> [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#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
> [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
> [Intel XE#1131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1131
> [Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
> [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
> [Intel XE#1337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1337
> [Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
> [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
> [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
> [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
> [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
> [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
> [Intel XE#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416
> [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
> [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
> [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
> [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
> [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
> [Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
> [Intel XE#1477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1477
> [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
> [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
> [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
> [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
> [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
> [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
> [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
> [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
> [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
> [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
> [Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
> [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
> [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
> [Intel XE#2248]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2248
> [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
> [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
> [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
> [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
> [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
> [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
> [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
> [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
> [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
> [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
> [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
> [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
> [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
> [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
> [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
> [Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
> [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
> [Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
> [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
> [Intel XE#2375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2375
> [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
> [Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
> [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
> [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
> [Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
> [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
> [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
> [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
> [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
> [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
> [Intel XE#2625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2625
> [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
> [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
> [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
> [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
> [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
> [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
> [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
> [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
> [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
> [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
> [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
> [Intel XE#2934]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2934
> [Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
> [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
> [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
> [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
> [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
> [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
> [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
> [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
> [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
> [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
> [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
> [Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
> [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
> [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
> [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
> [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
> [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#3658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3658
> [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
> [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
> [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
> [Intel XE#3768]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3768
> [Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
> [Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
> [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
> [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
> [Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
> [Intel XE#4298]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4298
> [Intel XE#4359]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4359
> [Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
> [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
> [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
> [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
> [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
> [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
> [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
> [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
> [Intel XE#4683]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4683
> [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
> [Intel XE#4821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4821
> [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
> [Intel XE#4847]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4847
> [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
> [Intel XE#4917]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4917
> [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
> [Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
> [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
> [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
> [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
> [Intel XE#5103]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5103
> [Intel XE#5195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5195
> [Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
> [Intel XE#5249]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5249
> [Intel XE#5376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5376
> [Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
> [Intel XE#5425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5425
> [Intel XE#5428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5428
> [Intel XE#5530]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5530
> [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
> [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#5568]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5568
> [Intel XE#5572]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5572
> [Intel XE#5573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5573
> [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#5594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5594
> [Intel XE#5626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5626
> [Intel XE#5745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5745
> [Intel XE#5753]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5753
> [Intel XE#5784]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5784
> [Intel XE#5794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5794
> [Intel XE#5826]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5826
> [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
> [Intel XE#5899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5899
> [Intel XE#5915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5915
> [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
> [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
> [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
> [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#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
> [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
> [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#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
> [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
>
>
> Build changes
> -------------
>
> * IGT: IGT_8493 -> IGT_8494
> * Linux: xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb -> xe-pw-149550v7
>
> IGT_8493: 8493
> IGT_8494: 8494
> xe-3545-7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb: 7f1ecbbddf3bf50bf5338e86514bf77c32eb4edb
> xe-pw-149550v7: 149550v7
>
> == Logs ==
>
> For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-149550v7/index.html
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v7 00/24] MADVISE FOR XE
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (28 preceding siblings ...)
2025-08-14 15:33 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-08-18 18:31 ` Ghimiray, Himal Prasad
2025-08-18 20:28 ` Rodrigo Vivi
30 siblings, 0 replies; 41+ messages in thread
From: Ghimiray, Himal Prasad @ 2025-08-18 18:31 UTC (permalink / raw)
To: intel-xe; +Cc: Matthew Brost, Thomas Hellström
On 14-08-2025 16:29, Himal Prasad Ghimiray wrote:
> -v8
> Define new function in gpuvm for madvise
> Fix tile check in ops_create
>
> -v7
> Change gpuvm layering on gpuvm_map_req struct
> Fix EAGAIN return on garbage collector splitting vma
>
> -v6
> Rebase on gpuvm patches
> Address review comments
>
> -v5
> Restore attributes to default after free from userspace
> Add defragment worker to merge cpu mirror vma with default attributes
> Avoid using VMA in uapi
> address review comments
>
> -v4:
> fix atomic policies
> fix attribute copy
> address review comments
>
> Provides a user API to assign attributes like pat_index, atomic
> operation type, and preferred location for SVM ranges.
> The Kernel Mode Driver (KMD) may split existing VMAs to cover input
> ranges, assign user-provided attributes, and invalidate existing PTEs so
> that the next page fault/prefetch can use the new attributes.
Implementation is tested with
https://github.com/intel/compute-runtime/pull/845
>
> Boris Brezillon (2):
> drm/gpuvm: Pass map arguments through a struct
> drm/gpuvm: Kill drm_gpuva_init()
>
> Himal Prasad Ghimiray (22):
> drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create
> drm/xe/uapi: Add madvise interface
> drm/xe/vm: Add attributes struct as member of vma
> drm/xe/vma: Move pat_index to vma attributes
> drm/xe/vma: Modify new_vma to accept struct xe_vma_mem_attr as
> parameter
> drm/gpusvm: Make drm_gpusvm_for_each_* macros public
> drm/xe/svm: Split system allocator vma incase of madvise call
> drm/xe: Allow CPU address mirror VMA unbind with gpu bindings for
> madvise
> drm/xe/svm: Add xe_svm_ranges_zap_ptes_in_range() for PTE zapping
> drm/xe: Implement madvise ioctl for xe
> drm/xe/svm: Add svm ranges migration policy on atomic access
> drm/xe/madvise: Update migration policy based on preferred location
> drm/xe/svm: Support DRM_XE_SVM_MEM_RANGE_ATTR_PAT memory attribute
> drm/xe/uapi: Add flag for consulting madvise hints on svm prefetch
> drm/xe/svm: Consult madvise preferred location in prefetch
> drm/xe/bo: Add attributes field to xe_bo
> drm/xe/bo: Update atomic_access attribute on madvise
> drm/xe/madvise: Skip vma invalidation if mem attr are unchanged
> drm/xe/vm: Add helper to check for default VMA memory attributes
> drm/xe: Reset VMA attributes to default in SVM garbage collector
> drm/xe: Enable madvise ioctl for xe
> drm/xe/uapi: Add UAPI for querying VMA count and memory attributes
>
> drivers/gpu/drm/drm_gpusvm.c | 122 ++-----
> drivers/gpu/drm/drm_gpuvm.c | 287 ++++++++++++----
> drivers/gpu/drm/imagination/pvr_vm.c | 15 +-
> drivers/gpu/drm/msm/msm_gem_vma.c | 33 +-
> drivers/gpu/drm/nouveau/nouveau_uvmm.c | 11 +-
> drivers/gpu/drm/panthor/panthor_mmu.c | 13 +-
> drivers/gpu/drm/xe/Makefile | 1 +
> drivers/gpu/drm/xe/xe_bo.c | 29 +-
> drivers/gpu/drm/xe/xe_bo_types.h | 8 +
> drivers/gpu/drm/xe/xe_device.c | 4 +
> drivers/gpu/drm/xe/xe_gt_pagefault.c | 35 +-
> drivers/gpu/drm/xe/xe_pt.c | 39 ++-
> drivers/gpu/drm/xe/xe_svm.c | 254 ++++++++++++--
> drivers/gpu/drm/xe/xe_svm.h | 23 ++
> drivers/gpu/drm/xe/xe_vm.c | 438 ++++++++++++++++++++++--
> drivers/gpu/drm/xe/xe_vm.h | 10 +-
> drivers/gpu/drm/xe/xe_vm_madvise.c | 445 +++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_vm_madvise.h | 15 +
> drivers/gpu/drm/xe/xe_vm_types.h | 57 +++-
> include/drm/drm_gpusvm.h | 70 ++++
> include/drm/drm_gpuvm.h | 38 ++-
> include/uapi/drm/xe_drm.h | 274 +++++++++++++++
> 22 files changed, 1922 insertions(+), 299 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/xe_vm_madvise.c
> create mode 100644 drivers/gpu/drm/xe/xe_vm_madvise.h
>
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v7 00/24] MADVISE FOR XE
2025-08-14 10:59 [PATCH v7 00/24] MADVISE FOR XE Himal Prasad Ghimiray
` (29 preceding siblings ...)
2025-08-18 18:31 ` [PATCH v7 00/24] MADVISE FOR XE Ghimiray, Himal Prasad
@ 2025-08-18 20:28 ` Rodrigo Vivi
30 siblings, 0 replies; 41+ messages in thread
From: Rodrigo Vivi @ 2025-08-18 20:28 UTC (permalink / raw)
To: Himal Prasad Ghimiray, dri-devel
Cc: intel-xe, Matthew Brost, Thomas Hellström
On Thu, Aug 14, 2025 at 04:29:26PM +0530, Himal Prasad Ghimiray wrote:
> -v8
> Define new function in gpuvm for madvise
> Fix tile check in ops_create
Please re-send this series again. But this time, ensure that dri-devel
is in the --to= of the series!
In 8 revisions, it looks like not a single time it was sent completely
to dri-devel. Big changes like this needs to be pretty visible.
Ensure to get all the appropriate acks in all the relevant patches as
well after resending to dri-devel.
Thanks,
Rodrigo.
>
> -v7
> Change gpuvm layering on gpuvm_map_req struct
> Fix EAGAIN return on garbage collector splitting vma
>
> -v6
> Rebase on gpuvm patches
> Address review comments
>
> -v5
> Restore attributes to default after free from userspace
> Add defragment worker to merge cpu mirror vma with default attributes
> Avoid using VMA in uapi
> address review comments
>
> -v4:
> fix atomic policies
> fix attribute copy
> address review comments
>
> Provides a user API to assign attributes like pat_index, atomic
> operation type, and preferred location for SVM ranges.
> The Kernel Mode Driver (KMD) may split existing VMAs to cover input
> ranges, assign user-provided attributes, and invalidate existing PTEs so
> that the next page fault/prefetch can use the new attributes.
>
> Boris Brezillon (2):
> drm/gpuvm: Pass map arguments through a struct
> drm/gpuvm: Kill drm_gpuva_init()
>
> Himal Prasad Ghimiray (22):
> drm/gpuvm: Introduce drm_gpuvm_madvise_ops_create
> drm/xe/uapi: Add madvise interface
> drm/xe/vm: Add attributes struct as member of vma
> drm/xe/vma: Move pat_index to vma attributes
> drm/xe/vma: Modify new_vma to accept struct xe_vma_mem_attr as
> parameter
> drm/gpusvm: Make drm_gpusvm_for_each_* macros public
> drm/xe/svm: Split system allocator vma incase of madvise call
> drm/xe: Allow CPU address mirror VMA unbind with gpu bindings for
> madvise
> drm/xe/svm: Add xe_svm_ranges_zap_ptes_in_range() for PTE zapping
> drm/xe: Implement madvise ioctl for xe
> drm/xe/svm: Add svm ranges migration policy on atomic access
> drm/xe/madvise: Update migration policy based on preferred location
> drm/xe/svm: Support DRM_XE_SVM_MEM_RANGE_ATTR_PAT memory attribute
> drm/xe/uapi: Add flag for consulting madvise hints on svm prefetch
> drm/xe/svm: Consult madvise preferred location in prefetch
> drm/xe/bo: Add attributes field to xe_bo
> drm/xe/bo: Update atomic_access attribute on madvise
> drm/xe/madvise: Skip vma invalidation if mem attr are unchanged
> drm/xe/vm: Add helper to check for default VMA memory attributes
> drm/xe: Reset VMA attributes to default in SVM garbage collector
> drm/xe: Enable madvise ioctl for xe
> drm/xe/uapi: Add UAPI for querying VMA count and memory attributes
>
> drivers/gpu/drm/drm_gpusvm.c | 122 ++-----
> drivers/gpu/drm/drm_gpuvm.c | 287 ++++++++++++----
> drivers/gpu/drm/imagination/pvr_vm.c | 15 +-
> drivers/gpu/drm/msm/msm_gem_vma.c | 33 +-
> drivers/gpu/drm/nouveau/nouveau_uvmm.c | 11 +-
> drivers/gpu/drm/panthor/panthor_mmu.c | 13 +-
> drivers/gpu/drm/xe/Makefile | 1 +
> drivers/gpu/drm/xe/xe_bo.c | 29 +-
> drivers/gpu/drm/xe/xe_bo_types.h | 8 +
> drivers/gpu/drm/xe/xe_device.c | 4 +
> drivers/gpu/drm/xe/xe_gt_pagefault.c | 35 +-
> drivers/gpu/drm/xe/xe_pt.c | 39 ++-
> drivers/gpu/drm/xe/xe_svm.c | 254 ++++++++++++--
> drivers/gpu/drm/xe/xe_svm.h | 23 ++
> drivers/gpu/drm/xe/xe_vm.c | 438 ++++++++++++++++++++++--
> drivers/gpu/drm/xe/xe_vm.h | 10 +-
> drivers/gpu/drm/xe/xe_vm_madvise.c | 445 +++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_vm_madvise.h | 15 +
> drivers/gpu/drm/xe/xe_vm_types.h | 57 +++-
> include/drm/drm_gpusvm.h | 70 ++++
> include/drm/drm_gpuvm.h | 38 ++-
> include/uapi/drm/xe_drm.h | 274 +++++++++++++++
> 22 files changed, 1922 insertions(+), 299 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/xe_vm_madvise.c
> create mode 100644 drivers/gpu/drm/xe/xe_vm_madvise.h
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 41+ messages in thread