drm/exec: drm_exec polishing
Subsystems (7)
Thomas Hellström
maintainerv2 cover drm/exec: drm_exec polishing
During the work towards enabling exhaustive eviction using full ww locking in TTM, Christian indicated that the path for the drm_exec moving forward was to be a full drm_exec helper with things like userptr validation rather than a WW transaction abstraction. The idea was then briefly discussed to craft a WW transaction helper and then subclass that with drm_exec with the idea that the WW transaction helper could be used in TTM for eviction and for other uses that didn't mandate a full exec sequence.
Regardless whether that actually happens or not, this series aims to clean up abuses of drm_exec internals in drivers so that future development of drm_exec isn't blocked by such driver usage.
Except for patch 2 which is a small cleanup only.
v2:
- An drm/msm patch was already merged.
- Use a unique id for the loop variable (patch 1) (Christian)
- Move assignment to declaration (patch 2) (Christian)
- Declare the retry pointer as void *const. (patch 2)
- Only allow if the drm_exec context is newly initialized. (patch 3) (Christian)
- Fix amdgpu compile error (patch 4) (Intel CI)
- Update the commit message (patch 4)
Thomas Hellström (4):
drm/exec: Remove the index parameter from
drm_exec_for_each_locked_obj[_reverse]
drm/exec: Make the drm_exec_until_all_locked() macro more readable drm/exec, drm/xe: Avoid abusing the drm_exec retry pointer drm/exec, drm/xe, drm/amdgpu: Add an accessor for struct
drm_exec::ticket
.../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 15 ++-- .../drm/amd/amdgpu/amdgpu_eviction_fence.c | 3 +- drivers/gpu/drm/drm_exec.c | 9 +-- drivers/gpu/drm/drm_gpuvm.c | 3 +- drivers/gpu/drm/xe/xe_validation.c | 4 +- drivers/gpu/drm/xe/xe_validation.h | 2 +- drivers/gpu/drm/xe/xe_vm.c | 3 +- include/drm/drm_exec.h | 71 ++++++++++++++----- 9 files changed, 70 insertions(+), 44 deletions(-)
Signature · 1 line
2.54.0
Thomas Hellström
maintainerPATCH v2 1/4 drm/exec: Remove the index parameter from drm_exec_for_each_locked_obj[_reverse]
Nobody makes any use of it. Possible internal future users can instead use the _index variable. External users shouldn't use it since the array it's pointing into is internal drm_exec state.
v2:
- Use a unique id for the loop variable (Christian)
--- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 9 +++------ .../drm/amd/amdgpu/amdgpu_eviction_fence.c | 3 +-- drivers/gpu/drm/drm_exec.c | 6 ++---- drivers/gpu/drm/drm_gpuvm.c | 3 +-- drivers/gpu/drm/xe/xe_vm.c | 3 +-- include/drm/drm_exec.h | 20 +++++++++++-------- 6 files changed, 20 insertions(+), 24 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +3 -6
@@ -850,7 +850,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,struct amdgpu_vm *vm = &fpriv->vm;struct amdgpu_bo_list_entry *e;struct drm_gem_object *obj; -unsigned long index;unsigned int i;int r;
@@ -961,7 +960,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p, goto out_free_user_pages; } -drm_exec_for_each_locked_object (&p->exec, index, obj) { +drm_exec_for_each_locked_object (&p->exec, obj) { r =amdgpu_cs_bo_validate (p,gem_to_amdgpu_bo (obj));if (unlikely (r)) goto out_free_user_pages;
@@ -1201,7 +1200,6 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p)struct drm_gpu_scheduler *sched;struct drm_gem_object *obj;struct dma_fence *fence; -unsigned long index;unsigned int i;int r;
@@ -1212,7 +1210,7 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p)return r; } -drm_exec_for_each_locked_object (&p->exec, index, obj) { +drm_exec_for_each_locked_object (&p->exec, obj) {struct amdgpu_bo *bo =gem_to_amdgpu_bo (obj);struct dma_resv *resv = bo->tbo.base.resv;
@@ -1281,7 +1279,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,struct amdgpu_job *leader = p->gang_leader;struct amdgpu_bo_list_entry *e;struct drm_gem_object *gobj; -unsigned long index;unsigned int i;uint64_t seq;int r;
@@ -1331,7 +1328,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, } p->fence =dma_fence_get (&leader->base.s_fence->finished); -drm_exec_for_each_locked_object (&p->exec, index, gobj) { +drm_exec_for_each_locked_object (&p->exec, gobj) {ttm_bo_move_to_lru_tail_unlocked (&gem_to_amdgpu_bo (gobj)->tbo);
drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c +1 -2
@@ -121,7 +121,6 @@ int amdgpu_evf_mgr_rearm(struct amdgpu_eviction_fence_mgr *evf_mgr, {struct amdgpu_eviction_fence *ev_fence;struct drm_gem_object *obj; -unsigned long index;/* Create and initialize a new eviction fence */ ev_fence =kzalloc_obj (*ev_fence);
@@ -140,7 +139,7 @@ int amdgpu_evf_mgr_rearm(struct amdgpu_eviction_fence_mgr *evf_mgr, evf_mgr->ev_fence = &ev_fence->base;/* And add it to all existing BOs */ -drm_exec_for_each_locked_object (exec, index, obj) { +drm_exec_for_each_locked_object (exec, obj) {struct amdgpu_bo *bo =gem_to_amdgpu_bo (obj);amdgpu_evf_mgr_attach_fence (evf_mgr, bo);
drivers/gpu/drm/drm_exec.c +2 -4
@@ -24,7 +24,6 @@* * struct drm_gem_object *obj; * struct drm_exec exec; -* unsigned long index; * int ret; * * drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT);
@@ -40,7 +39,7 @@* goto error; * } * -* drm_exec_for_each_locked_object(&exec, index, obj) { +* drm_exec_for_each_locked_object(&exec, obj) { * dma_resv_add_fence(obj->resv, fence, DMA_RESV_USAGE_READ); * ... * }
@@ -56,9 +55,8 @@static void drm_exec_unlock_all (struct drm_exec *exec) {struct drm_gem_object *obj; -unsigned long index; -drm_exec_for_each_locked_object_reverse (exec, index, obj) { +drm_exec_for_each_locked_object_reverse (exec, obj) {dma_resv_unlock (obj->resv);drm_gem_object_put (obj); }
drivers/gpu/drm/drm_gpuvm.c +1 -2
@@ -1557,9 +1557,8 @@ drm_gpuvm_resv_add_fence(struct drm_gpuvm *gpuvm, enum dma_resv_usage extobj_usage) {struct drm_gem_object *obj; -unsigned long index; -drm_exec_for_each_locked_object (exec, index, obj) { +drm_exec_for_each_locked_object (exec, obj) {dma_resv_assert_held (obj->resv); dma_resv_add_fence(obj->resv, fence, drm_gpuvm_is_extobj(gpuvm, obj) ?
drivers/gpu/drm/xe/xe_vm.c +1 -2
@@ -373,7 +373,6 @@ int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec, unsigned int num_fences) {struct drm_gem_object *obj; -unsigned long index;int ret; do {
@@ -386,7 +385,7 @@ int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,return ret; }while (!list_empty (&vm->gpuvm.evict.list)); -drm_exec_for_each_locked_object (exec, index, obj) { +drm_exec_for_each_locked_object (exec, obj) { ret =dma_resv_reserve_fences (obj->resv, num_fences);if (ret)return ret;
include/drm/drm_exec.h +12 -8
@@ -65,31 +65,35 @@ drm_exec_obj(struct drm_exec *exec, unsigned long index)return index < exec->num_objects ? exec->objects[index] :NULL ; } +/* Helper for drm_exec_for_each_locked_object(). Internal use only. */ +#define __drm_exec_for_each_locked_object (exec, obj, __index) \ + for (unsigned long __index = 0; ((obj) = drm_exec_obj(exec, __index)); ++__index)/** * drm_exec_for_each_locked_object - iterate over all the locked objects * @exec: drm_exec object -* @index: unsigned long index for the iteration * @obj: the current GEM object * * Iterate over all the locked GEM objects inside the drm_exec object. */ -#define drm_exec_for_each_locked_object (exec, index, obj) \ - for ((index) = 0; ((obj) = drm_exec_obj(exec, index)); ++(index)) +#define drm_exec_for_each_locked_object (exec, obj) \ + __drm_exec_for_each_locked_object(exec, obj, __UNIQUE_ID(drm_exec)) +/* Helper for drm_exec_for_each_locked_object_reverse(). Internal use only. */ +#define __drm_exec_for_each_locked_object_reverse (exec, obj, __index) \ + for (unsigned long __index = (exec)->num_objects - 1; \ + ((obj) = drm_exec_obj(exec, __index)); --__index)/** * drm_exec_for_each_locked_object_reverse - iterate over all the locked * objects in reverse locking order * @exec: drm_exec object -* @index: unsigned long index for the iteration * @obj: the current GEM object * * Iterate over all the locked GEM objects inside the drm_exec object in -* reverse locking order. Note that @index may go below zero and wrap, +* reverse locking order. Note that the internal index may wrap around, * but that will be caught by drm_exec_obj(), returning a NULL object. */ -#define drm_exec_for_each_locked_object_reverse (exec, index, obj) \ - for ((index) = (exec)->num_objects - 1; \ - ((obj) = drm_exec_obj(exec, index)); --(index)) +#define drm_exec_for_each_locked_object_reverse (exec, obj) \ + __drm_exec_for_each_locked_object_reverse(exec, obj, __UNIQUE_ID(drm_exec))/** * drm_exec_until_all_locked - loop until all GEM objects are locked
Signature · 1 line
2.54.0
Re: [PATCH v2 1/4] drm/exec: Remove the index parameter from drm_exec_for_each_locked_obj[_reverse]
Quoted 9 lines · Thomas Hellström
Nobody makes any use of it. Possible internal future users can instead use the
_indexvariable. External users shouldn't use it since the array it's pointing into is internaldrm_execstate.v2:
- Use a unique id for the loop variable (Christian)Assisted-by GitHub Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström <[email protected]>
Quoted 201 lines
--- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 9 +++------ .../drm/amd/amdgpu/amdgpu_eviction_fence.c | 3 +-- drivers/gpu/drm/drm_exec.c | 6 ++---- drivers/gpu/drm/drm_gpuvm.c | 3 +-- drivers/gpu/drm/xe/xe_vm.c | 3 +-- include/drm/drm_exec.h | 20 +++++++++++-------- 6 files changed, 20 insertions(+), 24 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +3
-6@@ -850,7 +850,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,struct amdgpu_vm *vm = &fpriv->vm;struct amdgpu_bo_list_entry *e;struct drm_gem_object *obj; -unsigned long index;unsigned int i;int r;@@ -961,7 +960,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p, goto out_free_user_pages; } -drm_exec_for_each_locked_object (&p->exec, index, obj) { +drm_exec_for_each_locked_object (&p->exec, obj) { r =amdgpu_cs_bo_validate (p,gem_to_amdgpu_bo (obj));if (unlikely (r)) goto out_free_user_pages;@@ -1201,7 +1200,6 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p)struct drm_gpu_scheduler *sched;struct drm_gem_object *obj;struct dma_fence *fence; -unsigned long index;unsigned int i;int r;@@ -1212,7 +1210,7 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p)return r; } -drm_exec_for_each_locked_object (&p->exec, index, obj) { +drm_exec_for_each_locked_object (&p->exec, obj) {struct amdgpu_bo *bo =gem_to_amdgpu_bo (obj);struct dma_resv *resv = bo->tbo.base.resv;@@ -1281,7 +1279,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,struct amdgpu_job *leader = p->gang_leader;struct amdgpu_bo_list_entry *e;struct drm_gem_object *gobj; -unsigned long index;unsigned int i;uint64_t seq;int r;@@ -1331,7 +1328,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, } p->fence =dma_fence_get (&leader->base.s_fence->finished); -drm_exec_for_each_locked_object (&p->exec, index, gobj) { +drm_exec_for_each_locked_object (&p->exec, gobj) {ttm_bo_move_to_lru_tail_unlocked (&gem_to_amdgpu_bo (gobj)->tbo);drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c +1
-2@@ -121,7 +121,6 @@ int amdgpu_evf_mgr_rearm(struct amdgpu_eviction_fence_mgr *evf_mgr, {struct amdgpu_eviction_fence *ev_fence;struct drm_gem_object *obj; -unsigned long index;/* Create and initialize a new eviction fence */ ev_fence =kzalloc_obj (*ev_fence);@@ -140,7 +139,7 @@ int amdgpu_evf_mgr_rearm(struct amdgpu_eviction_fence_mgr *evf_mgr, evf_mgr->ev_fence = &ev_fence->base;/* And add it to all existing BOs */ -drm_exec_for_each_locked_object (exec, index, obj) { +drm_exec_for_each_locked_object (exec, obj) {struct amdgpu_bo *bo =gem_to_amdgpu_bo (obj);amdgpu_evf_mgr_attach_fence (evf_mgr, bo);drivers/gpu/drm/drm_exec.c +2
-4@@ -24,7 +24,6 @@* * struct drm_gem_object *obj; * struct drm_exec exec; -* unsigned long index; * int ret; * * drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT); @@ -40,7 +39,7 @@* goto error; * } * -* drm_exec_for_each_locked_object(&exec, index, obj) { +* drm_exec_for_each_locked_object(&exec, obj) { * dma_resv_add_fence(obj->resv, fence, DMA_RESV_USAGE_READ); * ... * } @@ -56,9 +55,8 @@static void drm_exec_unlock_all (struct drm_exec *exec) {struct drm_gem_object *obj; -unsigned long index; -drm_exec_for_each_locked_object_reverse (exec, index, obj) { +drm_exec_for_each_locked_object_reverse (exec, obj) {dma_resv_unlock (obj->resv);drm_gem_object_put (obj); }drivers/gpu/drm/drm_gpuvm.c +1
-2@@ -1557,9 +1557,8 @@ drm_gpuvm_resv_add_fence(struct drm_gpuvm *gpuvm, enum dma_resv_usage extobj_usage) {struct drm_gem_object *obj; -unsigned long index; -drm_exec_for_each_locked_object (exec, index, obj) { +drm_exec_for_each_locked_object (exec, obj) {dma_resv_assert_held (obj->resv); dma_resv_add_fence(obj->resv, fence, drm_gpuvm_is_extobj(gpuvm, obj) ?drivers/gpu/drm/xe/xe_vm.c +1
-2@@ -373,7 +373,6 @@ int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec, unsigned int num_fences) {struct drm_gem_object *obj; -unsigned long index;int ret; do {@@ -386,7 +385,7 @@ int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,return ret; }while (!list_empty (&vm->gpuvm.evict.list)); -drm_exec_for_each_locked_object (exec, index, obj) { +drm_exec_for_each_locked_object (exec, obj) { ret =dma_resv_reserve_fences (obj->resv, num_fences);if (ret)return ret;include/drm/drm_exec.h +12
-8@@ -65,31 +65,35 @@ drm_exec_obj(struct drm_exec *exec, unsigned long index)return index < exec->num_objects ? exec->objects[index] :NULL ; } +/* Helper for drm_exec_for_each_locked_object(). Internal use only. */ +#define __drm_exec_for_each_locked_object (exec, obj, __index) \ + for (unsigned long __index = 0; ((obj) = drm_exec_obj(exec, __index)); ++__index)/** * drm_exec_for_each_locked_object - iterate over all the locked objects * @exec: drm_exec object -* @index: unsigned long index for the iteration * @obj: the current GEM object * * Iterate over all the locked GEM objects inside the drm_exec object. */ -#define drm_exec_for_each_locked_object (exec, index, obj) \ - for ((index) = 0; ((obj) = drm_exec_obj(exec, index)); ++(index)) +#define drm_exec_for_each_locked_object (exec, obj) \ + __drm_exec_for_each_locked_object(exec, obj, __UNIQUE_ID(drm_exec)) +/* Helper for drm_exec_for_each_locked_object_reverse(). Internal use only. */ +#define __drm_exec_for_each_locked_object_reverse (exec, obj, __index) \ + for (unsigned long __index = (exec)->num_objects - 1; \ + ((obj) = drm_exec_obj(exec, __index)); --__index)/** * drm_exec_for_each_locked_object_reverse - iterate over all the locked * objects in reverse locking order * @exec: drm_exec object -* @index: unsigned long index for the iteration * @obj: the current GEM object * * Iterate over all the locked GEM objects inside the drm_exec object in -* reverse locking order. Note that @index may go below zero and wrap, +* reverse locking order. Note that the internal index may wrap around, * but that will be caught by drm_exec_obj(), returning a NULL object. */ -#define drm_exec_for_each_locked_object_reverse (exec, index, obj) \ - for ((index) = (exec)->num_objects - 1; \ - ((obj) = drm_exec_obj(exec, index)); --(index)) +#define drm_exec_for_each_locked_object_reverse (exec, obj) \ + __drm_exec_for_each_locked_object_reverse(exec, obj, __UNIQUE_ID(drm_exec))/** * drm_exec_until_all_locked - loop until all GEM objects are locked
Thomas Hellström
maintainerPATCH v2 2/4 drm/exec: Make the drm_exec_until_all_locked() macro more readable
In reply to Thomas HellströmUse __UNIQUE_ID as done elsewhere in the kernel rather than a hand-rolled __PASTE to craft a unique id.
Also use __maybe_unused rather than (void) to signify that a variable, althrough written to, may not actually be used.
v2:
- Move assignment to declaration (Christian)
- Declare the retry pointer as void *const.
--- include/drm/drm_exec.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)
include/drm/drm_exec.h +12 -9
@@ -95,6 +95,17 @@ drm_exec_obj(struct drm_exec *exec, unsigned long index)#define drm_exec_for_each_locked_object_reverse (exec, obj) \ __drm_exec_for_each_locked_object_reverse(exec, obj, __UNIQUE_ID(drm_exec)) +/* +* Helper to drm_exec_until_all_locked(). Don't use directly. +* +* Since labels can't be defined local to the loop's body we use a jump pointer +* to make sure that the retry is only used from within the loop's body. +*/ +#define __drm_exec_until_all_locked (exec, _label) \ +_label: \ + for (void *const __maybe_unused __drm_exec_retry_ptr = &&_label; \ + drm_exec_cleanup(exec);) +/** * drm_exec_until_all_locked - loop until all GEM objects are locked * @exec: drm_exec object
@@ -102,17 +113,9 @@ drm_exec_obj(struct drm_exec *exec, unsigned long index)* Core functionality of the drm_exec object. Loops until all GEM objects are * locked and no more contention exists. At the beginning of the loop it is * guaranteed that no GEM object is locked. -* -* Since labels can't be defined local to the loops body we use a jump pointer -* to make sure that the retry is only used from within the loops body. */ #define drm_exec_until_all_locked (exec) \ -__PASTE(__drm_exec_, __LINE__): \ - for (void *__drm_exec_retry_ptr; ({ \ - __drm_exec_retry_ptr = &&__PASTE(__drm_exec_, __LINE__);\ - (void)__drm_exec_retry_ptr; \ - drm_exec_cleanup(exec); \ - });) + __drm_exec_until_all_locked(exec, __UNIQUE_ID(drm_exec))/** * drm_exec_retry_on_contention - restart the loop to grap all locks
Signature · 1 line
2.54.0
Re: [PATCH v2 2/4] drm/exec: Make the drm_exec_until_all_locked() macro more readable
Quoted 11 lines · Thomas Hellström
Use
__UNIQUE_IDas done elsewhere in the kernel rather than a hand-rolled__PASTEto craft a unique id.Also use
__maybe_unusedrather than (void) to signify that a variable, althrough written to, may not actually be used.v2:
- Move assignment to declaration (Christian)
- Declare the retry pointer as void *const.Signed-off-by Thomas Hellström <[email protected]>
Quoted 45 lines
--- include/drm/drm_exec.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)include/drm/drm_exec.h +12
-9@@ -95,6 +95,17 @@ drm_exec_obj(struct drm_exec *exec, unsigned long index)#define drm_exec_for_each_locked_object_reverse (exec, obj) \ __drm_exec_for_each_locked_object_reverse(exec, obj, __UNIQUE_ID(drm_exec)) +/* +* Helper to drm_exec_until_all_locked(). Don't use directly. +* +* Since labels can't be defined local to the loop's body we use a jump pointer +* to make sure that the retry is only used from within the loop's body. +*/ +#define __drm_exec_until_all_locked (exec, _label) \ +_label: \ + for (void *const __maybe_unused __drm_exec_retry_ptr = &&_label; \ + drm_exec_cleanup(exec);) +/** * drm_exec_until_all_locked - loop until all GEM objects are locked * @exec: drm_exec object @@ -102,17 +113,9 @@ drm_exec_obj(struct drm_exec *exec, unsigned long index)* Core functionality of the drm_exec object. Loops until all GEM objects are * locked and no more contention exists. At the beginning of the loop it is * guaranteed that no GEM object is locked. -* -* Since labels can't be defined local to the loops body we use a jump pointer -* to make sure that the retry is only used from within the loops body. */ #define drm_exec_until_all_locked (exec) \ -__PASTE(__drm_exec_, __LINE__): \ - for (void *__drm_exec_retry_ptr; ({ \ - __drm_exec_retry_ptr = &&__PASTE(__drm_exec_, __LINE__);\ - (void)__drm_exec_retry_ptr; \ - drm_exec_cleanup(exec); \ - });) + __drm_exec_until_all_locked(exec, __UNIQUE_ID(drm_exec))/** * drm_exec_retry_on_contention - restart the loop to grap all locks
Thomas Hellström
maintainerPATCH v2 3/4 drm/exec, drm/xe: Avoid abusing the drm_exec retry pointer
In reply to Thomas HellströmThe xe driver was using the drm_exec retry pointer directly to restart the locking loop after out-of-memory errors. This is relying on undocumented behaviour.
Instead add a drm_exec_retry() macro that can be used in this situation, and that also warns if the struct drm_exec is not newly (re-)initialized.
Use that macro in xe.
v2:
- Only allow if the drm_exec context is newly initialized. (Christian)
--- drivers/gpu/drm/drm_exec.c | 3 --- drivers/gpu/drm/xe/xe_validation.h | 2 +- include/drm/drm_exec.h | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-)
drivers/gpu/drm/drm_exec.c +0 -3
@@ -48,9 +48,6 @@* See struct dma_exec for more details. */ -/* Dummy value used to initially enter the retry loop */ -#define DRM_EXEC_DUMMY ((void *)~0) -/* Unlock all objects and drop references */ static void drm_exec_unlock_all (struct drm_exec *exec) {
drivers/gpu/drm/xe/xe_validation.h +1 -1
@@ -146,7 +146,7 @@ bool xe_validation_should_retry(struct xe_validation_ctx *ctx, int *ret);#define xe_validation_retry_on_oom (_ctx, _ret) \ do { \ if (xe_validation_should_retry(_ctx, _ret)) \ - goto *__drm_exec_retry_ptr; \ + drm_exec_retry((_ctx)->exec); \ } while (0)/**
include/drm/drm_exec.h +19 -0
@@ -9,6 +9,12 @@#define DRM_EXEC_INTERRUPTIBLE_WAIT BIT(0)#define DRM_EXEC_IGNORE_DUPLICATES BIT(1) +/* +* Dummy value used to initially enter the retry loop. +* internal use only. +*/ +#define DRM_EXEC_DUMMY ((void *)~0) +struct drm_gem_object ;/**
@@ -142,6 +148,19 @@ static inline bool drm_exec_is_contended(struct drm_exec *exec)return !!exec->contended; } +/** +* drm_exec_retry() - Unconditionally restart the loop to grab all locks. +* @exec: drm_exec object +* +* Unconditionally retry the loop to lock all objects. For consistency, +* the exec object needs to be newly initialized. +*/ +#define drm_exec_retry (_exec) \ + do { \ + WARN_ON((_exec)->contended != DRM_EXEC_DUMMY); \ + goto *__drm_exec_retry_ptr; \ + } while (0) +void drm_exec_init (struct drm_exec *exec,u32 flags,unsigned nr);void drm_exec_fini (struct drm_exec *exec);bool drm_exec_cleanup (struct drm_exec *exec);
Signature · 1 line
2.54.0
Christian König
maintainerRe: [PATCH v2 3/4] drm/exec, drm/xe: Avoid abusing the drm_exec retry pointer
Quoted 8 lines · Thomas Hellström
The xe driver was using the
drm_execretry pointer directly to restart the locking loop after out-of-memory errors. This is relying on undocumented behaviour.Instead add a
drm_exec_retry()macro that can be used in this situation, and that also warns if the structdrm_execis not newly (re-)initialized.
Quoted 7 lines
Use that macro in xe.
v2:
- Only allow if thedrm_execcontext is newly initialized. (Christian)Signed-off-by Thomas Hellström <[email protected]>
BTW I've ran into just another complex use case were we need the retry handling with userqueues.
So I'm probably going to use that macro in amdgpu as well but with quite a bit of extended functionality *sigh*.
Anyway patch is good like it is for now, so Reviewed-by: Christian König <[email protected]>.
Thanks,
Christian.
Quoted 70 lines
--- drivers/gpu/drm/drm_exec.c | 3 --- drivers/gpu/drm/xe/xe_validation.h | 2 +- include/drm/drm_exec.h | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-)drivers/gpu/drm/drm_exec.c +0
-3@@ -48,9 +48,6 @@* See struct dma_exec for more details. */ -/* Dummy value used to initially enter the retry loop */ -#define DRM_EXEC_DUMMY ((void *)~0) -/* Unlock all objects and drop references */ static void drm_exec_unlock_all (struct drm_exec *exec) {drivers/gpu/drm/xe/xe_validation.h +1
-1@@ -146,7 +146,7 @@ bool xe_validation_should_retry(struct xe_validation_ctx *ctx, int *ret);#define xe_validation_retry_on_oom (_ctx, _ret) \ do { \ if (xe_validation_should_retry(_ctx, _ret)) \ - goto *__drm_exec_retry_ptr; \ + drm_exec_retry((_ctx)->exec); \ } while (0)/** include/drm/drm_exec.h +19
-0@@ -9,6 +9,12 @@#define DRM_EXEC_INTERRUPTIBLE_WAIT BIT(0)#define DRM_EXEC_IGNORE_DUPLICATES BIT(1) +/* +* Dummy value used to initially enter the retry loop. +* internal use only. +*/ +#define DRM_EXEC_DUMMY ((void *)~0) +struct drm_gem_object ;/** @@ -142,6 +148,19 @@ static inline bool drm_exec_is_contended(struct drm_exec *exec)return !!exec->contended; } +/** +* drm_exec_retry() - Unconditionally restart the loop to grab all locks. +* @exec: drm_exec object +* +* Unconditionally retry the loop to lock all objects. For consistency, +* the exec object needs to be newly initialized. +*/ +#define drm_exec_retry (_exec) \ + do { \ + WARN_ON((_exec)->contended != DRM_EXEC_DUMMY); \ + goto *__drm_exec_retry_ptr; \ + } while (0) +void drm_exec_init (struct drm_exec *exec,u32 flags,unsigned nr);void drm_exec_fini (struct drm_exec *exec);bool drm_exec_cleanup (struct drm_exec *exec);
Thomas Hellström
maintainerPATCH v2 4/4 drm/exec, drm/xe, drm/amdgpu: Add an accessor for struct drm_exec::ticket
In reply to Thomas HellströmDrivers were accessing this drm_exec member directly. While that may seem harmless, it will require action if the drm_exec utility is made a subclass of a dma-resv transaction utility as outlined in the cover-letter.
Provide an accessor, drm_exec_ticket() to avoid that.
v2:
- Fix amdgpu compile error (Intel CI)
- Update the commit message.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 +++--- drivers/gpu/drm/xe/xe_validation.c | 4 ++-- include/drm/drm_exec.h | 11 +++++++++++ 4 files changed, 18 insertions(+), 7 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2 -2
@@ -2999,7 +2999,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence __rcu */* Validate PDs, PTs and evicted DMABuf imports last. Otherwise BO * validations above would invalidate DMABuf imports again. */ - ret =process_validate_vms (process_info, &exec.ticket); + ret =process_validate_vms (process_info,drm_exec_ticket (&exec));if (ret) {pr_debug ("Validating VMs failed, ret: %d\n" , ret); goto validate_map_fail;
@@ -3040,7 +3040,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence __rcu * goto validate_map_fail; } - ret =amdgpu_vm_handle_moved (adev, peer_vm, &exec.ticket); + ret =amdgpu_vm_handle_moved (adev, peer_vm,drm_exec_ticket (&exec));if (ret) { dev_dbg(adev->dev, "Memory eviction: handle moved failed, pid %8d. Try again.\n",
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +3 -3
@@ -1157,7 +1157,7 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)return r; } - r =amdgpu_vm_handle_moved (adev, vm, &p->exec.ticket); + r =amdgpu_vm_handle_moved (adev, vm,drm_exec_ticket (&p->exec));if (r)return r;
@@ -1359,7 +1359,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, cs->out.handle = seq; leader->uf_sequence = seq; -amdgpu_vm_bo_trace_cs (&fpriv->vm, &p->exec.ticket); +amdgpu_vm_bo_trace_cs (&fpriv->vm,drm_exec_ticket (&p->exec));for (i =0 ; i < p->gang_size; ++i) {amdgpu_job_free_resources (p->jobs[i]);trace_amdgpu_cs_ioctl (p->jobs[i]);
@@ -1794,7 +1794,7 @@ int amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser, *map = mapping;/* Double check that the BO is reserved by this CS */ -if (dma_resv_locking_ctx ((*bo)->tbo.base.resv) != &parser->exec.ticket) +if (dma_resv_locking_ctx ((*bo)->tbo.base.resv) !=drm_exec_ticket (&parser->exec))return -EINVAL ;/* Make sure VRAM is allocated contigiously */
drivers/gpu/drm/xe/xe_validation.c +2 -2
@@ -156,7 +156,7 @@ int xe_validation_ctx_init(struct xe_validation_ctx *ctx, struct xe_validation_d#ifdef CONFIG_DEBUG_WW_MUTEX_SLOWPATH /* -* This abuses both drm_exec and ww_mutex internals and should be +* This abuses ww_mutex internals and should be * replaced by checking for -EDEADLK when we can make TTM * stop converting -EDEADLK to -ENOMEM. * An alternative is to not have exhaustive eviction with
@@ -164,7 +164,7 @@ int xe_validation_ctx_init(struct xe_validation_ctx *ctx, struct xe_validation_d*/ static bool xe_validation_contention_injected (struct drm_exec *exec) { -return !!exec->ticket.contending_lock; +return !!drm_exec_ticket (exec)->contending_lock; }#else
include/drm/drm_exec.h +11 -0
@@ -161,6 +161,17 @@ static inline bool drm_exec_is_contended(struct drm_exec *exec) goto *__drm_exec_retry_ptr; \ }while (0 ) +/** +* drm_exec_ticket - return the ww_acquire_ctx for this exec context +* @exec: drm_exec object +* +* Return: Pointer to the ww_acquire_ctx embedded in @exec. +*/ +static inline struct ww_acquire_ctx *drm_exec_ticket(struct drm_exec *exec) +{ +return &exec->ticket; +} +void drm_exec_init (struct drm_exec *exec,u32 flags,unsigned nr);void drm_exec_fini (struct drm_exec *exec);bool drm_exec_cleanup (struct drm_exec *exec);
Signature · 1 line
2.54.0
Re: [PATCH v2 4/4] drm/exec, drm/xe, drm/amdgpu: Add an accessor for struct drm_exec::ticket
Quoted 5 lines · Thomas Hellström
Drivers were accessing this
drm_execmember directly. While that may seem harmless, it will require action if thedrm_executility is made a subclass of a dma-resv transaction utility as outlined in the cover-letter.
Quoted 7 lines
Provide an accessor,
drm_exec_ticket()to avoid that.v2:
- Fix amdgpu compile error (Intel CI)
- Update the commit message.Signed-off-by Thomas Hellström <[email protected]>
Quoted 104 lines
--- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 +++--- drivers/gpu/drm/xe/xe_validation.c | 4 ++-- include/drm/drm_exec.h | 11 +++++++++++ 4 files changed, 18 insertions(+), 7 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2
-2@@ -2999,7 +2999,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence __rcu */* Validate PDs, PTs and evicted DMABuf imports last. Otherwise BO * validations above would invalidate DMABuf imports again. */ - ret =process_validate_vms (process_info, &exec.ticket); + ret =process_validate_vms (process_info,drm_exec_ticket (&exec));if (ret) {pr_debug ("Validating VMs failed, ret: %d\n" , ret); goto validate_map_fail;@@ -3040,7 +3040,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence __rcu * goto validate_map_fail; } - ret =amdgpu_vm_handle_moved (adev, peer_vm, &exec.ticket); + ret =amdgpu_vm_handle_moved (adev, peer_vm,drm_exec_ticket (&exec));if (ret) { dev_dbg(adev->dev, "Memory eviction: handle moved failed, pid %8d. Try again.\n",drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +3
-3@@ -1157,7 +1157,7 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)return r; } - r =amdgpu_vm_handle_moved (adev, vm, &p->exec.ticket); + r =amdgpu_vm_handle_moved (adev, vm,drm_exec_ticket (&p->exec));if (r)return r;@@ -1359,7 +1359,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, cs->out.handle = seq; leader->uf_sequence = seq; -amdgpu_vm_bo_trace_cs (&fpriv->vm, &p->exec.ticket); +amdgpu_vm_bo_trace_cs (&fpriv->vm,drm_exec_ticket (&p->exec));for (i =0 ; i < p->gang_size; ++i) {amdgpu_job_free_resources (p->jobs[i]);trace_amdgpu_cs_ioctl (p->jobs[i]);@@ -1794,7 +1794,7 @@ int amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser, *map = mapping;/* Double check that the BO is reserved by this CS */ -if (dma_resv_locking_ctx ((*bo)->tbo.base.resv) != &parser->exec.ticket) +if (dma_resv_locking_ctx ((*bo)->tbo.base.resv) !=drm_exec_ticket (&parser->exec))return -EINVAL ;/* Make sure VRAM is allocated contigiously */ drivers/gpu/drm/xe/xe_validation.c +2
-2@@ -156,7 +156,7 @@ int xe_validation_ctx_init(struct xe_validation_ctx *ctx, struct xe_validation_d#ifdef CONFIG_DEBUG_WW_MUTEX_SLOWPATH /* -* This abuses both drm_exec and ww_mutex internals and should be +* This abuses ww_mutex internals and should be * replaced by checking for -EDEADLK when we can make TTM * stop converting -EDEADLK to -ENOMEM. * An alternative is to not have exhaustive eviction with @@ -164,7 +164,7 @@ int xe_validation_ctx_init(struct xe_validation_ctx *ctx, struct xe_validation_d*/ static bool xe_validation_contention_injected (struct drm_exec *exec) { -return !!exec->ticket.contending_lock; +return !!drm_exec_ticket (exec)->contending_lock; }#else include/drm/drm_exec.h +11
-0@@ -161,6 +161,17 @@ static inline bool drm_exec_is_contended(struct drm_exec *exec) goto *__drm_exec_retry_ptr; \ }while (0 ) +/** +* drm_exec_ticket - return the ww_acquire_ctx for this exec context +* @exec: drm_exec object +* +* Return: Pointer to the ww_acquire_ctx embedded in @exec. +*/ +static inline struct ww_acquire_ctx *drm_exec_ticket(struct drm_exec *exec) +{ +return &exec->ticket; +} +void drm_exec_init (struct drm_exec *exec,u32 flags,unsigned nr);void drm_exec_fini (struct drm_exec *exec);bool drm_exec_cleanup (struct drm_exec *exec);
Patchwork
CI✗ CI.checkpatch: warning for drm/exec: drm_exec polishing (rev2)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: drm/exec: drm_exec polishing (rev2)
URL : https://patchwork.freedesktop.org/series/164149/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master 061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit b1fe12b99eb11c5a5dc2f065129b1289eddd5432
Author: Thomas Hellström <[email protected]> Date: Wed May 20 12:16:16 2026 +0200
drm/exec, drm/xe, drm/amdgpu: Add an accessor for struct drm_exec::ticket
Drivers were accessing this drm_exec member directly. While that may seem harmless, it will require action if the drm_exec utility is made a subclass of a dma-resv transaction utility as outlined in the cover-letter.
Provide an accessor, drm_exec_ticket() to avoid that.
v2:
- Fix amdgpu compile error (Intel CI)
- Update the commit message.
+ /mt/dim checkpatch 7d39df83e93eba14a23b1fb6ffff076eb191f27b drm-intel b208eb1dab03 drm/exec: Remove the index parameter from drm_exec_for_each_locked_obj[_reverse] -:17: WARNING:BAD_SIGN_OFF: Assisted-by expects 'AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]' format #17:
-:173: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__index' - possible side-effects? #173: FILE: include/drm/drm_exec.h:69:
+#define __drm_exec_for_each_locked_object(exec, obj, __index) \
+ for (unsigned long __index = 0; ((obj) = drm_exec_obj(exec, __index)); ++__index)
-:189: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'exec' - possible side-effects? #189: FILE: include/drm/drm_exec.h:82:
+#define __drm_exec_for_each_locked_object_reverse(exec, obj, __index) \
+ for (unsigned long __index = (exec)->num_objects - 1; \
+ ((obj) = drm_exec_obj(exec, __index)); --__index)
-:189: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__index' - possible side-effects? #189: FILE: include/drm/drm_exec.h:82:
+#define __drm_exec_for_each_locked_object_reverse(exec, obj, __index) \
+ for (unsigned long __index = (exec)->num_objects - 1; \
+ ((obj) = drm_exec_obj(exec, __index)); --__index)
total: 0 errors, 1 warnings, 3 checks, 153 lines checked4cf0062dd99c drm/exec: Make the drm_exec_until_all_locked() macro more readable -:36: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #36: FILE: include/drm/drm_exec.h:104:
+#define __drm_exec_until_all_locked(exec, _label) \
+_label: \
+ for (void *const __maybe_unused __drm_exec_retry_ptr = &&_label; \
+ drm_exec_cleanup(exec);)
BUT SEE:
do {} while (0) advice is over-stated in a few situations:
The more obvious case is macros, like MODULE_PARM_DESC, invoked at file-scope, where C disallows code (it must be in functions). See $exceptions if you have one to add by name.
More troublesome is declarative macros used at top of new scope, like DECLARE_PER_CPU. These might just compile with a do-while-0 wrapper, but would be incorrect. Most of these are handled by detecting struct,union,etc declaration primitives in $exceptions.
Theres also macros called inside an if (block), which "return" an expression. These cannot do-while, and need a ({}) wrapper.
Enjoy this qualification while we work to improve our heuristics.
-:36: CHECK:MACRO_ARG_REUSE: Macro argument reuse '_label' - possible side-effects? #36: FILE: include/drm/drm_exec.h:104:
+#define __drm_exec_until_all_locked(exec, _label) \
+_label: \
+ for (void *const __maybe_unused __drm_exec_retry_ptr = &&_label; \
+ drm_exec_cleanup(exec);)
-:37: ERROR:SPACING: spaces required around that ':' (ctx:VxE) #37: FILE: include/drm/drm_exec.h:105:
+_label: \
^total: 2 errors, 0 warnings, 1 checks, 35 lines checked995c8176cc20 drm/exec, drm/xe: Avoid abusing the drm_exec retry pointer
-:80: WARNING:MACRO_WITH_FLOW_CONTROL: Macros with flow control statements should be avoided #80: FILE: include/drm/drm_exec.h:158:
+#define drm_exec_retry(_exec) \
+ do { \
+ WARN_ON((_exec)->contended != DRM_EXEC_DUMMY); \
+ goto *__drm_exec_retry_ptr; \
+ } while (0)
total: 0 errors, 1 warnings, 0 checks, 48 lines checkedb1fe12b99eb1 drm/exec, drm/xe, drm/amdgpu: Add an accessor for struct drm_exec::ticket
Patchwork
CI✓ CI.KUnit: success for drm/exec: drm_exec polishing (rev2)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: drm/exec: drm_exec polishing (rev2)
URL : https://patchwork.freedesktop.org/series/164149/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [10:23:03] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [10:23:07] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [10:23:38] Starting KUnit Kernel (1/1)... [10:23:38] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [10:23:38] ================== guc_buf (11 subtests) =================== [10:23:38] [PASSED] test_smallest [10:23:38] [PASSED] test_largest [10:23:38] [PASSED] test_granular [10:23:38] [PASSED] test_unique [10:23:38] [PASSED] test_overlap [10:23:38] [PASSED] test_reusable [10:23:38] [PASSED] test_too_big [10:23:38] [PASSED] test_flush [10:23:38] [PASSED] test_lookup [10:23:38] [PASSED] test_data [10:23:38] [PASSED] test_class [10:23:38] ===================== [PASSED] guc_buf ===================== [10:23:38] =================== guc_dbm (7 subtests) =================== [10:23:38] [PASSED] test_empty [10:23:38] [PASSED] test_default [10:23:38] ======================== test_size ======================== [10:23:38] [PASSED] 4 [10:23:38] [PASSED] 8 [10:23:38] [PASSED] 32 [10:23:38] [PASSED] 256 [10:23:38] ==================== [PASSED] test_size ==================== [10:23:38] ======================= test_reuse ======================== [10:23:38] [PASSED] 4 [10:23:38] [PASSED] 8 [10:23:38] [PASSED] 32 [10:23:38] [PASSED] 256 [10:23:38] =================== [PASSED] test_reuse ==================== [10:23:38] =================== test_range_overlap ==================== [10:23:38] [PASSED] 4 [10:23:38] [PASSED] 8 [10:23:38] [PASSED] 32 [10:23:38] [PASSED] 256 [10:23:38] =============== [PASSED] test_range_overlap ================ [10:23:38] =================== test_range_compact ==================== [10:23:38] [PASSED] 4 [10:23:38] [PASSED] 8 [10:23:38] [PASSED] 32 [10:23:38] [PASSED] 256 [10:23:38] =============== [PASSED] test_range_compact ================ [10:23:38] ==================== test_range_spare ===================== [10:23:38] [PASSED] 4 [10:23:38] [PASSED] 8 [10:23:38] [PASSED] 32 [10:23:38] [PASSED] 256 [10:23:38] ================ [PASSED] test_range_spare ================= [10:23:38] ===================== [PASSED] guc_dbm ===================== [10:23:38] =================== guc_idm (6 subtests) =================== [10:23:38] [PASSED] bad_init [10:23:38] [PASSED] no_init [10:23:38] [PASSED] init_fini [10:23:38] [PASSED] check_used [10:23:39] [PASSED] check_quota [10:23:39] [PASSED] check_all [10:23:39] ===================== [PASSED] guc_idm ===================== [10:23:39] ================== no_relay (3 subtests) =================== [10:23:39] [PASSED] xe_drops_guc2pf_if_not_ready [10:23:39] [PASSED] xe_drops_guc2vf_if_not_ready [10:23:39] [PASSED] xe_rejects_send_if_not_ready [10:23:39] ==================== [PASSED] no_relay ===================== [10:23:39] ================== pf_relay (14 subtests) ================== [10:23:39] [PASSED] pf_rejects_guc2pf_too_short [10:23:39] [PASSED] pf_rejects_guc2pf_too_long [10:23:39] [PASSED] pf_rejects_guc2pf_no_payload [10:23:39] [PASSED] pf_fails_no_payload [10:23:39] [PASSED] pf_fails_bad_origin [10:23:39] [PASSED] pf_fails_bad_type [10:23:39] [PASSED] pf_txn_reports_error [10:23:39] [PASSED] pf_txn_sends_pf2guc [10:23:39] [PASSED] pf_sends_pf2guc [10:23:39] [SKIPPED] pf_loopback_nop [10:23:39] [SKIPPED] pf_loopback_echo [10:23:39] [SKIPPED] pf_loopback_fail [10:23:39] [SKIPPED] pf_loopback_busy [10:23:39] [SKIPPED] pf_loopback_retry [10:23:39] ==================== [PASSED] pf_relay ===================== [10:23:39] ================== vf_relay (3 subtests) =================== [10:23:39] [PASSED] vf_rejects_guc2vf_too_short [10:23:39] [PASSED] vf_rejects_guc2vf_too_long [10:23:39] [PASSED] vf_rejects_guc2vf_no_payload [10:23:39] ==================== [PASSED] vf_relay ===================== [10:23:39] ================ pf_gt_config (9 subtests) ================= [10:23:39] [PASSED] fair_contexts_1vf [10:23:39] [PASSED] fair_doorbells_1vf [10:23:39] [PASSED] fair_ggtt_1vf [10:23:39] ====================== fair_vram_1vf ====================== [10:23:39] [PASSED] 3.50 GiB [10:23:39] [PASSED] 11.5 GiB [10:23:39] [PASSED] 15.5 GiB [10:23:39] [PASSED] 31.5 GiB [10:23:39] [PASSED] 63.5 GiB [10:23:39] [PASSED] 1.91 GiB [10:23:39] ================== [PASSED] fair_vram_1vf ================== [10:23:39] ================ fair_vram_1vf_admin_only ================= [10:23:39] [PASSED] 3.50 GiB [10:23:39] [PASSED] 11.5 GiB [10:23:39] [PASSED] 15.5 GiB [10:23:39] [PASSED] 31.5 GiB [10:23:39] [PASSED] 63.5 GiB [10:23:39] [PASSED] 1.91 GiB [10:23:39] ============ [PASSED] fair_vram_1vf_admin_only ============= [10:23:39] ====================== fair_contexts ====================== [10:23:39] [PASSED] 1 VF [10:23:39] [PASSED] 2 VFs [10:23:39] [PASSED] 3 VFs [10:23:39] [PASSED] 4 VFs [10:23:39] [PASSED] 5 VFs [10:23:39] [PASSED] 6 VFs [10:23:39] [PASSED] 7 VFs [10:23:39] [PASSED] 8 VFs [10:23:39] [PASSED] 9 VFs [10:23:39] [PASSED] 10 VFs [10:23:39] [PASSED] 11 VFs [10:23:39] [PASSED] 12 VFs [10:23:39] [PASSED] 13 VFs [10:23:39] [PASSED] 14 VFs [10:23:39] [PASSED] 15 VFs [10:23:39] [PASSED] 16 VFs [10:23:39] [PASSED] 17 VFs [10:23:39] [PASSED] 18 VFs [10:23:39] [PASSED] 19 VFs [10:23:39] [PASSED] 20 VFs [10:23:39] [PASSED] 21 VFs [10:23:39] [PASSED] 22 VFs [10:23:39] [PASSED] 23 VFs [10:23:39] [PASSED] 24 VFs [10:23:39] [PASSED] 25 VFs [10:23:39] [PASSED] 26 VFs [10:23:39] [PASSED] 27 VFs [10:23:39] [PASSED] 28 VFs [10:23:39] [PASSED] 29 VFs [10:23:39] [PASSED] 30 VFs [10:23:39] [PASSED] 31 VFs [10:23:39] [PASSED] 32 VFs [10:23:39] [PASSED] 33 VFs [10:23:39] [PASSED] 34 VFs [10:23:39] [PASSED] 35 VFs [10:23:39] [PASSED] 36 VFs [10:23:39] [PASSED] 37 VFs [10:23:39] [PASSED] 38 VFs [10:23:39] [PASSED] 39 VFs [10:23:39] [PASSED] 40 VFs [10:23:39] [PASSED] 41 VFs [10:23:39] [PASSED] 42 VFs [10:23:39] [PASSED] 43 VFs [10:23:39] [PASSED] 44 VFs [10:23:39] [PASSED] 45 VFs [10:23:39] [PASSED] 46 VFs [10:23:39] [PASSED] 47 VFs [10:23:39] [PASSED] 48 VFs [10:23:39] [PASSED] 49 VFs [10:23:39] [PASSED] 50 VFs [10:23:39] [PASSED] 51 VFs [10:23:39] [PASSED] 52 VFs [10:23:39] [PASSED] 53 VFs [10:23:39] [PASSED] 54 VFs [10:23:39] [PASSED] 55 VFs [10:23:39] [PASSED] 56 VFs [10:23:39] [PASSED] 57 VFs [10:23:39] [PASSED] 58 VFs [10:23:39] [PASSED] 59 VFs [10:23:39] [PASSED] 60 VFs [10:23:39] [PASSED] 61 VFs [10:23:39] [PASSED] 62 VFs [10:23:39] [PASSED] 63 VFs [10:23:39] ================== [PASSED] fair_contexts ================== [10:23:39] ===================== fair_doorbells ====================== [10:23:39] [PASSED] 1 VF [10:23:39] [PASSED] 2 VFs [10:23:39] [PASSED] 3 VFs [10:23:39] [PASSED] 4 VFs [10:23:39] [PASSED] 5 VFs [10:23:39] [PASSED] 6 VFs [10:23:39] [PASSED] 7 VFs [10:23:39] [PASSED] 8 VFs [10:23:39] [PASSED] 9 VFs [10:23:39] [PASSED] 10 VFs [10:23:39] [PASSED] 11 VFs [10:23:39] [PASSED] 12 VFs [10:23:39] [PASSED] 13 VFs [10:23:39] [PASSED] 14 VFs [10:23:39] [PASSED] 15 VFs [10:23:39] [PASSED] 16 VFs [10:23:39] [PASSED] 17 VFs [10:23:39] [PASSED] 18 VFs [10:23:39] [PASSED] 19 VFs [10:23:39] [PASSED] 20 VFs [10:23:39] [PASSED] 21 VFs [10:23:39] [PASSED] 22 VFs [10:23:39] [PASSED] 23 VFs [10:23:39] [PASSED] 24 VFs [10:23:39] [PASSED] 25 VFs [10:23:39] [PASSED] 26 VFs [10:23:39] [PASSED] 27 VFs [10:23:39] [PASSED] 28 VFs [10:23:39] [PASSED] 29 VFs [10:23:39] [PASSED] 30 VFs [10:23:39] [PASSED] 31 VFs [10:23:39] [PASSED] 32 VFs [10:23:39] [PASSED] 33 VFs [10:23:39] [PASSED] 34 VFs [10:23:39] [PASSED] 35 VFs [10:23:39] [PASSED] 36 VFs [10:23:39] [PASSED] 37 VFs [10:23:39] [PASSED] 38 VFs [10:23:39] [PASSED] 39 VFs [10:23:39] [PASSED] 40 VFs [10:23:39] [PASSED] 41 VFs [10:23:39] [PASSED] 42 VFs [10:23:39] [PASSED] 43 VFs [10:23:39] [PASSED] 44 VFs [10:23:39] [PASSED] 45 VFs [10:23:39] [PASSED] 46 VFs [10:23:39] [PASSED] 47 VFs [10:23:39] [PASSED] 48 VFs [10:23:39] [PASSED] 49 VFs [10:23:39] [PASSED] 50 VFs [10:23:39] [PASSED] 51 VFs [10:23:39] [PASSED] 52 VFs [10:23:39] [PASSED] 53 VFs [10:23:39] [PASSED] 54 VFs [10:23:39] [PASSED] 55 VFs [10:23:39] [PASSED] 56 VFs [10:23:39] [PASSED] 57 VFs [10:23:39] [PASSED] 58 VFs [10:23:39] [PASSED] 59 VFs [10:23:39] [PASSED] 60 VFs [10:23:39] [PASSED] 61 VFs [10:23:39] [PASSED] 62 VFs [10:23:39] [PASSED] 63 VFs [10:23:39] ================= [PASSED] fair_doorbells ================== [10:23:39] ======================== fair_ggtt ======================== [10:23:39] [PASSED] 1 VF [10:23:39] [PASSED] 2 VFs [10:23:39] [PASSED] 3 VFs [10:23:39] [PASSED] 4 VFs [10:23:39] [PASSED] 5 VFs [10:23:39] [PASSED] 6 VFs [10:23:39] [PASSED] 7 VFs [10:23:39] [PASSED] 8 VFs [10:23:39] [PASSED] 9 VFs [10:23:39] [PASSED] 10 VFs [10:23:39] [PASSED] 11 VFs [10:23:39] [PASSED] 12 VFs [10:23:39] [PASSED] 13 VFs [10:23:39] [PASSED] 14 VFs [10:23:39] [PASSED] 15 VFs [10:23:39] [PASSED] 16 VFs [10:23:39] [PASSED] 17 VFs [10:23:39] [PASSED] 18 VFs [10:23:39] [PASSED] 19 VFs [10:23:39] [PASSED] 20 VFs [10:23:39] [PASSED] 21 VFs [10:23:39] [PASSED] 22 VFs [10:23:39] [PASSED] 23 VFs [10:23:39] [PASSED] 24 VFs [10:23:39] [PASSED] 25 VFs [10:23:39] [PASSED] 26 VFs [10:23:39] [PASSED] 27 VFs [10:23:39] [PASSED] 28 VFs [10:23:39] [PASSED] 29 VFs [10:23:39] [PASSED] 30 VFs [10:23:39] [PASSED] 31 VFs [10:23:39] [PASSED] 32 VFs [10:23:39] [PASSED] 33 VFs [10:23:39] [PASSED] 34 VFs [10:23:39] [PASSED] 35 VFs [10:23:39] [PASSED] 36 VFs [10:23:39] [PASSED] 37 VFs [10:23:39] [PASSED] 38 VFs [10:23:39] [PASSED] 39 VFs [10:23:39] [PASSED] 40 VFs [10:23:39] [PASSED] 41 VFs [10:23:39] [PASSED] 42 VFs [10:23:39] [PASSED] 43 VFs [10:23:39] [PASSED] 44 VFs [10:23:39] [PASSED] 45 VFs [10:23:39] [PASSED] 46 VFs [10:23:39] [PASSED] 47 VFs [10:23:39] [PASSED] 48 VFs [10:23:39] [PASSED] 49 VFs [10:23:39] [PASSED] 50 VFs [10:23:39] [PASSED] 51 VFs [10:23:39] [PASSED] 52 VFs [10:23:39] [PASSED] 53 VFs [10:23:39] [PASSED] 54 VFs [10:23:39] [PASSED] 55 VFs [10:23:39] [PASSED] 56 VFs [10:23:39] [PASSED] 57 VFs [10:23:39] [PASSED] 58 VFs [10:23:39] [PASSED] 59 VFs [10:23:39] [PASSED] 60 VFs [10:23:39] [PASSED] 61 VFs [10:23:39] [PASSED] 62 VFs [10:23:39] [PASSED] 63 VFs [10:23:39] ==================== [PASSED] fair_ggtt ==================== [10:23:39] ======================== fair_vram ======================== [10:23:39] [PASSED] 1 VF [10:23:39] [PASSED] 2 VFs [10:23:39] [PASSED] 3 VFs [10:23:39] [PASSED] 4 VFs [10:23:39] [PASSED] 5 VFs [10:23:39] [PASSED] 6 VFs [10:23:39] [PASSED] 7 VFs [10:23:39] [PASSED] 8 VFs [10:23:39] [PASSED] 9 VFs [10:23:39] [PASSED] 10 VFs [10:23:39] [PASSED] 11 VFs [10:23:39] [PASSED] 12 VFs [10:23:39] [PASSED] 13 VFs [10:23:39] [PASSED] 14 VFs [10:23:39] [PASSED] 15 VFs [10:23:39] [PASSED] 16 VFs [10:23:39] [PASSED] 17 VFs [10:23:39] [PASSED] 18 VFs [10:23:39] [PASSED] 19 VFs [10:23:39] [PASSED] 20 VFs [10:23:39] [PASSED] 21 VFs [10:23:39] [PASSED] 22 VFs [10:23:39] [PASSED] 23 VFs [10:23:39] [PASSED] 24 VFs [10:23:39] [PASSED] 25 VFs [10:23:39] [PASSED] 26 VFs [10:23:39] [PASSED] 27 VFs [10:23:39] [PASSED] 28 VFs [10:23:39] [PASSED] 29 VFs [10:23:39] [PASSED] 30 VFs [10:23:39] [PASSED] 31 VFs [10:23:39] [PASSED] 32 VFs [10:23:39] [PASSED] 33 VFs [10:23:39] [PASSED] 34 VFs [10:23:39] [PASSED] 35 VFs [10:23:39] [PASSED] 36 VFs [10:23:39] [PASSED] 37 VFs [10:23:39] [PASSED] 38 VFs [10:23:39] [PASSED] 39 VFs [10:23:39] [PASSED] 40 VFs [10:23:39] [PASSED] 41 VFs [10:23:39] [PASSED] 42 VFs [10:23:39] [PASSED] 43 VFs [10:23:39] [PASSED] 44 VFs [10:23:39] [PASSED] 45 VFs [10:23:39] [PASSED] 46 VFs [10:23:39] [PASSED] 47 VFs [10:23:39] [PASSED] 48 VFs [10:23:39] [PASSED] 49 VFs [10:23:39] [PASSED] 50 VFs [10:23:39] [PASSED] 51 VFs [10:23:39] [PASSED] 52 VFs [10:23:39] [PASSED] 53 VFs [10:23:39] [PASSED] 54 VFs [10:23:39] [PASSED] 55 VFs [10:23:39] [PASSED] 56 VFs [10:23:39] [PASSED] 57 VFs [10:23:39] [PASSED] 58 VFs [10:23:39] [PASSED] 59 VFs [10:23:39] [PASSED] 60 VFs [10:23:39] [PASSED] 61 VFs [10:23:39] [PASSED] 62 VFs [10:23:39] [PASSED] 63 VFs [10:23:39] ==================== [PASSED] fair_vram ==================== [10:23:39] ================== [PASSED] pf_gt_config =================== [10:23:39] ===================== lmtt (1 subtest) ===================== [10:23:39] ======================== test_ops ========================= [10:23:39] [PASSED] 2-level [10:23:39] [PASSED] multi-level [10:23:39] ==================== [PASSED] test_ops ===================== [10:23:39] ====================== [PASSED] lmtt ======================= [10:23:39] ================= pf_service (11 subtests) ================= [10:23:39] [PASSED] pf_negotiate_any [10:23:39] [PASSED] pf_negotiate_base_match [10:23:39] [PASSED] pf_negotiate_base_newer [10:23:39] [PASSED] pf_negotiate_base_next [10:23:39] [SKIPPED] pf_negotiate_base_older [10:23:39] [PASSED] pf_negotiate_base_prev [10:23:39] [PASSED] pf_negotiate_latest_match [10:23:39] [PASSED] pf_negotiate_latest_newer [10:23:39] [PASSED] pf_negotiate_latest_next [10:23:39] [SKIPPED] pf_negotiate_latest_older [10:23:39] [SKIPPED] pf_negotiate_latest_prev [10:23:39] =================== [PASSED] pf_service ==================== [10:23:39] ================= xe_guc_g2g (2 subtests) ================== [10:23:39] ============== xe_live_guc_g2g_kunit_default ============== [10:23:39] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [10:23:39] ============== xe_live_guc_g2g_kunit_allmem =============== [10:23:39] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [10:23:39] =================== [SKIPPED] xe_guc_g2g =================== [10:23:39] =================== xe_mocs (2 subtests) =================== [10:23:39] ================ xe_live_mocs_kernel_kunit ================ [10:23:39] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [10:23:39] ================ xe_live_mocs_reset_kunit ================= [10:23:39] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [10:23:39] ==================== [SKIPPED] xe_mocs ===================== [10:23:39] ================= xe_migrate (2 subtests) ================== [10:23:39] ================= xe_migrate_sanity_kunit ================= [10:23:39] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [10:23:39] ================== xe_validate_ccs_kunit ================== [10:23:39] ============= [SKIPPED] xe_validate_ccs_kunit ============== [10:23:39] =================== [SKIPPED] xe_migrate =================== [10:23:39] ================== xe_dma_buf (1 subtest) ================== [10:23:39] ==================== xe_dma_buf_kunit ===================== [10:23:39] ================ [SKIPPED] xe_dma_buf_kunit ================ [10:23:39] =================== [SKIPPED] xe_dma_buf =================== [10:23:39] ================= xe_bo_shrink (1 subtest) ================= [10:23:39] =================== xe_bo_shrink_kunit ==================== [10:23:39] =============== [SKIPPED] xe_bo_shrink_kunit =============== [10:23:39] ================== [SKIPPED] xe_bo_shrink ================== [10:23:39] ==================== xe_bo (2 subtests) ==================== [10:23:39] ================== xe_ccs_migrate_kunit =================== [10:23:39] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [10:23:39] ==================== xe_bo_evict_kunit ==================== [10:23:39] =============== [SKIPPED] xe_bo_evict_kunit ================ [10:23:39] ===================== [SKIPPED] xe_bo ====================== [10:23:39] ==================== args (13 subtests) ==================== [10:23:39] [PASSED] count_args_test [10:23:39] [PASSED] call_args_example [10:23:39] [PASSED] call_args_test [10:23:39] [PASSED] drop_first_arg_example [10:23:39] [PASSED] drop_first_arg_test [10:23:39] [PASSED] first_arg_example [10:23:39] [PASSED] first_arg_test [10:23:39] [PASSED] last_arg_example [10:23:39] [PASSED] last_arg_test [10:23:39] [PASSED] pick_arg_example [10:23:39] [PASSED] if_args_example [10:23:39] [PASSED] if_args_test [10:23:39] [PASSED] sep_comma_example [10:23:39] ====================== [PASSED] args ======================= [10:23:39] =================== xe_pci (3 subtests) ==================== [10:23:39] ==================== check_graphics_ip ==================== [10:23:39] [PASSED] 12.00 Xe_LP [10:23:39] [PASSED] 12.10 Xe_LP+ [10:23:39] [PASSED] 12.55 Xe_HPG [10:23:39] [PASSED] 12.60 Xe_HPC [10:23:39] [PASSED] 12.70 Xe_LPG [10:23:39] [PASSED] 12.71 Xe_LPG [10:23:39] [PASSED] 12.74 Xe_LPG+ [10:23:39] [PASSED] 20.01 Xe2_HPG [10:23:39] [PASSED] 20.02 Xe2_HPG [10:23:39] [PASSED] 20.04 Xe2_LPG [10:23:39] [PASSED] 30.00 Xe3_LPG [10:23:39] [PASSED] 30.01 Xe3_LPG [10:23:39] [PASSED] 30.03 Xe3_LPG [10:23:39] [PASSED] 30.04 Xe3_LPG [10:23:39] [PASSED] 30.05 Xe3_LPG [10:23:39] [PASSED] 35.10 Xe3p_LPG [10:23:39] [PASSED] 35.11 Xe3p_XPC [10:23:39] ================ [PASSED] check_graphics_ip ================ [10:23:39] ===================== check_media_ip ====================== [10:23:39] [PASSED] 12.00 Xe_M [10:23:39] [PASSED] 12.55 Xe_HPM [10:23:39] [PASSED] 13.00 Xe_LPM+ [10:23:39] [PASSED] 13.01 Xe2_HPM [10:23:39] [PASSED] 20.00 Xe2_LPM [10:23:39] [PASSED] 30.00 Xe3_LPM [10:23:39] [PASSED] 30.02 Xe3_LPM [10:23:39] [PASSED] 35.00 Xe3p_LPM [10:23:39] [PASSED] 35.03 Xe3p_HPM [10:23:39] ================= [PASSED] check_media_ip ================== [10:23:39] =================== check_platform_desc =================== [10:23:39] [PASSED] 0x9A60 (TIGERLAKE) [10:23:39] [PASSED] 0x9A68 (TIGERLAKE) [10:23:39] [PASSED] 0x9A70 (TIGERLAKE) [10:23:39] [PASSED] 0x9A40 (TIGERLAKE) [10:23:39] [PASSED] 0x9A49 (TIGERLAKE) [10:23:39] [PASSED] 0x9A59 (TIGERLAKE) [10:23:39] [PASSED] 0x9A78 (TIGERLAKE) [10:23:39] [PASSED] 0x9AC0 (TIGERLAKE) [10:23:39] [PASSED] 0x9AC9 (TIGERLAKE) [10:23:39] [PASSED] 0x9AD9 (TIGERLAKE) [10:23:39] [PASSED] 0x9AF8 (TIGERLAKE) [10:23:39] [PASSED] 0x4C80 (ROCKETLAKE) [10:23:39] [PASSED] 0x4C8A (ROCKETLAKE) [10:23:39] [PASSED] 0x4C8B (ROCKETLAKE) [10:23:39] [PASSED] 0x4C8C (ROCKETLAKE) [10:23:39] [PASSED] 0x4C90 (ROCKETLAKE) [10:23:39] [PASSED] 0x4C9A (ROCKETLAKE) [10:23:39] [PASSED] 0x4680 (ALDERLAKE_S) [10:23:39] [PASSED] 0x4682 (ALDERLAKE_S) [10:23:39] [PASSED] 0x4688 (ALDERLAKE_S) [10:23:39] [PASSED] 0x468A (ALDERLAKE_S) [10:23:39] [PASSED] 0x468B (ALDERLAKE_S) [10:23:39] [PASSED] 0x4690 (ALDERLAKE_S) [10:23:39] [PASSED] 0x4692 (ALDERLAKE_S) [10:23:39] [PASSED] 0x4693 (ALDERLAKE_S) [10:23:39] [PASSED] 0x46A0 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46A1 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46A2 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46A3 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46A6 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46A8 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46AA (ALDERLAKE_P) [10:23:39] [PASSED] 0x462A (ALDERLAKE_P) [10:23:39] [PASSED] 0x4626 (ALDERLAKE_P) [10:23:39] [PASSED] 0x4628 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46B0 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46B1 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46B2 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46B3 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46C0 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46C1 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46C2 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46C3 (ALDERLAKE_P) [10:23:39] [PASSED] 0x46D0 (ALDERLAKE_N) [10:23:39] [PASSED] 0x46D1 (ALDERLAKE_N) [10:23:39] [PASSED] 0x46D2 (ALDERLAKE_N) [10:23:39] [PASSED] 0x46D3 (ALDERLAKE_N) [10:23:39] [PASSED] 0x46D4 (ALDERLAKE_N) [10:23:39] [PASSED] 0xA721 (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7A1 (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7A9 (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7AC (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7AD (ALDERLAKE_P) [10:23:39] [PASSED] 0xA720 (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7A0 (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7A8 (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7AA (ALDERLAKE_P) [10:23:39] [PASSED] 0xA7AB (ALDERLAKE_P) [10:23:39] [PASSED] 0xA780 (ALDERLAKE_S) [10:23:39] [PASSED] 0xA781 (ALDERLAKE_S) [10:23:39] [PASSED] 0xA782 (ALDERLAKE_S) [10:23:39] [PASSED] 0xA783 (ALDERLAKE_S) [10:23:39] [PASSED] 0xA788 (ALDERLAKE_S) [10:23:39] [PASSED] 0xA789 (ALDERLAKE_S) [10:23:39] [PASSED] 0xA78A (ALDERLAKE_S) [10:23:39] [PASSED] 0xA78B (ALDERLAKE_S) [10:23:39] [PASSED] 0x4905 (DG1) [10:23:39] [PASSED] 0x4906 (DG1) [10:23:39] [PASSED] 0x4907 (DG1) [10:23:39] [PASSED] 0x4908 (DG1) [10:23:39] [PASSED] 0x4909 (DG1) [10:23:39] [PASSED] 0x56C0 (DG2) [10:23:39] [PASSED] 0x56C2 (DG2) [10:23:39] [PASSED] 0x56C1 (DG2) [10:23:39] [PASSED] 0x7D51 (METEORLAKE) [10:23:39] [PASSED] 0x7DD1 (METEORLAKE) [10:23:39] [PASSED] 0x7D41 (METEORLAKE) [10:23:39] [PASSED] 0x7D67 (METEORLAKE) [10:23:39] [PASSED] 0xB640 (METEORLAKE) [10:23:39] [PASSED] 0x56A0 (DG2) [10:23:39] [PASSED] 0x56A1 (DG2) [10:23:39] [PASSED] 0x56A2 (DG2) [10:23:39] [PASSED] 0x56BE (DG2) [10:23:39] [PASSED] 0x56BF (DG2) [10:23:39] [PASSED] 0x5690 (DG2) [10:23:39] [PASSED] 0x5691 (DG2) [10:23:39] [PASSED] 0x5692 (DG2) [10:23:39] [PASSED] 0x56A5 (DG2) [10:23:39] [PASSED] 0x56A6 (DG2) [10:23:39] [PASSED] 0x56B0 (DG2) [10:23:39] [PASSED] 0x56B1 (DG2) [10:23:39] [PASSED] 0x56BA (DG2) [10:23:39] [PASSED] 0x56BB (DG2) [10:23:39] [PASSED] 0x56BC (DG2) [10:23:39] [PASSED] 0x56BD (DG2) [10:23:39] [PASSED] 0x5693 (DG2) [10:23:39] [PASSED] 0x5694 (DG2) [10:23:39] [PASSED] 0x5695 (DG2) [10:23:39] [PASSED] 0x56A3 (DG2) [10:23:39] [PASSED] 0x56A4 (DG2) [10:23:39] [PASSED] 0x56B2 (DG2) [10:23:39] [PASSED] 0x56B3 (DG2) [10:23:39] [PASSED] 0x5696 (DG2) [10:23:39] [PASSED] 0x5697 (DG2) [10:23:39] [PASSED] 0xB69 (PVC) [10:23:39] [PASSED] 0xB6E (PVC) [10:23:39] [PASSED] 0xBD4 (PVC) [10:23:39] [PASSED] 0xBD5 (PVC) [10:23:39] [PASSED] 0xBD6 (PVC) [10:23:39] [PASSED] 0xBD7 (PVC) [10:23:39] [PASSED] 0xBD8 (PVC) [10:23:39] [PASSED] 0xBD9 (PVC) [10:23:39] [PASSED] 0xBDA (PVC) [10:23:39] [PASSED] 0xBDB (PVC) [10:23:39] [PASSED] 0xBE0 (PVC) [10:23:39] [PASSED] 0xBE1 (PVC) [10:23:39] [PASSED] 0xBE5 (PVC) [10:23:39] [PASSED] 0x7D40 (METEORLAKE) [10:23:39] [PASSED] 0x7D45 (METEORLAKE) [10:23:39] [PASSED] 0x7D55 (METEORLAKE) [10:23:39] [PASSED] 0x7D60 (METEORLAKE) [10:23:39] [PASSED] 0x7DD5 (METEORLAKE) [10:23:39] [PASSED] 0x6420 (LUNARLAKE) [10:23:39] [PASSED] 0x64A0 (LUNARLAKE) [10:23:39] [PASSED] 0x64B0 (LUNARLAKE) [10:23:39] [PASSED] 0xE202 (BATTLEMAGE) [10:23:39] [PASSED] 0xE209 (BATTLEMAGE) [10:23:39] [PASSED] 0xE20B (BATTLEMAGE) [10:23:39] [PASSED] 0xE20C (BATTLEMAGE) [10:23:39] [PASSED] 0xE20D (BATTLEMAGE) [10:23:39] [PASSED] 0xE210 (BATTLEMAGE) [10:23:39] [PASSED] 0xE211 (BATTLEMAGE) [10:23:39] [PASSED] 0xE212 (BATTLEMAGE) [10:23:39] [PASSED] 0xE216 (BATTLEMAGE) [10:23:39] [PASSED] 0xE220 (BATTLEMAGE) [10:23:39] [PASSED] 0xE221 (BATTLEMAGE) [10:23:39] [PASSED] 0xE222 (BATTLEMAGE) [10:23:39] [PASSED] 0xE223 (BATTLEMAGE) [10:23:39] [PASSED] 0xB080 (PANTHERLAKE) [10:23:39] [PASSED] 0xB081 (PANTHERLAKE) [10:23:39] [PASSED] 0xB082 (PANTHERLAKE) [10:23:39] [PASSED] 0xB083 (PANTHERLAKE) [10:23:39] [PASSED] 0xB084 (PANTHERLAKE) [10:23:39] [PASSED] 0xB085 (PANTHERLAKE) [10:23:39] [PASSED] 0xB086 (PANTHERLAKE) [10:23:39] [PASSED] 0xB087 (PANTHERLAKE) [10:23:39] [PASSED] 0xB08F (PANTHERLAKE) [10:23:39] [PASSED] 0xB090 (PANTHERLAKE) [10:23:39] [PASSED] 0xB0A0 (PANTHERLAKE) [10:23:39] [PASSED] 0xB0B0 (PANTHERLAKE) [10:23:39] [PASSED] 0xFD80 (PANTHERLAKE) [10:23:39] [PASSED] 0xFD81 (PANTHERLAKE) [10:23:39] [PASSED] 0xD740 (NOVALAKE_S) [10:23:39] [PASSED] 0xD741 (NOVALAKE_S) [10:23:39] [PASSED] 0xD742 (NOVALAKE_S) [10:23:39] [PASSED] 0xD743 (NOVALAKE_S) [10:23:39] [PASSED] 0xD744 (NOVALAKE_S) [10:23:39] [PASSED] 0xD745 (NOVALAKE_S) [10:23:39] [PASSED] 0x674C (CRESCENTISLAND) [10:23:39] [PASSED] 0x674D (CRESCENTISLAND) [10:23:39] [PASSED] 0x674E (CRESCENTISLAND) [10:23:39] [PASSED] 0x674F (CRESCENTISLAND) [10:23:39] [PASSED] 0x6750 (CRESCENTISLAND) [10:23:39] [PASSED] 0xD750 (NOVALAKE_P) [10:23:39] [PASSED] 0xD751 (NOVALAKE_P) [10:23:39] [PASSED] 0xD752 (NOVALAKE_P) [10:23:39] [PASSED] 0xD753 (NOVALAKE_P) [10:23:39] [PASSED] 0xD754 (NOVALAKE_P) [10:23:39] [PASSED] 0xD755 (NOVALAKE_P) [10:23:39] [PASSED] 0xD756 (NOVALAKE_P) [10:23:39] [PASSED] 0xD757 (NOVALAKE_P) [10:23:39] [PASSED] 0xD75F (NOVALAKE_P) [10:23:39] =============== [PASSED] check_platform_desc =============== [10:23:39] ===================== [PASSED] xe_pci ====================== [10:23:39] =================== xe_rtp (2 subtests) ==================== [10:23:39] =============== xe_rtp_process_to_sr_tests ================ [10:23:39] [PASSED] coalesce-same-reg [10:23:39] [PASSED] no-match-no-add [10:23:39] [PASSED] match-or [10:23:39] [PASSED] match-or-xfail [10:23:39] [PASSED] no-match-no-add-multiple-rules [10:23:39] [PASSED] two-regs-two-entries [10:23:39] [PASSED] clr-one-set-other [10:23:39] [PASSED] set-field [10:23:39] [PASSED] conflict-duplicate [10:23:39] [PASSED] conflict-not-disjoint [10:23:39] [PASSED] conflict-reg-type [10:23:39] [PASSED] bad-mcr-reg-forced-to-regular [10:23:39] [PASSED] bad-regular-reg-forced-to-mcr [10:23:39] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [10:23:39] ================== xe_rtp_process_tests =================== [10:23:39] [PASSED] active1 [10:23:39] [PASSED] active2 [10:23:39] [PASSED] active-inactive [10:23:39] [PASSED] inactive-active [10:23:39] [PASSED] inactive-1st_or_active-inactive [10:23:39] [PASSED] inactive-2nd_or_active-inactive [10:23:39] [PASSED] inactive-last_or_active-inactive [10:23:39] [PASSED] inactive-no_or_active-inactive [10:23:39] ============== [PASSED] xe_rtp_process_tests =============== [10:23:39] ===================== [PASSED] xe_rtp ====================== [10:23:39] ==================== xe_wa (1 subtest) ===================== [10:23:39] ======================== xe_wa_gt ========================= [10:23:39] [PASSED] TIGERLAKE B0 [10:23:39] [PASSED] DG1 A0 [10:23:39] [PASSED] DG1 B0 [10:23:39] [PASSED] ALDERLAKE_S A0 [10:23:39] [PASSED] ALDERLAKE_S B0 [10:23:39] [PASSED] ALDERLAKE_S C0 [10:23:39] [PASSED] ALDERLAKE_S D0 [10:23:39] [PASSED] ALDERLAKE_P A0 [10:23:39] [PASSED] ALDERLAKE_P B0 [10:23:39] [PASSED] ALDERLAKE_P C0 [10:23:39] [PASSED] ALDERLAKE_S RPLS D0 [10:23:39] [PASSED] ALDERLAKE_P RPLU E0 [10:23:39] [PASSED] DG2 G10 C0 [10:23:39] [PASSED] DG2 G11 B1 [10:23:39] [PASSED] DG2 G12 A1 [10:23:39] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [10:23:39] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [10:23:39] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [10:23:39] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [10:23:39] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [10:23:39] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [10:23:39] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [10:23:39] ==================== [PASSED] xe_wa_gt ===================== [10:23:39] ====================== [PASSED] xe_wa ====================== [10:23:39] ============================================================ [10:23:39] Testing complete. Ran 603 tests: passed: 585, skipped: 18 [10:23:39] Elapsed time: 36.158s total, 4.296s configuring, 31.196s building, 0.628s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [10:23:39] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [10:23:41] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [10:24:05] Starting KUnit Kernel (1/1)... [10:24:05] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [10:24:05] ============ drm_test_pick_cmdline (2 subtests) ============ [10:24:05] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [10:24:05] =============== drm_test_pick_cmdline_named =============== [10:24:05] [PASSED] NTSC [10:24:05] [PASSED] NTSC-J [10:24:05] [PASSED] PAL [10:24:05] [PASSED] PAL-M [10:24:05] =========== [PASSED] drm_test_pick_cmdline_named =========== [10:24:05] ============== [PASSED] drm_test_pick_cmdline ============== [10:24:05] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [10:24:05] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [10:24:05] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [10:24:05] =========== drm_validate_clone_mode (2 subtests) =========== [10:24:05] ============== drm_test_check_in_clone_mode =============== [10:24:05] [PASSED] in_clone_mode [10:24:05] [PASSED] not_in_clone_mode [10:24:05] ========== [PASSED] drm_test_check_in_clone_mode =========== [10:24:05] =============== drm_test_check_valid_clones =============== [10:24:05] [PASSED] not_in_clone_mode [10:24:05] [PASSED] valid_clone [10:24:05] [PASSED] invalid_clone [10:24:05] =========== [PASSED] drm_test_check_valid_clones =========== [10:24:05] ============= [PASSED] drm_validate_clone_mode ============= [10:24:05] ============= drm_validate_modeset (1 subtest) ============= [10:24:05] [PASSED] drm_test_check_connector_changed_modeset [10:24:05] ============== [PASSED] drm_validate_modeset =============== [10:24:05] ====== drm_test_bridge_get_current_state (2 subtests) ====== [10:24:05] [PASSED] drm_test_drm_bridge_get_current_state_atomic [10:24:05] [PASSED] drm_test_drm_bridge_get_current_state_legacy [10:24:05] ======== [PASSED] drm_test_bridge_get_current_state ======== [10:24:05] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [10:24:05] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [10:24:05] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [10:24:05] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [10:24:05] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [10:24:05] ============== drm_bridge_alloc (2 subtests) =============== [10:24:05] [PASSED] drm_test_drm_bridge_alloc_basic [10:24:05] [PASSED] drm_test_drm_bridge_alloc_get_put [10:24:05] ================ [PASSED] drm_bridge_alloc ================= [10:24:05] ============= drm_cmdline_parser (40 subtests) ============= [10:24:05] [PASSED] drm_test_cmdline_force_d_only [10:24:05] [PASSED] drm_test_cmdline_force_D_only_dvi [10:24:05] [PASSED] drm_test_cmdline_force_D_only_hdmi [10:24:05] [PASSED] drm_test_cmdline_force_D_only_not_digital [10:24:05] [PASSED] drm_test_cmdline_force_e_only [10:24:05] [PASSED] drm_test_cmdline_res [10:24:05] [PASSED] drm_test_cmdline_res_vesa [10:24:05] [PASSED] drm_test_cmdline_res_vesa_rblank [10:24:05] [PASSED] drm_test_cmdline_res_rblank [10:24:05] [PASSED] drm_test_cmdline_res_bpp [10:24:05] [PASSED] drm_test_cmdline_res_refresh [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [10:24:05] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [10:24:05] [PASSED] drm_test_cmdline_res_margins_force_on [10:24:05] [PASSED] drm_test_cmdline_res_vesa_margins [10:24:05] [PASSED] drm_test_cmdline_name [10:24:05] [PASSED] drm_test_cmdline_name_bpp [10:24:05] [PASSED] drm_test_cmdline_name_option [10:24:05] [PASSED] drm_test_cmdline_name_bpp_option [10:24:05] [PASSED] drm_test_cmdline_rotate_0 [10:24:05] [PASSED] drm_test_cmdline_rotate_90 [10:24:05] [PASSED] drm_test_cmdline_rotate_180 [10:24:05] [PASSED] drm_test_cmdline_rotate_270 [10:24:05] [PASSED] drm_test_cmdline_hmirror [10:24:05] [PASSED] drm_test_cmdline_vmirror [10:24:05] [PASSED] drm_test_cmdline_margin_options [10:24:05] [PASSED] drm_test_cmdline_multiple_options [10:24:05] [PASSED] drm_test_cmdline_bpp_extra_and_option [10:24:05] [PASSED] drm_test_cmdline_extra_and_option [10:24:05] [PASSED] drm_test_cmdline_freestanding_options [10:24:05] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [10:24:05] [PASSED] drm_test_cmdline_panel_orientation [10:24:05] ================ drm_test_cmdline_invalid ================= [10:24:05] [PASSED] margin_only [10:24:05] [PASSED] interlace_only [10:24:05] [PASSED] res_missing_x [10:24:05] [PASSED] res_missing_y [10:24:05] [PASSED] res_bad_y [10:24:05] [PASSED] res_missing_y_bpp [10:24:05] [PASSED] res_bad_bpp [10:24:05] [PASSED] res_bad_refresh [10:24:05] [PASSED] res_bpp_refresh_force_on_off [10:24:05] [PASSED] res_invalid_mode [10:24:05] [PASSED] res_bpp_wrong_place_mode [10:24:05] [PASSED] name_bpp_refresh [10:24:05] [PASSED] name_refresh [10:24:05] [PASSED] name_refresh_wrong_mode [10:24:05] [PASSED] name_refresh_invalid_mode [10:24:05] [PASSED] rotate_multiple [10:24:05] [PASSED] rotate_invalid_val [10:24:05] [PASSED] rotate_truncated [10:24:05] [PASSED] invalid_option [10:24:05] [PASSED] invalid_tv_option [10:24:05] [PASSED] truncated_tv_option [10:24:05] ============ [PASSED] drm_test_cmdline_invalid ============= [10:24:05] =============== drm_test_cmdline_tv_options =============== [10:24:05] [PASSED] NTSC [10:24:05] [PASSED] NTSC_443 [10:24:05] [PASSED] NTSC_J [10:24:05] [PASSED] PAL [10:24:05] [PASSED] PAL_M [10:24:05] [PASSED] PAL_N [10:24:05] [PASSED] SECAM [10:24:05] [PASSED] MONO_525 [10:24:05] [PASSED] MONO_625 [10:24:05] =========== [PASSED] drm_test_cmdline_tv_options =========== [10:24:05] =============== [PASSED] drm_cmdline_parser ================ [10:24:05] ========== drmm_connector_hdmi_init (20 subtests) ========== [10:24:05] [PASSED] drm_test_connector_hdmi_init_valid [10:24:05] [PASSED] drm_test_connector_hdmi_init_bpc_8 [10:24:05] [PASSED] drm_test_connector_hdmi_init_bpc_10 [10:24:05] [PASSED] drm_test_connector_hdmi_init_bpc_12 [10:24:05] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [10:24:05] [PASSED] drm_test_connector_hdmi_init_bpc_null [10:24:05] [PASSED] drm_test_connector_hdmi_init_formats_empty [10:24:05] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [10:24:05] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [10:24:05] [PASSED] supported_formats=0x9 yuv420_allowed=1 [10:24:05] [PASSED] supported_formats=0x9 yuv420_allowed=0 [10:24:05] [PASSED] supported_formats=0x5 yuv420_allowed=1 [10:24:05] [PASSED] supported_formats=0x5 yuv420_allowed=0 [10:24:05] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [10:24:05] [PASSED] drm_test_connector_hdmi_init_null_ddc [10:24:05] [PASSED] drm_test_connector_hdmi_init_null_product [10:24:05] [PASSED] drm_test_connector_hdmi_init_null_vendor [10:24:05] [PASSED] drm_test_connector_hdmi_init_product_length_exact [10:24:05] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [10:24:05] [PASSED] drm_test_connector_hdmi_init_product_valid [10:24:05] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [10:24:05] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [10:24:05] [PASSED] drm_test_connector_hdmi_init_vendor_valid [10:24:05] ========= drm_test_connector_hdmi_init_type_valid ========= [10:24:05] [PASSED] HDMI-A [10:24:05] [PASSED] HDMI-B [10:24:05] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [10:24:05] ======== drm_test_connector_hdmi_init_type_invalid ======== [10:24:05] [PASSED] Unknown [10:24:05] [PASSED] VGA [10:24:05] [PASSED] DVI-I [10:24:05] [PASSED] DVI-D [10:24:05] [PASSED] DVI-A [10:24:05] [PASSED] Composite [10:24:05] [PASSED] SVIDEO [10:24:05] [PASSED] LVDS [10:24:05] [PASSED] Component [10:24:05] [PASSED] DIN [10:24:05] [PASSED] DP [10:24:05] [PASSED] TV [10:24:05] [PASSED] eDP [10:24:05] [PASSED] Virtual [10:24:05] [PASSED] DSI [10:24:05] [PASSED] DPI [10:24:05] [PASSED] Writeback [10:24:05] [PASSED] SPI [10:24:05] [PASSED] USB [10:24:05] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [10:24:05] ============ [PASSED] drmm_connector_hdmi_init ============= [10:24:05] ============= drmm_connector_init (3 subtests) ============= [10:24:05] [PASSED] drm_test_drmm_connector_init [10:24:05] [PASSED] drm_test_drmm_connector_init_null_ddc [10:24:05] ========= drm_test_drmm_connector_init_type_valid ========= [10:24:05] [PASSED] Unknown [10:24:05] [PASSED] VGA [10:24:05] [PASSED] DVI-I [10:24:05] [PASSED] DVI-D [10:24:05] [PASSED] DVI-A [10:24:05] [PASSED] Composite [10:24:05] [PASSED] SVIDEO [10:24:05] [PASSED] LVDS [10:24:05] [PASSED] Component [10:24:05] [PASSED] DIN [10:24:05] [PASSED] DP [10:24:05] [PASSED] HDMI-A [10:24:05] [PASSED] HDMI-B [10:24:05] [PASSED] TV [10:24:05] [PASSED] eDP [10:24:05] [PASSED] Virtual [10:24:05] [PASSED] DSI [10:24:05] [PASSED] DPI [10:24:05] [PASSED] Writeback [10:24:05] [PASSED] SPI [10:24:05] [PASSED] USB [10:24:05] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [10:24:05] =============== [PASSED] drmm_connector_init =============== [10:24:05] ========= drm_connector_dynamic_init (6 subtests) ========== [10:24:05] [PASSED] drm_test_drm_connector_dynamic_init [10:24:05] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [10:24:05] [PASSED] drm_test_drm_connector_dynamic_init_not_added [10:24:05] [PASSED] drm_test_drm_connector_dynamic_init_properties [10:24:05] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [10:24:05] [PASSED] Unknown [10:24:05] [PASSED] VGA [10:24:05] [PASSED] DVI-I [10:24:05] [PASSED] DVI-D [10:24:05] [PASSED] DVI-A [10:24:05] [PASSED] Composite [10:24:05] [PASSED] SVIDEO [10:24:05] [PASSED] LVDS [10:24:05] [PASSED] Component [10:24:05] [PASSED] DIN [10:24:05] [PASSED] DP [10:24:05] [PASSED] HDMI-A [10:24:05] [PASSED] HDMI-B [10:24:05] [PASSED] TV [10:24:05] [PASSED] eDP [10:24:05] [PASSED] Virtual [10:24:05] [PASSED] DSI [10:24:05] [PASSED] DPI [10:24:05] [PASSED] Writeback [10:24:05] [PASSED] SPI [10:24:05] [PASSED] USB [10:24:05] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [10:24:05] ======== drm_test_drm_connector_dynamic_init_name ========= [10:24:05] [PASSED] Unknown [10:24:05] [PASSED] VGA [10:24:05] [PASSED] DVI-I [10:24:05] [PASSED] DVI-D [10:24:05] [PASSED] DVI-A [10:24:05] [PASSED] Composite [10:24:05] [PASSED] SVIDEO [10:24:05] [PASSED] LVDS [10:24:05] [PASSED] Component [10:24:05] [PASSED] DIN [10:24:05] [PASSED] DP [10:24:05] [PASSED] HDMI-A [10:24:05] [PASSED] HDMI-B [10:24:05] [PASSED] TV [10:24:05] [PASSED] eDP [10:24:05] [PASSED] Virtual [10:24:05] [PASSED] DSI [10:24:05] [PASSED] DPI [10:24:05] [PASSED] Writeback [10:24:05] [PASSED] SPI [10:24:05] [PASSED] USB [10:24:05] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [10:24:05] =========== [PASSED] drm_connector_dynamic_init ============ [10:24:05] ==== drm_connector_dynamic_register_early (4 subtests) ===== [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [10:24:05] ====== [PASSED] drm_connector_dynamic_register_early ======= [10:24:05] ======= drm_connector_dynamic_register (7 subtests) ======== [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_on_list [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_no_init [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [10:24:05] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [10:24:05] ========= [PASSED] drm_connector_dynamic_register ========== [10:24:05] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [10:24:05] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [10:24:05] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [10:24:05] === [PASSED] drm_connector_attach_broadcast_rgb_property === [10:24:05] ========== drm_get_tv_mode_from_name (2 subtests) ========== [10:24:05] ========== drm_test_get_tv_mode_from_name_valid =========== [10:24:05] [PASSED] NTSC [10:24:05] [PASSED] NTSC-443 [10:24:05] [PASSED] NTSC-J [10:24:05] [PASSED] PAL [10:24:05] [PASSED] PAL-M [10:24:05] [PASSED] PAL-N [10:24:05] [PASSED] SECAM [10:24:05] [PASSED] Mono [10:24:05] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [10:24:05] [PASSED] drm_test_get_tv_mode_from_name_truncated [10:24:05] ============ [PASSED] drm_get_tv_mode_from_name ============ [10:24:05] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [10:24:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [10:24:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [10:24:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [10:24:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [10:24:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [10:24:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [10:24:05] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [10:24:05] [PASSED] VIC 96 [10:24:05] [PASSED] VIC 97 [10:24:05] [PASSED] VIC 101 [10:24:05] [PASSED] VIC 102 [10:24:05] [PASSED] VIC 106 [10:24:05] [PASSED] VIC 107 [10:24:05] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [10:24:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [10:24:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [10:24:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [10:24:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [10:24:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [10:24:05] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [10:24:05] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [10:24:05] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [10:24:05] [PASSED] Automatic [10:24:05] [PASSED] Full [10:24:05] [PASSED] Limited 16:235 [10:24:05] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [10:24:05] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [10:24:05] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [10:24:05] == drm_hdmi_connector_get_output_format_name (2 subtests) == [10:24:05] === drm_test_drm_hdmi_connector_get_output_format_name ==== [10:24:05] [PASSED] RGB [10:24:05] [PASSED] YUV 4:2:0 [10:24:05] [PASSED] YUV 4:2:2 [10:24:05] [PASSED] YUV 4:4:4 [10:24:05] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [10:24:05] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [10:24:05] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [10:24:05] ============= drm_damage_helper (21 subtests) ============== [10:24:05] [PASSED] drm_test_damage_iter_no_damage [10:24:05] [PASSED] drm_test_damage_iter_no_damage_fractional_src [10:24:05] [PASSED] drm_test_damage_iter_no_damage_src_moved [10:24:05] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [10:24:05] [PASSED] drm_test_damage_iter_no_damage_not_visible [10:24:05] [PASSED] drm_test_damage_iter_no_damage_no_crtc [10:24:05] [PASSED] drm_test_damage_iter_no_damage_no_fb [10:24:05] [PASSED] drm_test_damage_iter_simple_damage [10:24:05] [PASSED] drm_test_damage_iter_single_damage [10:24:05] [PASSED] drm_test_damage_iter_single_damage_intersect_src [10:24:05] [PASSED] drm_test_damage_iter_single_damage_outside_src [10:24:05] [PASSED] drm_test_damage_iter_single_damage_fractional_src [10:24:05] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [10:24:05] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [10:24:05] [PASSED] drm_test_damage_iter_single_damage_src_moved [10:24:05] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [10:24:05] [PASSED] drm_test_damage_iter_damage [10:24:05] [PASSED] drm_test_damage_iter_damage_one_intersect [10:24:05] [PASSED] drm_test_damage_iter_damage_one_outside [10:24:05] [PASSED] drm_test_damage_iter_damage_src_moved [10:24:05] [PASSED] drm_test_damage_iter_damage_not_visible [10:24:05] ================ [PASSED] drm_damage_helper ================ [10:24:05] ============== drm_dp_mst_helper (3 subtests) ============== [10:24:05] ============== drm_test_dp_mst_calc_pbn_mode ============== [10:24:05] [PASSED] Clock 154000 BPP 30 DSC disabled [10:24:05] [PASSED] Clock 234000 BPP 30 DSC disabled [10:24:05] [PASSED] Clock 297000 BPP 24 DSC disabled [10:24:05] [PASSED] Clock 332880 BPP 24 DSC enabled [10:24:05] [PASSED] Clock 324540 BPP 24 DSC enabled [10:24:05] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [10:24:05] ============== drm_test_dp_mst_calc_pbn_div =============== [10:24:05] [PASSED] Link rate 2000000 lane count 4 [10:24:05] [PASSED] Link rate 2000000 lane count 2 [10:24:05] [PASSED] Link rate 2000000 lane count 1 [10:24:05] [PASSED] Link rate 1350000 lane count 4 [10:24:05] [PASSED] Link rate 1350000 lane count 2 [10:24:05] [PASSED] Link rate 1350000 lane count 1 [10:24:05] [PASSED] Link rate 1000000 lane count 4 [10:24:05] [PASSED] Link rate 1000000 lane count 2 [10:24:05] [PASSED] Link rate 1000000 lane count 1 [10:24:05] [PASSED] Link rate 810000 lane count 4 [10:24:05] [PASSED] Link rate 810000 lane count 2 [10:24:05] [PASSED] Link rate 810000 lane count 1 [10:24:05] [PASSED] Link rate 540000 lane count 4 [10:24:05] [PASSED] Link rate 540000 lane count 2 [10:24:05] [PASSED] Link rate 540000 lane count 1 [10:24:05] [PASSED] Link rate 270000 lane count 4 [10:24:05] [PASSED] Link rate 270000 lane count 2 [10:24:05] [PASSED] Link rate 270000 lane count 1 [10:24:05] [PASSED] Link rate 162000 lane count 4 [10:24:05] [PASSED] Link rate 162000 lane count 2 [10:24:05] [PASSED] Link rate 162000 lane count 1 [10:24:05] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [10:24:05] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [10:24:05] [PASSED] DP_ENUM_PATH_RESOURCES with port number [10:24:05] [PASSED] DP_POWER_UP_PHY with port number [10:24:05] [PASSED] DP_POWER_DOWN_PHY with port number [10:24:05] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [10:24:05] [PASSED] DP_ALLOCATE_PAYLOAD with port number [10:24:05] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [10:24:05] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [10:24:05] [PASSED] DP_QUERY_PAYLOAD with port number [10:24:05] [PASSED] DP_QUERY_PAYLOAD with VCPI [10:24:05] [PASSED] DP_REMOTE_DPCD_READ with port number [10:24:05] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [10:24:05] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [10:24:05] [PASSED] DP_REMOTE_DPCD_WRITE with port number [10:24:05] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [10:24:05] [PASSED] DP_REMOTE_DPCD_WRITE with data array [10:24:05] [PASSED] DP_REMOTE_I2C_READ with port number [10:24:05] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [10:24:05] [PASSED] DP_REMOTE_I2C_READ with transactions array [10:24:05] [PASSED] DP_REMOTE_I2C_WRITE with port number [10:24:05] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [10:24:05] [PASSED] DP_REMOTE_I2C_WRITE with data array [10:24:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [10:24:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [10:24:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [10:24:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [10:24:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [10:24:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [10:24:05] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [10:24:05] ================ [PASSED] drm_dp_mst_helper ================ [10:24:05] ================== drm_exec (7 subtests) =================== [10:24:05] [PASSED] sanitycheck [10:24:05] [PASSED] test_lock [10:24:05] [PASSED] test_lock_unlock [10:24:05] [PASSED] test_duplicates [10:24:05] [PASSED] test_prepare [10:24:05] [PASSED] test_prepare_array [10:24:05] [PASSED] test_multiple_loops [10:24:05] ==================== [PASSED] drm_exec ===================== [10:24:05] =========== drm_format_helper_test (17 subtests) =========== [10:24:05] ============== drm_test_fb_xrgb8888_to_gray8 ============== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [10:24:05] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [10:24:05] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [10:24:05] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [10:24:05] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [10:24:05] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [10:24:05] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [10:24:05] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [10:24:05] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [10:24:05] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [10:24:05] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [10:24:05] ============== drm_test_fb_xrgb8888_to_mono =============== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [10:24:05] ==================== drm_test_fb_swab ===================== [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ================ [PASSED] drm_test_fb_swab ================= [10:24:05] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [10:24:05] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [10:24:05] [PASSED] single_pixel_source_buffer [10:24:05] [PASSED] single_pixel_clip_rectangle [10:24:05] [PASSED] well_known_colors [10:24:05] [PASSED] destination_pitch [10:24:05] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [10:24:05] ================= drm_test_fb_clip_offset ================= [10:24:05] [PASSED] pass through [10:24:05] [PASSED] horizontal offset [10:24:05] [PASSED] vertical offset [10:24:05] [PASSED] horizontal and vertical offset [10:24:05] [PASSED] horizontal offset (custom pitch) [10:24:05] [PASSED] vertical offset (custom pitch) [10:24:05] [PASSED] horizontal and vertical offset (custom pitch) [10:24:05] ============= [PASSED] drm_test_fb_clip_offset ============= [10:24:05] =================== drm_test_fb_memcpy ==================== [10:24:05] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [10:24:05] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [10:24:05] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [10:24:05] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [10:24:05] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [10:24:05] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [10:24:05] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [10:24:05] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [10:24:05] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [10:24:05] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [10:24:05] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [10:24:05] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [10:24:05] =============== [PASSED] drm_test_fb_memcpy ================ [10:24:05] ============= [PASSED] drm_format_helper_test ============== [10:24:05] ================= drm_format (18 subtests) ================= [10:24:05] [PASSED] drm_test_format_block_width_invalid [10:24:05] [PASSED] drm_test_format_block_width_one_plane [10:24:05] [PASSED] drm_test_format_block_width_two_plane [10:24:05] [PASSED] drm_test_format_block_width_three_plane [10:24:05] [PASSED] drm_test_format_block_width_tiled [10:24:05] [PASSED] drm_test_format_block_height_invalid [10:24:05] [PASSED] drm_test_format_block_height_one_plane [10:24:05] [PASSED] drm_test_format_block_height_two_plane [10:24:05] [PASSED] drm_test_format_block_height_three_plane [10:24:05] [PASSED] drm_test_format_block_height_tiled [10:24:05] [PASSED] drm_test_format_min_pitch_invalid [10:24:05] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [10:24:05] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [10:24:05] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [10:24:05] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [10:24:05] [PASSED] drm_test_format_min_pitch_two_plane [10:24:05] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [10:24:05] [PASSED] drm_test_format_min_pitch_tiled [10:24:05] =================== [PASSED] drm_format ==================== [10:24:05] ============== drm_framebuffer (10 subtests) =============== [10:24:05] ========== drm_test_framebuffer_check_src_coords ========== [10:24:05] [PASSED] Success: source fits into fb [10:24:05] [PASSED] Fail: overflowing fb with x-axis coordinate [10:24:05] [PASSED] Fail: overflowing fb with y-axis coordinate [10:24:05] [PASSED] Fail: overflowing fb with source width [10:24:05] [PASSED] Fail: overflowing fb with source height [10:24:05] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [10:24:05] [PASSED] drm_test_framebuffer_cleanup [10:24:05] =============== drm_test_framebuffer_create =============== [10:24:05] [PASSED] ABGR8888 normal sizes [10:24:05] [PASSED] ABGR8888 max sizes [10:24:05] [PASSED] ABGR8888 pitch greater than min required [10:24:05] [PASSED] ABGR8888 pitch less than min required [10:24:05] [PASSED] ABGR8888 Invalid width [10:24:05] [PASSED] ABGR8888 Invalid buffer handle [10:24:05] [PASSED] No pixel format [10:24:05] [PASSED] ABGR8888 Width 0 [10:24:05] [PASSED] ABGR8888 Height 0 [10:24:05] [PASSED] ABGR8888 Out of bound height * pitch combination [10:24:05] [PASSED] ABGR8888 Large buffer offset [10:24:05] [PASSED] ABGR8888 Buffer offset for inexistent plane [10:24:05] [PASSED] ABGR8888 Invalid flag [10:24:05] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [10:24:05] [PASSED] ABGR8888 Valid buffer modifier [10:24:05] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [10:24:05] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [10:24:05] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [10:24:05] [PASSED] NV12 Normal sizes [10:24:05] [PASSED] NV12 Max sizes [10:24:05] [PASSED] NV12 Invalid pitch [10:24:05] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [10:24:05] [PASSED] NV12 different modifier per-plane [10:24:05] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [10:24:05] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [10:24:05] [PASSED] NV12 Modifier for inexistent plane [10:24:05] [PASSED] NV12 Handle for inexistent plane [10:24:05] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [10:24:05] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [10:24:05] [PASSED] YVU420 Normal sizes [10:24:05] [PASSED] YVU420 Max sizes [10:24:05] [PASSED] YVU420 Invalid pitch [10:24:05] [PASSED] YVU420 Different pitches [10:24:05] [PASSED] YVU420 Different buffer offsets/pitches [10:24:05] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [10:24:05] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [10:24:05] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [10:24:05] [PASSED] YVU420 Valid modifier [10:24:05] [PASSED] YVU420 Different modifiers per plane [10:24:05] [PASSED] YVU420 Modifier for inexistent plane [10:24:05] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [10:24:05] [PASSED] X0L2 Normal sizes [10:24:05] [PASSED] X0L2 Max sizes [10:24:05] [PASSED] X0L2 Invalid pitch [10:24:05] [PASSED] X0L2 Pitch greater than minimum required [10:24:05] [PASSED] X0L2 Handle for inexistent plane [10:24:05] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [10:24:05] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [10:24:05] [PASSED] X0L2 Valid modifier [10:24:05] [PASSED] X0L2 Modifier for inexistent plane [10:24:05] =========== [PASSED] drm_test_framebuffer_create =========== [10:24:05] [PASSED] drm_test_framebuffer_free [10:24:05] [PASSED] drm_test_framebuffer_init [10:24:05] [PASSED] drm_test_framebuffer_init_bad_format [10:24:05] [PASSED] drm_test_framebuffer_init_dev_mismatch [10:24:05] [PASSED] drm_test_framebuffer_lookup [10:24:05] [PASSED] drm_test_framebuffer_lookup_inexistent [10:24:05] [PASSED] drm_test_framebuffer_modifiers_not_supported [10:24:05] ================= [PASSED] drm_framebuffer ================= [10:24:05] ================ drm_gem_shmem (8 subtests) ================ [10:24:05] [PASSED] drm_gem_shmem_test_obj_create [10:24:05] [PASSED] drm_gem_shmem_test_obj_create_private [10:24:05] [PASSED] drm_gem_shmem_test_pin_pages [10:24:05] [PASSED] drm_gem_shmem_test_vmap [10:24:05] [PASSED] drm_gem_shmem_test_get_sg_table [10:24:05] [PASSED] drm_gem_shmem_test_get_pages_sgt [10:24:05] [PASSED] drm_gem_shmem_test_madvise [10:24:05] [PASSED] drm_gem_shmem_test_purge [10:24:05] ================== [PASSED] drm_gem_shmem ================== [10:24:05] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [10:24:05] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [10:24:05] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [10:24:05] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [10:24:05] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [10:24:05] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [10:24:05] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [10:24:05] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [10:24:05] [PASSED] Automatic [10:24:05] [PASSED] Full [10:24:05] [PASSED] Limited 16:235 [10:24:05] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [10:24:05] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [10:24:05] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [10:24:05] [PASSED] drm_test_check_disable_connector [10:24:05] [PASSED] drm_test_check_hdmi_funcs_reject_rate [10:24:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [10:24:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [10:24:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [10:24:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [10:24:05] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [10:24:05] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [10:24:05] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [10:24:05] [PASSED] drm_test_check_output_bpc_dvi [10:24:05] [PASSED] drm_test_check_output_bpc_format_vic_1 [10:24:05] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [10:24:05] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [10:24:05] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [10:24:05] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [10:24:05] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [10:24:05] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [10:24:05] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [10:24:05] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [10:24:05] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [10:24:05] [PASSED] drm_test_check_broadcast_rgb_value [10:24:05] [PASSED] drm_test_check_bpc_8_value [10:24:05] [PASSED] drm_test_check_bpc_10_value [10:24:05] [PASSED] drm_test_check_bpc_12_value [10:24:05] [PASSED] drm_test_check_format_value [10:24:05] [PASSED] drm_test_check_tmds_char_value [10:24:05] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [10:24:05] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [10:24:05] [PASSED] drm_test_check_mode_valid [10:24:05] [PASSED] drm_test_check_mode_valid_reject [10:24:05] [PASSED] drm_test_check_mode_valid_reject_rate [10:24:05] [PASSED] drm_test_check_mode_valid_reject_max_clock [10:24:05] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [10:24:05] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) = [10:24:05] [PASSED] drm_test_check_infoframes [10:24:05] [PASSED] drm_test_check_reject_avi_infoframe [10:24:05] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8 [10:24:05] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10 [10:24:05] [PASSED] drm_test_check_reject_audio_infoframe [10:24:05] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes === [10:24:05] ================= drm_managed (2 subtests) ================= [10:24:05] [PASSED] drm_test_managed_release_action [10:24:05] [PASSED] drm_test_managed_run_action [10:24:05] =================== [PASSED] drm_managed =================== [10:24:05] =================== drm_mm (6 subtests) ==================== [10:24:05] [PASSED] drm_test_mm_init [10:24:05] [PASSED] drm_test_mm_debug [10:24:05] [PASSED] drm_test_mm_align32 [10:24:05] [PASSED] drm_test_mm_align64 [10:24:05] [PASSED] drm_test_mm_lowest [10:24:05] [PASSED] drm_test_mm_highest [10:24:05] ===================== [PASSED] drm_mm ====================== [10:24:05] ============= drm_modes_analog_tv (5 subtests) ============= [10:24:05] [PASSED] drm_test_modes_analog_tv_mono_576i [10:24:05] [PASSED] drm_test_modes_analog_tv_ntsc_480i [10:24:05] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [10:24:05] [PASSED] drm_test_modes_analog_tv_pal_576i [10:24:05] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [10:24:05] =============== [PASSED] drm_modes_analog_tv =============== [10:24:05] ============== drm_plane_helper (2 subtests) =============== [10:24:05] =============== drm_test_check_plane_state ================ [10:24:05] [PASSED] clipping_simple [10:24:05] [PASSED] clipping_rotate_reflect [10:24:05] [PASSED] positioning_simple [10:24:05] [PASSED] upscaling [10:24:05] [PASSED] downscaling [10:24:05] [PASSED] rounding1 [10:24:05] [PASSED] rounding2 [10:24:05] [PASSED] rounding3 [10:24:05] [PASSED] rounding4 [10:24:05] =========== [PASSED] drm_test_check_plane_state ============ [10:24:05] =========== drm_test_check_invalid_plane_state ============ [10:24:05] [PASSED] positioning_invalid [10:24:05] [PASSED] upscaling_invalid [10:24:05] [PASSED] downscaling_invalid [10:24:05] ======= [PASSED] drm_test_check_invalid_plane_state ======== [10:24:05] ================ [PASSED] drm_plane_helper ================= [10:24:05] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [10:24:05] ====== drm_test_connector_helper_tv_get_modes_check ======= [10:24:05] [PASSED] None [10:24:05] [PASSED] PAL [10:24:05] [PASSED] NTSC [10:24:05] [PASSED] Both, NTSC Default [10:24:05] [PASSED] Both, PAL Default [10:24:05] [PASSED] Both, NTSC Default, with PAL on command-line [10:24:05] [PASSED] Both, PAL Default, with NTSC on command-line [10:24:05] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [10:24:05] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [10:24:05] ================== drm_rect (9 subtests) =================== [10:24:05] [PASSED] drm_test_rect_clip_scaled_div_by_zero [10:24:05] [PASSED] drm_test_rect_clip_scaled_not_clipped [10:24:05] [PASSED] drm_test_rect_clip_scaled_clipped [10:24:05] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [10:24:05] ================= drm_test_rect_intersect ================= [10:24:05] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [10:24:05] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [10:24:05] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [10:24:05] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [10:24:05] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [10:24:05] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [10:24:05] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [10:24:05] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [10:24:05] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [10:24:05] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [10:24:05] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [10:24:05] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [10:24:05] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [10:24:05] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [10:24:05] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [10:24:05] ============= [PASSED] drm_test_rect_intersect ============= [10:24:05] ================ drm_test_rect_calc_hscale ================ [10:24:05] [PASSED] normal use [10:24:05] [PASSED] out of max range [10:24:05] [PASSED] out of min range [10:24:05] [PASSED] zero dst [10:24:05] [PASSED] negative src [10:24:05] [PASSED] negative dst [10:24:05] ============ [PASSED] drm_test_rect_calc_hscale ============ [10:24:05] ================ drm_test_rect_calc_vscale ================ [10:24:05] [PASSED] normal use [10:24:05] [PASSED] out of max range [10:24:05] [PASSED] out of min range [10:24:05] [PASSED] zero dst [10:24:05] [PASSED] negative src [10:24:05] [PASSED] negative dst [10:24:05] ============ [PASSED] drm_test_rect_calc_vscale ============ [10:24:05] ================== drm_test_rect_rotate =================== [10:24:05] [PASSED] reflect-x [10:24:05] [PASSED] reflect-y [10:24:05] [PASSED] rotate-0 [10:24:05] [PASSED] rotate-90 [10:24:05] [PASSED] rotate-180 [10:24:05] [PASSED] rotate-270 [10:24:05] ============== [PASSED] drm_test_rect_rotate =============== [10:24:05] ================ drm_test_rect_rotate_inv ================= [10:24:05] [PASSED] reflect-x [10:24:05] [PASSED] reflect-y [10:24:05] [PASSED] rotate-0 [10:24:05] [PASSED] rotate-90 [10:24:05] [PASSED] rotate-180 [10:24:05] [PASSED] rotate-270 [10:24:05] ============ [PASSED] drm_test_rect_rotate_inv ============= [10:24:05] ==================== [PASSED] drm_rect ===================== [10:24:05] ============ drm_sysfb_modeset_test (1 subtest) ============ [10:24:05] ============ drm_test_sysfb_build_fourcc_list ============= [10:24:05] [PASSED] no native formats [10:24:05] [PASSED] XRGB8888 as native format [10:24:05] [PASSED] remove duplicates [10:24:05] [PASSED] convert alpha formats [10:24:05] [PASSED] random formats [10:24:05] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [10:24:05] ============= [PASSED] drm_sysfb_modeset_test ============== [10:24:05] ================== drm_fixp (2 subtests) =================== [10:24:05] [PASSED] drm_test_int2fixp [10:24:05] [PASSED] drm_test_sm2fixp [10:24:05] ==================== [PASSED] drm_fixp ===================== [10:24:05] ============================================================ [10:24:05] Testing complete. Ran 621 tests: passed: 621 [10:24:05] Elapsed time: 25.856s total, 1.773s configuring, 23.917s building, 0.140s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [10:24:05] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [10:24:07] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [10:24:16] Starting KUnit Kernel (1/1)... [10:24:16] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [10:24:16] ================= ttm_device (5 subtests) ================== [10:24:16] [PASSED] ttm_device_init_basic [10:24:16] [PASSED] ttm_device_init_multiple [10:24:16] [PASSED] ttm_device_fini_basic [10:24:16] [PASSED] ttm_device_init_no_vma_man [10:24:16] ================== ttm_device_init_pools ================== [10:24:16] [PASSED] No DMA allocations, no DMA32 required [10:24:16] [PASSED] DMA allocations, DMA32 required [10:24:16] [PASSED] No DMA allocations, DMA32 required [10:24:16] [PASSED] DMA allocations, no DMA32 required [10:24:16] ============== [PASSED] ttm_device_init_pools ============== [10:24:16] =================== [PASSED] ttm_device ==================== [10:24:16] ================== ttm_pool (8 subtests) =================== [10:24:16] ================== ttm_pool_alloc_basic =================== [10:24:16] [PASSED] One page [10:24:16] [PASSED] More than one page [10:24:16] [PASSED] Above the allocation limit [10:24:16] [PASSED] One page, with coherent DMA mappings enabled [10:24:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [10:24:16] ============== [PASSED] ttm_pool_alloc_basic =============== [10:24:16] ============== ttm_pool_alloc_basic_dma_addr ============== [10:24:16] [PASSED] One page [10:24:16] [PASSED] More than one page [10:24:16] [PASSED] Above the allocation limit [10:24:16] [PASSED] One page, with coherent DMA mappings enabled [10:24:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [10:24:16] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [10:24:16] [PASSED] ttm_pool_alloc_order_caching_match [10:24:16] [PASSED] ttm_pool_alloc_caching_mismatch [10:24:16] [PASSED] ttm_pool_alloc_order_mismatch [10:24:16] [PASSED] ttm_pool_free_dma_alloc [10:24:16] [PASSED] ttm_pool_free_no_dma_alloc [10:24:16] [PASSED] ttm_pool_fini_basic [10:24:16] ==================== [PASSED] ttm_pool ===================== [10:24:16] ================ ttm_resource (8 subtests) ================= [10:24:16] ================= ttm_resource_init_basic ================= [10:24:16] [PASSED] Init resource in TTM_PL_SYSTEM [10:24:16] [PASSED] Init resource in TTM_PL_VRAM [10:24:16] [PASSED] Init resource in a private placement [10:24:16] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [10:24:16] ============= [PASSED] ttm_resource_init_basic ============= [10:24:16] [PASSED] ttm_resource_init_pinned [10:24:16] [PASSED] ttm_resource_fini_basic [10:24:16] [PASSED] ttm_resource_manager_init_basic [10:24:16] [PASSED] ttm_resource_manager_usage_basic [10:24:16] [PASSED] ttm_resource_manager_set_used_basic [10:24:16] [PASSED] ttm_sys_man_alloc_basic [10:24:16] [PASSED] ttm_sys_man_free_basic [10:24:16] ================== [PASSED] ttm_resource =================== [10:24:16] =================== ttm_tt (15 subtests) =================== [10:24:16] ==================== ttm_tt_init_basic ==================== [10:24:16] [PASSED] Page-aligned size [10:24:16] [PASSED] Extra pages requested [10:24:16] ================ [PASSED] ttm_tt_init_basic ================ [10:24:16] [PASSED] ttm_tt_init_misaligned [10:24:16] [PASSED] ttm_tt_fini_basic [10:24:16] [PASSED] ttm_tt_fini_sg [10:24:16] [PASSED] ttm_tt_fini_shmem [10:24:16] [PASSED] ttm_tt_create_basic [10:24:16] [PASSED] ttm_tt_create_invalid_bo_type [10:24:16] [PASSED] ttm_tt_create_ttm_exists [10:24:16] [PASSED] ttm_tt_create_failed [10:24:16] [PASSED] ttm_tt_destroy_basic [10:24:16] [PASSED] ttm_tt_populate_null_ttm [10:24:16] [PASSED] ttm_tt_populate_populated_ttm [10:24:16] [PASSED] ttm_tt_unpopulate_basic [10:24:16] [PASSED] ttm_tt_unpopulate_empty_ttm [10:24:16] [PASSED] ttm_tt_swapin_basic [10:24:16] ===================== [PASSED] ttm_tt ====================== [10:24:16] =================== ttm_bo (14 subtests) =================== [10:24:16] =========== ttm_bo_reserve_optimistic_no_ticket =========== [10:24:16] [PASSED] Cannot be interrupted and sleeps [10:24:16] [PASSED] Cannot be interrupted, locks straight away [10:24:16] [PASSED] Can be interrupted, sleeps [10:24:16] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [10:24:16] [PASSED] ttm_bo_reserve_locked_no_sleep [10:24:16] [PASSED] ttm_bo_reserve_no_wait_ticket [10:24:16] [PASSED] ttm_bo_reserve_double_resv [10:24:16] [PASSED] ttm_bo_reserve_interrupted [10:24:16] [PASSED] ttm_bo_reserve_deadlock [10:24:16] [PASSED] ttm_bo_unreserve_basic [10:24:16] [PASSED] ttm_bo_unreserve_pinned [10:24:16] [PASSED] ttm_bo_unreserve_bulk [10:24:16] [PASSED] ttm_bo_fini_basic [10:24:16] [PASSED] ttm_bo_fini_shared_resv [10:24:16] [PASSED] ttm_bo_pin_basic [10:24:16] [PASSED] ttm_bo_pin_unpin_resource [10:24:16] [PASSED] ttm_bo_multiple_pin_one_unpin [10:24:16] ===================== [PASSED] ttm_bo ====================== [10:24:16] ============== ttm_bo_validate (22 subtests) =============== [10:24:16] ============== ttm_bo_init_reserved_sys_man =============== [10:24:16] [PASSED] Buffer object for userspace [10:24:16] [PASSED] Kernel buffer object [10:24:16] [PASSED] Shared buffer object [10:24:16] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [10:24:16] ============== ttm_bo_init_reserved_mock_man ============== [10:24:16] [PASSED] Buffer object for userspace [10:24:16] [PASSED] Kernel buffer object [10:24:16] [PASSED] Shared buffer object [10:24:16] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [10:24:16] [PASSED] ttm_bo_init_reserved_resv [10:24:16] ================== ttm_bo_validate_basic ================== [10:24:16] [PASSED] Buffer object for userspace [10:24:16] [PASSED] Kernel buffer object [10:24:16] [PASSED] Shared buffer object [10:24:16] ============== [PASSED] ttm_bo_validate_basic ============== [10:24:16] [PASSED] ttm_bo_validate_invalid_placement [10:24:16] ============= ttm_bo_validate_same_placement ============== [10:24:16] [PASSED] System manager [10:24:16] [PASSED] VRAM manager [10:24:16] ========= [PASSED] ttm_bo_validate_same_placement ========== [10:24:16] [PASSED] ttm_bo_validate_failed_alloc [10:24:16] [PASSED] ttm_bo_validate_pinned [10:24:16] [PASSED] ttm_bo_validate_busy_placement [10:24:16] ================ ttm_bo_validate_multihop ================= [10:24:16] [PASSED] Buffer object for userspace [10:24:16] [PASSED] Kernel buffer object [10:24:16] [PASSED] Shared buffer object [10:24:16] ============ [PASSED] ttm_bo_validate_multihop ============= [10:24:16] ========== ttm_bo_validate_no_placement_signaled ========== [10:24:16] [PASSED] Buffer object in system domain, no page vector [10:24:16] [PASSED] Buffer object in system domain with an existing page vector [10:24:16] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [10:24:16] ======== ttm_bo_validate_no_placement_not_signaled ======== [10:24:16] [PASSED] Buffer object for userspace [10:24:16] [PASSED] Kernel buffer object [10:24:16] [PASSED] Shared buffer object [10:24:16] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [10:24:16] [PASSED] ttm_bo_validate_move_fence_signaled [10:24:17] ========= ttm_bo_validate_move_fence_not_signaled ========= [10:24:17] [PASSED] Waits for GPU [10:24:17] [PASSED] Tries to lock straight away [10:24:17] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [10:24:17] [PASSED] ttm_bo_validate_swapout [10:24:17] [PASSED] ttm_bo_validate_happy_evict [10:24:17] [PASSED] ttm_bo_validate_all_pinned_evict [10:24:17] [PASSED] ttm_bo_validate_allowed_only_evict [10:24:17] [PASSED] ttm_bo_validate_deleted_evict [10:24:17] [PASSED] ttm_bo_validate_busy_domain_evict [10:24:17] [PASSED] ttm_bo_validate_evict_gutting [10:24:17] [PASSED] ttm_bo_validate_recrusive_evict [10:24:17] ================= [PASSED] ttm_bo_validate ================= [10:24:17] ============================================================ [10:24:17] Testing complete. Ran 102 tests: passed: 102 [10:24:17] Elapsed time: 11.583s total, 1.758s configuring, 9.560s building, 0.225s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
Patchwork
CI✓ Xe.CI.BAT: success for drm/exec: drm_exec polishing (rev2)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: drm/exec: drm_exec polishing (rev2)
URL : https://patchwork.freedesktop.org/series/164149/
State : success
== Summary ==
CI Bug Log - changes from xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b_BAT -> xe-pw-164149v2_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b -> xe-pw-164149v2
IGT_8923: 3cb6109b3a0596ce448305acc233064c88680eb9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b: 7d39df83e93eba14a23b1fb6ffff076eb191f27b
xe-pw-164149v2: 164149v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/index.html
Christian König
maintainerQuoted 9 lines · Thomas Hellström
During the work towards enabling exhaustive eviction using full ww locking in TTM, Christian indicated that the path for the
drm_execmoving forward was to be a fulldrm_exechelper with things like userptr validation rather than a WW transaction abstraction. The idea was then briefly discussed to craft a WW transaction helper and then subclass that withdrm_execwith the idea that the WW transaction helper could be used in TTM for eviction and for other uses that didn't mandate a full exec sequence.
BTW Natalie is now trying to polish my TTM patches for doing that because some test case for the SteamDeck is running into issues with pinning buffers for display.
Quoted 4 lines
Regardless whether that actually happens or not, this series aims to clean up abuses of
drm_execinternals in drivers so that future development ofdrm_execisn't blocked by such driver usage.
Yeah completely agree, going to review those patches now.
Regards,
Christian.
Quoted 32 lines
Except for patch 2 which is a small cleanup only.
v2:
- An drm/msm patch was already merged.
- Use a unique id for the loop variable (patch 1) (Christian)
- Move assignment to declaration (patch 2) (Christian)
- Declare the retry pointer as void *const. (patch 2)
- Only allow if thedrm_execcontext is newly initialized. (patch 3) (Christian)
- Fix amdgpu compile error (patch 4) (Intel CI)
- Update the commit message (patch 4)Thomas Hellström (4):
drm/exec: Remove the index parameter from
drm_exec_for_each_locked_obj[_reverse]
drm/exec: Make thedrm_exec_until_all_locked()macro more readable drm/exec, drm/xe: Avoid abusing thedrm_execretry pointer drm/exec, drm/xe, drm/amdgpu: Add an accessor for struct
drm_exec::ticket.../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 15 ++-- .../drm/amd/amdgpu/amdgpu_eviction_fence.c | 3 +- drivers/gpu/drm/drm_exec.c | 9 +-- drivers/gpu/drm/drm_gpuvm.c | 3 +- drivers/gpu/drm/xe/xe_validation.c | 4 +- drivers/gpu/drm/xe/xe_validation.h | 2 +- drivers/gpu/drm/xe/xe_vm.c | 3 +- include/drm/drm_exec.h | 71 ++++++++++++++----- 9 files changed, 70 insertions(+), 44 deletions(-)
Thomas Hellström
maintainerHi,
Quoted 11 lines · Christian König
Quoted 9 lines · Thomas Hellström
During the work towards enabling exhaustive eviction using full ww locking in TTM, Christian indicated that the path for the
drm_execmoving forward was to be a fulldrm_exechelper with things like userptr validation rather than a WW transaction abstraction. The idea was then briefly discussed to craft a WW transaction helper and then subclass that withdrm_execwith the idea that the WW transaction helper could be used in TTM for eviction and for other uses that didn't mandate a full exec sequence.
Quoted 3 lines
BTW Natalie is now trying to polish my TTM patches for doing that because some test case for the SteamDeck is running
into issues with pinning buffers for display.
Thanks for the review, Christian.
FWIW I did a POC implementation moving drm_exec as a transaction helper to the dma-buf layer, and then re-implemented drm_exec on top as a wrapper here:
https://gitlab.freedesktop.org/thomash/xe-vibe/-/commits/ww_transaction?ref_type=heads
Since this would work on any object with a refererence count and a dma_resv, and even mixing them, it would solve a couple of issues:
1) Decouple the ttm object refcount issue from the TTM exhaustive eviction (Not saying we shouldn't get rid of the ttm object refcount anyway).
2) Implement any eviction locking modes (like snapshotting, object release after slow-lock and similar) separate from drm_exec, and keep exec as a pure exec-buf helper.
3) Facilitate ww locking in dma_buf_map().
4) Directly lock VMs instead of vm objects.
I haven't posted the patches yet since I wanted to get some feedback first of whether this is a reasonable direction.
Thanks,
Thomas
Quoted 46 lines
Quoted 5 lines
Regardless whether that actually happens or not, this series aims to clean up abuses of
drm_execinternals in drivers so that future development ofdrm_execisn't blocked by such driver usage.Yeah completely agree, going to review those patches now.
Regards,
Christian.Quoted 35 lines
Except for patch 2 which is a small cleanup only.
v2:
- An drm/msm patch was already merged.
- Use a unique id for the loop variable (patch 1) (Christian)
- Move assignment to declaration (patch 2) (Christian)
- Declare the retry pointer as void *const. (patch 2)
- Only allow if thedrm_execcontext is newly initialized. (patch
3)
(Christian)
- Fix amdgpu compile error (patch 4) (Intel CI)
- Update the commit message (patch 4)Thomas Hellström (4):
drm/exec: Remove the index parameter from drm_exec_for_each_locked_obj[_reverse] drm/exec: Make thedrm_exec_until_all_locked()macro more readable
drm/exec, drm/xe: Avoid abusing thedrm_execretry pointer drm/exec, drm/xe, drm/amdgpu: Add an accessor for structdrm_exec::ticket.../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 15 ++-- .../drm/amd/amdgpu/amdgpu_eviction_fence.c | 3 +- drivers/gpu/drm/drm_exec.c | 9 +-- drivers/gpu/drm/drm_gpuvm.c | 3 +- drivers/gpu/drm/xe/xe_validation.c | 4 +- drivers/gpu/drm/xe/xe_validation.h | 2 +- drivers/gpu/drm/xe/xe_vm.c | 3 +- include/drm/drm_exec.h | 71 ++++++++++++++-
----9 files changed, 70 insertions(+), 44 deletions(-)
Patchwork
CI✓ Xe.CI.FULL: success for drm/exec: drm_exec polishing (rev2)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: drm/exec: drm_exec polishing (rev2)
URL : https://patchwork.freedesktop.org/series/164149/
State : success
== Summary ==
CI Bug Log - changes from xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b_FULL -> xe-pw-164149v2_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-164149v2_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@intel_hwmon@hwmon-write:
- shard-bmg: NOTRUN -> [FAIL][1] ([Intel XE#7445])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-bmg: [PASS][2] -> [FAIL][3] ([Intel XE#3718] / [Intel XE#6078])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-6/igt@[email protected]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-9/igt@[email protected]
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-dp-2:
- shard-bmg: [PASS][4] -> [FAIL][5] ([Intel XE#6078])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-6/igt@kms_async_flips@[email protected]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-9/igt@kms_async_flips@[email protected]
* igt@kms_big_fb@linear-8bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#2327]) +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_big_fb@y-tiled-8bpp-rotate-180:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#1124]) +2 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_bw@connected-linear-tiling-4-displays-target-2160x1440p:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#7679])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2887]) +2 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#3432])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_cdclk@mode-transition:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2724] / [Intel XE#7449])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_chamelium_hpd@dp-hpd-storm-disable:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2252]) +1 other test skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_cursor_crc@cursor-offscreen-32x32:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2320])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_cursor_crc@cursor-rapid-movement-512x170:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2321] / [Intel XE#7355])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_fbcon_fbt@psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#6126] / [Intel XE#776])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_feature_discovery@display-3x:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2373] / [Intel XE#7448])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_frontbuffer_tracking@drrshdr-2p-scndscrn-pri-shrfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2311]) +10 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@kms_frontbuffer_tracking@drrshdr-2p-scndscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-tiling-linear:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#4141]) +2 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2313]) +14 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#7061]) +2 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_hdr@brightness-with-hdr@pipe-a-dp-2-xrgb2101010:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#7916]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@kms_hdr@[email protected]
* igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#7915]) +1 other test skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@kms_hdr@[email protected]
* igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [PASS][26] -> [SKIP][27] ([Intel XE#7915]) +3 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-6/igt@kms_hdr@[email protected]
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-8/igt@kms_hdr@[email protected]
* igt@kms_plane@pixel-format-yf-tiled-ccs-modifier:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#7283])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5.html
* igt@kms_pm_dc@dc6-psr:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#7794])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#1489]) +1 other test skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_psr@psr2-primary-blt:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#3904] / [Intel XE#7342])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_sharpness_filter@filter-scaler-downscale:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#6503])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@xe_eudebug@basic-vm-access-parameters-userptr:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#7636]) +2 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [PASS][36] -> [INCOMPLETE][37] ([Intel XE#6321])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-8/igt@[email protected]
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-2/igt@[email protected]
* igt@xe_evict@evict-small-multi-queue:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#7140])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap.html
* igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-race-prefetch:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#7136]) +2 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-race-prefetch.html
* igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-userptr:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#6874]) +7 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@xe_exec_system_allocator@threads-many-stride-new-prefetch:
- shard-bmg: [PASS][42] -> [ABORT][43] ([Intel XE#7893] / [Intel XE#7913])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-7/igt@[email protected]
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-3/igt@[email protected]
* igt@xe_exec_threads@threads-multi-queue-fd-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#7138]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@xe_module_load@load:
- shard-bmg: ([PASS][45], [PASS][46], [PASS][47], [PASS][48], [PASS][49], [PASS][50], [PASS][51], [PASS][52], [PASS][53], [PASS][54], [PASS][55], [PASS][56], [PASS][57], [PASS][58], [PASS][59], [PASS][60], [PASS][61], [PASS][62], [PASS][63], [PASS][64], [PASS][65], [PASS][66], [PASS][67], [PASS][68], [PASS][69]) -> ([PASS][70], [PASS][71], [PASS][72], [PASS][73], [PASS][74], [PASS][75], [PASS][76], [PASS][77], [PASS][78], [PASS][79], [PASS][80], [PASS][81], [SKIP][82], [PASS][83], [PASS][84], [PASS][85], [PASS][86], [PASS][87], [PASS][88], [PASS][89], [PASS][90], [PASS][91], [PASS][92], [PASS][93], [PASS][94], [PASS][95]) ([Intel XE#2457] / [Intel XE#7405])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-3/igt@[email protected]
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-3/igt@[email protected]
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-6/igt@[email protected]
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-6/igt@[email protected]
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-8/igt@[email protected]
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-8/igt@[email protected]
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-9/igt@[email protected]
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-7/igt@[email protected]
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-9/igt@[email protected]
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-9/igt@[email protected]
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-1/igt@[email protected]
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-4/igt@[email protected]
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-10/igt@[email protected]
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-4/igt@[email protected]
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-4/igt@[email protected]
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-2/igt@[email protected]
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-2/igt@[email protected]
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-5/igt@[email protected]
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-5/igt@[email protected]
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-1/igt@[email protected]
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-1/igt@[email protected]
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-10/igt@[email protected]
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-10/igt@[email protected]
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-7/igt@[email protected]
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-7/igt@[email protected]
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-5/igt@[email protected]
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-8/igt@[email protected]
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-10/igt@[email protected]
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-10/igt@[email protected]
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-3/igt@[email protected]
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-8/igt@[email protected]
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-8/igt@[email protected]
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-1/igt@[email protected]
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-1/igt@[email protected]
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-1/igt@[email protected]
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-3/igt@[email protected]
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-3/igt@[email protected]
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-6/igt@[email protected]
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-9/igt@[email protected]
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-9/igt@[email protected]
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-6/igt@[email protected]
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-5/igt@[email protected]
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-4/igt@[email protected]
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-4/igt@[email protected]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-5/igt@[email protected]
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-2/igt@[email protected]
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-2/igt@[email protected]
* igt@xe_page_reclaim@basic-mixed:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#7793])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@xe_pm@d3cold-mmap-vram:
- shard-bmg: NOTRUN -> [SKIP][97] ([Intel XE#2284] / [Intel XE#7370])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@xe_pxp@pxp-termination-key-update-post-termination-irq:
- shard-bmg: NOTRUN -> [SKIP][98] ([Intel XE#4733] / [Intel XE#7417])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
#### Possible fixes ####
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [FAIL][99] ([Intel XE#301]) -> [PASS][100] +1 other test pass
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-lnl-2/igt@kms_flip@[email protected]
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-lnl-7/igt@kms_flip@[email protected]
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [SKIP][101] ([Intel XE#1503]) -> [PASS][102]
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-9/igt@[email protected]
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-8/igt@[email protected]
* igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010:
- shard-bmg: [SKIP][103] ([Intel XE#7922]) -> [PASS][104] +1 other test pass
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-9/igt@kms_hdr@[email protected]
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-8/igt@kms_hdr@[email protected]
* igt@kms_plane_cursor@overlay@pipe-b-hdmi-a-3-size-256:
- shard-bmg: [INCOMPLETE][105] -> [PASS][106] +1 other test pass
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-2/igt@kms_plane_cursor@[email protected]
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@kms_plane_cursor@[email protected]
* igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1:
- shard-lnl: [FAIL][107] ([Intel XE#2142]) -> [PASS][108] +1 other test pass
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-lnl-7/igt@kms_vrr@[email protected]
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-lnl-1/igt@kms_vrr@[email protected]
#### Warnings ####
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
- shard-lnl: [SKIP][109] ([Intel XE#309] / [Intel XE#7343]) -> [SKIP][110] ([Intel XE#309] / [Intel XE#7343] / [Intel XE#7935])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-lnl-5/igt@[email protected]
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-lnl-8/igt@[email protected]
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [FAIL][111] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][112] ([Intel XE#2426] / [Intel XE#5848])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-4/igt@[email protected]
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-7/igt@[email protected]
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][113] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][114] ([Intel XE#2509] / [Intel XE#7437])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b/shard-bmg-1/igt@[email protected]
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/shard-bmg-10/igt@[email protected]
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#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#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[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#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6126
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7405]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7405
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7445]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7445
[Intel XE#7448]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7448
[Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7794
[Intel XE#7893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7893
[Intel XE#7913]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7913
[Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
[Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916
[Intel XE#7922]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7922
[Intel XE#7935]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7935
Build changes
-------------
* Linux: xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b -> xe-pw-164149v2
IGT_8923: 3cb6109b3a0596ce448305acc233064c88680eb9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5101-7d39df83e93eba14a23b1fb6ffff076eb191f27b: 7d39df83e93eba14a23b1fb6ffff076eb191f27b
xe-pw-164149v2: 164149v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164149v2/index.html