Driver-managed exhaustive eviction
Subsystems (3)
Thomas Hellström
maintainerv5 cover Driver-managed exhaustive eviction
Exhaustive eviction means that every client should in theory be able to allocate all graphics memory (minus pinned memory). This is done by evicting other clients' memory.
Currently when TTM wants to evict a buffer object it will typically trylock that buffer object. It may also optionally try a sleeping lock, but if deadlock resolution kicks in while doing so (the locking returns -EDEADLK), that is converted to an -ENOMEM and returned to the caller. If there are multiple clients simultaneously wanting to evict eachother's buffer objects, there is a chance that clients end up returning -ENOMEM.
The key to resolving this is that on memory contention, lower priority clients back off, releasing their buffer object locks and thereby allow their memory to be evicted. Eventually their priority will elevate and they will succeed. TTM has long been intending to implement this using full drm_exec locking during eviction. This means that when that is implemented, clients wanting to validate memory must pass the drm_exec context used to lock its buffer object to TTM validation. Most of this series is making sure that is done, both on exec-type validation and buffer object creation. The big benefit of this approach is that it can distinguish between memory types and avoid lock release rollbacks until it is really necessary. One drawback is that it can't handle system memory contention resolved by a shrinker.
However, since TTM has still to implement drm_exec validation, this series, while preparing for the TTM implementation, takes a different approach with an outer rw semaphore on top of the drm_exec retry loop. When a client wants to allocate graphics memory, the lock is taken in non-exclusive mode. If an OOM is hit, the locks are released and the outer lock is retaken in exclusive mode. That ensures that on memory contention, the client will, when the exclusive lock is held, be the only client trying to allocate memory. It requires, however, that all clients adhere to the same scheme.
The idea is that when TTM implements drm_exec eviction, the driver- managed scheme could be retired.
Patch 1 identifies the code-paths where we need a drm_exec transaction. Patch 2 introduces the wrapper with the rw-semaphore
The rest of the patches ensure that we wrap graphics memory allocation in the combined rw-semaphore / drm-exec loop.
As a follow up, additional patches around suspend / resume will be posted.
The backing store allocation functions now typically requires the caller to indicate whether to sleep interruptible. That requires the caller to be able to take care of the resulting error codes if interrupted. (-EINTR or -ERESTARTSYS). Where it's obvious that the caller can do that or where other interruptible waits are called, the series enables interruptible waiting. In other functions a follow-up audit has to be made to enable interruptible waiting where possible.
v2: (Highlights)
- Fix a number of issues discovered during review.
- Rework the signature of xe_validation_guart (Matt Brost)
- Rework the CPU fault handler (Matt Brost)
v3: (Highlights)
- Rebase on the gpu_madvise series. Mainly causing conflicts in the CPU fault handler.
- Additional rework in the CPU fault handler.
- Add patch 13
- Various fixes following review comments (Matt Brost)
v4: (CI fixes)
- i915_gem_stolen_insert_node_in_range() failed. The needed functionality is very similar to that of pv_provision_vf_lmem() and psmi_alloc_object(): Create pinned but not mapped. So Collect those changes into a separate patch. (CI).
- Fix struct xe_validation_ctx kerneldoc. (CI).
v5:
- Disallow CPU faulting of imported buffer objects (Matt Brost).
- Don't select caching mode for kernel bos (CI).
Thomas Hellström (13):
drm/xe: Pass down drm_exec context to validation
drm/xe: Introduce an xe_validation wrapper around drm_exec drm/xe: Convert xe_bo_create_user() for exhaustive eviction drm/xe: Convert SVM validation for exhaustive eviction drm/xe: Convert existing drm_exec transactions for exhaustive eviction drm/xe: Convert the CPU fault handler for exhaustive eviction drm/xe/display: Convert __xe_pin_fb_vma()
drm/xe: Convert xe_dma_buf.c for exhaustive eviction drm/xe: Rename ___xe_bo_create_locked()
drm/xe: Convert xe_bo_create_pin_map_at() for exhaustive eviction drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction drm/xe: Rework instances of variants of xe_bo_create_locked() drm/xe: Convert pinned suspend eviction for exhaustive eviction
drivers/gpu/drm/xe/Makefile | 1 + .../compat-i915-headers/gem/i915_gem_stolen.h | 13 +- drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 18 +- drivers/gpu/drm/xe/display/xe_dsb_buffer.c | 10 +- drivers/gpu/drm/xe/display/xe_fb_pin.c | 71 +- drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 8 +- drivers/gpu/drm/xe/display/xe_plane_initial.c | 4 +- drivers/gpu/drm/xe/tests/xe_bo.c | 36 +- drivers/gpu/drm/xe/tests/xe_dma_buf.c | 16 +- drivers/gpu/drm/xe/tests/xe_migrate.c | 66 +- drivers/gpu/drm/xe/xe_bo.c | 827 +++++++++++++----- drivers/gpu/drm/xe/xe_bo.h | 62 +- drivers/gpu/drm/xe/xe_device.c | 2 + drivers/gpu/drm/xe/xe_device_types.h | 3 + drivers/gpu/drm/xe/xe_dma_buf.c | 72 +- drivers/gpu/drm/xe/xe_eu_stall.c | 5 +- drivers/gpu/drm/xe/xe_exec.c | 26 +- drivers/gpu/drm/xe/xe_ggtt.c | 15 +- drivers/gpu/drm/xe/xe_ggtt.h | 5 +- drivers/gpu/drm/xe/xe_gsc.c | 8 +- drivers/gpu/drm/xe/xe_gt_pagefault.c | 28 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 21 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 24 +- drivers/gpu/drm/xe/xe_guc_engine_activity.c | 13 +- drivers/gpu/drm/xe/xe_lmtt.c | 12 +- drivers/gpu/drm/xe/xe_lrc.c | 7 +- drivers/gpu/drm/xe/xe_migrate.c | 20 +- drivers/gpu/drm/xe/xe_oa.c | 6 +- drivers/gpu/drm/xe/xe_psmi.c | 24 +- drivers/gpu/drm/xe/xe_pt.c | 10 +- drivers/gpu/drm/xe/xe_pt.h | 3 +- drivers/gpu/drm/xe/xe_pxp_submit.c | 34 +- drivers/gpu/drm/xe/xe_svm.c | 101 ++- drivers/gpu/drm/xe/xe_validation.c | 278 ++++++ drivers/gpu/drm/xe/xe_validation.h | 192 ++++ drivers/gpu/drm/xe/xe_vm.c | 291 +++--- drivers/gpu/drm/xe/xe_vm.h | 38 +- drivers/gpu/drm/xe/xe_vm_types.h | 32 +- 38 files changed, 1708 insertions(+), 694 deletions(-) create mode 100644 drivers/gpu/drm/xe/xe_validation.c create mode 100644 drivers/gpu/drm/xe/xe_validation.h
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 1/13 drm/xe: Pass down drm_exec context to validation
We want all validation (potential backing store allocation) to be part of a drm_exec transaction. Therefore add a drm_exec pointer argument to xe_bo_validate() and ___xe_bo_create_locked(). Upcoming patches will deal with making all (or nearly all) calls to these functions part of a drm_exec transaction. In the meantime, define special values of the drm_exec pointer:
XE_VALIDATION_UNIMPLEMENTED: Implementation of the drm_exec transaction has not been done yet.XE_VALIDATION_UNSUPPORTED: Some Middle-layers (dma-buf) doesn't allow the drm_exec context to be passed down to map_attachment where validation takes place.XE_VALIDATION_OPT_OUT: May be used only for kunit tests where exhaustive eviction isn't crucial and the ROI of converting those is very small.
For XE_VALIDATION_UNIMPLEMENTED and XE_VALIDATION_OPT_OUT there is also a lockdep check that a drm_exec transaction can indeed start at the location where the macro is expanded. This is to encourage developers to take this into consideration early in the code development process.
v2:
- Fix xe_vm_set_validation_exec() imbalance. Add an assert that hopefully catches future instances of this (Matt Brost)
v3:
- Extend to psmi_alloc_object
--- drivers/gpu/drm/xe/Makefile | 1 + .../compat-i915-headers/gem/i915_gem_stolen.h | 6 +- drivers/gpu/drm/xe/display/xe_fb_pin.c | 5 +- drivers/gpu/drm/xe/tests/xe_bo.c | 20 +-- drivers/gpu/drm/xe/tests/xe_dma_buf.c | 12 +- drivers/gpu/drm/xe/tests/xe_migrate.c | 45 +++--- drivers/gpu/drm/xe/xe_bo.c | 131 +++++++++++++++--- drivers/gpu/drm/xe/xe_bo.h | 20 +-- drivers/gpu/drm/xe/xe_dma_buf.c | 19 ++- drivers/gpu/drm/xe/xe_exec.c | 6 +- drivers/gpu/drm/xe/xe_ggtt.c | 15 +- drivers/gpu/drm/xe/xe_ggtt.h | 5 +- drivers/gpu/drm/xe/xe_gt_pagefault.c | 8 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 6 +- drivers/gpu/drm/xe/xe_psmi.c | 6 +- drivers/gpu/drm/xe/xe_svm.c | 4 +- drivers/gpu/drm/xe/xe_validation.c | 49 +++++++ drivers/gpu/drm/xe/xe_validation.h | 69 +++++++++ drivers/gpu/drm/xe/xe_vm.c | 24 +++- drivers/gpu/drm/xe/xe_vm.h | 34 ++++- drivers/gpu/drm/xe/xe_vm_types.h | 32 +++-- 21 files changed, 407 insertions(+), 110 deletions(-) create mode 100644 drivers/gpu/drm/xe/xe_validation.c create mode 100644 drivers/gpu/drm/xe/xe_validation.h
drivers/gpu/drm/xe/Makefile +1 -0
@@ -130,6 +130,7 @@ xe-y += xe_bb.o \ xe_tuning.o \ xe_uc.o \ xe_uc_fw.o \ + xe_validation.o \ xe_vm.o \ xe_vm_madvise.o \ xe_vram.o \
drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h +4 -2
@@ -8,6 +8,7 @@#include "xe_ttm_stolen_mgr.h" #include "xe_res_cursor.h" +#include "xe_validation.h" struct xe_bo ;
@@ -20,6 +21,7 @@ static inline int i915_gem_stolen_insert_node_in_range(struct xe_device *xe, u32 size, u32 align, u32 start, u32 end) { + struct drm_exec *exec = XE_VALIDATION_UNIMPLEMENTED;struct xe_bo *bo;int err;u32 flags =XE_BO_FLAG_PINNED |XE_BO_FLAG_STOLEN ;
@@ -34,13 +36,13 @@ static inline int i915_gem_stolen_insert_node_in_range(struct xe_device *xe, bo =xe_bo_create_locked_range (xe,xe_device_get_root_tile (xe),NULL , size, start, end, - ttm_bo_type_kernel, flags,0 ); + ttm_bo_type_kernel, flags,0 , exec);if (IS_ERR (bo)) { err =PTR_ERR (bo); bo =NULL ;return err; } - err =xe_bo_pin (bo); + err =xe_bo_pin (bo, exec);xe_bo_unlock_vm_held (bo);if (err) {
drivers/gpu/drm/xe/display/xe_fb_pin.c +3 -2
@@ -281,6 +281,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,struct i915_vma *vma =kzalloc (sizeof (*vma),GFP_KERNEL );struct drm_gem_object *obj =intel_fb_bo (&fb->base);struct xe_bo *bo =gem_to_xe_bo (obj); +struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;int ret;if (!vma)
@@ -313,9 +314,9 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, goto err;if (IS_DGFX (xe)) - ret =xe_bo_migrate (bo,XE_PL_VRAM0 ); + ret =xe_bo_migrate (bo,XE_PL_VRAM0 , exec);else - ret =xe_bo_validate (bo,NULL , true); + ret =xe_bo_validate (bo,NULL , true, exec);if (!ret)ttm_bo_pin (&bo->ttm);ttm_bo_unreserve (&bo->ttm);
drivers/gpu/drm/xe/tests/xe_bo.c +11 -9
@@ -23,7 +23,7 @@static int ccs_test_migrate (struct xe_tile *tile,struct xe_bo *bo,bool clear,u64 get_val,u64 assign_val, -struct kunit *test) +struct kunit *test,struct drm_exec *exec) {struct dma_fence *fence;struct ttm_tt *ttm;
@@ -35,7 +35,7 @@ static int ccs_test_migrate(struct xe_tile *tile, struct xe_bo *bo,u32 offset;/* Move bo to VRAM if not already there. */ - ret =xe_bo_validate (bo,NULL , false); + ret =xe_bo_validate (bo,NULL , false, exec);if (ret) {KUNIT_FAIL (test,"Failed to validate bo.\n" );return ret;
@@ -60,7 +60,7 @@ static int ccs_test_migrate(struct xe_tile *tile, struct xe_bo *bo, }/* Evict to system. CCS data should be copied. */ - ret =xe_bo_evict (bo); + ret =xe_bo_evict (bo, exec);if (ret) {KUNIT_FAIL (test,"Failed to evict bo.\n" );return ret;
@@ -132,6 +132,7 @@ static void ccs_test_run_tile(struct xe_device *xe, struct xe_tile *tile,/* TODO: Sanity check */ unsigned int bo_flags =XE_BO_FLAG_VRAM_IF_DGFX (tile); +struct drm_exec *exec =XE_VALIDATION_OPT_OUT ;if (IS_DGFX (xe))kunit_info (test,"Testing vram id %u\n" , tile->id);
@@ -149,18 +150,18 @@ static void ccs_test_run_tile(struct xe_device *xe, struct xe_tile *tile,kunit_info (test,"Verifying that CCS data is cleared on creation.\n" ); ret =ccs_test_migrate (tile, bo, false,0ULL ,0xdeadbeefdeadbeefULL , - test); + test, exec);if (ret) goto out_unlock;kunit_info (test,"Verifying that CCS data survives migration.\n" ); ret =ccs_test_migrate (tile, bo, false,0xdeadbeefdeadbeefULL , -0xdeadbeefdeadbeefULL , test); +0xdeadbeefdeadbeefULL , test, exec);if (ret) goto out_unlock;kunit_info (test,"Verifying that CCS data can be properly cleared.\n" ); - ret =ccs_test_migrate (tile, bo, true,0ULL ,0ULL , test); + ret =ccs_test_migrate (tile, bo, true,0ULL ,0ULL , test, exec); out_unlock:xe_bo_unlock (bo);
@@ -210,6 +211,7 @@ static int evict_test_run_tile(struct xe_device *xe, struct xe_tile *tile, strucstruct xe_bo *bo, *external;unsigned int bo_flags =XE_BO_FLAG_VRAM_IF_DGFX (tile);struct xe_vm *vm =xe_migrate_get_vm (xe_device_get_root_tile (xe)->migrate); +struct drm_exec *exec =XE_VALIDATION_OPT_OUT ;struct xe_gt *__gt;int err, i, id;
@@ -236,7 +238,7 @@ static int evict_test_run_tile(struct xe_device *xe, struct xe_tile *tile, struc }xe_bo_lock (external, false); - err =xe_bo_pin_external (external); + err =xe_bo_pin_external (external, exec);xe_bo_unlock (external);if (err) { KUNIT_FAIL(test, "external bo pin err=%pe\n",
@@ -294,7 +296,7 @@ static int evict_test_run_tile(struct xe_device *xe, struct xe_tile *tile, strucif (i) {down_read (&vm->lock);xe_vm_lock (vm, false); - err =xe_bo_validate (bo, bo->vm, false); + err =xe_bo_validate (bo, bo->vm, false, exec);xe_vm_unlock (vm);up_read (&vm->lock);if (err) {
@@ -303,7 +305,7 @@ static int evict_test_run_tile(struct xe_device *xe, struct xe_tile *tile, struc goto cleanup_all; }xe_bo_lock (external, false); - err =xe_bo_validate (external,NULL , false); + err =xe_bo_validate (external,NULL , false, exec);xe_bo_unlock (external);if (err) { KUNIT_FAIL(test, "external bo valid err=%pe\n",
drivers/gpu/drm/xe/tests/xe_dma_buf.c +7 -5
@@ -27,7 +27,8 @@ static bool is_dynamic(struct dma_buf_test_params *params) }static void check_residency (struct kunit *test,struct xe_bo *exported, -struct xe_bo *imported,struct dma_buf *dmabuf) +struct xe_bo *imported,struct dma_buf *dmabuf, +struct drm_exec *exec) {struct dma_buf_test_params *params =to_dma_buf_test_params (test->priv);u32 mem_type;
@@ -62,7 +63,7 @@ static void check_residency(struct kunit *test, struct xe_bo *exported,* importer is on a different device. If they're on the same device, * the exporter and the importer should be the same bo. */ - ret =xe_bo_evict (exported); + ret =xe_bo_evict (exported, exec);if (ret) {if (ret != -EINTR && ret != -ERESTARTSYS ) KUNIT_FAIL(test, "Evicting exporter failed with err=%d.\n",
@@ -77,7 +78,7 @@ static void check_residency(struct kunit *test, struct xe_bo *exported, }/* Re-validate the importer. This should move also exporter in. */ - ret =xe_bo_validate (imported,NULL , false); + ret =xe_bo_validate (imported,NULL , false, exec);if (ret) {if (ret != -EINTR && ret != -ERESTARTSYS ) KUNIT_FAIL(test, "Validating importer failed with err=%d.\n",
@@ -150,11 +151,12 @@ static void xe_test_dmabuf_import_same_driver(struct xe_device *xe)KUNIT_FAIL (test,"xe_gem_prime_import() succeeded when it shouldn't have\n" ); }else { +struct drm_exec *exec =XE_VALIDATION_OPT_OUT ;int err;/* Is everything where we expect it to be? */ xe_bo_lock (import_bo, false); - err =xe_bo_validate (import_bo,NULL , false); + err =xe_bo_validate (import_bo,NULL , false, exec);/* Pinning in VRAM is not allowed. */ if (!is_dynamic(params) &&
@@ -167,7 +169,7 @@ static void xe_test_dmabuf_import_same_driver(struct xe_device *xe) err == -ERESTARTSYS);if (!err) -check_residency (test, bo, import_bo, dmabuf); +check_residency (test, bo, import_bo, dmabuf, exec);xe_bo_unlock (import_bo); }drm_gem_object_put (import);
drivers/gpu/drm/xe/tests/xe_migrate.c +25 -20
155 lines not on this page · raw message
drivers/gpu/drm/xe/xe_bo.c +108 -23
336 lines not on this page · raw message
drivers/gpu/drm/xe/xe_bo.h +12 -8
@@ -10,6 +10,7 @@#include "xe_bo_types.h" #include "xe_macros.h" +#include "xe_validation.h" #include "xe_vm_types.h" #include "xe_vm.h" #include "xe_vram_types.h"
@@ -92,15 +93,17 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo, struct xe_tile *tile, struct dma_resv *resv, struct ttm_lru_bulk_move *bulk, size_t size, u16 cpu_caching, enum ttm_bo_type type, - u32 flags); + u32 flags, struct drm_exec *exec);struct xe_bo *xe_bo_create_locked_range (struct xe_device *xe,struct xe_tile *tile,struct xe_vm *vm,size_t size,u64 start,u64 end, -enum ttm_bo_type type,u32 flags,u64 alignment); +enum ttm_bo_type type,u32 flags,u64 alignment, +struct drm_exec *exec);struct xe_bo *xe_bo_create_locked (struct xe_device *xe,struct xe_tile *tile,struct xe_vm *vm,size_t size, -enum ttm_bo_type type,u32 flags); +enum ttm_bo_type type,u32 flags, +struct drm_exec *exec);struct xe_bo *xe_bo_create (struct xe_device *xe,struct xe_tile *tile,struct xe_vm *vm,size_t size,enum ttm_bo_type type,u32 flags);
@@ -200,11 +203,12 @@ static inline void xe_bo_unlock_vm_held(struct xe_bo *bo) } } -int xe_bo_pin_external (struct xe_bo *bo); -int xe_bo_pin (struct xe_bo *bo); +int xe_bo_pin_external (struct xe_bo *bo,struct drm_exec *exec); +int xe_bo_pin (struct xe_bo *bo,struct drm_exec *exec);void xe_bo_unpin_external (struct xe_bo *bo);void xe_bo_unpin (struct xe_bo *bo); -int xe_bo_validate (struct xe_bo *bo,struct xe_vm *vm,bool allow_res_evict); +int xe_bo_validate (struct xe_bo *bo,struct xe_vm *vm,bool allow_res_evict, +struct drm_exec *exec);static inline bool xe_bo_is_pinned (struct xe_bo *bo) {
@@ -285,8 +289,8 @@ uint64_t vram_region_gpu_offset(struct ttm_resource *res);bool xe_bo_can_migrate (struct xe_bo *bo,u32 mem_type); -int xe_bo_migrate (struct xe_bo *bo,u32 mem_type); -int xe_bo_evict (struct xe_bo *bo); +int xe_bo_migrate (struct xe_bo *bo,u32 mem_type,struct drm_exec *exec); +int xe_bo_evict (struct xe_bo *bo,struct drm_exec *exec);int xe_bo_evict_pinned (struct xe_bo *bo);int xe_bo_notifier_prepare_pinned (struct xe_bo *bo);
drivers/gpu/drm/xe/xe_dma_buf.c +12 -7
@@ -51,6 +51,7 @@ static int xe_dma_buf_pin(struct dma_buf_attachment *attach)struct drm_gem_object *obj = attach->dmabuf->priv;struct xe_bo *bo =gem_to_xe_bo (obj);struct xe_device *xe =xe_bo_device (bo); +struct drm_exec *exec =XE_VALIDATION_UNSUPPORTED ;int ret;/*
@@ -63,7 +64,7 @@ static int xe_dma_buf_pin(struct dma_buf_attachment *attach)return -EINVAL ; } - ret =xe_bo_migrate (bo,XE_PL_TT ); + ret =xe_bo_migrate (bo,XE_PL_TT , exec);if (ret) {if (ret != -EINTR && ret != -ERESTARTSYS ) drm_dbg(&xe->drm,
@@ -72,7 +73,7 @@ static int xe_dma_buf_pin(struct dma_buf_attachment *attach)return ret; } - ret =xe_bo_pin_external (bo); + ret =xe_bo_pin_external (bo, exec);xe_assert (xe, !ret);return 0 ;
@@ -92,6 +93,7 @@ static struct sg_table *xe_dma_buf_map(struct dma_buf_attachment *attach,struct dma_buf *dma_buf = attach->dmabuf;struct drm_gem_object *obj = dma_buf->priv;struct xe_bo *bo =gem_to_xe_bo (obj); +struct drm_exec *exec =XE_VALIDATION_UNSUPPORTED ;struct sg_table *sgt;int r =0 ;
@@ -100,9 +102,9 @@ static struct sg_table *xe_dma_buf_map(struct dma_buf_attachment *attach,if (!xe_bo_is_pinned (bo)) {if (!attach->peer2peer) - r =xe_bo_migrate (bo,XE_PL_TT ); + r =xe_bo_migrate (bo,XE_PL_TT , exec);else - r =xe_bo_validate (bo,NULL , false); + r =xe_bo_validate (bo,NULL , false, exec);if (r)return ERR_PTR (r); }
@@ -161,13 +163,14 @@ static int xe_dma_buf_begin_cpu_access(struct dma_buf *dma_buf,struct xe_bo *bo =gem_to_xe_bo (obj);bool reads = (direction ==DMA_BIDIRECTIONAL || direction ==DMA_FROM_DEVICE ); +struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;if (!reads)return 0 ;/* Can we do interruptible lock here? */ xe_bo_lock (bo, false); - (void )xe_bo_migrate (bo,XE_PL_TT ); + (void )xe_bo_migrate (bo,XE_PL_TT , exec);xe_bo_unlock (bo);return 0 ;
@@ -208,13 +211,14 @@ xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage, {struct dma_resv *resv = dma_buf->resv;struct xe_device *xe =to_xe_device (dev); +struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;struct xe_bo *bo;int ret;dma_resv_lock (resv,NULL ); bo =___xe_bo_create_locked (xe, storage,NULL , resv,NULL , dma_buf->size,0 ,/* Will require 1way or 2way for vm_bind */ - ttm_bo_type_sg,XE_BO_FLAG_SYSTEM ); + ttm_bo_type_sg,XE_BO_FLAG_SYSTEM , exec);if (IS_ERR (bo)) { ret =PTR_ERR (bo); goto error;
@@ -232,8 +236,9 @@ static void xe_dma_buf_move_notify(struct dma_buf_attachment *attach) {struct drm_gem_object *obj = attach->importer_priv;struct xe_bo *bo =gem_to_xe_bo (obj); +struct drm_exec *exec =XE_VALIDATION_UNSUPPORTED ; -XE_WARN_ON (xe_bo_evict (bo)); +XE_WARN_ON (xe_bo_evict (bo, exec)); }static const struct dma_buf_attach_ops xe_dma_buf_attach_ops = {
drivers/gpu/drm/xe/xe_exec.c +5 -1
@@ -97,9 +97,13 @@static int xe_exec_fn (struct drm_gpuvm_exec *vm_exec) { struct xe_vm *vm = container_of(vm_exec->vm, struct xe_vm, gpuvm); +int ret;/* The fence slot added here is intended for the exec sched job. */ -return xe_vm_validate_rebind (vm, &vm_exec->exec,1 ); +xe_vm_set_validation_exec (vm, &vm_exec->exec); + ret =xe_vm_validate_rebind (vm, &vm_exec->exec,1 ); +xe_vm_set_validation_exec (vm,NULL ); +return ret; }int xe_exec_ioctl (struct drm_device *dev,void *data,struct drm_file *file)
drivers/gpu/drm/xe/xe_ggtt.c +9 -6
@@ -731,7 +731,7 @@ void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo) }static int __xe_ggtt_insert_bo_at (struct xe_ggtt *ggtt,struct xe_bo *bo, -u64 start,u64 end) +u64 start,u64 end,struct drm_exec *exec) {u64 alignment = bo->min_align >0 ? bo->min_align :XE_PAGE_SIZE ;u8 tile_id = ggtt->tile->id;
@@ -746,7 +746,7 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,return 0 ; } - err =xe_bo_validate (bo,NULL , false); + err =xe_bo_validate (bo,NULL , false, exec);if (err)return err;
@@ -788,25 +788,28 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,* @bo: the &xe_bo to be inserted * @start: address where it will be inserted * @end: end of the range where it will be inserted +* @exec: The drm_exec transaction to use for exhaustive eviction. * * Return: 0 on success or a negative error code on failure. */ int xe_ggtt_insert_bo_at (struct xe_ggtt *ggtt,struct xe_bo *bo, -u64 start,u64 end) +u64 start,u64 end,struct drm_exec *exec) { -return __xe_ggtt_insert_bo_at (ggtt, bo, start, end); +return __xe_ggtt_insert_bo_at (ggtt, bo, start, end, exec); }/** * xe_ggtt_insert_bo - Insert BO into GGTT * @ggtt: the &xe_ggtt where bo will be inserted * @bo: the &xe_bo to be inserted +* @exec: The drm_exec transaction to use for exhaustive eviction. * * Return: 0 on success or a negative error code on failure. */ -int xe_ggtt_insert_bo (struct xe_ggtt *ggtt,struct xe_bo *bo) +int xe_ggtt_insert_bo (struct xe_ggtt *ggtt,struct xe_bo *bo, +struct drm_exec *exec) { -return __xe_ggtt_insert_bo_at (ggtt, bo,0 ,U64_MAX ); +return __xe_ggtt_insert_bo_at (ggtt, bo,0 ,U64_MAX , exec); }/**
drivers/gpu/drm/xe/xe_ggtt.h +3 -2
@@ -10,6 +10,7 @@struct drm_printer ;struct xe_tile ; +struct drm_exec ;struct xe_ggtt *xe_ggtt_alloc (struct xe_tile *tile);int xe_ggtt_init_early (struct xe_ggtt *ggtt);
@@ -31,9 +32,9 @@ bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node);void xe_ggtt_map_bo (struct xe_ggtt *ggtt,struct xe_ggtt_node *node,struct xe_bo *bo,u16 pat_index);void xe_ggtt_map_bo_unlocked (struct xe_ggtt *ggtt,struct xe_bo *bo); -int xe_ggtt_insert_bo (struct xe_ggtt *ggtt,struct xe_bo *bo); +int xe_ggtt_insert_bo (struct xe_ggtt *ggtt,struct xe_bo *bo,struct drm_exec *exec);int xe_ggtt_insert_bo_at (struct xe_ggtt *ggtt,struct xe_bo *bo, -u64 start,u64 end); +u64 start,u64 end,struct drm_exec *exec);void xe_ggtt_remove_bo (struct xe_ggtt *ggtt,struct xe_bo *bo);u64 xe_ggtt_largest_hole (struct xe_ggtt *ggtt,u64 alignment,u64 *spare);
drivers/gpu/drm/xe/xe_gt_pagefault.c +4 -4
@@ -87,10 +87,8 @@ static int xe_pf_begin(struct drm_exec *exec, struct xe_vma *vma,if (!bo)return 0 ; - err = need_vram_move ?xe_bo_migrate (bo, vram->placement) : -xe_bo_validate (bo, vm, true); - -return err; +return need_vram_move ?xe_bo_migrate (bo, vram->placement, exec) : +xe_bo_validate (bo, vm, true, exec); } static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma,
@@ -140,7 +138,9 @@ static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma,/* Bind VMA only to the GT that has faulted */ trace_xe_vma_pf_bind (vma); +xe_vm_set_validation_exec (vm, &exec); fence =xe_vma_rebind (vm, vma,BIT (tile->id)); +xe_vm_set_validation_exec (vm,NULL );if (IS_ERR (fence)) { err =PTR_ERR (fence);if (xe_vm_validate_should_retry (&exec, err, &end))
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +4 -2
@@ -1452,6 +1452,7 @@ static bool pf_release_vf_config_lmem(struct xe_gt *gt, struct xe_gt_sriov_confistatic int pf_provision_vf_lmem (struct xe_gt *gt,unsigned int vfid,u64 size) {struct xe_gt_sriov_config *config =pf_pick_vf_config (gt, vfid); +struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;struct xe_device *xe =gt_to_xe (gt);struct xe_tile *tile =gt_to_tile (gt);struct xe_bo *bo;
@@ -1484,11 +1485,12 @@ static int pf_provision_vf_lmem(struct xe_gt *gt, unsigned int vfid, u64 size)XE_BO_FLAG_VRAM_IF_DGFX (tile) |XE_BO_FLAG_NEEDS_2M |XE_BO_FLAG_PINNED | - XE_BO_FLAG_PINNED_LATE_RESTORE); +XE_BO_FLAG_PINNED_LATE_RESTORE , + exec);if (IS_ERR (bo))return PTR_ERR (bo); - err =xe_bo_pin (bo); + err =xe_bo_pin (bo, exec);xe_bo_unlock (bo);if (unlikely (err)) {xe_bo_put (bo);
drivers/gpu/drm/xe/xe_psmi.c +4 -2
@@ -68,6 +68,7 @@ static void psmi_cleanup(struct xe_device *xe)static struct xe_bo *psmi_alloc_object (struct xe_device *xe,unsigned int id,size_t bo_size) { +struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;struct xe_bo *bo =NULL ;struct xe_tile *tile;int err;
@@ -83,11 +84,12 @@ static struct xe_bo *psmi_alloc_object(struct xe_device *xe,XE_BO_FLAG_VRAM_IF_DGFX (tile) |XE_BO_FLAG_PINNED |XE_BO_FLAG_PINNED_LATE_RESTORE | - XE_BO_FLAG_NEEDS_CPU_ACCESS); +XE_BO_FLAG_NEEDS_CPU_ACCESS , + exec);if (!IS_ERR (bo)) {/* Buffer written by HW, ensure stays resident */ - err =xe_bo_pin (bo); + err =xe_bo_pin (bo, exec);if (err) bo =ERR_PTR (err);xe_bo_unlock (bo);
drivers/gpu/drm/xe/xe_svm.c +3 -1
@@ -865,6 +865,7 @@ static int xe_drm_pagemap_populate_mm(struct drm_pagemap *dpagemap,struct device *dev = xe->drm.dev;struct drm_buddy_block *block;struct list_head *blocks; +struct drm_exec *exec;struct xe_bo *bo;ktime_t time_end =0 ;int err, idx;
@@ -873,12 +874,13 @@ static int xe_drm_pagemap_populate_mm(struct drm_pagemap *dpagemap,return -ENODEV ;xe_pm_runtime_get (xe); + exec =XE_VALIDATION_UNIMPLEMENTED ; retry: bo =xe_bo_create_locked (vr->xe,NULL ,NULL , end - start, ttm_bo_type_device, (IS_DGFX (xe) ?XE_BO_FLAG_VRAM (vr) :XE_BO_FLAG_SYSTEM ) | -XE_BO_FLAG_CPU_ADDR_MIRROR ); +XE_BO_FLAG_CPU_ADDR_MIRROR , exec);if (IS_ERR (bo)) { err =PTR_ERR (bo);if (xe_vm_validate_should_retry (NULL , err, &time_end))
drivers/gpu/drm/xe/xe_validation.c new file +49 -0
49 lines not on this page · raw message
drivers/gpu/drm/xe/xe_validation.h new file +69 -0
69 lines not on this page · raw message
drivers/gpu/drm/xe/xe_vm.c +19 -5
@@ -394,7 +394,7 @@ static int xe_gpuvm_validate(struct drm_gpuvm_bo *vm_bo, struct drm_exec *exec)list_move_tail (&gpuva_to_vma (gpuva)->combined_links.rebind, &vm->rebind_list); - ret =xe_bo_validate (gem_to_xe_bo (vm_bo->obj), vm, false); + ret =xe_bo_validate (gem_to_xe_bo (vm_bo->obj), vm, false, exec);if (ret)return ret;
@@ -529,7 +529,9 @@ static void preempt_rebind_work_func(struct work_struct *w)if (err) goto out_unlock; +xe_vm_set_validation_exec (vm, &exec); err =xe_vm_rebind (vm, true); +xe_vm_set_validation_exec (vm,NULL );if (err) goto out_unlock;
@@ -3056,7 +3058,7 @@ static int vma_lock_and_validate(struct drm_exec *exec, struct xe_vma *vma, err =drm_exec_lock_obj (exec, &bo->ttm.base);if (!err && validate) err =xe_bo_validate (bo, vm, - !xe_vm_in_preempt_fence_mode (vm)); + !xe_vm_in_preempt_fence_mode (vm), exec); }return err;
@@ -3174,7 +3176,8 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm, false);if (!err && !xe_vma_has_no_bo (vma)) err =xe_bo_migrate (xe_vma_bo (vma), - region_to_mem_type[region]); + region_to_mem_type[region], + exec);break ; }default :
@@ -3453,7 +3456,9 @@ static struct dma_fence *vm_bind_ioctl_ops_execute(struct xe_vm *vm, goto unlock; } +xe_vm_set_validation_exec (vm, &exec); fence =ops_execute (vm, vops); +xe_vm_set_validation_exec (vm,NULL );if (IS_ERR (fence)) {if (PTR_ERR (fence) == -ENODATA )vm_bind_ioctl_ops_fini (vm, vops,NULL );
@@ -4016,10 +4021,18 @@ struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,*/ int xe_vm_lock (struct xe_vm *vm,bool intr) { +struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ; +int ret; +if (intr) -return dma_resv_lock_interruptible (xe_vm_resv (vm),NULL ); + ret =dma_resv_lock_interruptible (xe_vm_resv (vm),NULL ); +else + ret =dma_resv_lock (xe_vm_resv (vm),NULL ); -return dma_resv_lock (xe_vm_resv (vm),NULL ); +if (!ret) +xe_vm_set_validation_exec (vm, exec); + +return ret; }/**
@@ -4030,6 +4043,7 @@ int xe_vm_lock(struct xe_vm *vm, bool intr)*/ void xe_vm_unlock (struct xe_vm *vm) { +xe_vm_set_validation_exec (vm,NULL );dma_resv_unlock (xe_vm_resv (vm)); }
drivers/gpu/drm/xe/xe_vm.h +31 -3
@@ -329,7 +329,7 @@ static inline void xe_vm_set_validating(struct xe_vm *vm, bool allow_res_evict)if (vm && !allow_res_evict) {xe_vm_assert_held (vm);/* Pairs with READ_ONCE in xe_vm_is_validating() */ -WRITE_ONCE (vm->validating, current); +WRITE_ONCE (vm->validation.validating, current); } }
@@ -347,7 +347,7 @@ static inline void xe_vm_clear_validating(struct xe_vm *vm, bool allow_res_evict {if (vm && !allow_res_evict) {/* Pairs with READ_ONCE in xe_vm_is_validating() */ -WRITE_ONCE (vm->validating,NULL ); +WRITE_ONCE (vm->validation.validating,NULL ); } }
@@ -365,13 +365,41 @@ static inline void xe_vm_clear_validating(struct xe_vm *vm, bool allow_res_evictstatic inline bool xe_vm_is_validating (struct xe_vm *vm) {/* Pairs with WRITE_ONCE in xe_vm_is_validating() */ -if (READ_ONCE (vm->validating) == current) { +if (READ_ONCE (vm->validation.validating) == current) {xe_vm_assert_held (vm);return true; }return false; } +/** +* xe_vm_set_validation_exec() - Accessor to set the drm_exec object +* @vm: The vm we want to register a drm_exec object with. +* @exec: The exec object we want to register. +* +* Set the drm_exec object used to lock the vm's resv. +*/ +static inline void xe_vm_set_validation_exec (struct xe_vm *vm,struct drm_exec *exec) +{ +xe_vm_assert_held (vm); +xe_assert (vm->xe, !!exec ^ !!vm->validation._exec); + vm->validation._exec = exec; +} + +/** +* xe_vm_set_validation_exec() - Accessor to read the drm_exec object +* @vm: The vm we want to register a drm_exec object with. +* +* Return: The drm_exec object used to lock the vm's resv. The value +* is a valid pointer, %NULL, or one of the special values defined in +* xe_validation.h. +*/ +static inline struct drm_exec *xe_vm_validation_exec (struct xe_vm *vm) +{ +xe_vm_assert_held (vm); +return vm->validation._exec; +} +/** * xe_vm_has_valid_gpu_mapping() - Advisory helper to check if VMA or SVM range has * a valid GPU mapping
drivers/gpu/drm/xe/xe_vm_types.h +24 -8
@@ -357,19 +357,35 @@ struct xe_vm {bool capture_once; } error_capture; +/** +* @validation: Validation data only valid with the vm resv held. +* Note: This is really task state of the task holding the vm resv, +* and moving forward we should +* come up with a better way of passing this down the call- +* chain. +*/ +struct { +/** +* @validation.validating: The task that is currently making bos resident. +* for this vm. +* Protected by the VM's resv for writing. Opportunistic reading can be done +* using READ_ONCE. Note: This is a workaround for the +* TTM eviction_valuable() callback not being passed a struct +* ttm_operation_context(). Future work might want to address this. +*/ +struct task_struct *validating; +/** +* @validation.exec The drm_exec context used when locking the vm resv. +* Protected by the vm's resv. +*/ +struct drm_exec *_exec; + } validation; +/** * @tlb_flush_seqno: Required TLB flush seqno for the next exec. * protected by the vm resv. */ u64 tlb_flush_seqno; -/** -* @validating: The task that is currently making bos resident for this vm. -* Protected by the VM's resv for writing. Opportunistic reading can be done -* using READ_ONCE. Note: This is a workaround for the -* TTM eviction_valuable() callback not being passed a struct -* ttm_operation_context(). Future work might want to address this. -*/ -struct task_struct *validating;/** @batch_invalidate_tlb: Always invalidate TLB before batch start */ bool batch_invalidate_tlb;/** @xef: XE file handle for tracking this VM's drm client */
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 2/13 drm/xe: Introduce an xe_validation wrapper around drm_exec
In reply to Thomas HellströmIntroduce a validation wrapper xe_validation_guard() as a helper intended to be used around drm_exec transactions what perform validations. Once TTM can handle exhaustive eviction we could remove this wrapper or make it mostly a NO-OP unless other functionality is added to it.
Currently the wrapper takes a read lock upon entry and if the transaction hits an OOM, all locks are released and the transaction is retried with a write-lock. If all other validations participate in this scheme, the transaction with the write lock will be the only transaction validating and should have access to all available non-pinned memory.
There is currently a problem in that TTM converts -EDEADLOCKS to -ENOMEM, and with ww_mutex slowpath error injections, we can hit -ENOMEMs without having actually ran out of memory. We abuse ww_mutex internals to detect such situations until TTM is fixes to not convert the error code. In the meantime, injecting ww_mutex slowpath -EDEADLOCKs is a good way to test the implementation in the absence of real OOMs.
Just introduce the wrapper in this commit. It will be hooked up to the driver in following commits.
v2:
- Mark class_xe_validation conditional so that the loop is skipped on initialization error.
- Argument sanitation (Matt Brost)
- Fix conditional execution of xe_validation_ctx_fini() (Matt Brost)
- Add a no_block mode for upcoming use in the CPU fault handler. v4:
- Update kerneldoc. (Xe CI).
--- drivers/gpu/drm/xe/xe_validation.c | 228 +++++++++++++++++++++++++++++ drivers/gpu/drm/xe/xe_validation.h | 123 ++++++++++++++++ 2 files changed, 351 insertions(+)
drivers/gpu/drm/xe/xe_validation.c +228 -0
@@ -5,6 +5,7 @@#include "xe_bo.h" #include <drm/drm_exec.h> #include <drm/drm_gem.h> +#include <drm/drm_gpuvm.h> #include "xe_assert.h" #include "xe_validation.h"
@@ -47,3 +48,230 @@ void xe_validation_assert_exec(const struct xe_device *xe, } }#endif + +static int xe_validation_lock (struct xe_validation_ctx *ctx) +{ +struct xe_validation_device *val = ctx->val; +int ret =0 ; + +if (ctx->val_flags.interruptible) { +if (ctx->request_exclusive) + ret =down_write_killable (&val->lock); +else + ret =down_read_interruptible (&val->lock); + }else { +if (ctx->request_exclusive) +down_write (&val->lock); +else +down_read (&val->lock); + } + +if (!ret) { + ctx->lock_held = true; + ctx->lock_held_exclusive = ctx->request_exclusive; + } + +return ret; +} + +static int xe_validation_trylock (struct xe_validation_ctx *ctx) +{ +struct xe_validation_device *val = ctx->val; +bool locked; + +if (ctx->request_exclusive) + locked =down_write_trylock (&val->lock); +else + locked =down_read_trylock (&val->lock); + +if (locked) { + ctx->lock_held = true; + ctx->lock_held_exclusive = ctx->request_exclusive; + } + +return locked ?0 : -EWOULDBLOCK ; +} + +static void xe_validation_unlock (struct xe_validation_ctx *ctx) +{ +if (!ctx->lock_held) +return ; + +if (ctx->lock_held_exclusive) +up_write (&ctx->val->lock); +else +up_read (&ctx->val->lock); + + ctx->lock_held = false; +} + +/** +* xe_validation_ctx_init() - Initialize an xe_validation_ctx +* @ctx: The xe_validation_ctx to initialize. +* @val: The xe_validation_device representing the validation domain. +* @exec: The struct drm_exec to use for the transaction. May be NULL. +* @flags: The flags to use for initialization. +* +* Initialize and lock a an xe_validation transaction using the validation domain +* represented by @val. Also initialize the drm_exec object forwarding parts of +* @flags to the drm_exec initialization. The @flags.exclusive flag should +* typically be set to false to avoid locking out other validators from the +* domain until an OOM is hit. For testing- or final attempt purposes it can, +* however, be set to true. +* +* Return: %0 on success, %-EINTR if interruptible initial locking failed with a +* signal pending. If @flags.no_block is set to true, a failed trylock +* returns %-EWOULDBLOCK. +*/ +int xe_validation_ctx_init (struct xe_validation_ctx *ctx,struct xe_validation_device *val, +struct drm_exec *exec,const struct xe_val_flags flags) +{ +int ret; + + ctx->exec = exec; + ctx->val = val; + ctx->lock_held = false; + ctx->lock_held_exclusive = false; + ctx->request_exclusive = flags.exclusive; + ctx->val_flags = flags; + ctx->exec_flags =0 ; + ctx->nr =0 ; + +if (flags.no_block) + ret =xe_validation_trylock (ctx); +else + ret =xe_validation_lock (ctx); +if (ret) +return ret; + +if (exec) { +if (flags.interruptible) + ctx->exec_flags |=DRM_EXEC_INTERRUPTIBLE_WAIT ; +if (flags.exec_ignore_duplicates) + ctx->exec_flags |=DRM_EXEC_IGNORE_DUPLICATES ; +drm_exec_init (exec, ctx->exec_flags, ctx->nr); + } + +return 0 ; +} + +#ifdef CONFIG_DEBUG_WW_MUTEX_SLOWPATH +/* +* This abuses both drm_exec and 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 +* CONFIG_DEBUG_WW_MUTEX_SLOWPATH until that happens. +*/ +static bool xe_validation_contention_injected (struct drm_exec *exec) +{ +return !!exec->ticket.contending_lock; +} + +#else + +static bool xe_validation_contention_injected (struct drm_exec *exec) +{ +return false; +} + +#endif + +static bool __xe_validation_should_retry (struct xe_validation_ctx *ctx,int ret) +{ +if (ret == -ENOMEM && + ((ctx->request_exclusive && +xe_validation_contention_injected (ctx->exec)) || + !ctx->request_exclusive)) { + ctx->request_exclusive = true; +return true; + } + +return false; +} + +/** +* xe_validation_exec_lock() - Perform drm_gpuvm_exec_lock within a validation +* transaction. +* @ctx: An uninitialized xe_validation_ctx. +* @vm_exec: An initialized struct vm_exec. +* @val: The validation domain. +* +* The drm_gpuvm_exec_lock() function internally initializes its drm_exec +* transaction and therefore doesn't lend itself very well to be using +* xe_validation_ctx_init(). Provide a helper that takes an uninitialized +* xe_validation_ctx and calls drm_gpuvm_exec_lock() with OOM retry. +* +* Return: %0 on success, negative error code on failure. +*/ +int xe_validation_exec_lock (struct xe_validation_ctx *ctx, +struct drm_gpuvm_exec *vm_exec, +struct xe_validation_device *val) +{ +int ret; + +memset (ctx,0 ,sizeof (*ctx)); + ctx->exec = &vm_exec->exec; + ctx->exec_flags = vm_exec->flags; + ctx->val = val; +if (ctx->exec_flags &DRM_EXEC_INTERRUPTIBLE_WAIT ) + ctx->val_flags.interruptible =1 ; +if (ctx->exec_flags &DRM_EXEC_IGNORE_DUPLICATES ) + ctx->val_flags.exec_ignore_duplicates =1 ; +retry: + ret =xe_validation_lock (ctx); +if (ret) +return ret; + + ret =drm_gpuvm_exec_lock (vm_exec); +if (ret) { +xe_validation_unlock (ctx); +if (__xe_validation_should_retry (ctx, ret)) + goto retry; + } + +return ret; +} + +/** +* xe_validation_ctx_fini() - Finalize a validation transaction +* @ctx: The Validation transaction to finalize. +* +* Finalize a validation transaction and its related drm_exec transaction. +*/ +void xe_validation_ctx_fini (struct xe_validation_ctx *ctx) +{ +drm_exec_fini (ctx->exec); +xe_validation_unlock (ctx); +} + +/** +* xe_validation_should_retry() - Determine if a validation transaction should retry +* @ctx: The validation transaction. +* @ret: Pointer to a return value variable. +* +* Determines whether a validation transaction should retry based on the +* internal transaction state and the return value pointed to by @ret. +* If a validation should be retried, the transaction is prepared for that, +* and the validation locked might be re-locked in exclusive mode, and *@ret +* is set to %0. If the re-locking errors, typically due to interruptible +* locking with signal pending, *@ret is instead set to -EINTR and the +* function returns %false. +* +* Return: %true if validation should be retried, %false otherwise. +*/ +bool xe_validation_should_retry (struct xe_validation_ctx *ctx,int *ret) +{ +if (__xe_validation_should_retry (ctx, *ret)) { +drm_exec_fini (ctx->exec); + *ret =0 ; +if (ctx->request_exclusive != ctx->lock_held_exclusive) { +xe_validation_unlock (ctx); + *ret =xe_validation_lock (ctx); + } +drm_exec_init (ctx->exec, ctx->exec_flags, ctx->nr); +return !*ret; + } + +return false; +}
drivers/gpu/drm/xe/xe_validation.h +123 -0
136 lines not on this page · raw message
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 3/13 drm/xe: Convert xe_bo_create_user() for exhaustive eviction
In reply to Thomas HellströmUse the xe_validation_guard() to convert xe_bo_create_user() for exhaustive eviction.
v2:
- Adapt to argument changes of xe_validation_guard()
--- drivers/gpu/drm/xe/tests/xe_bo.c | 16 ++-- drivers/gpu/drm/xe/tests/xe_dma_buf.c | 4 +- drivers/gpu/drm/xe/tests/xe_migrate.c | 12 +-- drivers/gpu/drm/xe/xe_bo.c | 114 +++++++++++++++++--------- drivers/gpu/drm/xe/xe_bo.h | 9 +- drivers/gpu/drm/xe/xe_device.c | 2 + drivers/gpu/drm/xe/xe_device_types.h | 3 + drivers/gpu/drm/xe/xe_vm.c | 14 ++++ drivers/gpu/drm/xe/xe_vm.h | 2 + 9 files changed, 115 insertions(+), 61 deletions(-)
drivers/gpu/drm/xe/tests/xe_bo.c +8 -8
@@ -139,8 +139,8 @@ static void ccs_test_run_tile(struct xe_device *xe, struct xe_tile *tile,else kunit_info (test,"Testing system memory\n" ); - bo =xe_bo_create_user (xe,NULL ,NULL ,SZ_1M ,DRM_XE_GEM_CPU_CACHING_WC , - bo_flags); + bo =xe_bo_create_user (xe,NULL ,SZ_1M ,DRM_XE_GEM_CPU_CACHING_WC , + bo_flags, exec);if (IS_ERR (bo)) {KUNIT_FAIL (test,"Failed to create bo.\n" );return ;
@@ -220,18 +220,18 @@ static int evict_test_run_tile(struct xe_device *xe, struct xe_tile *tile, strucfor (i =0 ; i <2 ; ++i) {xe_vm_lock (vm, false); - bo =xe_bo_create_user (xe,NULL , vm,0x10000 , + bo =xe_bo_create_user (xe, vm,0x10000 ,DRM_XE_GEM_CPU_CACHING_WC , - bo_flags); + bo_flags, exec);xe_vm_unlock (vm);if (IS_ERR (bo)) {KUNIT_FAIL (test,"bo create err=%pe\n" , bo);break ; } - external =xe_bo_create_user (xe,NULL ,NULL ,0x10000 , + external =xe_bo_create_user (xe,NULL ,0x10000 ,DRM_XE_GEM_CPU_CACHING_WC , - bo_flags); + bo_flags,NULL );if (IS_ERR (external)) {KUNIT_FAIL (test,"external bo create err=%pe\n" , external); goto cleanup_bo;
@@ -497,9 +497,9 @@ static int shrink_test_run_device(struct xe_device *xe)INIT_LIST_HEAD (&link->link);/* We can create bos using WC caching here. But it is slower. */ - bo =xe_bo_create_user (xe,NULL ,NULL ,XE_BO_SHRINK_SIZE , + bo =xe_bo_create_user (xe,NULL ,XE_BO_SHRINK_SIZE ,DRM_XE_GEM_CPU_CACHING_WB , -XE_BO_FLAG_SYSTEM ); +XE_BO_FLAG_SYSTEM ,NULL );if (IS_ERR (bo)) {if (bo !=ERR_PTR (-ENOMEM ) && bo !=ERR_PTR (-ENOSPC ) && bo !=ERR_PTR (-EINTR ) && bo !=ERR_PTR (-ERESTARTSYS ))
drivers/gpu/drm/xe/tests/xe_dma_buf.c +2 -2
@@ -122,8 +122,8 @@ static void xe_test_dmabuf_import_same_driver(struct xe_device *xe) size =SZ_64K ;kunit_info (test,"running %s\n" , __func__); - bo =xe_bo_create_user (xe,NULL ,NULL , size,DRM_XE_GEM_CPU_CACHING_WC , - params->mem_mask); + bo =xe_bo_create_user (xe,NULL , size,DRM_XE_GEM_CPU_CACHING_WC , + params->mem_mask,NULL );if (IS_ERR (bo)) {KUNIT_FAIL (test,"xe_bo_create() failed with err=%ld\n" ,PTR_ERR (bo));
drivers/gpu/drm/xe/tests/xe_migrate.c +6 -6
@@ -642,11 +642,11 @@ static void validate_ccs_test_run_tile(struct xe_device *xe, struct xe_tile *tilstruct drm_exec *exec;long ret; - sys_bo =xe_bo_create_user (xe,NULL ,NULL ,SZ_4M , + sys_bo =xe_bo_create_user (xe,NULL ,SZ_4M ,DRM_XE_GEM_CPU_CACHING_WC ,XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | -XE_BO_FLAG_PINNED ); +XE_BO_FLAG_PINNED ,NULL );if (IS_ERR (sys_bo)) { KUNIT_FAIL(test, "xe_bo_create() failed with err=%ld\n",
@@ -669,10 +669,10 @@ static void validate_ccs_test_run_tile(struct xe_device *xe, struct xe_tile *til }xe_bo_unlock (sys_bo); - ccs_bo =xe_bo_create_user (xe,NULL ,NULL ,SZ_4M , + ccs_bo =xe_bo_create_user (xe,NULL ,SZ_4M ,DRM_XE_GEM_CPU_CACHING_WC , bo_flags |XE_BO_FLAG_NEEDS_CPU_ACCESS | -XE_BO_FLAG_PINNED ); +XE_BO_FLAG_PINNED ,NULL );if (IS_ERR (ccs_bo)) { KUNIT_FAIL(test, "xe_bo_create() failed with err=%ld\n",
@@ -694,10 +694,10 @@ static void validate_ccs_test_run_tile(struct xe_device *xe, struct xe_tile *til }xe_bo_unlock (ccs_bo); - vram_bo =xe_bo_create_user (xe,NULL ,NULL ,SZ_4M , + vram_bo =xe_bo_create_user (xe,NULL ,SZ_4M ,DRM_XE_GEM_CPU_CACHING_WC , bo_flags |XE_BO_FLAG_NEEDS_CPU_ACCESS | -XE_BO_FLAG_PINNED ); +XE_BO_FLAG_PINNED ,NULL );if (IS_ERR (vram_bo)) {KUNIT_FAIL (test,"xe_bo_create() failed with err=%ld\n" ,PTR_ERR (vram_bo));
drivers/gpu/drm/xe/xe_bo.c +76 -38
150 lines not on this page · raw message
drivers/gpu/drm/xe/xe_bo.h +2 -7
@@ -104,13 +104,8 @@ struct xe_bo *xe_bo_create_locked(struct xe_device *xe, struct xe_tile *tile, struct xe_vm *vm, size_t size, enum ttm_bo_type type, u32 flags, struct drm_exec *exec); -struct xe_bo *xe_bo_create (struct xe_device *xe,struct xe_tile *tile, -struct xe_vm *vm,size_t size, -enum ttm_bo_type type,u32 flags); -struct xe_bo *xe_bo_create_user (struct xe_device *xe,struct xe_tile *tile, -struct xe_vm *vm,size_t size, -u16 cpu_caching, -u32 flags); +struct xe_bo *xe_bo_create_user (struct xe_device *xe,struct xe_vm *vm,size_t size, +u16 cpu_caching,u32 flags,struct drm_exec *exec);struct xe_bo *xe_bo_create_pin_map (struct xe_device *xe,struct xe_tile *tile,struct xe_vm *vm,size_t size,enum ttm_bo_type type,u32 flags);
drivers/gpu/drm/xe/xe_device.c +2 -0
@@ -457,6 +457,8 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,if (err) goto err; +xe_validation_device_init (&xe->val); +init_waitqueue_head (&xe->ufence_wq);init_rwsem (&xe->usm.lock);
drivers/gpu/drm/xe/xe_device_types.h +3 -0
@@ -26,6 +26,7 @@#include "xe_sriov_vf_ccs_types.h" #include "xe_step_types.h" #include "xe_survivability_mode_types.h" +#include "xe_validation.h" #if IS_ENABLED (CONFIG_DRM_XE_DEBUG )#define TEST_VM_OPS_ERROR
@@ -580,6 +581,8 @@ struct xe_device {*/ atomic64_t global_total_pages;#endif +/** @val: The domain for exhaustive eviction, which is currently per device. */ +struct xe_validation_device val;/** @psmi: GPU debugging via additional validation HW */ struct {
drivers/gpu/drm/xe/xe_vm.c +14 -0
@@ -48,6 +48,20 @@ static struct drm_gem_object *xe_vm_obj(struct xe_vm *vm)return vm->gpuvm.r_obj; } +/** +* xe_vm_drm_exec_lock() - Lock the vm's resv with a drm_exec transaction +* @vm: The vm whose resv is to be locked. +* @exec: The drm_exec transaction. +* +* Helper to lock the vm's resv as part of a drm_exec transaction. +* +* Return: %0 on success. See drm_exec_lock_obj() for error codes. +*/ +int xe_vm_drm_exec_lock (struct xe_vm *vm,struct drm_exec *exec) +{ +return drm_exec_lock_obj (exec,xe_vm_obj (vm)); +} +/** * xe_vma_userptr_check_repin() - Advisory check for repin needed * @uvma: The userptr vma
drivers/gpu/drm/xe/xe_vm.h +2 -0
@@ -300,6 +300,8 @@ void xe_vm_kill(struct xe_vm *vm, bool unlocked);*/ #define xe_vm_assert_held (vm) dma_resv_assert_held(xe_vm_resv(vm)) +int xe_vm_drm_exec_lock (struct xe_vm *vm,struct drm_exec *exec); +#if IS_ENABLED (CONFIG_DRM_XE_DEBUG_VM )#define vm_dbg drm_dbg#else
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 4/13 drm/xe: Convert SVM validation for exhaustive eviction
In reply to Thomas HellströmConvert SVM validation to support exhaustive eviction, using xe_validation_guard().
v2:
- Wrap also xe_vm_range_rebind (Matt Brost)
- Adapt to argument changes of xe_validation_guard(). v5:
- Rebase on SVM stats.
--- drivers/gpu/drm/xe/xe_svm.c | 103 +++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 48 deletions(-)
drivers/gpu/drm/xe/xe_svm.c +55 -48
@@ -864,51 +864,48 @@ static int xe_drm_pagemap_populate_mm(struct drm_pagemap *dpagemap,struct xe_device *xe = vr->xe;struct device *dev = xe->drm.dev;struct drm_buddy_block *block; +struct xe_validation_ctx vctx;struct list_head *blocks; -struct drm_exec *exec; +struct drm_exec exec;struct xe_bo *bo; -ktime_t time_end =0 ; -int err, idx; +int err =0 , idx;if (!drm_dev_enter (&xe->drm, &idx))return -ENODEV ;xe_pm_runtime_get (xe); - exec =XE_VALIDATION_UNIMPLEMENTED ; - - retry: - bo =xe_bo_create_locked (vr->xe,NULL ,NULL , end - start, - ttm_bo_type_device, - (IS_DGFX (xe) ?XE_BO_FLAG_VRAM (vr) :XE_BO_FLAG_SYSTEM ) | -XE_BO_FLAG_CPU_ADDR_MIRROR , exec); -if (IS_ERR (bo)) { - err =PTR_ERR (bo); -if (xe_vm_validate_should_retry (NULL , err, &time_end)) - goto retry; - goto out_pm_put; - } - -drm_pagemap_devmem_init (&bo->devmem_allocation, dev, mm, - &dpagemap_devmem_ops, dpagemap, end - start); - blocks = &to_xe_ttm_vram_mgr_resource (bo->ttm.resource)->blocks; -list_for_each_entry (block, blocks, link) - block->private = vr; + xe_validation_guard(&vctx, &xe->val, &exec, (struct xe_val_flags) {}, err) { + bo =xe_bo_create_locked (xe,NULL ,NULL , end - start, + ttm_bo_type_device, + (IS_DGFX (xe) ?XE_BO_FLAG_VRAM (vr) :XE_BO_FLAG_SYSTEM ) | +XE_BO_FLAG_CPU_ADDR_MIRROR , &exec); +drm_exec_retry_on_contention (&exec); +if (IS_ERR (bo)) { + err =PTR_ERR (bo); +xe_validation_retry_on_oom (&vctx, &err); +break ; + } -xe_bo_get (bo); +drm_pagemap_devmem_init (&bo->devmem_allocation, dev, mm, + &dpagemap_devmem_ops, dpagemap, end - start); -/* Ensure the device has a pm ref while there are device pages active. */ -xe_pm_runtime_get_noresume (xe); - err =drm_pagemap_migrate_to_devmem (&bo->devmem_allocation, mm, - start, end, timeslice_ms, -xe_svm_devm_owner (xe)); -if (err) -xe_svm_devmem_release (&bo->devmem_allocation); + blocks = &to_xe_ttm_vram_mgr_resource (bo->ttm.resource)->blocks; +list_for_each_entry (block, blocks, link) + block->private = vr; -xe_bo_unlock (bo); -xe_bo_put (bo); +xe_bo_get (bo); -out_pm_put: +/* Ensure the device has a pm ref while there are device pages active. */ +xe_pm_runtime_get_noresume (xe); + err =drm_pagemap_migrate_to_devmem (&bo->devmem_allocation, mm, + start, end, timeslice_ms, +xe_svm_devm_owner (xe)); +if (err) +xe_svm_devmem_release (&bo->devmem_allocation); +xe_bo_unlock (bo); +xe_bo_put (bo); + }xe_pm_runtime_put (xe);drm_dev_exit (idx);
@@ -1020,12 +1017,13 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,IS_ENABLED (CONFIG_DRM_XE_PAGEMAP ) ? vm->xe->atomic_svm_timeslice_ms : 0, }; +struct xe_validation_ctx vctx; +struct drm_exec exec;struct xe_svm_range *range;struct dma_fence *fence;struct drm_pagemap *dpagemap;struct xe_tile *tile =gt_to_tile (gt);int migrate_try_count = ctx.devmem_only ?3 :1 ; -ktime_t end =0 ;ktime_t start =xe_svm_stats_ktime_get (), bind_start, get_pages_start;int err;
@@ -1117,22 +1115,23 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,range_debug (range,"PAGE FAULT - BIND" ); bind_start =xe_svm_stats_ktime_get (); -retry_bind: -xe_vm_lock (vm, false); - fence =xe_vm_range_rebind (vm, vma, range,BIT (tile->id)); -if (IS_ERR (fence)) { -xe_vm_unlock (vm); - err =PTR_ERR (fence); -if (err == -EAGAIN ) { - ctx.timeslice_ms <<=1 ;/* Double timeslice if we have to retry */ -range_debug (range,"PAGE FAULT - RETRY BIND" ); - goto retry; + xe_validation_guard(&vctx, &vm->xe->val, &exec, (struct xe_val_flags) {}, err) { + err =xe_vm_drm_exec_lock (vm, &exec); +drm_exec_retry_on_contention (&exec); + +xe_vm_set_validation_exec (vm, &exec); + fence =xe_vm_range_rebind (vm, vma, range,BIT (tile->id)); +xe_vm_set_validation_exec (vm,NULL ); +if (IS_ERR (fence)) { +drm_exec_retry_on_contention (&exec); + err =PTR_ERR (fence); +xe_validation_retry_on_oom (&vctx, &err); +xe_svm_range_bind_us_stats_incr (gt, range, bind_start); +break ; } -if (xe_vm_validate_should_retry (NULL , err, &end)) - goto retry_bind; - goto out; } -xe_vm_unlock (vm); +if (err) + goto err_out;dma_fence_wait (fence, false);dma_fence_put (fence);
@@ -1140,6 +1139,14 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma, out:xe_svm_range_fault_us_stats_incr (gt, range, start); +return 0 ; + +err_out: +if (err == -EAGAIN ) { + ctx.timeslice_ms <<=1 ;/* Double timeslice if we have to retry */ +range_debug (range,"PAGE FAULT - RETRY BIND" ); + goto retry; + }return err; }
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 5/13 drm/xe: Convert existing drm_exec transactions for exhaustive eviction
In reply to Thomas HellströmConvert existing drm_exec transactions, like GT pagefault validation, non-LR exec() IOCTL and the rebind worker to support exhaustive eviction using the xe_validation_guard().
v2:
- Adapt to signature change in xe_validation_guard() (Matt Brost)
- Avoid gotos from within xe_validation_guard() (Matt Brost)
- Check error return from xe_validation_guard()
v3:
- Rebase on gpu_madvise()
--- drivers/gpu/drm/xe/xe_exec.c | 20 ++-- drivers/gpu/drm/xe/xe_gt_pagefault.c | 20 ++-- drivers/gpu/drm/xe/xe_vm.c | 139 +++++++++++---------------- drivers/gpu/drm/xe/xe_vm.h | 2 - 4 files changed, 75 insertions(+), 106 deletions(-)
drivers/gpu/drm/xe/xe_exec.c +8 -12
@@ -119,10 +119,10 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)struct drm_gpuvm_exec vm_exec = {.extra.fn = xe_exec_fn};struct drm_exec *exec = &vm_exec.exec;u32 i, num_syncs, num_ufence =0 ; +struct xe_validation_ctx ctx;struct xe_sched_job *job;struct xe_vm *vm;bool write_locked, skip_retry = false; -ktime_t end =0 ;int err =0 ;struct xe_hw_engine_group *group;enum xe_hw_engine_group_execution_mode mode, previous_mode;
@@ -241,17 +241,12 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file) goto err_unlock_list; } - vm_exec.vm = &vm->gpuvm; - vm_exec.flags =DRM_EXEC_INTERRUPTIBLE_WAIT ; -if (xe_vm_in_lr_mode (vm)) { -drm_exec_init (exec, vm_exec.flags,0 ); - }else { - err =drm_gpuvm_exec_lock (&vm_exec); -if (err) { -if (xe_vm_validate_should_retry (exec, err, &end)) - err = -EAGAIN ; +if (!xe_vm_in_lr_mode (vm)) { + vm_exec.vm = &vm->gpuvm; + vm_exec.flags =DRM_EXEC_INTERRUPTIBLE_WAIT ; + err =xe_validation_exec_lock (&ctx, &vm_exec, &xe->val); +if (err) goto err_unlock_list; - } }if (xe_vm_is_closed_or_banned (q->vm)) {
@@ -345,7 +340,8 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)if (err)xe_sched_job_put (job); err_exec: -drm_exec_fini (exec); +if (!xe_vm_in_lr_mode (vm)) +xe_validation_ctx_fini (&ctx); err_unlock_list:up_read (&vm->lock);if (err == -EAGAIN && !skip_retry)
drivers/gpu/drm/xe/xe_gt_pagefault.c +9 -11
@@ -96,9 +96,9 @@ static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma, {struct xe_vm *vm =xe_vma_vm (vma);struct xe_tile *tile =gt_to_tile (gt); +struct xe_validation_ctx ctx;struct drm_exec exec;struct dma_fence *fence; -ktime_t end =0 ;int err, needs_vram;lockdep_assert_held_write (&vm->lock);
@@ -127,12 +127,11 @@ static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma, }/* Lock VM and BOs dma-resv */ -drm_exec_init (&exec,0 ,0 ); +xe_validation_ctx_init (&ctx, &vm->xe->val, &exec, (struct xe_val_flags ) {}); drm_exec_until_all_locked(&exec) { err =xe_pf_begin (&exec, vma, needs_vram ==1 , tile->mem.vram);drm_exec_retry_on_contention (&exec); -if (xe_vm_validate_should_retry (&exec, err, &end)) - err = -EAGAIN ; +xe_validation_retry_on_oom (&ctx, &err);if (err) goto unlock_dma_resv;
@@ -143,8 +142,7 @@ static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma,xe_vm_set_validation_exec (vm,NULL );if (IS_ERR (fence)) { err =PTR_ERR (fence); -if (xe_vm_validate_should_retry (&exec, err, &end)) - err = -EAGAIN ; +xe_validation_retry_on_oom (&ctx, &err); goto unlock_dma_resv; } }
@@ -153,7 +151,7 @@ static int handle_vma_pagefault(struct xe_gt *gt, struct xe_vma *vma,dma_fence_put (fence); unlock_dma_resv: -drm_exec_fini (&exec); +xe_validation_ctx_fini (&ctx);if (err == -EAGAIN ) goto retry_userptr;
@@ -535,6 +533,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc) {struct xe_device *xe =gt_to_xe (gt);struct xe_tile *tile =gt_to_tile (gt); +struct xe_validation_ctx ctx;struct drm_exec exec;struct xe_vm *vm;struct xe_vma *vma;
@@ -564,15 +563,14 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc) goto unlock_vm;/* Lock VM and BOs dma-resv */ -drm_exec_init (&exec,0 ,0 ); +xe_validation_ctx_init (&ctx, &vm->xe->val, &exec, (struct xe_val_flags ) {}); drm_exec_until_all_locked(&exec) { ret =xe_pf_begin (&exec, vma,IS_DGFX (vm->xe), tile->mem.vram);drm_exec_retry_on_contention (&exec); -if (ret) -break ; +xe_validation_retry_on_oom (&ctx, &ret); } -drm_exec_fini (&exec); +xe_validation_ctx_fini (&ctx); unlock_vm:up_read (&vm->lock);xe_vm_put (vm);
drivers/gpu/drm/xe/xe_vm.c +58 -81
250 lines not on this page · raw message
drivers/gpu/drm/xe/xe_vm.h +0 -2
@@ -270,8 +270,6 @@ int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma);int xe_vma_userptr_check_repin (struct xe_userptr_vma *uvma); -bool xe_vm_validate_should_retry (struct drm_exec *exec,int err,ktime_t *end); -int xe_vm_lock_vma (struct drm_exec *exec,struct xe_vma *vma); int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 6/13 drm/xe: Convert the CPU fault handler for exhaustive eviction
In reply to Thomas HellströmThe CPU fault handler may populate bos and migrate, and in doing so might interfere with other tasks validating.
Rework the CPU fault handler completely into a fastpath and a slowpath. The fastpath trylocks only the validation lock in read-mode. If that fails, there's a fallback to the slowpath, where we do a full validation transaction.
This mandates open-coding of bo locking, bo idling and bo populating, but we still call into TTM for fault finalizing.
v2:
- Rework the CPU fault handler to actually take part in the exhaustive eviction scheme (Matthew Brost).
v3:
- Don't return anything but VM_FAULT_RETRY if we've dropped the mmap_lock. Not even if a signal is pending.
- Rebase on gpu_madvise() and split out fault migration.
- Wait for idle after migration.
- Check whether the resource manager uses tts to determine whether to map the tt or iomem.
- Add a number of asserts.
- Allow passing a ttm_operation_ctx to xe_bo_migrate() so that it's possible to try non-blocking migration.
- Don't fall through to TTM on migration / population error Instead remove the gfp_retry_mayfail in mode 2 where we must succeed. (Matthew Brost)
v5:
- Don't allow faulting in the imported bo case (Matthew Brost)
--- drivers/gpu/drm/xe/display/xe_fb_pin.c | 2 +- drivers/gpu/drm/xe/xe_bo.c | 259 ++++++++++++++++++++----- drivers/gpu/drm/xe/xe_bo.h | 3 +- drivers/gpu/drm/xe/xe_dma_buf.c | 6 +- drivers/gpu/drm/xe/xe_gt_pagefault.c | 2 +- drivers/gpu/drm/xe/xe_validation.c | 3 +- drivers/gpu/drm/xe/xe_vm.c | 1 + 7 files changed, 225 insertions(+), 51 deletions(-)
drivers/gpu/drm/xe/display/xe_fb_pin.c +1 -1
@@ -314,7 +314,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, goto err;if (IS_DGFX (xe)) - ret =xe_bo_migrate (bo,XE_PL_VRAM0 , exec); + ret =xe_bo_migrate (bo,XE_PL_VRAM0 ,NULL , exec);else ret =xe_bo_validate (bo,NULL , true, exec);if (!ret)
drivers/gpu/drm/xe/xe_bo.c +215 -44
317 lines not on this page · raw message
drivers/gpu/drm/xe/xe_bo.h +2 -1
@@ -284,7 +284,8 @@ uint64_t vram_region_gpu_offset(struct ttm_resource *res);bool xe_bo_can_migrate (struct xe_bo *bo,u32 mem_type); -int xe_bo_migrate (struct xe_bo *bo,u32 mem_type,struct drm_exec *exec); +int xe_bo_migrate (struct xe_bo *bo,u32 mem_type,struct ttm_operation_ctx *ctc, +struct drm_exec *exec);int xe_bo_evict (struct xe_bo *bo,struct drm_exec *exec);int xe_bo_evict_pinned (struct xe_bo *bo);
drivers/gpu/drm/xe/xe_dma_buf.c +3 -3
@@ -64,7 +64,7 @@ static int xe_dma_buf_pin(struct dma_buf_attachment *attach)return -EINVAL ; } - ret =xe_bo_migrate (bo,XE_PL_TT , exec); + ret =xe_bo_migrate (bo,XE_PL_TT ,NULL , exec);if (ret) {if (ret != -EINTR && ret != -ERESTARTSYS ) drm_dbg(&xe->drm,
@@ -102,7 +102,7 @@ static struct sg_table *xe_dma_buf_map(struct dma_buf_attachment *attach,if (!xe_bo_is_pinned (bo)) {if (!attach->peer2peer) - r =xe_bo_migrate (bo,XE_PL_TT , exec); + r =xe_bo_migrate (bo,XE_PL_TT ,NULL , exec);else r =xe_bo_validate (bo,NULL , false, exec);if (r)
@@ -170,7 +170,7 @@ static int xe_dma_buf_begin_cpu_access(struct dma_buf *dma_buf,/* Can we do interruptible lock here? */ xe_bo_lock (bo, false); - (void )xe_bo_migrate (bo,XE_PL_TT , exec); + (void )xe_bo_migrate (bo,XE_PL_TT ,NULL , exec);xe_bo_unlock (bo);return 0 ;
drivers/gpu/drm/xe/xe_gt_pagefault.c +1 -1
@@ -87,7 +87,7 @@ static int xe_pf_begin(struct drm_exec *exec, struct xe_vma *vma,if (!bo)return 0 ; -return need_vram_move ?xe_bo_migrate (bo, vram->placement, exec) : +return need_vram_move ?xe_bo_migrate (bo, vram->placement,NULL , exec) :xe_bo_validate (bo, vm, true, exec); }
drivers/gpu/drm/xe/xe_validation.c +2 -1
@@ -241,7 +241,8 @@ int xe_validation_exec_lock(struct xe_validation_ctx *ctx,*/ void xe_validation_ctx_fini (struct xe_validation_ctx *ctx) { -drm_exec_fini (ctx->exec); +if (ctx->exec) +drm_exec_fini (ctx->exec);xe_validation_unlock (ctx); }
drivers/gpu/drm/xe/xe_vm.c +1 -0
@@ -3168,6 +3168,7 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,if (!err && !xe_vma_has_no_bo (vma)) err =xe_bo_migrate (xe_vma_bo (vma), region_to_mem_type[region], +NULL , exec);break ; }
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 7/13 drm/xe/display: Convert __xe_pin_fb_vma()
In reply to Thomas HellströmConvert __xe_pin_fb_vma() for exhaustive eviction
using xe_validation_guard().
v2:
- Avoid gotos from within xe_validation_guard(). (Matt Brost)
- Adapt to signature change of xe_validation_guard(). (Matt Brost)
- Use interruptible waiting, since xe_bo_migrate() already does that.
--- drivers/gpu/drm/xe/display/xe_fb_pin.c | 30 +++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-)
drivers/gpu/drm/xe/display/xe_fb_pin.c +18 -12
@@ -281,7 +281,8 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,struct i915_vma *vma =kzalloc (sizeof (*vma),GFP_KERNEL );struct drm_gem_object *obj =intel_fb_bo (&fb->base);struct xe_bo *bo =gem_to_xe_bo (obj); -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ; +struct xe_validation_ctx ctx; +struct drm_exec exec;int ret;if (!vma)
@@ -309,17 +310,22 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,* Pin the framebuffer, we can't use xe_bo_(un)pin functions as the * assumptions are incorrect for framebuffers */ - ret =ttm_bo_reserve (&bo->ttm, false, false,NULL ); -if (ret) - goto err; - -if (IS_DGFX (xe)) - ret =xe_bo_migrate (bo,XE_PL_VRAM0 ,NULL , exec); -else - ret =xe_bo_validate (bo,NULL , true, exec); -if (!ret) -ttm_bo_pin (&bo->ttm); -ttm_bo_unreserve (&bo->ttm); +xe_validation_guard (&ctx, &xe->val, &exec, (struct xe_val_flags ) {.interruptible = true}, + ret) { + ret =drm_exec_lock_obj (&exec, &bo->ttm.base); +drm_exec_retry_on_contention (&exec); +if (ret) +break ; + +if (IS_DGFX (xe)) + ret =xe_bo_migrate (bo,XE_PL_VRAM0 ,NULL , &exec); +else + ret =xe_bo_validate (bo,NULL , true, &exec); +drm_exec_retry_on_contention (&exec); +xe_validation_retry_on_oom (&ctx, &ret); +if (!ret) +ttm_bo_pin (&bo->ttm); + }if (ret) goto err;
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 8/13 drm/xe: Convert xe_dma_buf.c for exhaustive eviction
In reply to Thomas HellströmConvert dma-buf migration to XE_PL_TT and dma-buf import to support exhaustive eviction, using xe_validation_guard(). It seems unlikely that the import would result in an -ENOMEM, but convert import anyway for completeness.
The dma-buf map_attachment() functionality unfortunately doesn't support passing a drm_exec, which means that foreign devices validating a dma-buf that we exported will not, unless they are xeKMD devices, participate in the exhaustive eviction scheme.
v2:
- Avoid gotos from within xe_validation_guard(). (Matt Brost)
- Adapt to signature change of xe_validation_guard(). (Matt Brost)
- Remove an unneeded (void)ret. (Matt Brost)
- Fix up an error path.
--- drivers/gpu/drm/xe/xe_dma_buf.c | 61 ++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 20 deletions(-)
drivers/gpu/drm/xe/xe_dma_buf.c +41 -20
@@ -163,16 +163,26 @@ static int xe_dma_buf_begin_cpu_access(struct dma_buf *dma_buf,struct xe_bo *bo =gem_to_xe_bo (obj);bool reads = (direction ==DMA_BIDIRECTIONAL || direction ==DMA_FROM_DEVICE ); -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ; +struct xe_validation_ctx ctx; +struct drm_exec exec; +int ret =0 ;if (!reads)return 0 ;/* Can we do interruptible lock here? */ -xe_bo_lock (bo, false); - (void )xe_bo_migrate (bo,XE_PL_TT ,NULL , exec); -xe_bo_unlock (bo); + xe_validation_guard(&ctx, &xe_bo_device(bo)->val, &exec, (struct xe_val_flags) {}, ret) { + ret =drm_exec_lock_obj (&exec, &bo->ttm.base); +drm_exec_retry_on_contention (&exec); +if (ret) +break ; + + ret =xe_bo_migrate (bo,XE_PL_TT ,NULL , &exec); +drm_exec_retry_on_contention (&exec); +xe_validation_retry_on_oom (&ctx, &ret); + } +/* If we failed, cpu-access takes place in current placement. */ return 0 ; }
@@ -211,25 +221,36 @@ xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage, {struct dma_resv *resv = dma_buf->resv;struct xe_device *xe =to_xe_device (dev); -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ; +struct xe_validation_ctx ctx; +struct drm_gem_object *dummy_obj; +struct drm_exec exec;struct xe_bo *bo; -int ret; - -dma_resv_lock (resv,NULL ); - bo =___xe_bo_create_locked (xe, storage,NULL , resv,NULL , dma_buf->size, -0 ,/* Will require 1way or 2way for vm_bind */ - ttm_bo_type_sg,XE_BO_FLAG_SYSTEM , exec); -if (IS_ERR (bo)) { - ret =PTR_ERR (bo); - goto error; +int ret =0 ; + + dummy_obj =drm_gpuvm_resv_object_alloc (&xe->drm); +if (!dummy_obj) +return ERR_PTR (-ENOMEM ); + + dummy_obj->resv = resv; + xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {}, ret) { + ret =drm_exec_lock_obj (&exec, dummy_obj); +drm_exec_retry_on_contention (&exec); +if (ret) +break ; + + bo =___xe_bo_create_locked (xe, storage,NULL , resv,NULL , dma_buf->size, +0 ,/* Will require 1way or 2way for vm_bind */ + ttm_bo_type_sg,XE_BO_FLAG_SYSTEM , &exec); +drm_exec_retry_on_contention (&exec); +if (IS_ERR (bo)) { + ret =PTR_ERR (bo); +xe_validation_retry_on_oom (&ctx, &ret); +break ; + } } -dma_resv_unlock (resv); - -return &bo->ttm.base; +drm_gem_object_put (dummy_obj); -error: -dma_resv_unlock (resv); -return ERR_PTR (ret); +return ret ?ERR_PTR (ret) : &bo->ttm.base; }static void xe_dma_buf_move_notify (struct dma_buf_attachment *attach)
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 9/13 drm/xe: Rename ___xe_bo_create_locked()
In reply to Thomas HellströmDon't start external function names with underscores. Rename to xe_bo_init_locked().
--- drivers/gpu/drm/xe/xe_bo.c | 39 ++++++++++++++++----------------- drivers/gpu/drm/xe/xe_bo.h | 10 ++++----- drivers/gpu/drm/xe/xe_dma_buf.c | 6 ++--- 3 files changed, 27 insertions(+), 28 deletions(-)
drivers/gpu/drm/xe/xe_bo.c +19 -20
@@ -1161,10 +1161,10 @@ int xe_bo_notifier_prepare_pinned(struct xe_bo *bo)if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) goto out_unlock_bo; - backup =___xe_bo_create_locked (xe,NULL ,NULL , bo->ttm.base.resv,NULL ,xe_bo_size (bo), -DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | -XE_BO_FLAG_PINNED , exec); + backup =xe_bo_init_locked (xe,NULL ,NULL , bo->ttm.base.resv,NULL ,xe_bo_size (bo), +DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | +XE_BO_FLAG_PINNED , exec);if (IS_ERR (backup)) { ret =PTR_ERR (backup); goto out_unlock_bo;
@@ -1240,11 +1240,10 @@ int xe_bo_evict_pinned(struct xe_bo *bo) goto out_unlock_bo;if (!backup) { - backup =___xe_bo_create_locked (xe,NULL ,NULL , bo->ttm.base.resv, -NULL ,xe_bo_size (bo), -DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | -XE_BO_FLAG_PINNED , exec); + backup =xe_bo_init_locked (xe,NULL ,NULL , bo->ttm.base.resv,NULL ,xe_bo_size (bo), +DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | +XE_BO_FLAG_PINNED , exec);if (IS_ERR (backup)) { ret =PTR_ERR (backup); goto out_unlock_bo;
@@ -2045,7 +2044,7 @@ void xe_bo_free(struct xe_bo *bo) }/** -* ___xe_bo_create_locked() - Initialize or create an xe_bo. +* xe_bo_init_locked() - Initialize or create an xe_bo. * @xe: The xe device. * @bo: An already allocated buffer object or NULL * if the function should allocate a new one.
@@ -2065,11 +2064,11 @@ void xe_bo_free(struct xe_bo *bo)* * Return: The buffer object on success. Negative error pointer on failure. */ -struct xe_bo *___xe_bo_create_locked (struct xe_device *xe,struct xe_bo *bo, -struct xe_tile *tile,struct dma_resv *resv, -struct ttm_lru_bulk_move *bulk,size_t size, -u16 cpu_caching,enum ttm_bo_type type, -u32 flags,struct drm_exec *exec) +struct xe_bo *xe_bo_init_locked (struct xe_device *xe,struct xe_bo *bo, +struct xe_tile *tile,struct dma_resv *resv, +struct ttm_lru_bulk_move *bulk,size_t size, +u16 cpu_caching,enum ttm_bo_type type, +u32 flags,struct drm_exec *exec) {struct ttm_operation_ctx ctx = { .interruptible = true,
@@ -2261,11 +2260,11 @@ __xe_bo_create_locked(struct xe_device *xe, } } - bo =___xe_bo_create_locked (xe, bo, tile, vm ?xe_vm_resv (vm) :NULL , - vm && !xe_vm_in_fault_mode (vm) && - flags &XE_BO_FLAG_USER ? - &vm->lru_bulk_move :NULL , size, - cpu_caching, type, flags, exec); + bo =xe_bo_init_locked (xe, bo, tile, vm ?xe_vm_resv (vm) :NULL , + vm && !xe_vm_in_fault_mode (vm) && + flags &XE_BO_FLAG_USER ? + &vm->lru_bulk_move :NULL , size, + cpu_caching, type, flags, exec);if (IS_ERR (bo))return bo;
drivers/gpu/drm/xe/xe_bo.h +5 -5
@@ -89,11 +89,11 @@ struct sg_table;struct xe_bo *xe_bo_alloc (void );void xe_bo_free (struct xe_bo *bo); -struct xe_bo *___xe_bo_create_locked (struct xe_device *xe,struct xe_bo *bo, -struct xe_tile *tile,struct dma_resv *resv, -struct ttm_lru_bulk_move *bulk,size_t size, -u16 cpu_caching,enum ttm_bo_type type, -u32 flags,struct drm_exec *exec); +struct xe_bo *xe_bo_init_locked (struct xe_device *xe,struct xe_bo *bo, +struct xe_tile *tile,struct dma_resv *resv, +struct ttm_lru_bulk_move *bulk,size_t size, +u16 cpu_caching,enum ttm_bo_type type, +u32 flags,struct drm_exec *exec);struct xe_bo * xe_bo_create_locked_range(struct xe_device *xe, struct xe_tile *tile, struct xe_vm *vm,
drivers/gpu/drm/xe/xe_dma_buf.c +3 -3
@@ -238,9 +238,9 @@ xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage,if (ret)break ; - bo =___xe_bo_create_locked (xe, storage,NULL , resv,NULL , dma_buf->size, -0 ,/* Will require 1way or 2way for vm_bind */ - ttm_bo_type_sg,XE_BO_FLAG_SYSTEM , &exec); + bo =xe_bo_init_locked (xe, storage,NULL , resv,NULL , dma_buf->size, +0 ,/* Will require 1way or 2way for vm_bind */ + ttm_bo_type_sg,XE_BO_FLAG_SYSTEM , &exec);drm_exec_retry_on_contention (&exec);if (IS_ERR (bo)) { ret =PTR_ERR (bo);
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 10/13 drm/xe: Convert xe_bo_create_pin_map_at() for exhaustive eviction
In reply to Thomas HellströmMost users of xe_bo_create_pin_map_at() and xe_bo_create_pin_map_at_aligned() are not using the vm parameter, and that simplifies conversion. Introduce an xe_bo_create_pin_map_at_novm() function and make the _aligned() version static. Use xe_validation_guard() for conversion.
v2:
- Adapt to signature change of xe_validation_guard(). (Matt Brost)
- Fix up documentation.
v4:
- Postpone the change to i915_gem_stolen_insert_node_in_range() to a later patch.
--- drivers/gpu/drm/xe/display/xe_fb_pin.c | 42 +++++------ drivers/gpu/drm/xe/display/xe_plane_initial.c | 4 +- drivers/gpu/drm/xe/xe_bo.c | 72 ++++++++++++++----- drivers/gpu/drm/xe/xe_bo.h | 13 ++-- drivers/gpu/drm/xe/xe_eu_stall.c | 5 +- 5 files changed, 83 insertions(+), 53 deletions(-)
drivers/gpu/drm/xe/display/xe_fb_pin.c +21 -21
@@ -102,29 +102,29 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb, XE_PAGE_SIZE);if (IS_DGFX (xe)) - dpt =xe_bo_create_pin_map_at_aligned (xe, tile0,NULL , - dpt_size, ~0ull , - ttm_bo_type_kernel, -XE_BO_FLAG_VRAM0 | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment); + dpt =xe_bo_create_pin_map_at_novm (xe, tile0, + dpt_size, ~0ull , + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM0 | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , + alignment, false);else - dpt =xe_bo_create_pin_map_at_aligned (xe, tile0,NULL , - dpt_size, ~0ull , - ttm_bo_type_kernel, -XE_BO_FLAG_STOLEN | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment); + dpt =xe_bo_create_pin_map_at_novm (xe, tile0, + dpt_size, ~0ull , + ttm_bo_type_kernel, +XE_BO_FLAG_STOLEN | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , + alignment, false);if (IS_ERR (dpt)) - dpt =xe_bo_create_pin_map_at_aligned (xe, tile0,NULL , - dpt_size, ~0ull , - ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment); + dpt =xe_bo_create_pin_map_at_novm (xe, tile0, + dpt_size, ~0ull , + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , + alignment, false);if (IS_ERR (dpt))return PTR_ERR (dpt);
drivers/gpu/drm/xe/display/xe_plane_initial.c +2 -2
@@ -140,8 +140,8 @@ initial_plane_bo(struct xe_device *xe, page_size); size -= base; - bo =xe_bo_create_pin_map_at (xe, tile0,NULL , size, phys_base, - ttm_bo_type_kernel, flags); + bo =xe_bo_create_pin_map_at_novm (xe, tile0, size, phys_base, + ttm_bo_type_kernel, flags,0 , false);if (IS_ERR (bo)) { drm_dbg(&xe->drm, "Failed to create bo phys_base=%pa size %u with flags %x: %li\n",
drivers/gpu/drm/xe/xe_bo.c +54 -18
92 lines not on this page · raw message
drivers/gpu/drm/xe/xe_bo.h +4 -9
@@ -109,15 +109,10 @@ struct xe_bo *xe_bo_create_user(struct xe_device *xe, struct xe_vm *vm, size_t sstruct xe_bo *xe_bo_create_pin_map (struct xe_device *xe,struct xe_tile *tile,struct xe_vm *vm,size_t size,enum ttm_bo_type type,u32 flags); -struct xe_bo *xe_bo_create_pin_map_at (struct xe_device *xe,struct xe_tile *tile, -struct xe_vm *vm,size_t size,u64 offset, -enum ttm_bo_type type,u32 flags); -struct xe_bo *xe_bo_create_pin_map_at_aligned (struct xe_device *xe, -struct xe_tile *tile, -struct xe_vm *vm, -size_t size,u64 offset, -enum ttm_bo_type type,u32 flags, -u64 alignment); +struct xe_bo * +xe_bo_create_pin_map_at_novm (struct xe_device *xe,struct xe_tile *tile, +size_t size,u64 offset,enum ttm_bo_type type, +u32 flags,u64 alignment,bool intr);struct xe_bo *xe_managed_bo_create_pin_map (struct xe_device *xe,struct xe_tile *tile,size_t size,u32 flags); struct xe_bo *xe_managed_bo_create_from_data(struct xe_device *xe, struct xe_tile *tile,
drivers/gpu/drm/xe/xe_eu_stall.c +2 -3
@@ -617,9 +617,8 @@ static int xe_eu_stall_data_buf_alloc(struct xe_eu_stall_data_stream *stream, size = stream->per_xecore_buf_size * last_xecore; - bo =xe_bo_create_pin_map_at_aligned (tile->xe, tile,NULL , - size, ~0ull , ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_GGTT ,SZ_64 ); + bo =xe_bo_create_pin_map_at_novm (tile->xe, tile, size, ~0ull , ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_GGTT ,SZ_64 , false);if (IS_ERR (bo)) {kfree (stream->xecore_buf);return PTR_ERR (bo);
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 11/13 drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction
In reply to Thomas HellströmIntroduce an xe_bo_create_pin_map_novm() function that does not take the drm_exec paramenter to simplify the conversion of many callsites.
For the rest, ensure that the same drm_exec context that was used for locking the vm is passed down to validation.
Use xe_validation_guard() where appropriate.
v2:
- Avoid gotos from within xe_validation_guard(). (Matt Brost)
- Break out the change to pf_provision_vf_lmem8 to a separate patch.
- Adapt to signature change of xe_validation_guard().
--- drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 18 +-- drivers/gpu/drm/xe/display/xe_dsb_buffer.c | 10 +- drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 8 +- drivers/gpu/drm/xe/tests/xe_migrate.c | 9 +- drivers/gpu/drm/xe/xe_bo.c | 52 +++++++- drivers/gpu/drm/xe/xe_bo.h | 6 +- drivers/gpu/drm/xe/xe_gsc.c | 8 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c | 24 ++-- drivers/gpu/drm/xe/xe_guc_engine_activity.c | 13 +- drivers/gpu/drm/xe/xe_lmtt.c | 12 +- drivers/gpu/drm/xe/xe_lrc.c | 7 +- drivers/gpu/drm/xe/xe_migrate.c | 20 ++- drivers/gpu/drm/xe/xe_oa.c | 6 +- drivers/gpu/drm/xe/xe_pt.c | 10 +- drivers/gpu/drm/xe/xe_pt.h | 3 +- drivers/gpu/drm/xe/xe_pxp_submit.c | 34 +++-- drivers/gpu/drm/xe/xe_vm.c | 121 +++++++++++------- 17 files changed, 231 insertions(+), 130 deletions(-)
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +9 -9
@@ -42,11 +42,11 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper, obj =ERR_PTR (-ENODEV ); if (!IS_DGFX(xe) && !XE_GT_WA(xe_root_mmio_gt(xe), 22019338487_display)) { - obj =xe_bo_create_pin_map (xe,xe_device_get_root_tile (xe), -NULL , size, - ttm_bo_type_kernel,XE_BO_FLAG_SCANOUT | -XE_BO_FLAG_STOLEN | -XE_BO_FLAG_GGTT ); + obj =xe_bo_create_pin_map_novm (xe,xe_device_get_root_tile (xe), + size, + ttm_bo_type_kernel,XE_BO_FLAG_SCANOUT | +XE_BO_FLAG_STOLEN | +XE_BO_FLAG_GGTT , false);if (!IS_ERR (obj))drm_info (&xe->drm,"Allocated fbdev into stolen\n" );else
@@ -54,10 +54,10 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper, }if (IS_ERR (obj)) { - obj =xe_bo_create_pin_map (xe,xe_device_get_root_tile (xe),NULL , size, - ttm_bo_type_kernel,XE_BO_FLAG_SCANOUT | -XE_BO_FLAG_VRAM_IF_DGFX (xe_device_get_root_tile (xe)) | -XE_BO_FLAG_GGTT ); + obj =xe_bo_create_pin_map_novm (xe,xe_device_get_root_tile (xe), size, + ttm_bo_type_kernel,XE_BO_FLAG_SCANOUT | +XE_BO_FLAG_VRAM_IF_DGFX (xe_device_get_root_tile (xe)) | +XE_BO_FLAG_GGTT , false); }if (IS_ERR (obj)) {
drivers/gpu/drm/xe/display/xe_dsb_buffer.c +5 -5
@@ -43,11 +43,11 @@ bool intel_dsb_buffer_create(struct intel_crtc *crtc, struct intel_dsb_buffer *dreturn false;/* Set scanout flag for WC mapping */ - obj =xe_bo_create_pin_map (xe,xe_device_get_root_tile (xe), -NULL ,PAGE_ALIGN (size), - ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX (xe_device_get_root_tile (xe)) | -XE_BO_FLAG_SCANOUT |XE_BO_FLAG_GGTT ); + obj =xe_bo_create_pin_map_novm (xe,xe_device_get_root_tile (xe), +PAGE_ALIGN (size), + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX (xe_device_get_root_tile (xe)) | +XE_BO_FLAG_SCANOUT |XE_BO_FLAG_GGTT , false);if (IS_ERR (obj)) {kfree (vma);return false;
drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +4 -4
@@ -72,10 +72,10 @@ static int intel_hdcp_gsc_initialize_message(struct xe_device *xe,int ret =0 ;/* allocate object of two page for HDCP command memory and store it */ - bo =xe_bo_create_pin_map (xe,xe_device_get_root_tile (xe),NULL ,PAGE_SIZE *2 , - ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT ); + bo =xe_bo_create_pin_map_novm (xe,xe_device_get_root_tile (xe),PAGE_SIZE *2 , + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT , false);if (IS_ERR (bo)) {drm_err (&xe->drm,"Failed to allocate bo for HDCP streaming command!\n" );
drivers/gpu/drm/xe/tests/xe_migrate.c +6 -3
@@ -204,7 +204,8 @@ static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test, big =xe_bo_create_pin_map (xe, tile, m->q->vm,SZ_4M , ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX (tile)); +XE_BO_FLAG_VRAM_IF_DGFX (tile), + exec);if (IS_ERR (big)) {KUNIT_FAIL (test,"Failed to allocate bo: %li\n" ,PTR_ERR (big)); goto vunmap;
@@ -212,7 +213,8 @@ static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test, pt =xe_bo_create_pin_map (xe, tile, m->q->vm,XE_PAGE_SIZE , ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX (tile)); +XE_BO_FLAG_VRAM_IF_DGFX (tile), + exec);if (IS_ERR (pt)) {KUNIT_FAIL (test,"Failed to allocate fake pt: %li\n" ,PTR_ERR (pt));
@@ -222,7 +224,8 @@ static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test, tiny =xe_bo_create_pin_map (xe, tile, m->q->vm,2 *SZ_4K , ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX (tile)); +XE_BO_FLAG_VRAM_IF_DGFX (tile), + exec);if (IS_ERR (tiny)) {KUNIT_FAIL (test,"Failed to allocate tiny fake pt: %li\n" ,PTR_ERR (tiny));
drivers/gpu/drm/xe/xe_bo.c +47 -5
71 lines not on this page · raw message
drivers/gpu/drm/xe/xe_bo.h +5 -1
@@ -108,7 +108,11 @@ struct xe_bo *xe_bo_create_user(struct xe_device *xe, struct xe_vm *vm, size_t s u16 cpu_caching, u32 flags, struct drm_exec *exec);struct xe_bo *xe_bo_create_pin_map (struct xe_device *xe,struct xe_tile *tile,struct xe_vm *vm,size_t size, -enum ttm_bo_type type,u32 flags); +enum ttm_bo_type type,u32 flags, +struct drm_exec *exec); +struct xe_bo *xe_bo_create_pin_map_novm (struct xe_device *xe,struct xe_tile *tile, +size_t size,enum ttm_bo_type type,u32 flags, +bool intr);struct xe_bo * xe_bo_create_pin_map_at_novm(struct xe_device *xe, struct xe_tile *tile, size_t size, u64 offset, enum ttm_bo_type type,
drivers/gpu/drm/xe/xe_gsc.c +4 -4
@@ -136,10 +136,10 @@ static int query_compatibility_version(struct xe_gsc *gsc)u64 ggtt_offset;int err; - bo =xe_bo_create_pin_map (xe, tile,NULL ,GSC_VER_PKT_SZ *2 , - ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT ); + bo =xe_bo_create_pin_map_novm (xe, tile,GSC_VER_PKT_SZ *2 , + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT , false);if (IS_ERR (bo)) {xe_gt_err (gt,"failed to allocate bo for GSC version query\n" );return PTR_ERR (bo);
drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +12 -12
@@ -55,12 +55,12 @@ static int pf_send_guc_save_vf_state(struct xe_gt *gt, unsigned int vfid,xe_gt_assert (gt, size %sizeof (u32) ==0 );xe_gt_assert (gt, size == ndwords *sizeof (u32)); - bo =xe_bo_create_pin_map (xe, tile,NULL , -ALIGN (size,PAGE_SIZE ), - ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_GGTT_INVALIDATE ); + bo =xe_bo_create_pin_map_novm (xe, tile, +ALIGN (size,PAGE_SIZE ), + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_GGTT_INVALIDATE , false);if (IS_ERR (bo))return PTR_ERR (bo);
@@ -91,12 +91,12 @@ static int pf_send_guc_restore_vf_state(struct xe_gt *gt, unsigned int vfid,xe_gt_assert (gt, size %sizeof (u32) ==0 );xe_gt_assert (gt, size == ndwords *sizeof (u32)); - bo =xe_bo_create_pin_map (xe, tile,NULL , -ALIGN (size,PAGE_SIZE ), - ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_GGTT_INVALIDATE ); + bo =xe_bo_create_pin_map_novm (xe, tile, +ALIGN (size,PAGE_SIZE ), + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_GGTT_INVALIDATE , false);if (IS_ERR (bo))return PTR_ERR (bo);
drivers/gpu/drm/xe/xe_guc_engine_activity.c +7 -6
@@ -94,16 +94,17 @@ static int allocate_engine_activity_buffers(struct xe_guc *guc,struct xe_tile *tile =gt_to_tile (gt);struct xe_bo *bo, *metadata_bo; - metadata_bo =xe_bo_create_pin_map (gt_to_xe (gt), tile,NULL ,PAGE_ALIGN (metadata_size), - ttm_bo_type_kernel,XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT |XE_BO_FLAG_GGTT_INVALIDATE ); + metadata_bo =xe_bo_create_pin_map_novm (gt_to_xe (gt), tile,PAGE_ALIGN (metadata_size), + ttm_bo_type_kernel,XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT |XE_BO_FLAG_GGTT_INVALIDATE , + false);if (IS_ERR (metadata_bo))return PTR_ERR (metadata_bo); - bo =xe_bo_create_pin_map (gt_to_xe (gt), tile,NULL ,PAGE_ALIGN (size), - ttm_bo_type_kernel,XE_BO_FLAG_VRAM_IF_DGFX (tile) | -XE_BO_FLAG_GGTT |XE_BO_FLAG_GGTT_INVALIDATE ); + bo =xe_bo_create_pin_map_novm (gt_to_xe (gt), tile,PAGE_ALIGN (size), + ttm_bo_type_kernel,XE_BO_FLAG_VRAM_IF_DGFX (tile) | +XE_BO_FLAG_GGTT |XE_BO_FLAG_GGTT_INVALIDATE , false);if (IS_ERR (bo)) {xe_bo_unpin_map_no_vm (metadata_bo);
drivers/gpu/drm/xe/xe_lmtt.c +6 -6
@@ -67,12 +67,12 @@ static struct xe_lmtt_pt *lmtt_pt_alloc(struct xe_lmtt *lmtt, unsigned int level goto out; } - bo =xe_bo_create_pin_map (lmtt_to_xe (lmtt),lmtt_to_tile (lmtt),NULL , -PAGE_ALIGN (lmtt->ops->lmtt_pte_size (level) * - lmtt->ops->lmtt_pte_num (level)), - ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX (lmtt_to_tile (lmtt)) | -XE_BO_FLAG_NEEDS_64K ); + bo =xe_bo_create_pin_map_novm (lmtt_to_xe (lmtt),lmtt_to_tile (lmtt), +PAGE_ALIGN (lmtt->ops->lmtt_pte_size (level) * + lmtt->ops->lmtt_pte_num (level)), + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX (lmtt_to_tile (lmtt)) | +XE_BO_FLAG_NEEDS_64K , false);if (IS_ERR (bo)) { err =PTR_ERR (bo); goto out_free_pt;
drivers/gpu/drm/xe/xe_lrc.c +4 -3
@@ -1340,9 +1340,10 @@ static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,if (vm && vm->xef)/* userspace */ bo_flags |=XE_BO_FLAG_PINNED_LATE_RESTORE ; - lrc->bo =xe_bo_create_pin_map (xe, tile,NULL , bo_size, - ttm_bo_type_kernel, - bo_flags); + lrc->bo =xe_bo_create_pin_map_novm (xe, tile, + bo_size, + ttm_bo_type_kernel, + bo_flags, false);if (IS_ERR (lrc->bo))return PTR_ERR (lrc->bo);
drivers/gpu/drm/xe/xe_migrate.c +14 -6
@@ -35,6 +35,7 @@#include "xe_sched_job.h" #include "xe_sync.h" #include "xe_trace_bo.h" +#include "xe_validation.h" #include "xe_vm.h" #include "xe_vram.h"
@@ -173,7 +174,7 @@ static void xe_migrate_program_identity(struct xe_device *xe, struct xe_vm *vm, }static int xe_migrate_prepare_vm (struct xe_tile *tile,struct xe_migrate *m, -struct xe_vm *vm) +struct xe_vm *vm,struct drm_exec *exec) {struct xe_device *xe =tile_to_xe (tile);u16 pat_index = xe->pat.idx[XE_CACHE_WB ];
@@ -200,7 +201,7 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m, num_entries *XE_PAGE_SIZE , ttm_bo_type_kernel,XE_BO_FLAG_VRAM_IF_DGFX (tile) | - XE_BO_FLAG_PAGETABLE); + XE_BO_FLAG_PAGETABLE, exec);if (IS_ERR (bo))return PTR_ERR (bo);
@@ -404,6 +405,8 @@ int xe_migrate_init(struct xe_migrate *m)struct xe_tile *tile = m->tile;struct xe_gt *primary_gt = tile->primary_gt;struct xe_device *xe =tile_to_xe (tile); +struct xe_validation_ctx ctx; +struct drm_exec exec;struct xe_vm *vm;int err;
@@ -413,11 +416,16 @@ int xe_migrate_init(struct xe_migrate *m)if (IS_ERR (vm))return PTR_ERR (vm); -xe_vm_lock (vm, false); - err =xe_migrate_prepare_vm (tile, m, vm); -xe_vm_unlock (vm); + err =0 ; + xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {}, err) { + err =xe_vm_drm_exec_lock (vm, &exec); +drm_exec_retry_on_contention (&exec); + err =xe_migrate_prepare_vm (tile, m, vm, &exec); +drm_exec_retry_on_contention (&exec); +xe_validation_retry_on_oom (&ctx, &err); + }if (err) - goto err_out; +return err;if (xe->info.has_usm) { struct xe_hw_engine *hwe = xe_gt_hw_engine(primary_gt,
drivers/gpu/drm/xe/xe_oa.c +3 -3
@@ -883,9 +883,9 @@ static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size) {struct xe_bo *bo; - bo =xe_bo_create_pin_map (stream->oa->xe, stream->gt->tile,NULL , - size, ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_GGTT ); + bo =xe_bo_create_pin_map_novm (stream->oa->xe, stream->gt->tile, + size, ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_GGTT , false);if (IS_ERR (bo))return PTR_ERR (bo);
drivers/gpu/drm/xe/xe_pt.c +7 -3
@@ -89,6 +89,7 @@ static void xe_pt_free(struct xe_pt *pt)* @vm: The vm to create for. * @tile: The tile to create for. * @level: The page-table level. +* @exec: The drm_exec object used to lock the vm. * * Allocate and initialize a single struct xe_pt metadata structure. Also * create the corresponding page-table bo, but don't initialize it. If the
@@ -100,7 +101,7 @@ static void xe_pt_free(struct xe_pt *pt)* error. */ struct xe_pt *xe_pt_create (struct xe_vm *vm,struct xe_tile *tile, -unsigned int level) +unsigned int level,struct drm_exec *exec) {struct xe_pt *pt;struct xe_bo *bo;
@@ -124,9 +125,11 @@ struct xe_pt *xe_pt_create(struct xe_vm *vm, struct xe_tile *tile, bo_flags |=XE_BO_FLAG_PINNED_LATE_RESTORE ; pt->level = level; + +drm_WARN_ON (&vm->xe->drm,IS_ERR_OR_NULL (exec)); bo =xe_bo_create_pin_map (vm->xe, tile, vm,SZ_4K , ttm_bo_type_kernel, - bo_flags); + bo_flags, exec);if (IS_ERR (bo)) { err =PTR_ERR (bo); goto err_kfree;
@@ -590,7 +593,8 @@ xe_pt_stage_bind_entry(struct xe_ptw *parent, pgoff_t offset,if (covers || !*child) {u64 flags =0 ; - xe_child =xe_pt_create (xe_walk->vm, xe_walk->tile, level -1 ); + xe_child =xe_pt_create (xe_walk->vm, xe_walk->tile, level -1 , +xe_vm_validation_exec (vm));if (IS_ERR (xe_child))return PTR_ERR (xe_child);
drivers/gpu/drm/xe/xe_pt.h +2 -1
@@ -10,6 +10,7 @@#include "xe_pt_types.h" struct dma_fence ; +struct drm_exec ;struct xe_bo ;struct xe_device ;struct xe_exec_queue ;
@@ -29,7 +30,7 @@ struct xe_vma_ops;unsigned int xe_pt_shift (unsigned int level);struct xe_pt *xe_pt_create (struct xe_vm *vm,struct xe_tile *tile, -unsigned int level); +unsigned int level,struct drm_exec *exec);void xe_pt_populate_empty (struct xe_tile *tile,struct xe_vm *vm,struct xe_pt *pt);
drivers/gpu/drm/xe/xe_pxp_submit.c +24 -10
@@ -54,8 +54,9 @@ static int allocate_vcs_execution_resources(struct xe_pxp *pxp)* Each termination is 16 DWORDS, so 4K is enough to contain a * termination for each sessions. */ - bo =xe_bo_create_pin_map (xe, tile,NULL ,SZ_4K , ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_PINNED |XE_BO_FLAG_GGTT ); + bo =xe_bo_create_pin_map_novm (xe, tile,SZ_4K , ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_PINNED |XE_BO_FLAG_GGTT , + false);if (IS_ERR (bo)) { err =PTR_ERR (bo); goto out_queue;
@@ -87,7 +88,9 @@ static int allocate_gsc_client_resources(struct xe_gt *gt, {struct xe_tile *tile =gt_to_tile (gt);struct xe_device *xe =tile_to_xe (tile); +struct xe_validation_ctx ctx;struct xe_hw_engine *hwe; +struct drm_exec exec;struct xe_vm *vm;struct xe_bo *bo;struct xe_exec_queue *q;
@@ -106,15 +109,26 @@ static int allocate_gsc_client_resources(struct xe_gt *gt,return PTR_ERR (vm);/* We allocate a single object for the batch and the in/out memory */ -xe_vm_lock (vm, false); - bo =xe_bo_create_pin_map (xe, tile, vm,PXP_BB_SIZE + inout_size *2 , - ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_PINNED |XE_BO_FLAG_NEEDS_UC ); -xe_vm_unlock (vm); -if (IS_ERR (bo)) { - err =PTR_ERR (bo); - goto vm_out; + + xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags){}, err) { + err =xe_vm_drm_exec_lock (vm, &exec); +drm_exec_retry_on_contention (&exec); +if (err) +break ; + + bo =xe_bo_create_pin_map (xe, tile, vm,PXP_BB_SIZE + inout_size *2 , + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_PINNED | +XE_BO_FLAG_NEEDS_UC , &exec); +drm_exec_retry_on_contention (&exec); +if (IS_ERR (bo)) { + err =PTR_ERR (bo); +xe_validation_retry_on_oom (&ctx, &err); +break ; + } } +if (err) + goto vm_out; fence =xe_vm_bind_kernel_bo (vm, bo,NULL ,0 ,XE_CACHE_WB );if (IS_ERR (fence)) {
drivers/gpu/drm/xe/xe_vm.c +72 -49
207 lines not on this page · raw message
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 12/13 drm/xe: Rework instances of variants of xe_bo_create_locked()
In reply to Thomas HellströmA common pattern is to create a locked bo, pin it without mapping and then unlock it. Add a function to do that, which internally uses xe_validation_guard().
With that we can remove xe_bo_create_locked_range() and add exhaustive eviction to stolen, pf_provision_vf_lmem and psmi_alloc_object.
v4:
- New patch after reorganization.
v5:
- Replace DRM_XE_GEM_CPU_CACHING_WB with 0. (CI)
--- .../compat-i915-headers/gem/i915_gem_stolen.h | 13 +-- drivers/gpu/drm/xe/xe_bo.c | 86 +++++++++++-------- drivers/gpu/drm/xe/xe_bo.h | 9 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++--- drivers/gpu/drm/xe/xe_psmi.c | 26 ++---- 5 files changed, 70 insertions(+), 87 deletions(-)
drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h +2 -11
@@ -21,7 +21,6 @@ static inline int i915_gem_stolen_insert_node_in_range(struct xe_device *xe, u32 size, u32 align, u32 start, u32 end) { - struct drm_exec *exec = XE_VALIDATION_UNIMPLEMENTED; struct xe_bo *bo;int err;u32 flags =XE_BO_FLAG_PINNED |XE_BO_FLAG_STOLEN ;
@@ -34,21 +33,13 @@ static inline int i915_gem_stolen_insert_node_in_range(struct xe_device *xe, start =ALIGN (start, align); } - bo =xe_bo_create_locked_range (xe,xe_device_get_root_tile (xe), -NULL , size, start, end, - ttm_bo_type_kernel, flags,0 , exec); + bo =xe_bo_create_pin_range_novm (xe,xe_device_get_root_tile (xe), + size, start, end, ttm_bo_type_kernel, flags);if (IS_ERR (bo)) { err =PTR_ERR (bo); bo =NULL ;return err; } - err =xe_bo_pin (bo, exec); -xe_bo_unlock_vm_held (bo); - -if (err) { -xe_bo_put (fb->bo); - bo =NULL ; - } fb->bo = bo;
drivers/gpu/drm/xe/xe_bo.c +52 -34
104 lines not on this page · raw message
drivers/gpu/drm/xe/xe_bo.h +3 -6
@@ -94,12 +94,6 @@ struct xe_bo *xe_bo_init_locked(struct xe_device *xe, struct xe_bo *bo, struct ttm_lru_bulk_move *bulk, size_t size, u16 cpu_caching, enum ttm_bo_type type, u32 flags, struct drm_exec *exec); -struct xe_bo * -xe_bo_create_locked_range (struct xe_device *xe, -struct xe_tile *tile,struct xe_vm *vm, -size_t size,u64 start,u64 end, -enum ttm_bo_type type,u32 flags,u64 alignment, -struct drm_exec *exec); struct xe_bo *xe_bo_create_locked(struct xe_device *xe, struct xe_tile *tile, struct xe_vm *vm, size_t size, enum ttm_bo_type type, u32 flags,
@@ -113,6 +107,9 @@ struct xe_bo *xe_bo_create_pin_map(struct xe_device *xe, struct xe_tile *tile,struct xe_bo *xe_bo_create_pin_map_novm (struct xe_device *xe,struct xe_tile *tile,size_t size,enum ttm_bo_type type,u32 flags,bool intr); +struct xe_bo *xe_bo_create_pin_range_novm (struct xe_device *xe,struct xe_tile *tile, +size_t size,u64 start,u64 end, +enum ttm_bo_type type,u32 flags);struct xe_bo * xe_bo_create_pin_map_at_novm(struct xe_device *xe, struct xe_tile *tile, size_t size, u64 offset, enum ttm_bo_type type,
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +7 -16
@@ -1452,7 +1452,6 @@ static bool pf_release_vf_config_lmem(struct xe_gt *gt, struct xe_gt_sriov_confistatic int pf_provision_vf_lmem (struct xe_gt *gt,unsigned int vfid,u64 size) {struct xe_gt_sriov_config *config =pf_pick_vf_config (gt, vfid); -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;struct xe_device *xe =gt_to_xe (gt);struct xe_tile *tile =gt_to_tile (gt);struct xe_bo *bo;
@@ -1479,24 +1478,16 @@ static int pf_provision_vf_lmem(struct xe_gt *gt, unsigned int vfid, u64 size)return 0 ;xe_gt_assert (gt,pf_get_lmem_alignment (gt) ==SZ_2M ); - bo =xe_bo_create_locked (xe, tile,NULL , -ALIGN (size,PAGE_SIZE ), - ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX (tile) | -XE_BO_FLAG_NEEDS_2M | -XE_BO_FLAG_PINNED | -XE_BO_FLAG_PINNED_LATE_RESTORE , - exec); + bo =xe_bo_create_pin_range_novm (xe, tile, +ALIGN (size,PAGE_SIZE ),0 , ~0ull , + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX (tile) | +XE_BO_FLAG_NEEDS_2M | +XE_BO_FLAG_PINNED | +XE_BO_FLAG_PINNED_LATE_RESTORE );if (IS_ERR (bo))return PTR_ERR (bo); - err =xe_bo_pin (bo, exec); -xe_bo_unlock (bo); -if (unlikely (err)) { -xe_bo_put (bo); -return err; - } - config->lmem_obj = bo;if (xe_device_has_lmtt (xe)) {
drivers/gpu/drm/xe/xe_psmi.c +6 -20
@@ -68,10 +68,7 @@ static void psmi_cleanup(struct xe_device *xe)static struct xe_bo *psmi_alloc_object (struct xe_device *xe,unsigned int id,size_t bo_size) { -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ; -struct xe_bo *bo =NULL ;struct xe_tile *tile; -int err;if (!id || !bo_size)return NULL ;
@@ -79,23 +76,12 @@ static struct xe_bo *psmi_alloc_object(struct xe_device *xe, tile = &xe->tiles[id -1 ];/* VRAM: Allocate GEM object for the capture buffer */ - bo =xe_bo_create_locked (xe, tile,NULL , bo_size, - ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX (tile) | -XE_BO_FLAG_PINNED | -XE_BO_FLAG_PINNED_LATE_RESTORE | -XE_BO_FLAG_NEEDS_CPU_ACCESS , - exec); - -if (!IS_ERR (bo)) { -/* Buffer written by HW, ensure stays resident */ - err =xe_bo_pin (bo, exec); -if (err) - bo =ERR_PTR (err); -xe_bo_unlock (bo); - } - -return bo; +return xe_bo_create_pin_range_novm (xe, tile, bo_size,0 , ~0ull , + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX (tile) | +XE_BO_FLAG_PINNED | +XE_BO_FLAG_PINNED_LATE_RESTORE | +XE_BO_FLAG_NEEDS_CPU_ACCESS ); }/*
Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH v5 13/13 drm/xe: Convert pinned suspend eviction for exhaustive eviction
In reply to Thomas HellströmPinned suspend eviction and preparation for eviction validates system memory for eviction buffers. Do that under a validation exclusive lock to avoid interfering with other processes validating system graphics memory.
v2:
- Avoid gotos from within xe_validation_guard().
- Adapt to signature change of xe_validation_guard().
--- drivers/gpu/drm/xe/xe_bo.c | 184 +++++++++++++++++++++---------------- 1 file changed, 103 insertions(+), 81 deletions(-)
drivers/gpu/drm/xe/xe_bo.c +103 -81
@@ -1139,43 +1139,47 @@ long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,int xe_bo_notifier_prepare_pinned (struct xe_bo *bo) {struct xe_device *xe =ttm_to_xe_device (bo->ttm.bdev); -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ; +struct xe_validation_ctx ctx; +struct drm_exec exec;struct xe_bo *backup;int ret =0 ; -xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {.exclusive = true}, ret) { + ret =drm_exec_lock_obj (&exec, &bo->ttm.base); +drm_exec_retry_on_contention (&exec); +xe_assert (xe, !ret); +xe_assert (xe, !bo->backup_obj); -xe_assert (xe, !bo->backup_obj); +/* +* Since this is called from the PM notifier we might have raced with +* someone unpinning this after we dropped the pinned list lock and +* grabbing the above bo lock. +*/ +if (!xe_bo_is_pinned (bo)) +break ; -/* -* Since this is called from the PM notifier we might have raced with -* someone unpinning this after we dropped the pinned list lock and -* grabbing the above bo lock. -*/ -if (!xe_bo_is_pinned (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ; -if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) +break ; -if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; + backup =xe_bo_init_locked (xe,NULL ,NULL , bo->ttm.base.resv,NULL ,xe_bo_size (bo), +DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | +XE_BO_FLAG_PINNED , &exec); +if (IS_ERR (backup)) { +drm_exec_retry_on_contention (&exec); + ret =PTR_ERR (backup); +xe_validation_retry_on_oom (&ctx, &ret); +break ; + } - backup =xe_bo_init_locked (xe,NULL ,NULL , bo->ttm.base.resv,NULL ,xe_bo_size (bo), -DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | -XE_BO_FLAG_PINNED , exec); -if (IS_ERR (backup)) { - ret =PTR_ERR (backup); - goto out_unlock_bo; + backup->parent_obj =xe_bo_get (bo);/* Released by bo_destroy */ +ttm_bo_pin (&backup->ttm); + bo->backup_obj = backup; } - backup->parent_obj =xe_bo_get (bo);/* Released by bo_destroy */ -ttm_bo_pin (&backup->ttm); - bo->backup_obj = backup; - -out_unlock_bo: -xe_bo_unlock (bo);return ret; }
@@ -1201,57 +1205,12 @@ int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo)return 0 ; } -/** -* xe_bo_evict_pinned() - Evict a pinned VRAM object to system memory -* @bo: The buffer object to move. -* -* On successful completion, the object memory will be moved to system memory. -* -* This is needed to for special handling of pinned VRAM object during -* suspend-resume. -* -* Return: 0 on success. Negative error code on failure. -*/ -int xe_bo_evict_pinned (struct xe_bo *bo) +static int xe_bo_evict_pinned_copy (struct xe_bo *bo,struct xe_bo *backup) { -struct xe_device *xe =ttm_to_xe_device (bo->ttm.bdev); -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ; -struct xe_bo *backup = bo->backup_obj; -bool backup_created = false; +struct xe_device *xe =xe_bo_device (bo);bool unmap = false;int ret =0 ; -xe_bo_lock (bo, false); - -if (WARN_ON (!bo->ttm.resource)) { - ret = -EINVAL ; - goto out_unlock_bo; - } - -if (WARN_ON (!xe_bo_is_pinned (bo))) { - ret = -EINVAL ; - goto out_unlock_bo; - } - -if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; - -if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; - -if (!backup) { - backup =xe_bo_init_locked (xe,NULL ,NULL , bo->ttm.base.resv,NULL ,xe_bo_size (bo), -DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, -XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | -XE_BO_FLAG_PINNED , exec); -if (IS_ERR (backup)) { - ret =PTR_ERR (backup); - goto out_unlock_bo; - } - backup->parent_obj =xe_bo_get (bo);/* Released by bo_destroy */ - backup_created = true; - } -if (xe_bo_is_user (bo) || (bo->flags &XE_BO_FLAG_PINNED_LATE_RESTORE )) {struct xe_migrate *migrate;struct dma_fence *fence;
@@ -1289,7 +1248,7 @@ int xe_bo_evict_pinned(struct xe_bo *bo)if (iosys_map_is_null (&bo->vmap)) { ret =xe_bo_vmap (bo);if (ret) - goto out_backup; + goto out_vunmap; unmap = true; }
@@ -1299,15 +1258,78 @@ int xe_bo_evict_pinned(struct xe_bo *bo)if (!bo->backup_obj) bo->backup_obj = backup; - -out_backup: +out_vunmap:xe_bo_vunmap (backup); -if (ret && backup_created) -xe_bo_put (backup); -out_unlock_bo: +out_backup:if (unmap)xe_bo_vunmap (bo); -xe_bo_unlock (bo); + +return ret; +} + +/** +* xe_bo_evict_pinned() - Evict a pinned VRAM object to system memory +* @bo: The buffer object to move. +* +* On successful completion, the object memory will be moved to system memory. +* +* This is needed to for special handling of pinned VRAM object during +* suspend-resume. +* +* Return: 0 on success. Negative error code on failure. +*/ +int xe_bo_evict_pinned (struct xe_bo *bo) +{ +struct xe_device *xe =ttm_to_xe_device (bo->ttm.bdev); +struct xe_validation_ctx ctx; +struct drm_exec exec; +struct xe_bo *backup = bo->backup_obj; +bool backup_created = false; +int ret =0 ; + + xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {.exclusive = true}, ret) { + ret =drm_exec_lock_obj (&exec, &bo->ttm.base); +drm_exec_retry_on_contention (&exec); +xe_assert (xe, !ret); + +if (WARN_ON (!bo->ttm.resource)) { + ret = -EINVAL ; +break ; + } + +if (WARN_ON (!xe_bo_is_pinned (bo))) { + ret = -EINVAL ; +break ; + } + +if (!xe_bo_is_vram (bo)) +break ; + +if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) +break ; + +if (!backup) { + backup =xe_bo_init_locked (xe,NULL ,NULL , bo->ttm.base.resv,NULL , +xe_bo_size (bo), +DRM_XE_GEM_CPU_CACHING_WB , ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM |XE_BO_FLAG_NEEDS_CPU_ACCESS | +XE_BO_FLAG_PINNED , &exec); +if (IS_ERR (backup)) { +drm_exec_retry_on_contention (&exec); + ret =PTR_ERR (backup); +xe_validation_retry_on_oom (&ctx, &ret); +break ; + } + backup->parent_obj =xe_bo_get (bo);/* Released by bo_destroy */ + backup_created = true; + } + + ret =xe_bo_evict_pinned_copy (bo, backup); + } + +if (ret && backup_created) +xe_bo_put (backup); +return ret; }
Signature · 1 line
2.50.1
✗ CI.checkpatch: warning for Driver-managed exhaustive eviction (rev5)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction (rev5)
URL : https://patchwork.freedesktop.org/series/152882/
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 b5de614a4d7587c9067be0313f8cfa3629cd08b8
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 2a5f768a0b70faba5340b197814cb7b5754cd361
Author: Thomas Hellström <[email protected]> Date: Thu Sep 4 16:49:08 2025 +0200
drm/xe: Convert pinned suspend eviction for exhaustive eviction
Pinned suspend eviction and preparation for eviction validates system memory for eviction buffers. Do that under a validation exclusive lock to avoid interfering with other processes validating system graphics memory.
v2:
- Avoid gotos from within xe_validation_guard().
- Adapt to signature change of xe_validation_guard().
+ /mt/dim checkpatch c749c5063f5375da533ca48862b2c088052df60b drm-intel 528e1597704f drm/xe: Pass down drm_exec context to validation
-:1164: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #1164:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 1260 lines checkedeb74144c4589 drm/xe: Introduce an xe_validation wrapper around drm_exec
-:384: WARNING:MACRO_WITH_FLOW_CONTROL: Macros with flow control statements should be avoided #384: FILE: drivers/gpu/drm/xe/xe_validation.h:146:
+#define xe_validation_retry_on_oom(_ctx, _ret) \
+ do { \
+ if (xe_validation_should_retry(_ctx, _ret)) \
+ goto *__drm_exec_retry_ptr; \
+ } while (0)
-:406: WARNING:TABSTOP: Statements should start on a tabstop #406: FILE: drivers/gpu/drm/xe/xe_validation.h:168:
+ if (_T) xe_validation_ctx_fini(_T);,
-:406: ERROR:SPACING: space required after that ';' (ctx:VxO) #406: FILE: drivers/gpu/drm/xe/xe_validation.h:168:
+ if (_T) xe_validation_ctx_fini(_T);,
^
-:406: ERROR:TRAILING_STATEMENTS: trailing statements should be on next line #406: FILE: drivers/gpu/drm/xe/xe_validation.h:168:
+ if (_T) xe_validation_ctx_fini(_T);,
-:426: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #426: FILE: drivers/gpu/drm/xe/xe_validation.h:188:
+#define xe_validation_guard(_ctx, _val, _exec, _flags, _ret) \
+ scoped_guard(xe_validation, _ctx, _val, _exec, _flags, _ret) \
+ drm_exec_until_all_locked(_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.
-:426: CHECK:MACRO_ARG_REUSE: Macro argument reuse '_exec' - possible side-effects? #426: FILE: drivers/gpu/drm/xe/xe_validation.h:188:
+#define xe_validation_guard(_ctx, _val, _exec, _flags, _ret) \
+ scoped_guard(xe_validation, _ctx, _val, _exec, _flags, _ret) \
+ drm_exec_until_all_locked(_exec)
total: 3 errors, 2 warnings, 1 checks, 373 lines checkedf496c852844d drm/xe: Convert xe_bo_create_user() for exhaustive eviction 46c902e20ba4 drm/xe: Convert SVM validation for exhaustive eviction bbab9a7aa718 drm/xe: Convert existing drm_exec transactions for exhaustive eviction 64b30c3f52ee drm/xe: Convert the CPU fault handler for exhaustive eviction 8fbcd5999551 drm/xe/display: Convert __xe_pin_fb_vma()1612a4d3d045 drm/xe: Convert xe_dma_buf.c for exhaustive eviction e71a951936f3 drm/xe: Rename ___xe_bo_create_locked()714d1ac55cdd drm/xe: Convert xe_bo_create_pin_map_at() for exhaustive eviction cdeb342efba6 drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction -:58: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#58: FILE: drivers/gpu/drm/xe/display/intel_fbdev_fb.c:59:
+ XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
total: 0 errors, 1 warnings, 0 checks, 649 lines checked f12f5e305072 drm/xe: Rework instances of variants of xe_bo_create_locked() 2a5f768a0b70 drm/xe: Convert pinned suspend eviction for exhaustive eviction
Patchwork
CI✓ CI.KUnit: success for Driver-managed exhaustive eviction (rev5)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction (rev5)
URL : https://patchwork.freedesktop.org/series/152882/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [15:29:52] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [15:29:57] 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 [15:30:25] Starting KUnit Kernel (1/1)... [15:30:25] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [15:30:26] ================== guc_buf (11 subtests) =================== [15:30:26] [PASSED] test_smallest [15:30:26] [PASSED] test_largest [15:30:26] [PASSED] test_granular [15:30:26] [PASSED] test_unique [15:30:26] [PASSED] test_overlap [15:30:26] [PASSED] test_reusable [15:30:26] [PASSED] test_too_big [15:30:26] [PASSED] test_flush [15:30:26] [PASSED] test_lookup [15:30:26] [PASSED] test_data [15:30:26] [PASSED] test_class [15:30:26] ===================== [PASSED] guc_buf ===================== [15:30:26] =================== guc_dbm (7 subtests) =================== [15:30:26] [PASSED] test_empty [15:30:26] [PASSED] test_default [15:30:26] ======================== test_size ======================== [15:30:26] [PASSED] 4 [15:30:26] [PASSED] 8 [15:30:26] [PASSED] 32 [15:30:26] [PASSED] 256 [15:30:26] ==================== [PASSED] test_size ==================== [15:30:26] ======================= test_reuse ======================== [15:30:26] [PASSED] 4 [15:30:26] [PASSED] 8 [15:30:26] [PASSED] 32 [15:30:26] [PASSED] 256 [15:30:26] =================== [PASSED] test_reuse ==================== [15:30:26] =================== test_range_overlap ==================== [15:30:26] [PASSED] 4 [15:30:26] [PASSED] 8 [15:30:26] [PASSED] 32 [15:30:26] [PASSED] 256 [15:30:26] =============== [PASSED] test_range_overlap ================ [15:30:26] =================== test_range_compact ==================== [15:30:26] [PASSED] 4 [15:30:26] [PASSED] 8 [15:30:26] [PASSED] 32 [15:30:26] [PASSED] 256 [15:30:26] =============== [PASSED] test_range_compact ================ [15:30:26] ==================== test_range_spare ===================== [15:30:26] [PASSED] 4 [15:30:26] [PASSED] 8 [15:30:26] [PASSED] 32 [15:30:26] [PASSED] 256 [15:30:26] ================ [PASSED] test_range_spare ================= [15:30:26] ===================== [PASSED] guc_dbm ===================== [15:30:26] =================== guc_idm (6 subtests) =================== [15:30:26] [PASSED] bad_init [15:30:26] [PASSED] no_init [15:30:26] [PASSED] init_fini [15:30:26] [PASSED] check_used [15:30:26] [PASSED] check_quota [15:30:26] [PASSED] check_all [15:30:26] ===================== [PASSED] guc_idm ===================== [15:30:26] ================== no_relay (3 subtests) =================== [15:30:26] [PASSED] xe_drops_guc2pf_if_not_ready [15:30:26] [PASSED] xe_drops_guc2vf_if_not_ready [15:30:26] [PASSED] xe_rejects_send_if_not_ready [15:30:26] ==================== [PASSED] no_relay ===================== [15:30:26] ================== pf_relay (14 subtests) ================== [15:30:26] [PASSED] pf_rejects_guc2pf_too_short [15:30:26] [PASSED] pf_rejects_guc2pf_too_long [15:30:26] [PASSED] pf_rejects_guc2pf_no_payload [15:30:26] [PASSED] pf_fails_no_payload [15:30:26] [PASSED] pf_fails_bad_origin [15:30:26] [PASSED] pf_fails_bad_type [15:30:26] [PASSED] pf_txn_reports_error [15:30:26] [PASSED] pf_txn_sends_pf2guc [15:30:26] [PASSED] pf_sends_pf2guc [15:30:26] [SKIPPED] pf_loopback_nop [15:30:26] [SKIPPED] pf_loopback_echo [15:30:26] [SKIPPED] pf_loopback_fail [15:30:26] [SKIPPED] pf_loopback_busy [15:30:26] [SKIPPED] pf_loopback_retry [15:30:26] ==================== [PASSED] pf_relay ===================== [15:30:26] ================== vf_relay (3 subtests) =================== [15:30:26] [PASSED] vf_rejects_guc2vf_too_short [15:30:26] [PASSED] vf_rejects_guc2vf_too_long [15:30:26] [PASSED] vf_rejects_guc2vf_no_payload [15:30:26] ==================== [PASSED] vf_relay ===================== [15:30:26] ===================== lmtt (1 subtest) ===================== [15:30:26] ======================== test_ops ========================= [15:30:26] [PASSED] 2-level [15:30:26] [PASSED] multi-level [15:30:26] ==================== [PASSED] test_ops ===================== [15:30:26] ====================== [PASSED] lmtt ======================= [15:30:26] ================= pf_service (11 subtests) ================= [15:30:26] [PASSED] pf_negotiate_any [15:30:26] [PASSED] pf_negotiate_base_match [15:30:26] [PASSED] pf_negotiate_base_newer [15:30:26] [PASSED] pf_negotiate_base_next [15:30:26] [SKIPPED] pf_negotiate_base_older [15:30:26] [PASSED] pf_negotiate_base_prev [15:30:26] [PASSED] pf_negotiate_latest_match [15:30:26] [PASSED] pf_negotiate_latest_newer [15:30:26] [PASSED] pf_negotiate_latest_next [15:30:26] [SKIPPED] pf_negotiate_latest_older [15:30:26] [SKIPPED] pf_negotiate_latest_prev [15:30:26] =================== [PASSED] pf_service ==================== [15:30:26] =================== xe_mocs (2 subtests) =================== [15:30:26] ================ xe_live_mocs_kernel_kunit ================ [15:30:26] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [15:30:26] ================ xe_live_mocs_reset_kunit ================= [15:30:26] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [15:30:26] ==================== [SKIPPED] xe_mocs ===================== [15:30:26] ================= xe_migrate (2 subtests) ================== [15:30:26] ================= xe_migrate_sanity_kunit ================= [15:30:26] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [15:30:26] ================== xe_validate_ccs_kunit ================== [15:30:26] ============= [SKIPPED] xe_validate_ccs_kunit ============== [15:30:26] =================== [SKIPPED] xe_migrate =================== [15:30:26] ================== xe_dma_buf (1 subtest) ================== [15:30:26] ==================== xe_dma_buf_kunit ===================== [15:30:26] ================ [SKIPPED] xe_dma_buf_kunit ================ [15:30:26] =================== [SKIPPED] xe_dma_buf =================== [15:30:26] ================= xe_bo_shrink (1 subtest) ================= [15:30:26] =================== xe_bo_shrink_kunit ==================== [15:30:26] =============== [SKIPPED] xe_bo_shrink_kunit =============== [15:30:26] ================== [SKIPPED] xe_bo_shrink ================== [15:30:26] ==================== xe_bo (2 subtests) ==================== [15:30:26] ================== xe_ccs_migrate_kunit =================== [15:30:26] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [15:30:26] ==================== xe_bo_evict_kunit ==================== [15:30:26] =============== [SKIPPED] xe_bo_evict_kunit ================ [15:30:26] ===================== [SKIPPED] xe_bo ====================== [15:30:26] ==================== args (11 subtests) ==================== [15:30:26] [PASSED] count_args_test [15:30:26] [PASSED] call_args_example [15:30:26] [PASSED] call_args_test [15:30:26] [PASSED] drop_first_arg_example [15:30:26] [PASSED] drop_first_arg_test [15:30:26] [PASSED] first_arg_example [15:30:26] [PASSED] first_arg_test [15:30:26] [PASSED] last_arg_example [15:30:26] [PASSED] last_arg_test [15:30:26] [PASSED] pick_arg_example [15:30:26] [PASSED] sep_comma_example [15:30:26] ====================== [PASSED] args ======================= [15:30:26] =================== xe_pci (3 subtests) ==================== [15:30:26] ==================== check_graphics_ip ==================== [15:30:26] [PASSED] 12.70 Xe_LPG [15:30:26] [PASSED] 12.71 Xe_LPG [15:30:26] [PASSED] 12.74 Xe_LPG+ [15:30:26] [PASSED] 20.01 Xe2_HPG [15:30:26] [PASSED] 20.02 Xe2_HPG [15:30:26] [PASSED] 20.04 Xe2_LPG [15:30:26] [PASSED] 30.00 Xe3_LPG [15:30:26] [PASSED] 30.01 Xe3_LPG [15:30:26] [PASSED] 30.03 Xe3_LPG [15:30:26] ================ [PASSED] check_graphics_ip ================ [15:30:26] ===================== check_media_ip ====================== [15:30:26] [PASSED] 13.00 Xe_LPM+ [15:30:26] [PASSED] 13.01 Xe2_HPM [15:30:26] [PASSED] 20.00 Xe2_LPM [15:30:26] [PASSED] 30.00 Xe3_LPM [15:30:26] [PASSED] 30.02 Xe3_LPM [15:30:26] ================= [PASSED] check_media_ip ================== [15:30:26] ================= check_platform_gt_count ================= [15:30:26] [PASSED] 0x9A60 (TIGERLAKE) [15:30:26] [PASSED] 0x9A68 (TIGERLAKE) [15:30:26] [PASSED] 0x9A70 (TIGERLAKE) [15:30:26] [PASSED] 0x9A40 (TIGERLAKE) [15:30:26] [PASSED] 0x9A49 (TIGERLAKE) [15:30:26] [PASSED] 0x9A59 (TIGERLAKE) [15:30:26] [PASSED] 0x9A78 (TIGERLAKE) [15:30:26] [PASSED] 0x9AC0 (TIGERLAKE) [15:30:26] [PASSED] 0x9AC9 (TIGERLAKE) [15:30:26] [PASSED] 0x9AD9 (TIGERLAKE) [15:30:26] [PASSED] 0x9AF8 (TIGERLAKE) [15:30:26] [PASSED] 0x4C80 (ROCKETLAKE) [15:30:26] [PASSED] 0x4C8A (ROCKETLAKE) [15:30:26] [PASSED] 0x4C8B (ROCKETLAKE) [15:30:26] [PASSED] 0x4C8C (ROCKETLAKE) [15:30:26] [PASSED] 0x4C90 (ROCKETLAKE) [15:30:26] [PASSED] 0x4C9A (ROCKETLAKE) [15:30:26] [PASSED] 0x4680 (ALDERLAKE_S) [15:30:26] [PASSED] 0x4682 (ALDERLAKE_S) [15:30:26] [PASSED] 0x4688 (ALDERLAKE_S) [15:30:26] [PASSED] 0x468A (ALDERLAKE_S) [15:30:26] [PASSED] 0x468B (ALDERLAKE_S) [15:30:26] [PASSED] 0x4690 (ALDERLAKE_S) [15:30:26] [PASSED] 0x4692 (ALDERLAKE_S) [15:30:26] [PASSED] 0x4693 (ALDERLAKE_S) [15:30:26] [PASSED] 0x46A0 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46A1 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46A2 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46A3 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46A6 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46A8 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46AA (ALDERLAKE_P) [15:30:26] [PASSED] 0x462A (ALDERLAKE_P) [15:30:26] [PASSED] 0x4626 (ALDERLAKE_P) [15:30:26] [PASSED] 0x4628 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46B0 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46B1 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46B2 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46B3 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46C0 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46C1 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46C2 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46C3 (ALDERLAKE_P) [15:30:26] [PASSED] 0x46D0 (ALDERLAKE_N) [15:30:26] [PASSED] 0x46D1 (ALDERLAKE_N) [15:30:26] [PASSED] 0x46D2 (ALDERLAKE_N) [15:30:26] [PASSED] 0x46D3 (ALDERLAKE_N) [15:30:26] [PASSED] 0x46D4 (ALDERLAKE_N) [15:30:26] [PASSED] 0xA721 (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7A1 (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7A9 (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7AC (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7AD (ALDERLAKE_P) [15:30:26] [PASSED] 0xA720 (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7A0 (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7A8 (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7AA (ALDERLAKE_P) [15:30:26] [PASSED] 0xA7AB (ALDERLAKE_P) [15:30:26] [PASSED] 0xA780 (ALDERLAKE_S) [15:30:26] [PASSED] 0xA781 (ALDERLAKE_S) [15:30:26] [PASSED] 0xA782 (ALDERLAKE_S) [15:30:26] [PASSED] 0xA783 (ALDERLAKE_S) [15:30:26] [PASSED] 0xA788 (ALDERLAKE_S) [15:30:26] [PASSED] 0xA789 (ALDERLAKE_S) [15:30:26] [PASSED] 0xA78A (ALDERLAKE_S) [15:30:26] [PASSED] 0xA78B (ALDERLAKE_S) [15:30:26] [PASSED] 0x4905 (DG1) [15:30:26] [PASSED] 0x4906 (DG1) [15:30:26] [PASSED] 0x4907 (DG1) [15:30:26] [PASSED] 0x4908 (DG1) [15:30:26] [PASSED] 0x4909 (DG1) [15:30:26] [PASSED] 0x56C0 (DG2) [15:30:26] [PASSED] 0x56C2 (DG2) [15:30:26] [PASSED] 0x56C1 (DG2) [15:30:26] [PASSED] 0x7D51 (METEORLAKE) [15:30:26] [PASSED] 0x7DD1 (METEORLAKE) [15:30:26] [PASSED] 0x7D41 (METEORLAKE) [15:30:26] [PASSED] 0x7D67 (METEORLAKE) [15:30:26] [PASSED] 0xB640 (METEORLAKE) [15:30:26] [PASSED] 0x56A0 (DG2) [15:30:26] [PASSED] 0x56A1 (DG2) [15:30:26] [PASSED] 0x56A2 (DG2) [15:30:26] [PASSED] 0x56BE (DG2) [15:30:26] [PASSED] 0x56BF (DG2) [15:30:26] [PASSED] 0x5690 (DG2) [15:30:26] [PASSED] 0x5691 (DG2) [15:30:26] [PASSED] 0x5692 (DG2) [15:30:26] [PASSED] 0x56A5 (DG2) [15:30:26] [PASSED] 0x56A6 (DG2) [15:30:26] [PASSED] 0x56B0 (DG2) [15:30:26] [PASSED] 0x56B1 (DG2) [15:30:26] [PASSED] 0x56BA (DG2) [15:30:26] [PASSED] 0x56BB (DG2) [15:30:26] [PASSED] 0x56BC (DG2) [15:30:26] [PASSED] 0x56BD (DG2) [15:30:26] [PASSED] 0x5693 (DG2) [15:30:26] [PASSED] 0x5694 (DG2) [15:30:26] [PASSED] 0x5695 (DG2) [15:30:26] [PASSED] 0x56A3 (DG2) [15:30:26] [PASSED] 0x56A4 (DG2) [15:30:26] [PASSED] 0x56B2 (DG2) [15:30:26] [PASSED] 0x56B3 (DG2) [15:30:26] [PASSED] 0x5696 (DG2) [15:30:26] [PASSED] 0x5697 (DG2) [15:30:26] [PASSED] 0xB69 (PVC) [15:30:26] [PASSED] 0xB6E (PVC) [15:30:26] [PASSED] 0xBD4 (PVC) [15:30:26] [PASSED] 0xBD5 (PVC) [15:30:26] [PASSED] 0xBD6 (PVC) [15:30:26] [PASSED] 0xBD7 (PVC) [15:30:26] [PASSED] 0xBD8 (PVC) [15:30:26] [PASSED] 0xBD9 (PVC) [15:30:26] [PASSED] 0xBDA (PVC) [15:30:26] [PASSED] 0xBDB (PVC) [15:30:26] [PASSED] 0xBE0 (PVC) [15:30:26] [PASSED] 0xBE1 (PVC) [15:30:26] [PASSED] 0xBE5 (PVC) [15:30:26] [PASSED] 0x7D40 (METEORLAKE) [15:30:26] [PASSED] 0x7D45 (METEORLAKE) [15:30:26] [PASSED] 0x7D55 (METEORLAKE) [15:30:26] [PASSED] 0x7D60 (METEORLAKE) [15:30:26] [PASSED] 0x7DD5 (METEORLAKE) [15:30:26] [PASSED] 0x6420 (LUNARLAKE) [15:30:26] [PASSED] 0x64A0 (LUNARLAKE) [15:30:26] [PASSED] 0x64B0 (LUNARLAKE) [15:30:26] [PASSED] 0xE202 (BATTLEMAGE) [15:30:26] [PASSED] 0xE209 (BATTLEMAGE) [15:30:26] [PASSED] 0xE20B (BATTLEMAGE) [15:30:26] [PASSED] 0xE20C (BATTLEMAGE) [15:30:26] [PASSED] 0xE20D (BATTLEMAGE) [15:30:26] [PASSED] 0xE210 (BATTLEMAGE) [15:30:26] [PASSED] 0xE211 (BATTLEMAGE) [15:30:26] [PASSED] 0xE212 (BATTLEMAGE) [15:30:26] [PASSED] 0xE216 (BATTLEMAGE) [15:30:26] [PASSED] 0xE220 (BATTLEMAGE) [15:30:26] [PASSED] 0xE221 (BATTLEMAGE) [15:30:26] [PASSED] 0xE222 (BATTLEMAGE) [15:30:26] [PASSED] 0xE223 (BATTLEMAGE) [15:30:26] [PASSED] 0xB080 (PANTHERLAKE) [15:30:26] [PASSED] 0xB081 (PANTHERLAKE) [15:30:26] [PASSED] 0xB082 (PANTHERLAKE) [15:30:26] [PASSED] 0xB083 (PANTHERLAKE) [15:30:26] [PASSED] 0xB084 (PANTHERLAKE) [15:30:26] [PASSED] 0xB085 (PANTHERLAKE) [15:30:26] [PASSED] 0xB086 (PANTHERLAKE) [15:30:26] [PASSED] 0xB087 (PANTHERLAKE) [15:30:26] [PASSED] 0xB08F (PANTHERLAKE) [15:30:26] [PASSED] 0xB090 (PANTHERLAKE) [15:30:26] [PASSED] 0xB0A0 (PANTHERLAKE) [15:30:26] [PASSED] 0xB0B0 (PANTHERLAKE) [15:30:26] [PASSED] 0xFD80 (PANTHERLAKE) [15:30:26] [PASSED] 0xFD81 (PANTHERLAKE) [15:30:26] ============= [PASSED] check_platform_gt_count ============= [15:30:26] ===================== [PASSED] xe_pci ====================== [15:30:26] =================== xe_rtp (2 subtests) ==================== [15:30:26] =============== xe_rtp_process_to_sr_tests ================ [15:30:26] [PASSED] coalesce-same-reg [15:30:26] [PASSED] no-match-no-add [15:30:26] [PASSED] match-or [15:30:26] [PASSED] match-or-xfail [15:30:26] [PASSED] no-match-no-add-multiple-rules [15:30:26] [PASSED] two-regs-two-entries [15:30:26] [PASSED] clr-one-set-other [15:30:26] [PASSED] set-field [15:30:26] [PASSED] conflict-duplicate [15:30:26] [PASSED] conflict-not-disjoint [15:30:26] [PASSED] conflict-reg-type [15:30:26] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [15:30:26] ================== xe_rtp_process_tests =================== [15:30:26] [PASSED] active1 [15:30:26] [PASSED] active2 [15:30:26] [PASSED] active-inactive [15:30:26] [PASSED] inactive-active [15:30:26] [PASSED] inactive-1st_or_active-inactive [15:30:26] [PASSED] inactive-2nd_or_active-inactive [15:30:26] [PASSED] inactive-last_or_active-inactive [15:30:26] [PASSED] inactive-no_or_active-inactive [15:30:26] ============== [PASSED] xe_rtp_process_tests =============== [15:30:26] ===================== [PASSED] xe_rtp ====================== [15:30:26] ==================== xe_wa (1 subtest) ===================== [15:30:26] ======================== xe_wa_gt ========================= [15:30:26] [PASSED] TIGERLAKE (B0) [15:30:26] [PASSED] DG1 (A0) [15:30:26] [PASSED] DG1 (B0) [15:30:26] [PASSED] ALDERLAKE_S (A0) [15:30:26] [PASSED] ALDERLAKE_S (B0) [15:30:26] [PASSED] ALDERLAKE_S (C0) [15:30:26] [PASSED] ALDERLAKE_S (D0) [15:30:26] [PASSED] ALDERLAKE_P (A0) [15:30:26] [PASSED] ALDERLAKE_P (B0) [15:30:26] [PASSED] ALDERLAKE_P (C0) [15:30:26] [PASSED] ALDERLAKE_S_RPLS (D0) [15:30:26] [PASSED] ALDERLAKE_P_RPLU (E0) [15:30:26] [PASSED] DG2_G10 (C0) [15:30:26] [PASSED] DG2_G11 (B1) [15:30:26] [PASSED] DG2_G12 (A1) [15:30:26] [PASSED] METEORLAKE (g:A0, m:A0) [15:30:26] [PASSED] METEORLAKE (g:A0, m:A0) [15:30:26] [PASSED] METEORLAKE (g:A0, m:A0) [15:30:26] [PASSED] LUNARLAKE (g:A0, m:A0) [15:30:26] [PASSED] LUNARLAKE (g:B0, m:A0) stty: 'standard input': Inappropriate ioctl for device [15:30:26] [PASSED] BATTLEMAGE (g:A0, m:A1) [15:30:26] [PASSED] PANTHERLAKE (g:A0, m:A0) [15:30:26] ==================== [PASSED] xe_wa_gt ===================== [15:30:26] ====================== [PASSED] xe_wa ====================== [15:30:26] ============================================================ [15:30:26] Testing complete. Ran 298 tests: passed: 282, skipped: 16 [15:30:26] Elapsed time: 33.437s total, 4.250s configuring, 28.821s building, 0.336s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [15:30:26] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [15:30:28] 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 [15:30:51] Starting KUnit Kernel (1/1)... [15:30:51] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [15:30:51] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [15:30:51] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [15:30:51] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [15:30:51] =========== drm_validate_clone_mode (2 subtests) =========== [15:30:51] ============== drm_test_check_in_clone_mode =============== [15:30:51] [PASSED] in_clone_mode [15:30:51] [PASSED] not_in_clone_mode [15:30:51] ========== [PASSED] drm_test_check_in_clone_mode =========== [15:30:51] =============== drm_test_check_valid_clones =============== [15:30:51] [PASSED] not_in_clone_mode [15:30:51] [PASSED] valid_clone [15:30:51] [PASSED] invalid_clone [15:30:51] =========== [PASSED] drm_test_check_valid_clones =========== [15:30:51] ============= [PASSED] drm_validate_clone_mode ============= [15:30:51] ============= drm_validate_modeset (1 subtest) ============= [15:30:51] [PASSED] drm_test_check_connector_changed_modeset [15:30:51] ============== [PASSED] drm_validate_modeset =============== [15:30:51] ====== drm_test_bridge_get_current_state (2 subtests) ====== [15:30:51] [PASSED] drm_test_drm_bridge_get_current_state_atomic [15:30:51] [PASSED] drm_test_drm_bridge_get_current_state_legacy [15:30:51] ======== [PASSED] drm_test_bridge_get_current_state ======== [15:30:51] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [15:30:51] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [15:30:51] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [15:30:51] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [15:30:51] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [15:30:51] ============== drm_bridge_alloc (2 subtests) =============== [15:30:51] [PASSED] drm_test_drm_bridge_alloc_basic [15:30:51] [PASSED] drm_test_drm_bridge_alloc_get_put [15:30:51] ================ [PASSED] drm_bridge_alloc ================= [15:30:51] ================== drm_buddy (7 subtests) ================== [15:30:51] [PASSED] drm_test_buddy_alloc_limit [15:30:51] [PASSED] drm_test_buddy_alloc_optimistic [15:30:51] [PASSED] drm_test_buddy_alloc_pessimistic [15:30:51] [PASSED] drm_test_buddy_alloc_pathological [15:30:51] [PASSED] drm_test_buddy_alloc_contiguous [15:30:51] [PASSED] drm_test_buddy_alloc_clear [15:30:51] [PASSED] drm_test_buddy_alloc_range_bias [15:30:51] ==================== [PASSED] drm_buddy ==================== [15:30:51] ============= drm_cmdline_parser (40 subtests) ============= [15:30:51] [PASSED] drm_test_cmdline_force_d_only [15:30:51] [PASSED] drm_test_cmdline_force_D_only_dvi [15:30:51] [PASSED] drm_test_cmdline_force_D_only_hdmi [15:30:51] [PASSED] drm_test_cmdline_force_D_only_not_digital [15:30:51] [PASSED] drm_test_cmdline_force_e_only [15:30:51] [PASSED] drm_test_cmdline_res [15:30:51] [PASSED] drm_test_cmdline_res_vesa [15:30:51] [PASSED] drm_test_cmdline_res_vesa_rblank [15:30:51] [PASSED] drm_test_cmdline_res_rblank [15:30:51] [PASSED] drm_test_cmdline_res_bpp [15:30:51] [PASSED] drm_test_cmdline_res_refresh [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [15:30:51] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [15:30:51] [PASSED] drm_test_cmdline_res_margins_force_on [15:30:51] [PASSED] drm_test_cmdline_res_vesa_margins [15:30:51] [PASSED] drm_test_cmdline_name [15:30:51] [PASSED] drm_test_cmdline_name_bpp [15:30:51] [PASSED] drm_test_cmdline_name_option [15:30:51] [PASSED] drm_test_cmdline_name_bpp_option [15:30:51] [PASSED] drm_test_cmdline_rotate_0 [15:30:51] [PASSED] drm_test_cmdline_rotate_90 [15:30:51] [PASSED] drm_test_cmdline_rotate_180 [15:30:51] [PASSED] drm_test_cmdline_rotate_270 [15:30:51] [PASSED] drm_test_cmdline_hmirror [15:30:51] [PASSED] drm_test_cmdline_vmirror [15:30:51] [PASSED] drm_test_cmdline_margin_options [15:30:51] [PASSED] drm_test_cmdline_multiple_options [15:30:51] [PASSED] drm_test_cmdline_bpp_extra_and_option [15:30:51] [PASSED] drm_test_cmdline_extra_and_option [15:30:51] [PASSED] drm_test_cmdline_freestanding_options [15:30:51] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [15:30:51] [PASSED] drm_test_cmdline_panel_orientation [15:30:51] ================ drm_test_cmdline_invalid ================= [15:30:51] [PASSED] margin_only [15:30:51] [PASSED] interlace_only [15:30:51] [PASSED] res_missing_x [15:30:51] [PASSED] res_missing_y [15:30:51] [PASSED] res_bad_y [15:30:51] [PASSED] res_missing_y_bpp [15:30:51] [PASSED] res_bad_bpp [15:30:51] [PASSED] res_bad_refresh [15:30:51] [PASSED] res_bpp_refresh_force_on_off [15:30:51] [PASSED] res_invalid_mode [15:30:51] [PASSED] res_bpp_wrong_place_mode [15:30:51] [PASSED] name_bpp_refresh [15:30:51] [PASSED] name_refresh [15:30:51] [PASSED] name_refresh_wrong_mode [15:30:51] [PASSED] name_refresh_invalid_mode [15:30:51] [PASSED] rotate_multiple [15:30:51] [PASSED] rotate_invalid_val [15:30:51] [PASSED] rotate_truncated [15:30:51] [PASSED] invalid_option [15:30:51] [PASSED] invalid_tv_option [15:30:51] [PASSED] truncated_tv_option [15:30:51] ============ [PASSED] drm_test_cmdline_invalid ============= [15:30:51] =============== drm_test_cmdline_tv_options =============== [15:30:51] [PASSED] NTSC [15:30:51] [PASSED] NTSC_443 [15:30:51] [PASSED] NTSC_J [15:30:51] [PASSED] PAL [15:30:51] [PASSED] PAL_M [15:30:51] [PASSED] PAL_N [15:30:51] [PASSED] SECAM [15:30:51] [PASSED] MONO_525 [15:30:51] [PASSED] MONO_625 [15:30:51] =========== [PASSED] drm_test_cmdline_tv_options =========== [15:30:51] =============== [PASSED] drm_cmdline_parser ================ [15:30:51] ========== drmm_connector_hdmi_init (20 subtests) ========== [15:30:51] [PASSED] drm_test_connector_hdmi_init_valid [15:30:51] [PASSED] drm_test_connector_hdmi_init_bpc_8 [15:30:51] [PASSED] drm_test_connector_hdmi_init_bpc_10 [15:30:51] [PASSED] drm_test_connector_hdmi_init_bpc_12 [15:30:51] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [15:30:51] [PASSED] drm_test_connector_hdmi_init_bpc_null [15:30:51] [PASSED] drm_test_connector_hdmi_init_formats_empty [15:30:51] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [15:30:51] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [15:30:51] [PASSED] supported_formats=0x9 yuv420_allowed=1 [15:30:51] [PASSED] supported_formats=0x9 yuv420_allowed=0 [15:30:51] [PASSED] supported_formats=0x3 yuv420_allowed=1 [15:30:51] [PASSED] supported_formats=0x3 yuv420_allowed=0 [15:30:51] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [15:30:51] [PASSED] drm_test_connector_hdmi_init_null_ddc [15:30:51] [PASSED] drm_test_connector_hdmi_init_null_product [15:30:51] [PASSED] drm_test_connector_hdmi_init_null_vendor [15:30:51] [PASSED] drm_test_connector_hdmi_init_product_length_exact [15:30:51] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [15:30:51] [PASSED] drm_test_connector_hdmi_init_product_valid [15:30:51] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [15:30:51] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [15:30:51] [PASSED] drm_test_connector_hdmi_init_vendor_valid [15:30:51] ========= drm_test_connector_hdmi_init_type_valid ========= [15:30:51] [PASSED] HDMI-A [15:30:51] [PASSED] HDMI-B [15:30:51] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [15:30:51] ======== drm_test_connector_hdmi_init_type_invalid ======== [15:30:51] [PASSED] Unknown [15:30:51] [PASSED] VGA [15:30:51] [PASSED] DVI-I [15:30:51] [PASSED] DVI-D [15:30:51] [PASSED] DVI-A [15:30:51] [PASSED] Composite [15:30:51] [PASSED] SVIDEO [15:30:51] [PASSED] LVDS [15:30:51] [PASSED] Component [15:30:51] [PASSED] DIN [15:30:51] [PASSED] DP [15:30:51] [PASSED] TV [15:30:51] [PASSED] eDP [15:30:51] [PASSED] Virtual [15:30:51] [PASSED] DSI [15:30:51] [PASSED] DPI [15:30:51] [PASSED] Writeback [15:30:51] [PASSED] SPI [15:30:51] [PASSED] USB [15:30:51] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [15:30:51] ============ [PASSED] drmm_connector_hdmi_init ============= [15:30:51] ============= drmm_connector_init (3 subtests) ============= [15:30:51] [PASSED] drm_test_drmm_connector_init [15:30:51] [PASSED] drm_test_drmm_connector_init_null_ddc [15:30:51] ========= drm_test_drmm_connector_init_type_valid ========= [15:30:51] [PASSED] Unknown [15:30:51] [PASSED] VGA [15:30:51] [PASSED] DVI-I [15:30:51] [PASSED] DVI-D [15:30:51] [PASSED] DVI-A [15:30:51] [PASSED] Composite [15:30:51] [PASSED] SVIDEO [15:30:51] [PASSED] LVDS [15:30:51] [PASSED] Component [15:30:51] [PASSED] DIN [15:30:51] [PASSED] DP [15:30:51] [PASSED] HDMI-A [15:30:51] [PASSED] HDMI-B [15:30:51] [PASSED] TV [15:30:51] [PASSED] eDP [15:30:51] [PASSED] Virtual [15:30:51] [PASSED] DSI [15:30:51] [PASSED] DPI [15:30:51] [PASSED] Writeback [15:30:51] [PASSED] SPI [15:30:51] [PASSED] USB [15:30:51] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [15:30:51] =============== [PASSED] drmm_connector_init =============== [15:30:51] ========= drm_connector_dynamic_init (6 subtests) ========== [15:30:51] [PASSED] drm_test_drm_connector_dynamic_init [15:30:51] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [15:30:51] [PASSED] drm_test_drm_connector_dynamic_init_not_added [15:30:51] [PASSED] drm_test_drm_connector_dynamic_init_properties [15:30:51] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [15:30:51] [PASSED] Unknown [15:30:51] [PASSED] VGA [15:30:51] [PASSED] DVI-I [15:30:51] [PASSED] DVI-D [15:30:51] [PASSED] DVI-A [15:30:51] [PASSED] Composite [15:30:51] [PASSED] SVIDEO [15:30:51] [PASSED] LVDS [15:30:51] [PASSED] Component [15:30:51] [PASSED] DIN [15:30:51] [PASSED] DP [15:30:51] [PASSED] HDMI-A [15:30:51] [PASSED] HDMI-B [15:30:51] [PASSED] TV [15:30:51] [PASSED] eDP [15:30:51] [PASSED] Virtual [15:30:51] [PASSED] DSI [15:30:51] [PASSED] DPI [15:30:51] [PASSED] Writeback [15:30:51] [PASSED] SPI [15:30:51] [PASSED] USB [15:30:51] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [15:30:51] ======== drm_test_drm_connector_dynamic_init_name ========= [15:30:51] [PASSED] Unknown [15:30:51] [PASSED] VGA [15:30:51] [PASSED] DVI-I [15:30:51] [PASSED] DVI-D [15:30:51] [PASSED] DVI-A [15:30:51] [PASSED] Composite [15:30:51] [PASSED] SVIDEO [15:30:51] [PASSED] LVDS [15:30:51] [PASSED] Component [15:30:51] [PASSED] DIN [15:30:51] [PASSED] DP [15:30:51] [PASSED] HDMI-A [15:30:51] [PASSED] HDMI-B [15:30:51] [PASSED] TV [15:30:51] [PASSED] eDP [15:30:51] [PASSED] Virtual [15:30:51] [PASSED] DSI [15:30:51] [PASSED] DPI [15:30:51] [PASSED] Writeback [15:30:51] [PASSED] SPI [15:30:51] [PASSED] USB [15:30:51] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [15:30:51] =========== [PASSED] drm_connector_dynamic_init ============ [15:30:51] ==== drm_connector_dynamic_register_early (4 subtests) ===== [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [15:30:51] ====== [PASSED] drm_connector_dynamic_register_early ======= [15:30:51] ======= drm_connector_dynamic_register (7 subtests) ======== [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_on_list [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_no_init [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [15:30:51] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [15:30:51] ========= [PASSED] drm_connector_dynamic_register ========== [15:30:51] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [15:30:51] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [15:30:51] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [15:30:51] === [PASSED] drm_connector_attach_broadcast_rgb_property === [15:30:51] ========== drm_get_tv_mode_from_name (2 subtests) ========== [15:30:51] ========== drm_test_get_tv_mode_from_name_valid =========== [15:30:51] [PASSED] NTSC [15:30:51] [PASSED] NTSC-443 [15:30:51] [PASSED] NTSC-J [15:30:51] [PASSED] PAL [15:30:51] [PASSED] PAL-M [15:30:51] [PASSED] PAL-N [15:30:51] [PASSED] SECAM [15:30:51] [PASSED] Mono [15:30:51] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [15:30:51] [PASSED] drm_test_get_tv_mode_from_name_truncated [15:30:51] ============ [PASSED] drm_get_tv_mode_from_name ============ [15:30:51] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [15:30:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [15:30:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [15:30:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [15:30:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [15:30:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [15:30:51] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [15:30:51] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [15:30:51] [PASSED] VIC 96 [15:30:51] [PASSED] VIC 97 [15:30:51] [PASSED] VIC 101 [15:30:51] [PASSED] VIC 102 [15:30:51] [PASSED] VIC 106 [15:30:51] [PASSED] VIC 107 [15:30:51] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [15:30:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [15:30:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [15:30:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [15:30:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [15:30:51] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [15:30:51] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [15:30:51] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [15:30:51] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [15:30:51] [PASSED] Automatic [15:30:51] [PASSED] Full [15:30:51] [PASSED] Limited 16:235 [15:30:51] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [15:30:51] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [15:30:51] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [15:30:51] == drm_hdmi_connector_get_output_format_name (2 subtests) == [15:30:51] === drm_test_drm_hdmi_connector_get_output_format_name ==== [15:30:51] [PASSED] RGB [15:30:51] [PASSED] YUV 4:2:0 [15:30:51] [PASSED] YUV 4:2:2 [15:30:51] [PASSED] YUV 4:4:4 [15:30:51] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [15:30:51] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [15:30:51] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [15:30:51] ============= drm_damage_helper (21 subtests) ============== [15:30:51] [PASSED] drm_test_damage_iter_no_damage [15:30:51] [PASSED] drm_test_damage_iter_no_damage_fractional_src [15:30:51] [PASSED] drm_test_damage_iter_no_damage_src_moved [15:30:51] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [15:30:51] [PASSED] drm_test_damage_iter_no_damage_not_visible [15:30:51] [PASSED] drm_test_damage_iter_no_damage_no_crtc [15:30:51] [PASSED] drm_test_damage_iter_no_damage_no_fb [15:30:51] [PASSED] drm_test_damage_iter_simple_damage [15:30:51] [PASSED] drm_test_damage_iter_single_damage [15:30:51] [PASSED] drm_test_damage_iter_single_damage_intersect_src [15:30:51] [PASSED] drm_test_damage_iter_single_damage_outside_src [15:30:51] [PASSED] drm_test_damage_iter_single_damage_fractional_src [15:30:51] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [15:30:51] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [15:30:51] [PASSED] drm_test_damage_iter_single_damage_src_moved [15:30:51] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [15:30:51] [PASSED] drm_test_damage_iter_damage [15:30:51] [PASSED] drm_test_damage_iter_damage_one_intersect [15:30:51] [PASSED] drm_test_damage_iter_damage_one_outside [15:30:51] [PASSED] drm_test_damage_iter_damage_src_moved [15:30:51] [PASSED] drm_test_damage_iter_damage_not_visible [15:30:51] ================ [PASSED] drm_damage_helper ================ [15:30:51] ============== drm_dp_mst_helper (3 subtests) ============== [15:30:51] ============== drm_test_dp_mst_calc_pbn_mode ============== [15:30:51] [PASSED] Clock 154000 BPP 30 DSC disabled [15:30:51] [PASSED] Clock 234000 BPP 30 DSC disabled [15:30:51] [PASSED] Clock 297000 BPP 24 DSC disabled [15:30:51] [PASSED] Clock 332880 BPP 24 DSC enabled [15:30:51] [PASSED] Clock 324540 BPP 24 DSC enabled [15:30:51] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [15:30:51] ============== drm_test_dp_mst_calc_pbn_div =============== [15:30:51] [PASSED] Link rate 2000000 lane count 4 [15:30:51] [PASSED] Link rate 2000000 lane count 2 [15:30:51] [PASSED] Link rate 2000000 lane count 1 [15:30:51] [PASSED] Link rate 1350000 lane count 4 [15:30:51] [PASSED] Link rate 1350000 lane count 2 [15:30:51] [PASSED] Link rate 1350000 lane count 1 [15:30:51] [PASSED] Link rate 1000000 lane count 4 [15:30:51] [PASSED] Link rate 1000000 lane count 2 [15:30:51] [PASSED] Link rate 1000000 lane count 1 [15:30:51] [PASSED] Link rate 810000 lane count 4 [15:30:51] [PASSED] Link rate 810000 lane count 2 [15:30:51] [PASSED] Link rate 810000 lane count 1 [15:30:51] [PASSED] Link rate 540000 lane count 4 [15:30:51] [PASSED] Link rate 540000 lane count 2 [15:30:51] [PASSED] Link rate 540000 lane count 1 [15:30:51] [PASSED] Link rate 270000 lane count 4 [15:30:51] [PASSED] Link rate 270000 lane count 2 [15:30:51] [PASSED] Link rate 270000 lane count 1 [15:30:51] [PASSED] Link rate 162000 lane count 4 [15:30:51] [PASSED] Link rate 162000 lane count 2 [15:30:51] [PASSED] Link rate 162000 lane count 1 [15:30:51] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [15:30:51] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [15:30:51] [PASSED] DP_ENUM_PATH_RESOURCES with port number [15:30:51] [PASSED] DP_POWER_UP_PHY with port number [15:30:51] [PASSED] DP_POWER_DOWN_PHY with port number [15:30:51] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [15:30:51] [PASSED] DP_ALLOCATE_PAYLOAD with port number [15:30:51] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [15:30:51] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [15:30:51] [PASSED] DP_QUERY_PAYLOAD with port number [15:30:51] [PASSED] DP_QUERY_PAYLOAD with VCPI [15:30:51] [PASSED] DP_REMOTE_DPCD_READ with port number [15:30:51] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [15:30:51] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [15:30:51] [PASSED] DP_REMOTE_DPCD_WRITE with port number [15:30:51] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [15:30:51] [PASSED] DP_REMOTE_DPCD_WRITE with data array [15:30:51] [PASSED] DP_REMOTE_I2C_READ with port number [15:30:51] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [15:30:51] [PASSED] DP_REMOTE_I2C_READ with transactions array [15:30:51] [PASSED] DP_REMOTE_I2C_WRITE with port number [15:30:51] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [15:30:51] [PASSED] DP_REMOTE_I2C_WRITE with data array [15:30:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [15:30:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [15:30:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [15:30:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [15:30:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [15:30:51] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [15:30:51] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [15:30:51] ================ [PASSED] drm_dp_mst_helper ================ [15:30:51] ================== drm_exec (7 subtests) =================== [15:30:51] [PASSED] sanitycheck [15:30:51] [PASSED] test_lock [15:30:51] [PASSED] test_lock_unlock [15:30:51] [PASSED] test_duplicates [15:30:51] [PASSED] test_prepare [15:30:51] [PASSED] test_prepare_array [15:30:51] [PASSED] test_multiple_loops [15:30:51] ==================== [PASSED] drm_exec ===================== [15:30:51] =========== drm_format_helper_test (17 subtests) =========== [15:30:51] ============== drm_test_fb_xrgb8888_to_gray8 ============== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [15:30:51] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [15:30:51] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [15:30:51] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [15:30:51] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [15:30:51] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [15:30:51] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [15:30:51] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [15:30:51] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [15:30:51] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [15:30:51] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [15:30:51] ============== drm_test_fb_xrgb8888_to_mono =============== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [15:30:51] ==================== drm_test_fb_swab ===================== [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ================ [PASSED] drm_test_fb_swab ================= [15:30:51] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [15:30:51] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [15:30:51] [PASSED] single_pixel_source_buffer [15:30:51] [PASSED] single_pixel_clip_rectangle [15:30:51] [PASSED] well_known_colors [15:30:51] [PASSED] destination_pitch [15:30:51] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [15:30:51] ================= drm_test_fb_clip_offset ================= [15:30:51] [PASSED] pass through [15:30:51] [PASSED] horizontal offset [15:30:51] [PASSED] vertical offset [15:30:51] [PASSED] horizontal and vertical offset [15:30:51] [PASSED] horizontal offset (custom pitch) [15:30:51] [PASSED] vertical offset (custom pitch) [15:30:51] [PASSED] horizontal and vertical offset (custom pitch) [15:30:51] ============= [PASSED] drm_test_fb_clip_offset ============= [15:30:51] =================== drm_test_fb_memcpy ==================== [15:30:51] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [15:30:51] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [15:30:51] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [15:30:51] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [15:30:51] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [15:30:51] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [15:30:51] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [15:30:51] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [15:30:51] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [15:30:51] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [15:30:51] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [15:30:51] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [15:30:51] =============== [PASSED] drm_test_fb_memcpy ================ [15:30:51] ============= [PASSED] drm_format_helper_test ============== [15:30:51] ================= drm_format (18 subtests) ================= [15:30:51] [PASSED] drm_test_format_block_width_invalid [15:30:51] [PASSED] drm_test_format_block_width_one_plane [15:30:51] [PASSED] drm_test_format_block_width_two_plane [15:30:51] [PASSED] drm_test_format_block_width_three_plane [15:30:51] [PASSED] drm_test_format_block_width_tiled [15:30:51] [PASSED] drm_test_format_block_height_invalid [15:30:51] [PASSED] drm_test_format_block_height_one_plane [15:30:51] [PASSED] drm_test_format_block_height_two_plane [15:30:51] [PASSED] drm_test_format_block_height_three_plane [15:30:51] [PASSED] drm_test_format_block_height_tiled [15:30:51] [PASSED] drm_test_format_min_pitch_invalid [15:30:51] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [15:30:51] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [15:30:51] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [15:30:51] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [15:30:51] [PASSED] drm_test_format_min_pitch_two_plane [15:30:51] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [15:30:51] [PASSED] drm_test_format_min_pitch_tiled [15:30:51] =================== [PASSED] drm_format ==================== [15:30:51] ============== drm_framebuffer (10 subtests) =============== [15:30:51] ========== drm_test_framebuffer_check_src_coords ========== [15:30:51] [PASSED] Success: source fits into fb [15:30:51] [PASSED] Fail: overflowing fb with x-axis coordinate [15:30:51] [PASSED] Fail: overflowing fb with y-axis coordinate [15:30:51] [PASSED] Fail: overflowing fb with source width [15:30:51] [PASSED] Fail: overflowing fb with source height [15:30:51] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [15:30:51] [PASSED] drm_test_framebuffer_cleanup [15:30:51] =============== drm_test_framebuffer_create =============== [15:30:51] [PASSED] ABGR8888 normal sizes [15:30:51] [PASSED] ABGR8888 max sizes [15:30:51] [PASSED] ABGR8888 pitch greater than min required [15:30:51] [PASSED] ABGR8888 pitch less than min required [15:30:51] [PASSED] ABGR8888 Invalid width [15:30:51] [PASSED] ABGR8888 Invalid buffer handle [15:30:51] [PASSED] No pixel format [15:30:51] [PASSED] ABGR8888 Width 0 [15:30:51] [PASSED] ABGR8888 Height 0 [15:30:51] [PASSED] ABGR8888 Out of bound height * pitch combination [15:30:51] [PASSED] ABGR8888 Large buffer offset [15:30:51] [PASSED] ABGR8888 Buffer offset for inexistent plane [15:30:51] [PASSED] ABGR8888 Invalid flag [15:30:51] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [15:30:51] [PASSED] ABGR8888 Valid buffer modifier [15:30:51] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [15:30:51] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [15:30:51] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [15:30:51] [PASSED] NV12 Normal sizes [15:30:51] [PASSED] NV12 Max sizes [15:30:51] [PASSED] NV12 Invalid pitch [15:30:51] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [15:30:51] [PASSED] NV12 different modifier per-plane [15:30:51] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [15:30:51] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [15:30:51] [PASSED] NV12 Modifier for inexistent plane [15:30:51] [PASSED] NV12 Handle for inexistent plane [15:30:51] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [15:30:51] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [15:30:51] [PASSED] YVU420 Normal sizes [15:30:51] [PASSED] YVU420 Max sizes [15:30:51] [PASSED] YVU420 Invalid pitch [15:30:51] [PASSED] YVU420 Different pitches [15:30:51] [PASSED] YVU420 Different buffer offsets/pitches [15:30:51] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [15:30:51] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [15:30:51] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [15:30:51] [PASSED] YVU420 Valid modifier [15:30:51] [PASSED] YVU420 Different modifiers per plane [15:30:51] [PASSED] YVU420 Modifier for inexistent plane [15:30:51] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [15:30:51] [PASSED] X0L2 Normal sizes [15:30:51] [PASSED] X0L2 Max sizes [15:30:51] [PASSED] X0L2 Invalid pitch [15:30:51] [PASSED] X0L2 Pitch greater than minimum required [15:30:51] [PASSED] X0L2 Handle for inexistent plane [15:30:51] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [15:30:51] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [15:30:51] [PASSED] X0L2 Valid modifier [15:30:51] [PASSED] X0L2 Modifier for inexistent plane [15:30:51] =========== [PASSED] drm_test_framebuffer_create =========== [15:30:51] [PASSED] drm_test_framebuffer_free [15:30:51] [PASSED] drm_test_framebuffer_init [15:30:51] [PASSED] drm_test_framebuffer_init_bad_format [15:30:51] [PASSED] drm_test_framebuffer_init_dev_mismatch [15:30:51] [PASSED] drm_test_framebuffer_lookup [15:30:51] [PASSED] drm_test_framebuffer_lookup_inexistent [15:30:51] [PASSED] drm_test_framebuffer_modifiers_not_supported [15:30:51] ================= [PASSED] drm_framebuffer ================= [15:30:51] ================ drm_gem_shmem (8 subtests) ================ [15:30:51] [PASSED] drm_gem_shmem_test_obj_create [15:30:51] [PASSED] drm_gem_shmem_test_obj_create_private [15:30:51] [PASSED] drm_gem_shmem_test_pin_pages [15:30:51] [PASSED] drm_gem_shmem_test_vmap [15:30:51] [PASSED] drm_gem_shmem_test_get_pages_sgt [15:30:51] [PASSED] drm_gem_shmem_test_get_sg_table [15:30:51] [PASSED] drm_gem_shmem_test_madvise [15:30:51] [PASSED] drm_gem_shmem_test_purge [15:30:51] ================== [PASSED] drm_gem_shmem ================== [15:30:51] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [15:30:51] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [15:30:51] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [15:30:51] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [15:30:51] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [15:30:51] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [15:30:51] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [15:30:51] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [15:30:51] [PASSED] Automatic [15:30:51] [PASSED] Full [15:30:51] [PASSED] Limited 16:235 [15:30:51] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [15:30:51] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [15:30:51] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [15:30:51] [PASSED] drm_test_check_disable_connector [15:30:51] [PASSED] drm_test_check_hdmi_funcs_reject_rate [15:30:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [15:30:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [15:30:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [15:30:51] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [15:30:51] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [15:30:51] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [15:30:51] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [15:30:51] [PASSED] drm_test_check_output_bpc_dvi [15:30:51] [PASSED] drm_test_check_output_bpc_format_vic_1 [15:30:51] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [15:30:51] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [15:30:51] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [15:30:51] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [15:30:51] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [15:30:51] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [15:30:51] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [15:30:51] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [15:30:51] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [15:30:51] [PASSED] drm_test_check_broadcast_rgb_value [15:30:51] [PASSED] drm_test_check_bpc_8_value [15:30:51] [PASSED] drm_test_check_bpc_10_value [15:30:51] [PASSED] drm_test_check_bpc_12_value [15:30:51] [PASSED] drm_test_check_format_value [15:30:51] [PASSED] drm_test_check_tmds_char_value [15:30:51] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [15:30:51] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [15:30:51] [PASSED] drm_test_check_mode_valid [15:30:51] [PASSED] drm_test_check_mode_valid_reject [15:30:51] [PASSED] drm_test_check_mode_valid_reject_rate [15:30:51] [PASSED] drm_test_check_mode_valid_reject_max_clock [15:30:51] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [15:30:51] ================= drm_managed (2 subtests) ================= [15:30:51] [PASSED] drm_test_managed_release_action [15:30:51] [PASSED] drm_test_managed_run_action [15:30:51] =================== [PASSED] drm_managed =================== [15:30:51] =================== drm_mm (6 subtests) ==================== [15:30:51] [PASSED] drm_test_mm_init [15:30:51] [PASSED] drm_test_mm_debug [15:30:51] [PASSED] drm_test_mm_align32 [15:30:51] [PASSED] drm_test_mm_align64 [15:30:51] [PASSED] drm_test_mm_lowest [15:30:51] [PASSED] drm_test_mm_highest [15:30:51] ===================== [PASSED] drm_mm ====================== [15:30:51] ============= drm_modes_analog_tv (5 subtests) ============= [15:30:51] [PASSED] drm_test_modes_analog_tv_mono_576i [15:30:51] [PASSED] drm_test_modes_analog_tv_ntsc_480i [15:30:51] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [15:30:51] [PASSED] drm_test_modes_analog_tv_pal_576i [15:30:51] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [15:30:51] =============== [PASSED] drm_modes_analog_tv =============== [15:30:51] ============== drm_plane_helper (2 subtests) =============== [15:30:51] =============== drm_test_check_plane_state ================ [15:30:51] [PASSED] clipping_simple [15:30:51] [PASSED] clipping_rotate_reflect [15:30:51] [PASSED] positioning_simple [15:30:51] [PASSED] upscaling [15:30:51] [PASSED] downscaling [15:30:51] [PASSED] rounding1 [15:30:51] [PASSED] rounding2 [15:30:51] [PASSED] rounding3 [15:30:51] [PASSED] rounding4 [15:30:51] =========== [PASSED] drm_test_check_plane_state ============ [15:30:51] =========== drm_test_check_invalid_plane_state ============ [15:30:51] [PASSED] positioning_invalid [15:30:51] [PASSED] upscaling_invalid [15:30:51] [PASSED] downscaling_invalid [15:30:51] ======= [PASSED] drm_test_check_invalid_plane_state ======== [15:30:51] ================ [PASSED] drm_plane_helper ================= [15:30:51] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [15:30:51] ====== drm_test_connector_helper_tv_get_modes_check ======= [15:30:51] [PASSED] None [15:30:51] [PASSED] PAL [15:30:51] [PASSED] NTSC [15:30:51] [PASSED] Both, NTSC Default [15:30:51] [PASSED] Both, PAL Default [15:30:51] [PASSED] Both, NTSC Default, with PAL on command-line [15:30:51] [PASSED] Both, PAL Default, with NTSC on command-line [15:30:51] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [15:30:51] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [15:30:51] ================== drm_rect (9 subtests) =================== [15:30:51] [PASSED] drm_test_rect_clip_scaled_div_by_zero [15:30:51] [PASSED] drm_test_rect_clip_scaled_not_clipped [15:30:51] [PASSED] drm_test_rect_clip_scaled_clipped [15:30:51] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [15:30:51] ================= drm_test_rect_intersect ================= [15:30:51] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [15:30:51] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [15:30:51] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [15:30:51] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [15:30:51] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [15:30:51] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [15:30:51] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [15:30:51] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [15:30:51] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [15:30:51] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [15:30:51] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [15:30:51] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [15:30:51] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [15:30:51] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [15:30:51] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [15:30:51] ============= [PASSED] drm_test_rect_intersect ============= [15:30:51] ================ drm_test_rect_calc_hscale ================ [15:30:51] [PASSED] normal use [15:30:51] [PASSED] out of max range [15:30:51] [PASSED] out of min range [15:30:51] [PASSED] zero dst [15:30:51] [PASSED] negative src [15:30:51] [PASSED] negative dst [15:30:51] ============ [PASSED] drm_test_rect_calc_hscale ============ [15:30:51] ================ drm_test_rect_calc_vscale ================ [15:30:51] [PASSED] normal use [15:30:51] [PASSED] out of max range [15:30:51] [PASSED] out of min range [15:30:51] [PASSED] zero dst [15:30:51] [PASSED] negative src [15:30:51] [PASSED] negative dst [15:30:51] ============ [PASSED] drm_test_rect_calc_vscale ============ [15:30:51] ================== drm_test_rect_rotate =================== [15:30:51] [PASSED] reflect-x [15:30:51] [PASSED] reflect-y [15:30:51] [PASSED] rotate-0 [15:30:51] [PASSED] rotate-90 [15:30:51] [PASSED] rotate-180 [15:30:51] [PASSED] rotate-270 stty: 'standard input': Inappropriate ioctl for device [15:30:51] ============== [PASSED] drm_test_rect_rotate =============== [15:30:51] ================ drm_test_rect_rotate_inv ================= [15:30:51] [PASSED] reflect-x [15:30:51] [PASSED] reflect-y [15:30:51] [PASSED] rotate-0 [15:30:51] [PASSED] rotate-90 [15:30:51] [PASSED] rotate-180 [15:30:51] [PASSED] rotate-270 [15:30:51] ============ [PASSED] drm_test_rect_rotate_inv ============= [15:30:51] ==================== [PASSED] drm_rect ===================== [15:30:51] ============ drm_sysfb_modeset_test (1 subtest) ============ [15:30:51] ============ drm_test_sysfb_build_fourcc_list ============= [15:30:51] [PASSED] no native formats [15:30:51] [PASSED] XRGB8888 as native format [15:30:51] [PASSED] remove duplicates [15:30:51] [PASSED] convert alpha formats [15:30:51] [PASSED] random formats [15:30:51] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [15:30:51] ============= [PASSED] drm_sysfb_modeset_test ============== [15:30:51] ============================================================ [15:30:51] Testing complete. Ran 616 tests: passed: 616 [15:30:51] Elapsed time: 24.933s total, 1.744s configuring, 23.020s building, 0.138s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [15:30:51] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [15:30:53] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [15:31:00] Starting KUnit Kernel (1/1)... [15:31:00] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [15:31:01] ================= ttm_device (5 subtests) ================== [15:31:01] [PASSED] ttm_device_init_basic [15:31:01] [PASSED] ttm_device_init_multiple [15:31:01] [PASSED] ttm_device_fini_basic [15:31:01] [PASSED] ttm_device_init_no_vma_man [15:31:01] ================== ttm_device_init_pools ================== [15:31:01] [PASSED] No DMA allocations, no DMA32 required [15:31:01] [PASSED] DMA allocations, DMA32 required [15:31:01] [PASSED] No DMA allocations, DMA32 required [15:31:01] [PASSED] DMA allocations, no DMA32 required [15:31:01] ============== [PASSED] ttm_device_init_pools ============== [15:31:01] =================== [PASSED] ttm_device ==================== [15:31:01] ================== ttm_pool (8 subtests) =================== [15:31:01] ================== ttm_pool_alloc_basic =================== [15:31:01] [PASSED] One page [15:31:01] [PASSED] More than one page [15:31:01] [PASSED] Above the allocation limit [15:31:01] [PASSED] One page, with coherent DMA mappings enabled [15:31:01] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [15:31:01] ============== [PASSED] ttm_pool_alloc_basic =============== [15:31:01] ============== ttm_pool_alloc_basic_dma_addr ============== [15:31:01] [PASSED] One page [15:31:01] [PASSED] More than one page [15:31:01] [PASSED] Above the allocation limit [15:31:01] [PASSED] One page, with coherent DMA mappings enabled [15:31:01] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [15:31:01] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [15:31:01] [PASSED] ttm_pool_alloc_order_caching_match [15:31:01] [PASSED] ttm_pool_alloc_caching_mismatch [15:31:01] [PASSED] ttm_pool_alloc_order_mismatch [15:31:01] [PASSED] ttm_pool_free_dma_alloc [15:31:01] [PASSED] ttm_pool_free_no_dma_alloc [15:31:01] [PASSED] ttm_pool_fini_basic [15:31:01] ==================== [PASSED] ttm_pool ===================== [15:31:01] ================ ttm_resource (8 subtests) ================= [15:31:01] ================= ttm_resource_init_basic ================= [15:31:01] [PASSED] Init resource in TTM_PL_SYSTEM [15:31:01] [PASSED] Init resource in TTM_PL_VRAM [15:31:01] [PASSED] Init resource in a private placement [15:31:01] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [15:31:01] ============= [PASSED] ttm_resource_init_basic ============= [15:31:01] [PASSED] ttm_resource_init_pinned [15:31:01] [PASSED] ttm_resource_fini_basic [15:31:01] [PASSED] ttm_resource_manager_init_basic [15:31:01] [PASSED] ttm_resource_manager_usage_basic [15:31:01] [PASSED] ttm_resource_manager_set_used_basic [15:31:01] [PASSED] ttm_sys_man_alloc_basic [15:31:01] [PASSED] ttm_sys_man_free_basic [15:31:01] ================== [PASSED] ttm_resource =================== [15:31:01] =================== ttm_tt (15 subtests) =================== [15:31:01] ==================== ttm_tt_init_basic ==================== [15:31:01] [PASSED] Page-aligned size [15:31:01] [PASSED] Extra pages requested [15:31:01] ================ [PASSED] ttm_tt_init_basic ================ [15:31:01] [PASSED] ttm_tt_init_misaligned [15:31:01] [PASSED] ttm_tt_fini_basic [15:31:01] [PASSED] ttm_tt_fini_sg [15:31:01] [PASSED] ttm_tt_fini_shmem [15:31:01] [PASSED] ttm_tt_create_basic [15:31:01] [PASSED] ttm_tt_create_invalid_bo_type [15:31:01] [PASSED] ttm_tt_create_ttm_exists [15:31:01] [PASSED] ttm_tt_create_failed [15:31:01] [PASSED] ttm_tt_destroy_basic [15:31:01] [PASSED] ttm_tt_populate_null_ttm [15:31:01] [PASSED] ttm_tt_populate_populated_ttm [15:31:01] [PASSED] ttm_tt_unpopulate_basic [15:31:01] [PASSED] ttm_tt_unpopulate_empty_ttm [15:31:01] [PASSED] ttm_tt_swapin_basic [15:31:01] ===================== [PASSED] ttm_tt ====================== [15:31:01] =================== ttm_bo (14 subtests) =================== [15:31:01] =========== ttm_bo_reserve_optimistic_no_ticket =========== [15:31:01] [PASSED] Cannot be interrupted and sleeps [15:31:01] [PASSED] Cannot be interrupted, locks straight away [15:31:01] [PASSED] Can be interrupted, sleeps [15:31:01] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [15:31:01] [PASSED] ttm_bo_reserve_locked_no_sleep [15:31:01] [PASSED] ttm_bo_reserve_no_wait_ticket [15:31:01] [PASSED] ttm_bo_reserve_double_resv [15:31:01] [PASSED] ttm_bo_reserve_interrupted [15:31:01] [PASSED] ttm_bo_reserve_deadlock [15:31:01] [PASSED] ttm_bo_unreserve_basic [15:31:01] [PASSED] ttm_bo_unreserve_pinned [15:31:01] [PASSED] ttm_bo_unreserve_bulk [15:31:01] [PASSED] ttm_bo_put_basic [15:31:01] [PASSED] ttm_bo_put_shared_resv [15:31:01] [PASSED] ttm_bo_pin_basic [15:31:01] [PASSED] ttm_bo_pin_unpin_resource [15:31:01] [PASSED] ttm_bo_multiple_pin_one_unpin [15:31:01] ===================== [PASSED] ttm_bo ====================== [15:31:01] ============== ttm_bo_validate (21 subtests) =============== [15:31:01] ============== ttm_bo_init_reserved_sys_man =============== [15:31:01] [PASSED] Buffer object for userspace [15:31:01] [PASSED] Kernel buffer object [15:31:01] [PASSED] Shared buffer object [15:31:01] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [15:31:01] ============== ttm_bo_init_reserved_mock_man ============== [15:31:01] [PASSED] Buffer object for userspace [15:31:01] [PASSED] Kernel buffer object [15:31:01] [PASSED] Shared buffer object [15:31:01] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [15:31:01] [PASSED] ttm_bo_init_reserved_resv [15:31:01] ================== ttm_bo_validate_basic ================== [15:31:01] [PASSED] Buffer object for userspace [15:31:01] [PASSED] Kernel buffer object [15:31:01] [PASSED] Shared buffer object [15:31:01] ============== [PASSED] ttm_bo_validate_basic ============== [15:31:01] [PASSED] ttm_bo_validate_invalid_placement [15:31:01] ============= ttm_bo_validate_same_placement ============== [15:31:01] [PASSED] System manager [15:31:01] [PASSED] VRAM manager [15:31:01] ========= [PASSED] ttm_bo_validate_same_placement ========== [15:31:01] [PASSED] ttm_bo_validate_failed_alloc [15:31:01] [PASSED] ttm_bo_validate_pinned [15:31:01] [PASSED] ttm_bo_validate_busy_placement [15:31:01] ================ ttm_bo_validate_multihop ================= [15:31:01] [PASSED] Buffer object for userspace [15:31:01] [PASSED] Kernel buffer object [15:31:01] [PASSED] Shared buffer object [15:31:01] ============ [PASSED] ttm_bo_validate_multihop ============= [15:31:01] ========== ttm_bo_validate_no_placement_signaled ========== [15:31:01] [PASSED] Buffer object in system domain, no page vector [15:31:01] [PASSED] Buffer object in system domain with an existing page vector [15:31:01] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [15:31:01] ======== ttm_bo_validate_no_placement_not_signaled ======== [15:31:01] [PASSED] Buffer object for userspace [15:31:01] [PASSED] Kernel buffer object [15:31:01] [PASSED] Shared buffer object [15:31:01] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [15:31:01] [PASSED] ttm_bo_validate_move_fence_signaled [15:31:01] ========= ttm_bo_validate_move_fence_not_signaled ========= [15:31:01] [PASSED] Waits for GPU [15:31:01] [PASSED] Tries to lock straight away [15:31:01] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [15:31:01] [PASSED] ttm_bo_validate_happy_evict [15:31:01] [PASSED] ttm_bo_validate_all_pinned_evict [15:31:01] [PASSED] ttm_bo_validate_allowed_only_evict [15:31:01] [PASSED] ttm_bo_validate_deleted_evict [15:31:01] [PASSED] ttm_bo_validate_busy_domain_evict [15:31:01] [PASSED] ttm_bo_validate_evict_gutting [15:31:01] [PASSED] ttm_bo_validate_recrusive_evict stty: 'standard input': Inappropriate ioctl for device [15:31:01] ================= [PASSED] ttm_bo_validate ================= [15:31:01] ============================================================ [15:31:01] Testing complete. Ran 101 tests: passed: 101 [15:31:01] Elapsed time: 9.658s total, 1.671s configuring, 7.771s building, 0.178s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
Patchwork
CI✓ Xe.CI.BAT: success for Driver-managed exhaustive eviction (rev5)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction (rev5)
URL : https://patchwork.freedesktop.org/series/152882/
State : success
== Summary ==
CI Bug Log - changes from xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97_BAT -> xe-pw-152882v5_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (11 -> 11)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-152882v5_BAT that come from known issues:
### IGT changes ###
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#5783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5783
Build changes
-------------
* IGT: IGT_8522 -> IGT_8524
* Linux: xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97 -> xe-pw-152882v5
IGT_8522: 8522
IGT_8524: 8524
xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97: 3345c879b0492f1283042ae6bdecb0e65ec4ff97
xe-pw-152882v5: 152882v5
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/index.html
Patchwork
CI✗ Xe.CI.Full: failure for Driver-managed exhaustive eviction (rev5)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction (rev5)
URL : https://patchwork.freedesktop.org/series/152882/
State : failure
== Summary ==
CI Bug Log - changes from xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97_FULL -> xe-pw-152882v5_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-152882v5_FULL absolutely need to be verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-152882v5_FULL, please notify your bug team ([email protected]) to allow them to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-152882v5_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_threads@threads-cm-fd-rebind:
- shard-bmg: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-8/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-5/igt@[email protected]
* igt@xe_gt_freq@freq_suspend:
- shard-bmg: [PASS][3] -> [INCOMPLETE][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-5/igt@xe_gt_freq@freq_suspend.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@xe_gt_freq@freq_suspend.html
Known issues
------------
Here are the changes found in xe-pw-152882v5_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1:
- shard-lnl: [PASS][5] -> [FAIL][6] ([Intel XE#5993]) +3 other tests fail
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-1/igt@kms_async_flips@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_async_flips@[email protected]
* igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic@pipe-d-hdmi-a-1-y:
- shard-adlp: [PASS][7] -> [DMESG-WARN][8] ([Intel XE#4543]) +5 other tests dmesg-warn
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-1/igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic@pipe-d-hdmi-a-1-y.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-6/igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic@pipe-d-hdmi-a-1-y.html
* igt@kms_async_flips@crc-atomic@pipe-d-hdmi-a-1:
- shard-adlp: [PASS][9] -> [FAIL][10] ([Intel XE#3884]) +1 other test fail
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-2/igt@kms_async_flips@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-6/igt@kms_async_flips@[email protected]
* igt@kms_atomic_transition@plane-toggle-modeset-transition:
- shard-adlp: [PASS][11] -> [DMESG-WARN][12] ([Intel XE#2953] / [Intel XE#4173]) +4 other tests dmesg-warn
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-6/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-2/igt@[email protected]
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
- shard-adlp: NOTRUN -> [SKIP][13] ([Intel XE#1124]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-9/igt@[email protected]
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#1407]) +1 other test skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-7/igt@[email protected]
* igt@kms_big_fb@linear-16bpp-rotate-90:
- shard-dg2-set2: NOTRUN -> [SKIP][15] ([Intel XE#316]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-434/igt@[email protected]
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2327]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-5/igt@[email protected]
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: [PASS][17] -> [DMESG-FAIL][18] ([Intel XE#4543]) +6 other tests dmesg-fail
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-8/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#1124]) +2 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-5/igt@[email protected]
* igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#1124]) +4 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@[email protected]
* igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
- shard-dg2-set2: NOTRUN -> [SKIP][21] ([Intel XE#1124]) +8 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@[email protected]
* igt@kms_big_fb@yf-tiled-addfb:
- shard-dg2-set2: NOTRUN -> [SKIP][22] ([Intel XE#619])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@[email protected]
* igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p:
- shard-adlp: NOTRUN -> [SKIP][23] ([Intel XE#367])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-6/igt@[email protected]
* igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
- shard-bmg: [PASS][24] -> [SKIP][25] ([Intel XE#2314] / [Intel XE#2894])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-5/igt@[email protected]
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p:
- shard-dg2-set2: NOTRUN -> [SKIP][26] ([Intel XE#2191])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-433/igt@[email protected]
* igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][27] ([Intel XE#787]) +17 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-4/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][28] ([Intel XE#2907]) +2 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@[email protected]
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#2887]) +7 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@[email protected]
* igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][30] ([Intel XE#455] / [Intel XE#787]) +25 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][31] -> [INCOMPLETE][32] ([Intel XE#3862]) +1 other test incomplete
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-1/igt@[email protected]
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-3/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#3442])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-464/igt@[email protected]
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs:
- shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#2887]) +2 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-3/igt@[email protected]
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs:
- shard-adlp: NOTRUN -> [SKIP][35] ([Intel XE#455] / [Intel XE#787]) +11 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-2/igt@[email protected]
* igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2:
- shard-dg2-set2: NOTRUN -> [SKIP][36] ([Intel XE#787]) +153 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@kms_ccs@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4:
- shard-dg2-set2: [PASS][37] -> [INCOMPLETE][38] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) +1 other test incomplete
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-435/igt@kms_ccs@[email protected]
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-434/igt@kms_ccs@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][39] ([Intel XE#3124])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-433/igt@kms_ccs@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-6:
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][40] ([Intel XE#1727] / [Intel XE#3113])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-433/igt@kms_ccs@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#2652] / [Intel XE#787]) +30 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@kms_ccs@[email protected]
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2724])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@[email protected]
- shard-dg2-set2: NOTRUN -> [SKIP][43] ([Intel XE#4418])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-435/igt@[email protected]
* igt@kms_cdclk@mode-transition@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][44] ([Intel XE#4417]) +3 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-435/igt@kms_cdclk@[email protected]
* igt@kms_cdclk@plane-scaling@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#4416]) +3 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@kms_cdclk@[email protected]
* igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
- shard-adlp: NOTRUN -> [SKIP][46] ([Intel XE#373]) +2 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-1/igt@[email protected]
* igt@kms_chamelium_hpd@hdmi-hpd:
- shard-dg2-set2: NOTRUN -> [SKIP][47] ([Intel XE#373]) +4 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-434/igt@[email protected]
* igt@kms_chamelium_hpd@hdmi-hpd-fast:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#2252]) +2 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_content_protection@atomic-dpms:
- shard-dg2-set2: NOTRUN -> [FAIL][49] ([Intel XE#1178]) +4 other tests fail
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-463/igt@[email protected]
* igt@kms_content_protection@atomic@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][50] ([Intel XE#1178])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-4/igt@kms_content_protection@[email protected]
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-dg2-set2: NOTRUN -> [SKIP][51] ([Intel XE#307])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-435/igt@[email protected]
* igt@kms_content_protection@legacy:
- shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#2341])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_content_protection@uevent@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][53] ([Intel XE#1188])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-8/igt@kms_content_protection@[email protected]
* igt@kms_cursor_crc@cursor-offscreen-32x32:
- shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#1424])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-5/igt@[email protected]
* igt@kms_cursor_crc@cursor-rapid-movement-128x42:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#2320]) +2 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@[email protected]
* igt@kms_cursor_crc@cursor-rapid-movement-512x512:
- shard-dg2-set2: NOTRUN -> [SKIP][56] ([Intel XE#308])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@[email protected]
* igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
- shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#2291])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
- shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#309])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-1/igt@[email protected]
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
- shard-adlp: NOTRUN -> [SKIP][59] ([Intel XE#309]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-8/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-bmg: [PASS][60] -> [FAIL][61] ([Intel XE#4633])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-3/igt@[email protected]
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-3/igt@[email protected]
* igt@kms_dp_aux_dev:
- shard-bmg: [PASS][62] -> [SKIP][63] ([Intel XE#3009])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-1/igt@kms_dp_aux_dev.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@kms_dp_aux_dev.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#4354])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-4/igt@[email protected]
* igt@kms_dp_link_training@uhbr-sst:
- shard-adlp: NOTRUN -> [SKIP][65] ([Intel XE#4356])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-4/igt@[email protected]
* igt@kms_dsc@dsc-with-output-formats:
- shard-lnl: NOTRUN -> [SKIP][66] ([Intel XE#2244])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-5/igt@[email protected]
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats:
- shard-dg2-set2: NOTRUN -> [SKIP][67] ([Intel XE#4422])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-434/igt@[email protected]
* igt@kms_flip@2x-dpms-vs-vblank-race:
- shard-lnl: NOTRUN -> [SKIP][68] ([Intel XE#1421]) +2 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-3/igt@[email protected]
* igt@kms_flip@2x-flip-vs-blocking-wf-vblank:
- shard-adlp: NOTRUN -> [SKIP][69] ([Intel XE#310]) +1 other test skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-2/igt@[email protected]
- shard-bmg: [PASS][70] -> [SKIP][71] ([Intel XE#2316]) +3 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-4/igt@[email protected]
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank@b-edp1:
- shard-lnl: [PASS][72] -> [FAIL][73] ([Intel XE#301]) +2 other tests fail
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-3/igt@kms_flip@[email protected]
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_flip@[email protected]
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [PASS][74] -> [FAIL][75] ([Intel XE#301] / [Intel XE#3149]) +2 other tests fail
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-3/igt@kms_flip@[email protected]
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_flip@[email protected]
* igt@kms_flip@plain-flip-fb-recreate-interruptible:
- shard-bmg: [PASS][76] -> [FAIL][77] ([Intel XE#5416])
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@[email protected]
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@[email protected]
* igt@kms_flip@plain-flip-fb-recreate-interruptible@a-dp2:
- shard-bmg: NOTRUN -> [FAIL][78] ([Intel XE#5408])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@kms_flip@[email protected]
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#1401]) +2 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][80] ([Intel XE#2293]) +4 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#2380]) +1 other test skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][82] ([Intel XE#2293] / [Intel XE#2380]) +4 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#1401] / [Intel XE#1745]) +2 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#2311]) +13 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-adlp: NOTRUN -> [DMESG-FAIL][85] ([Intel XE#4543]) +1 other test dmesg-fail
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-8/igt@[email protected]
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#5390]) +9 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#656]) +5 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
- shard-dg2-set2: NOTRUN -> [SKIP][88] ([Intel XE#651]) +13 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-adlp: NOTRUN -> [SKIP][89] ([Intel XE#651]) +4 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-9/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#651]) +1 other test skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move:
- shard-adlp: NOTRUN -> [SKIP][91] ([Intel XE#656]) +9 other tests skip
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-3/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
- shard-bmg: NOTRUN -> [SKIP][92] ([Intel XE#2313]) +14 other tests skip
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc:
- shard-adlp: NOTRUN -> [SKIP][93] ([Intel XE#653]) +2 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-8/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][94] ([Intel XE#653]) +23 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
- shard-bmg: NOTRUN -> [SKIP][95] ([Intel XE#2312]) +1 other test skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_hdr@static-toggle-dpms:
- shard-bmg: [PASS][96] -> [SKIP][97] ([Intel XE#1503])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-4/igt@[email protected]
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@kms_invalid_mode@clock-too-high@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#1450]) +1 other test skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-7/igt@kms_invalid_mode@[email protected]
* igt@kms_invalid_mode@clock-too-high@pipe-c-edp-1:
- shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#1450] / [Intel XE#2568]) +1 other test skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-7/igt@kms_invalid_mode@[email protected]
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-lnl: NOTRUN -> [SKIP][100] ([Intel XE#2925])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-4/igt@[email protected]
* igt@kms_joiner@invalid-modeset-force-big-joiner:
- shard-adlp: NOTRUN -> [SKIP][101] ([Intel XE#3012])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-4/igt@[email protected]
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][102] ([Intel XE#2927])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@[email protected]
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][103] ([Intel XE#4090])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-4/igt@[email protected]
- shard-dg2-set2: NOTRUN -> [SKIP][104] ([Intel XE#2925])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@[email protected]
* igt@kms_plane_multiple@2x-tiling-y:
- shard-dg2-set2: NOTRUN -> [SKIP][105] ([Intel XE#5021])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-463/igt@[email protected]
* igt@kms_pm_dc@dc6-psr:
- shard-lnl: [PASS][106] -> [FAIL][107] ([Intel XE#718])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-4/igt@[email protected]
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@[email protected]
- shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#2392])
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@[email protected]
* igt@kms_pm_lpsp@kms-lpsp:
- shard-bmg: NOTRUN -> [SKIP][109] ([Intel XE#2499])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-3/igt@[email protected]
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][110] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@[email protected]
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-adlp: NOTRUN -> [SKIP][111] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
- shard-lnl: NOTRUN -> [SKIP][112] ([Intel XE#1406] / [Intel XE#2893] / [Intel XE#4608])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-5/igt@[email protected]
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][113] ([Intel XE#1406] / [Intel XE#4608]) +1 other test skip
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf@pipe-b-edp-1.html
* igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][114] ([Intel XE#1406] / [Intel XE#2893])
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-8/igt@[email protected]
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][115] ([Intel XE#1406] / [Intel XE#1489]) +5 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr@fbc-psr2-sprite-plane-move:
- shard-dg2-set2: NOTRUN -> [SKIP][116] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +8 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-464/igt@[email protected]
* igt@kms_psr@pr-suspend:
- shard-adlp: NOTRUN -> [SKIP][117] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +3 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-4/igt@[email protected]
* igt@kms_psr@psr2-sprite-blt:
- shard-bmg: NOTRUN -> [SKIP][118] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +5 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-3/igt@[email protected]
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-dg2-set2: NOTRUN -> [SKIP][119] ([Intel XE#1406] / [Intel XE#2939])
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@[email protected]
* igt@kms_rotation_crc@primary-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][120] ([Intel XE#3414] / [Intel XE#3904]) +1 other test skip
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-3/igt@[email protected]
* igt@kms_rotation_crc@sprite-rotation-270:
- shard-dg2-set2: NOTRUN -> [SKIP][121] ([Intel XE#3414])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@[email protected]
* igt@kms_scaling_modes@scaling-mode-full-aspect:
- shard-dg2-set2: NOTRUN -> [SKIP][122] ([Intel XE#455]) +7 other tests skip
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-464/igt@[email protected]
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg2-set2: NOTRUN -> [SKIP][123] ([Intel XE#362])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-463/igt@[email protected]
* igt@kms_tv_load_detect@load-detect:
- shard-dg2-set2: NOTRUN -> [SKIP][124] ([Intel XE#330])
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@[email protected]
- shard-bmg: NOTRUN -> [SKIP][125] ([Intel XE#2450])
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-8/igt@[email protected]
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [PASS][126] -> [FAIL][127] ([Intel XE#4459]) +1 other test fail
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-8/igt@kms_vrr@[email protected]
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@kms_vrr@[email protected]
* igt@kms_vrr@max-min:
- shard-adlp: NOTRUN -> [SKIP][128] ([Intel XE#455]) +7 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-6/igt@[email protected]
* igt@kms_vrr@negative-basic:
- shard-bmg: [PASS][129] -> [SKIP][130] ([Intel XE#1499])
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-2/igt@[email protected]
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-lnl: NOTRUN -> [SKIP][131] ([Intel XE#1091] / [Intel XE#2849])
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-5/igt@[email protected]
* igt@xe_ccs@block-copy-compressed-inc-dimension:
- shard-adlp: NOTRUN -> [SKIP][132] ([Intel XE#455] / [Intel XE#488] / [Intel XE#5607])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-6/igt@[email protected]
* igt@xe_compute_preempt@compute-preempt-many:
- shard-dg2-set2: NOTRUN -> [FAIL][133] ([Intel XE#5890]) +1 other test fail
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@[email protected]
* igt@xe_eudebug@basic-vm-access-faultable:
- shard-adlp: NOTRUN -> [SKIP][134] ([Intel XE#4837] / [Intel XE#5565]) +5 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-3/igt@[email protected]
* igt@xe_eudebug@multiple-sessions:
- shard-lnl: NOTRUN -> [SKIP][135] ([Intel XE#4837]) +2 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@[email protected]
* igt@xe_eudebug_online@interrupt-all-set-breakpoint-faultable:
- shard-bmg: NOTRUN -> [SKIP][136] ([Intel XE#4837]) +6 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-8/igt@[email protected]
* igt@xe_eudebug_online@interrupt-other:
- shard-dg2-set2: NOTRUN -> [SKIP][137] ([Intel XE#4837]) +6 other tests skip
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@[email protected]
* igt@xe_evict@evict-beng-large-multi-vm:
- shard-adlp: NOTRUN -> [SKIP][138] ([Intel XE#261] / [Intel XE#5564])
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-4/igt@[email protected]
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][139] ([Intel XE#2322]) +4 other tests skip
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate.html
* igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
- shard-dg2-set2: [PASS][140] -> [SKIP][141] ([Intel XE#1392]) +7 other tests skip
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-436/igt@[email protected]
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@[email protected]
* igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind:
- shard-adlp: NOTRUN -> [SKIP][142] ([Intel XE#1392] / [Intel XE#5575]) +1 other test skip
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-2/igt@[email protected]
- shard-lnl: NOTRUN -> [SKIP][143] ([Intel XE#1392]) +1 other test skip
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-3/igt@[email protected]
* igt@xe_exec_basic@multigpu-once-rebind:
- shard-dg2-set2: NOTRUN -> [SKIP][144] ([Intel XE#1392])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-432/igt@[email protected]
* igt@xe_exec_fault_mode@many-bindexecqueue-rebind:
- shard-adlp: NOTRUN -> [SKIP][145] ([Intel XE#288] / [Intel XE#5561]) +3 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-1/igt@[email protected]
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-imm:
- shard-dg2-set2: NOTRUN -> [SKIP][146] ([Intel XE#288]) +12 other tests skip
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-463/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-imm.html
* igt@xe_exec_reset@parallel-gt-reset:
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][147] ([Intel XE#3876])
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@[email protected]
* igt@xe_exec_system_allocator@many-stride-mmap-huge-nomemset:
- shard-lnl: NOTRUN -> [SKIP][148] ([Intel XE#4943]) +6 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-5/igt@[email protected]
* igt@xe_exec_system_allocator@threads-many-large-execqueues-malloc-mlock-nomemset:
- shard-dg2-set2: NOTRUN -> [SKIP][149] ([Intel XE#4915]) +167 other tests skip
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@xe_exec_system_allocator@threads-many-large-execqueues-malloc-mlock-nomemset.html
* igt@xe_exec_system_allocator@threads-many-stride-mmap-free-race-nomemset:
- shard-adlp: NOTRUN -> [SKIP][150] ([Intel XE#4915]) +68 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-9/igt@xe_exec_system_allocator@threads-many-stride-mmap-free-race-nomemset.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge-nomemset:
- shard-bmg: NOTRUN -> [SKIP][151] ([Intel XE#4943]) +9 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-8/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-new-huge-nomemset.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-dg2-set2: NOTRUN -> [ABORT][152] ([Intel XE#4917])
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-464/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
* igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind:
- shard-dg2-set2: [PASS][153] -> [ABORT][154] ([Intel XE#4847] / [Intel XE#5732])
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-435/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-435/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
* igt@xe_live_ktest@xe_bo:
- shard-adlp: NOTRUN -> [SKIP][155] ([Intel XE#2229] / [Intel XE#455]) +1 other test skip
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-3/igt@xe_live_ktest@xe_bo.html
* igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
- shard-adlp: NOTRUN -> [SKIP][156] ([Intel XE#2229])
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-3/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html
* igt@xe_mmap@small-bar:
- shard-bmg: NOTRUN -> [SKIP][157] ([Intel XE#586])
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-5/igt@[email protected]
- shard-dg2-set2: NOTRUN -> [SKIP][158] ([Intel XE#512])
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@[email protected]
* igt@xe_oa@buffer-size:
- shard-dg2-set2: NOTRUN -> [SKIP][159] ([Intel XE#6032]) +1 other test skip
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@[email protected]
* igt@xe_oa@invalid-oa-format-id:
- shard-dg2-set2: NOTRUN -> [SKIP][160] ([Intel XE#3573]) +3 other tests skip
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-466/igt@[email protected]
* igt@xe_oa@privileged-forked-access-vaddr:
- shard-adlp: NOTRUN -> [SKIP][161] ([Intel XE#3573]) +1 other test skip
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-4/igt@[email protected]
* igt@xe_pat@pat-index-xelpg:
- shard-adlp: NOTRUN -> [SKIP][162] ([Intel XE#979])
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-4/igt@[email protected]
* igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p:
- shard-dg2-set2: NOTRUN -> [FAIL][163] ([Intel XE#1173])
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-463/igt@xe_peer2peer@[email protected]
* igt@xe_pm@d3cold-basic-exec:
- shard-lnl: NOTRUN -> [SKIP][164] ([Intel XE#2284] / [Intel XE#366])
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@[email protected]
* igt@xe_pm@d3cold-i2c:
- shard-dg2-set2: NOTRUN -> [SKIP][165] ([Intel XE#5694])
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-435/igt@[email protected]
* igt@xe_pm@d3cold-multiple-execs:
- shard-dg2-set2: NOTRUN -> [SKIP][166] ([Intel XE#2284] / [Intel XE#366])
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@[email protected]
* igt@xe_pm@s2idle-basic-exec:
- shard-lnl: [PASS][167] -> [ABORT][168] ([Intel XE#4847])
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-2/igt@[email protected]
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-7/igt@[email protected]
* igt@xe_pm@s3-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][169] ([Intel XE#2284])
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-3/igt@[email protected]
* igt@xe_query@multigpu-query-engines:
- shard-dg2-set2: NOTRUN -> [SKIP][170] ([Intel XE#944]) +1 other test skip
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@[email protected]
- shard-lnl: NOTRUN -> [SKIP][171] ([Intel XE#944])
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-4/igt@[email protected]
* igt@xe_query@multigpu-query-invalid-extension:
- shard-adlp: NOTRUN -> [SKIP][172] ([Intel XE#944]) +1 other test skip
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-9/igt@[email protected]
* igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
- shard-bmg: NOTRUN -> [SKIP][173] ([Intel XE#944]) +2 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-5/igt@[email protected]
* igt@xe_render_copy@render-stress-4-copies:
- shard-dg2-set2: NOTRUN -> [SKIP][174] ([Intel XE#4814]) +1 other test skip
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-433/igt@[email protected]
* igt@xe_sriov_flr@flr-vf1-clear:
- shard-dg2-set2: NOTRUN -> [SKIP][175] ([Intel XE#3342])
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-434/igt@[email protected]
- shard-lnl: NOTRUN -> [SKIP][176] ([Intel XE#3342])
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-8/igt@[email protected]
#### Possible fixes ####
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-adlp: [DMESG-FAIL][177] ([Intel XE#4543]) -> [PASS][178] +7 other tests pass
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-2/igt@[email protected]
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-3/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-4:
- shard-dg2-set2: [INCOMPLETE][179] ([Intel XE#3862]) -> [PASS][180] +1 other test pass
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-433/igt@kms_ccs@[email protected]
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-433/igt@kms_ccs@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
- shard-dg2-set2: [INCOMPLETE][181] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) -> [PASS][182]
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-463/igt@kms_ccs@[email protected]
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-433/igt@kms_ccs@[email protected]
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
- shard-bmg: [SKIP][183] ([Intel XE#2291]) -> [PASS][184]
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@[email protected]
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-2/igt@[email protected]
* igt@kms_flip@2x-flip-vs-dpms:
- shard-bmg: [SKIP][185] ([Intel XE#2316]) -> [PASS][186] +3 other tests pass
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@[email protected]
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@[email protected]
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-bmg: [INCOMPLETE][187] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][188] +1 other test pass
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-1/igt@[email protected]
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@[email protected]
* igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
- shard-adlp: [DMESG-WARN][189] ([Intel XE#4543]) -> [PASS][190] +20 other tests pass
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-3/igt@kms_flip@[email protected]
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-9/igt@kms_flip@[email protected]
* igt@kms_hdr@static-swap:
- shard-bmg: [SKIP][191] ([Intel XE#1503]) -> [PASS][192] +2 other tests pass
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@[email protected]
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-8/igt@[email protected]
* igt@kms_invalid_mode@bad-htotal:
- shard-adlp: [DMESG-WARN][193] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][194] +2 other tests pass
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-3/igt@[email protected]
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-1/igt@[email protected]
* igt@kms_plane_cursor@overlay@pipe-a-hdmi-a-6-size-64:
- shard-dg2-set2: [FAIL][195] ([Intel XE#616]) -> [PASS][196] +1 other test pass
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-435/igt@kms_plane_cursor@[email protected]
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@kms_plane_cursor@[email protected]
* igt@kms_plane_scaling@intel-max-src-size:
- shard-bmg: [SKIP][197] ([Intel XE#2685] / [Intel XE#3307]) -> [PASS][198]
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-5/igt@[email protected]
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-2/igt@[email protected]
- shard-dg2-set2: [SKIP][199] ([Intel XE#455]) -> [PASS][200]
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-432/igt@[email protected]
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@[email protected]
* igt@kms_pm_dc@dc5-dpms:
- shard-lnl: [FAIL][201] ([Intel XE#718]) -> [PASS][202] +1 other test pass
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-3/igt@[email protected]
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-2/igt@[email protected]
* igt@kms_setmode@basic:
- shard-bmg: [FAIL][203] ([Intel XE#2883]) -> [PASS][204] +6 other tests pass
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-8/igt@[email protected]
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-2/igt@[email protected]
* igt@kms_setmode@basic@pipe-a-edp-1:
- shard-lnl: [FAIL][205] ([Intel XE#5535]) -> [PASS][206]
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-3/igt@kms_setmode@[email protected]
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-4/igt@kms_setmode@[email protected]
* igt@kms_setmode@basic@pipe-a-hdmi-a-6:
- shard-dg2-set2: [FAIL][207] ([Intel XE#2883]) -> [PASS][208] +2 other tests pass
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-434/igt@kms_setmode@[email protected]
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-436/igt@kms_setmode@[email protected]
* igt@kms_setmode@basic@pipe-b-edp-1:
- shard-lnl: [FAIL][209] ([Intel XE#2883]) -> [PASS][210] +1 other test pass
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-3/igt@kms_setmode@[email protected]
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-4/igt@kms_setmode@[email protected]
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-bmg: [FAIL][211] -> [PASS][212]
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-5/igt@[email protected]
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@[email protected]
* igt@xe_exec_basic@multigpu-once-null:
- shard-dg2-set2: [SKIP][213] ([Intel XE#1392]) -> [PASS][214] +3 other tests pass
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-432/igt@[email protected]
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-463/igt@[email protected]
* {igt@xe_exec_system_allocator@many-stride-malloc-prefetch}:
- shard-bmg: [WARN][215] ([Intel XE#5786]) -> [PASS][216]
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-3/igt@[email protected]
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-2/igt@[email protected]
* {igt@xe_pmu@fn-engine-activity-sched-if-idle@engine-drm_xe_engine_class_video_enhance1}:
- shard-bmg: [DMESG-WARN][217] ([Intel XE#3876]) -> [PASS][218] +1 other test pass
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-7/igt@xe_pmu@fn-engine-activity-sched-if-idle@engine-drm_xe_engine_class_video_enhance1.html
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-2/igt@xe_pmu@fn-engine-activity-sched-if-idle@engine-drm_xe_engine_class_video_enhance1.html
#### Warnings ####
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
- shard-dg2-set2: [INCOMPLETE][219] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) -> [INCOMPLETE][220] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124])
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-463/igt@[email protected]
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-433/igt@[email protected]
* igt@kms_content_protection@atomic:
- shard-bmg: [SKIP][221] ([Intel XE#2341]) -> [FAIL][222] ([Intel XE#1178])
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@[email protected]
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-4/igt@[email protected]
* igt@kms_content_protection@uevent:
- shard-bmg: [SKIP][223] ([Intel XE#2341]) -> [FAIL][224] ([Intel XE#1188])
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@[email protected]
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-8/igt@[email protected]
* igt@kms_flip@flip-vs-suspend:
- shard-adlp: [DMESG-WARN][225] ([Intel XE#4543]) -> [DMESG-WARN][226] ([Intel XE#2953] / [Intel XE#4173])
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-adlp-3/igt@[email protected]
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-adlp-9/igt@[email protected]
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling:
- shard-lnl: [ABORT][227] ([Intel XE#4760]) -> [SKIP][228] ([Intel XE#1397] / [Intel XE#1745])
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: [ABORT][229] ([Intel XE#4760]) -> [SKIP][230] ([Intel XE#1397])
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-blt:
- shard-bmg: [SKIP][231] ([Intel XE#2312]) -> [SKIP][232] ([Intel XE#2311]) +9 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-blt.html
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][233] ([Intel XE#2311]) -> [SKIP][234] ([Intel XE#2312]) +6 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: [SKIP][235] ([Intel XE#2312]) -> [SKIP][236] ([Intel XE#5390]) +2 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][237] ([Intel XE#5390]) -> [SKIP][238] ([Intel XE#2312]) +1 other test skip
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt:
- shard-bmg: [SKIP][239] ([Intel XE#2313]) -> [SKIP][240] ([Intel XE#2312]) +7 other tests skip
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: [SKIP][241] ([Intel XE#2312]) -> [SKIP][242] ([Intel XE#2313]) +11 other tests skip
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_plane_multiple@2x-tiling-yf:
- shard-bmg: [SKIP][243] ([Intel XE#4596]) -> [SKIP][244] ([Intel XE#5021])
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-6/igt@[email protected]
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-7/igt@[email protected]
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-bmg: [ABORT][245] ([Intel XE#4917] / [Intel XE#5466] / [Intel XE#5530]) -> [ABORT][246] ([Intel XE#5466] / [Intel XE#5530])
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-bmg-8/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-bmg-1/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
* igt@xe_peer2peer@read:
- shard-dg2-set2: [SKIP][247] ([Intel XE#1061]) -> [FAIL][248] ([Intel XE#1173])
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97/shard-dg2-432/igt@[email protected]
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/shard-dg2-463/igt@[email protected]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1450
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
[Intel XE#2450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2450
[Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
[Intel XE#2568]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2568
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2685]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2685
[Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
[Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
[Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2883]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2883
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
[Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
[Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
[Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#3009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3009
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3012]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3012
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3124
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
[Intel XE#3307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3307
[Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3442
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
[Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
[Intel XE#3884]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3884
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
[Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4356
[Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
[Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
[Intel XE#4418]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4418
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
[Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
[Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
[Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
[Intel XE#4814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4814
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4847]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4847
[Intel XE#488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/488
[Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
[Intel XE#4917]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4917
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5408
[Intel XE#5416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5416
[Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466
[Intel XE#5503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5503
[Intel XE#5530]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5530
[Intel XE#5535]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5535
[Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
[Intel XE#5564]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5564
[Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5607
[Intel XE#5624]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5624
[Intel XE#5694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5694
[Intel XE#5732]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5732
[Intel XE#5786]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5786
[Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
[Intel XE#5890]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5890
[Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
[Intel XE#6032]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6032
[Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
[Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
Build changes
-------------
* IGT: IGT_8522 -> IGT_8524
* Linux: xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97 -> xe-pw-152882v5
IGT_8522: 8522
IGT_8524: 8524
xe-3677-3345c879b0492f1283042ae6bdecb0e65ec4ff97: 3345c879b0492f1283042ae6bdecb0e65ec4ff97
xe-pw-152882v5: 152882v5
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v5/index.html