Driver-managed exhaustive eviction
Thomas Hellström
maintainerPATCH 14/15 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.
--- 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 | 39 +++--- 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 | 53 +++++++- drivers/gpu/drm/xe/xe_bo.h | 6 +- drivers/gpu/drm/xe/xe_gsc.c | 8 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 24 ++-- 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 | 119 ++++++++++-------- 19 files changed, 252 insertions(+), 171 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_fb_pin.c +15 -24
@@ -102,32 +102,23 @@ 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_novm (xe, tile0, - dpt_size, ~0ull , - ttm_bo_type_kernel, - true, -XE_BO_FLAG_VRAM0 | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment, false); + dpt =xe_bo_create_pin_map_novm (xe, tile0, dpt_size, + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM0 | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , true);else - dpt =xe_bo_create_pin_map_at_novm (xe, tile0, - dpt_size, ~0ull , - ttm_bo_type_kernel, - true, -XE_BO_FLAG_STOLEN | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment, false); + dpt =xe_bo_create_pin_map_novm (xe, tile0, dpt_size, + ttm_bo_type_kernel, +XE_BO_FLAG_STOLEN | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , true);if (IS_ERR (dpt)) - dpt =xe_bo_create_pin_map_at_novm (xe, tile0, - dpt_size, ~0ull , - ttm_bo_type_kernel, - true, -XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment, false); + dpt =xe_bo_create_pin_map_novm (xe, tile0, dpt_size, + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , true);if (IS_ERR (dpt))return PTR_ERR (dpt);
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 +48 -5
72 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_config.c +8 -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,17 @@ 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_map_at_novm (xe, tile, +ALIGN (size,PAGE_SIZE ), +0 , + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX (tile) | +XE_BO_FLAG_NEEDS_2M | +XE_BO_FLAG_PINNED_LATE_RESTORE , + false,0 , false);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_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, 0, err, false) { + 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
@@ -88,6 +88,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
@@ -99,7 +100,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;
@@ -123,9 +124,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;
@@ -589,7 +592,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, 0, err, false) { + 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 +69 -50
204 lines not on this page · raw message
Signature · 1 line
2.50.1
Matthew Brost
maintainerRe: [PATCH 14/15] drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction
Quoted 859 lines · Thomas Hellström
Introduce an
xe_bo_create_pin_map_novm()function that does not take thedrm_execparamenter to simplify the conversion of many callsites.
For the rest, ensure that the samedrm_execcontext that was used for locking the vm is passed down to validation.Use
xe_validation_guard()where appropriate.Signed-off-by Thomas Hellström <[email protected]>--- 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 | 39 +++--- 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 | 53 +++++++- drivers/gpu/drm/xe/xe_bo.h | 6 +- drivers/gpu/drm/xe/xe_gsc.c | 8 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 24 ++-- 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 | 119 ++++++++++-------- 19 files changed, 252 insertions(+), 171 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_fb_pin.c +15
-24@@ -102,32 +102,23 @@ 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_novm (xe, tile0, - dpt_size, ~0ull , - ttm_bo_type_kernel, - true, -XE_BO_FLAG_VRAM0 | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment, false); + dpt =xe_bo_create_pin_map_novm (xe, tile0, dpt_size, + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM0 | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , true);else - dpt =xe_bo_create_pin_map_at_novm (xe, tile0, - dpt_size, ~0ull , - ttm_bo_type_kernel, - true, -XE_BO_FLAG_STOLEN | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment, false); + dpt =xe_bo_create_pin_map_novm (xe, tile0, dpt_size, + ttm_bo_type_kernel, +XE_BO_FLAG_STOLEN | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , true);if (IS_ERR (dpt)) - dpt =xe_bo_create_pin_map_at_novm (xe, tile0, - dpt_size, ~0ull , - ttm_bo_type_kernel, - true, -XE_BO_FLAG_SYSTEM | -XE_BO_FLAG_GGTT | -XE_BO_FLAG_PAGETABLE , - alignment, false); + dpt =xe_bo_create_pin_map_novm (xe, tile0, dpt_size, + ttm_bo_type_kernel, +XE_BO_FLAG_SYSTEM | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETABLE , true);if (IS_ERR (dpt))return PTR_ERR (dpt);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 +48
-5@@ -2343,16 +2343,60 @@ xe_bo_create_pin_map_at_novm(struct xe_device *xe, struct xe_tile *tile,return ret ?ERR_PTR (ret) : bo; } +/** +* xe_bo_create_pin_map() - Create pinned and mapped bo +* @xe: The xe device. +* @tile: The tile to select for migration of this bo, and the tile used for +* @vm: The vm to associate the buffer object with. The vm's resv must be locked +* with the transaction represented by @exec. +* GGTT binding if any. Only to be non-NULL for ttm_bo_type_kernel bos. +* @size: The storage size to use for the bo. +* @type: The TTM buffer object type. +* @flags: XE_BO_FLAG_ flags. +* @exec: The drm_exec transaction to use for exhaustive eviction, and +* previously used for locking @vm's resv. +* +* Create a pinned and mapped bo. The bo will be external and not associated +* with a VM. +* +* Return: The buffer object on success. Negative error pointer on failure. +* In particular, the function may return ERR_PTR(%-EINTR) if @intr was set +* to true on entry. +*/ 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 drm_exec *exec = vm ?xe_vm_validation_exec (vm) :XE_VALIDATION_UNIMPLEMENTED ; - +xe_assert (xe, exec);return xe_bo_create_pin_map_at_aligned (xe, tile, vm, size, ~0ull , type, flags, true,0 , exec); } +/** +* xe_bo_create_pin_map_novm() - Create pinned and mapped bo +* @xe: The xe device. +* @tile: The tile to select for migration of this bo, and the tile used for +* GGTT binding if any. Only to be non-NULL for ttm_bo_type_kernel bos. +* @size: The storage size to use for the bo. +* @type: The TTM buffer object type. +* @flags: XE_BO_FLAG_ flags. +* @intr: Whether to execut any waits for backing store interruptible. +* +* Create a pinned and mapped bo. The bo will be external and not associated +* with a VM. +* +* Return: The buffer object on success. Negative error pointer on failure. +* In particular, the function may return ERR_PTR(%-EINTR) if @intr was set +* to true on entry. +*/ +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) +{ +return xe_bo_create_pin_map_at_novm (xe, tile, size, ~0ull , type, flags, true,0 , intr); +} +static void __xe_bo_unpin_map_no_vm (void *arg) {xe_bo_unpin_map_no_vm (arg);@@ -2365,8 +2409,7 @@ struct xe_bo *xe_managed_bo_create_pin_map(struct xe_device *xe, struct xe_tileint ret;KUNIT_STATIC_STUB_REDIRECT (xe_managed_bo_create_pin_map, xe, tile, size, flags); - - bo =xe_bo_create_pin_map (xe, tile,NULL , size, ttm_bo_type_kernel, flags); + bo =xe_bo_create_pin_map_novm (xe, tile, size, ttm_bo_type_kernel, flags, true);if (IS_ERR (bo))return bo;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_config.c +8
-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,17 @@ 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_map_at_novm (xe, tile, +ALIGN (size,PAGE_SIZE ), +0 , + ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX (tile) | +XE_BO_FLAG_NEEDS_2M | +XE_BO_FLAG_PINNED_LATE_RESTORE , + false,0 , false);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_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, 0, err, false) { + 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@@ -88,6 +88,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 @@ -99,7 +100,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;@@ -123,9 +124,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;@@ -589,7 +592,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, 0, err, false) { + 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 +69
-45@@ -1606,6 +1606,7 @@ static void vm_destroy_work_func(struct work_struct *w);* @xe: xe device. * @tile: tile to set up for. * @vm: vm to set up for. +* @exec: The struct drm_exec object used to lock the vm resv. * * Sets up a pagetable tree with one page-table per level and a single * leaf PTE. All pagetable entries point to the single page-table or, @@ -1615,20 +1616,19 @@ static void vm_destroy_work_func(struct work_struct *w);* Return: 0 on success, negative error code on error. */ static int xe_vm_create_scratch (struct xe_device *xe,struct xe_tile *tile, -struct xe_vm *vm) +struct xe_vm *vm,struct drm_exec *exec) {u8 id = tile->id;int i;for (i =MAX_HUGEPTE_LEVEL ; i < vm->pt_root[id]->level; i++) { - vm->scratch_pt[id][i] =xe_pt_create (vm, tile, i); + vm->scratch_pt[id][i] =xe_pt_create (vm, tile, i, exec);if (IS_ERR (vm->scratch_pt[id][i])) {int err =PTR_ERR (vm->scratch_pt[id][i]); vm->scratch_pt[id][i] =NULL ;return err; } -xe_pt_populate_empty (tile, vm, vm->scratch_pt[id][i]); }@@ -1656,9 +1656,26 @@ static void xe_vm_free_scratch(struct xe_vm *vm) } } +static void xe_vm_pt_destroy (struct xe_vm *vm) +{ +struct xe_tile *tile; +u8 id; + +xe_vm_assert_held (vm); + +for_each_tile (tile, vm->xe, id) { +if (vm->pt_root[id]) { +xe_pt_destroy (vm->pt_root[id], vm->flags,NULL ); + vm->pt_root[id] =NULL ; + } + } +} +struct xe_vm *xe_vm_create (struct xe_device *xe,u32 flags,struct xe_file *xef) {struct drm_gem_object *vm_resv_obj; +struct xe_validation_ctx ctx; +struct drm_exec exec;struct xe_vm *vm;int err, number_tiles =0 ;struct xe_tile *tile;@@ -1745,49 +1762,64 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)drm_gem_object_put (vm_resv_obj); - err =xe_vm_lock (vm, true); -if (err) - goto err_close; + err =0 ; +xe_validation_guard (&ctx, &xe->val, &exec,DRM_EXEC_INTERRUPTIBLE_WAIT , + err, true) { + err =xe_vm_drm_exec_lock (vm, &exec); +drm_exec_retry_on_contention (&exec); -if (IS_DGFX (xe) && xe->info.vram_flags &XE_VRAM_FLAGS_NEED64K ) - vm->flags |=XE_VM_FLAG_64K ; +if (IS_DGFX (xe) && xe->info.vram_flags &XE_VRAM_FLAGS_NEED64K ) + vm->flags |=XE_VM_FLAG_64K ; -for_each_tile (tile, xe, id) { -if (flags &XE_VM_FLAG_MIGRATION && - tile->id !=XE_VM_FLAG_TILE_ID (flags)) -continue ; +for_each_tile (tile, xe, id) { +if (flags &XE_VM_FLAG_MIGRATION && + tile->id !=XE_VM_FLAG_TILE_ID (flags)) +continue ; - vm->pt_root[id] =xe_pt_create (vm, tile, xe->info.vm_max_level); -if (IS_ERR (vm->pt_root[id])) { - err =PTR_ERR (vm->pt_root[id]); - vm->pt_root[id] =NULL ; - goto err_unlock_close; + vm->pt_root[id] =xe_pt_create (vm, tile, xe->info.vm_max_level, + &exec); +if (IS_ERR (vm->pt_root[id])) { + err =PTR_ERR (vm->pt_root[id]); + vm->pt_root[id] =NULL ; +xe_vm_pt_destroy (vm); +drm_exec_retry_on_contention (&exec); +xe_validation_retry_on_oom (&ctx, &err); + goto err_close; + } } - } -if (xe_vm_has_scratch (vm)) { +if (xe_vm_has_scratch (vm)) { +for_each_tile (tile, xe, id) { +if (!vm->pt_root[id]) +continue ; + + err =xe_vm_create_scratch (xe, tile, vm, &exec); +if (err) { +xe_vm_free_scratch (vm); +xe_vm_pt_destroy (vm); +drm_exec_retry_on_contention (&exec); +xe_validation_retry_on_oom (&ctx, &err); + goto err_close; + } + } + vm->batch_invalidate_tlb = true; + } + +if (vm->flags &XE_VM_FLAG_LR_MODE ) { +INIT_WORK (&vm->preempt.rebind_work, preempt_rebind_work_func); + vm->batch_invalidate_tlb = false; + } + +/* Fill pt_root after allocating scratch tables */ for_each_tile (tile, xe, id) {if (!vm->pt_root[id])continue ; - err =xe_vm_create_scratch (xe, tile, vm); -if (err) - goto err_unlock_close; +xe_pt_populate_empty (tile, vm, vm->pt_root[id]); } - vm->batch_invalidate_tlb = true; - } - -if (vm->flags &XE_VM_FLAG_LR_MODE ) - vm->batch_invalidate_tlb = false; - -/* Fill pt_root after allocating scratch tables */ -for_each_tile (tile, xe, id) { -if (!vm->pt_root[id]) -continue ; - -xe_pt_populate_empty (tile, vm, vm->pt_root[id]); } -xe_vm_unlock (vm); +if (err) + goto err_close;/* Kernel migration VM shouldn't have a circular loop.. */ if (!(flags &XE_VM_FLAG_MIGRATION )) {@@ -1820,7 +1852,7 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef) &xe->usm.next_asid, GFP_KERNEL);up_write (&xe->usm.lock);if (err <0 ) - goto err_unlock_close; + goto err_close; vm->usm.asid = asid; }@@ -1829,8 +1861,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)return vm; -err_unlock_close: -xe_vm_unlock (vm); err_close:xe_vm_close_and_put (vm);return ERR_PTR (err);@@ -1959,13 +1989,7 @@ void xe_vm_close_and_put(struct xe_vm *vm)* destroy the pagetables immediately. */ xe_vm_free_scratch (vm); - -for_each_tile (tile, xe, id) { -if (vm->pt_root[id]) { -xe_pt_destroy (vm->pt_root[id], vm->flags,NULL ); - vm->pt_root[id] =NULL ; - } - } +xe_vm_pt_destroy (vm);xe_vm_unlock (vm);/*
drivers/gpu/drm/xe/xe_vm.c struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo, · line 3848
Quoted 4 lines
drivers/gpu/drm/xe/xe_vm.c +0
-1@@ -3845,7 +3869,6 @@ 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 ;
You add this earlier in the series and then delete it here, which seems odd. If the intent is to apply a workaround (WA) earlier and finalize it here, that makes sense.
However, deleting it here appears to leave a problematic path in xe_svm.c around xe_vm_range_rebind, where vm->validating._exec may remain unset/stale. I’m surprised CI didn’t catch this—perhaps due to an unbalanced xe_vm_set_validation_exec leaving stale state—or I’m missing something.
Matt
Quoted 24 lines
drivers/gpu/drm/xe/xe_vm.c +0
-4int ret;if (intr)@@ -3853,9 +3876,6 @@ int xe_vm_lock(struct xe_vm *vm, bool intr)else ret =dma_resv_lock (xe_vm_resv (vm),NULL ); -if (!ret) -xe_vm_set_validation_exec (vm, exec); -return ret; }@@ -3867,7 +3887,6 @@ 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)); }Signature · 1 line
2.50.1
Thomas Hellström
maintainerRe: [PATCH 14/15] drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction
Quoted 1,088 lines · Matthew Brost
Quoted 1,087 lines · Thomas Hellström
Introduce an
xe_bo_create_pin_map_novm()function that does not take thedrm_execparamenter to simplify the conversion of many callsites.
For the rest, ensure that the samedrm_execcontext that was used for locking the vm is passed down to validation.Use
xe_validation_guard()where appropriate.Signed-off-by Thomas Hellström <[email protected]>---
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 | 39 +++--- 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 | 53 +++++++- drivers/gpu/drm/xe/xe_bo.h | 6 +- drivers/gpu/drm/xe/xe_gsc.c | 8 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 24 ++--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 | 119 ++++++++++---- ---- 19 files changed, 252 insertions(+), 171 deletions(-)drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-0@@ -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)) {drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1- obj = xe_bo_create_pin_map(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-2- NULL, size, - ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-2- XE_BO_FLAG_STOLEN | - XE_BO_FLAG_GGTT); + obj = xe_bo_create_pin_map_novm(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/intel_fbdev_fb.c +2
-0+ size, + ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+XE_BO_FLAG_STOLEN |
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+ XE_BO_FLAG_GGTT,false);
if (!IS_ERR(obj))
drm_info(&xe->drm, "Allocated fbdev into stolen\n");
elsedrivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-0@@ -54,10 +54,10 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper, }
if (IS_ERR(obj)) {drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1- obj = xe_bo_create_pin_map(xe,
xe_device_get_root_tile(xe), NULL, size,drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1- ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1-XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-1- XE_BO_FLAG_GGTT); + obj = xe_bo_create_pin_map_novm(xe,
xe_device_get_root_tile(xe), size,drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+ ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+XE_BO_FLAG_VRAM_IF _DGFX(xe_device_get_root_tile(xe)) |
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+ XE_BO_FLAG_GGTT,false);
}
if (IS_ERR(obj)) {drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-0@@ -43,11 +43,11 @@ bool intel_dsb_buffer_create(struct intel_crtc *crtc, struct intel_dsb_buffer *d return false;
/* Set scanout flag for WC mapping */drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-1- obj = xe_bo_create_pin_map(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-3- NULL, PAGE_ALIGN(size), - ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-1- XE_BO_FLAG_SCANOUT |
XE_BO_FLAG_GGTT);drivers/gpu/drm/xe/display/xe_dsb_buffer.c +1
-0+ obj = xe_bo_create_pin_map_novm(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/xe_dsb_buffer.c +3
-0+PAGE_ALIGN (size), + ttm_bo_type_kernel, + XE_BO_FLAG_VRAM_IF_DGFX(xe
_device_get_root_tile(xe)) |drivers/gpu/drm/xe/display/xe_dsb_buffer.c +1
-0+ XE_BO_FLAG_SCANOUT |
XE_BO_FLAG_GGTT, false);
if (IS_ERR(obj)) {
kfree(vma);
return false;drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-0@@ -102,32 +102,23 @@ static int __xe_pin_fb_vma_dpt(const structintel_framebuffer *fb, XE_PAGE_SIZE);
if (IS_DGFX(xe))drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- dpt = xe_bo_create_pin_map_at_novm(xe, tile0, - dpt_size,~0ull,
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
ttm_bo_type_kernel,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- true, -
XE_BO_FLAG_VRAM0|drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- XE_BO_FLAG_GGTT|
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
XE_BO_FLAG_PAGETABLE,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- alignment,false);
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ dpt = xe_bo_create_pin_map_novm(xe, tile0,
dpt_size,drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ ttm_bo_type_kernel,
drivers/gpu/drm/xe/display/xe_fb_pin.c +3
-0+XE_BO_FLAG_VRAM0 | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETAB LE, true);
elsedrivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- dpt = xe_bo_create_pin_map_at_novm(xe, tile0, - dpt_size,~0ull,
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
ttm_bo_type_kernel,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- true, -
XE_BO_FLAG_STOLEN|drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- XE_BO_FLAG_GGTT|
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
XE_BO_FLAG_PAGETABLE,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- alignment,false);
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ dpt = xe_bo_create_pin_map_novm(xe, tile0,
dpt_size,drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ ttm_bo_type_kernel,
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+XE_BO_FLAG_STOLEN |
drivers/gpu/drm/xe/display/xe_fb_pin.c +2
-0+XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETAB LE, true);
if (IS_ERR(dpt))drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- dpt = xe_bo_create_pin_map_at_novm(xe, tile0, - dpt_size,~0ull,
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
ttm_bo_type_kernel,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- true, -
XE_BO_FLAG_SYSTEM|drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- XE_BO_FLAG_GGTT|
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
XE_BO_FLAG_PAGETABLE,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- alignment,false);
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ dpt = xe_bo_create_pin_map_novm(xe, tile0,
dpt_size,drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ ttm_bo_type_kernel,
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+XE_BO_FLAG_SYSTEM |
drivers/gpu/drm/xe/display/xe_fb_pin.c +2
-0+XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETAB LE, true);
if (IS_ERR(dpt))
returnPTR_ERR(dpt);drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +0
-0@@ -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 */drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +0
-1- bo = xe_bo_create_pin_map(xe, xe_device_get_root_tile(xe),NULL,
PAGE_SIZE* 2,drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +1
-3- 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,drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +3
-0+ 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 +0
-0@@ -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,drivers/gpu/drm/xe/tests/xe_migrate.c +2
-1- 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;drivers/gpu/drm/xe/tests/xe_migrate.c +0
-0@@ -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,drivers/gpu/drm/xe/tests/xe_migrate.c +2
-1- 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));drivers/gpu/drm/xe/tests/xe_migrate.c +2
-1@@ -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 +0
-0@@ -2343,16 +2343,60 @@ xe_bo_create_pin_map_at_novm(struct xe_device *xe, struct xe_tile *tile, return ret ? ERR_PTR(ret) : bo; }
+/**
+ *xe_bo_create_pin_map()- Create pinned and mapped bo
+ * @xe: The xe device.
+ * @tile: The tile to select for migration of this bo, and the tile used for
+ * @vm: The vm to associate the buffer object with. The vm's resv must be locked
+ * with the transaction represented by @exec.
+ * GGTT binding if any. Only to be non-NULL forttm_bo_type_kernelbos.
+ * @size: The storage size to use for the bo.
+ * @type: The TTM buffer object type.
+ * @flags:XE_BO_FLAG_flags.
+ * @exec: Thedrm_exectransaction to use for exhaustive eviction, and
+ * previously used for locking @vm's resv.
+ *
+ * Create a pinned and mapped bo. The bo will be external and not associated
+ * with a VM.
+ *
+ * Return: The buffer object on success. Negative error pointer on failure.
+ * In particular, the function may returnERR_PTR(%-EINTR)if @intr was set
+ * to true on entry.
+ */
structxe_bo*xe_bo_create_pin_map(structxe_device*xe, structxe_tile*tile,
structxe_vm*vm,size_tsize,drivers/gpu/drm/xe/xe_bo.c +0
-1- enum ttm_bo_type type, u32flags)
drivers/gpu/drm/xe/xe_bo.c +1
-0+ enum ttm_bo_type type, u32flags,
drivers/gpu/drm/xe/xe_bo.c +1
-0+ struct drm_exec *exec){
drivers/gpu/drm/xe/xe_bo.c +0
-1- struct drm_exec *exec = vm ? xe_vm_validation_exec(vm) :
XE_VALIDATION_UNIMPLEMENTED;drivers/gpu/drm/xe/xe_bo.c +1
-1- +xe_assert (xe, exec);return xe_bo_create_pin_map_at_aligned(xe, tile, vm, size, ~0ull, type, flags,
true, 0, exec); }
+/**
+ *xe_bo_create_pin_map_novm()- Create pinned and mapped bo
+ * @xe: The xe device.
+ * @tile: The tile to select for migration of this bo, and the tile used for
+ * GGTT binding if any. Only to be non-NULL forttm_bo_type_kernelbos.
+ * @size: The storage size to use for the bo.
+ * @type: The TTM buffer object type.
+ * @flags:XE_BO_FLAG_flags.
+ * @intr: Whether to execut any waits for backing store interruptible.
+ *
+ * Create a pinned and mapped bo. The bo will be external and not associated
+ * with a VM.
+ *
+ * Return: The buffer object on success. Negative error pointer on failure.
+ * In particular, the function may returnERR_PTR(%-EINTR)if @intr was set
+ * to true on entry.
+ */
+structxe_bo*xe_bo_create_pin_map_novm(structxe_device*xe, structxe_tile*tile,drivers/gpu/drm/xe/xe_bo.c +1
-0+size_t size, enum
ttm_bo_typetype, u32 flags,drivers/gpu/drm/xe/xe_bo.c +3
-0+ bool intr) +{ + return xe_bo_create_pin_map_at_novm(xe, tile, size, ~0ull,type, flags, true, 0, intr);
drivers/gpu/drm/xe/xe_bo.c +2
-0+} +static void
__xe_bo_unpin_map_no_vm(void *arg)
{
xe_bo_unpin_map_no_vm(arg);drivers/gpu/drm/xe/xe_bo.c +0
-0@@ -2365,8 +2409,7 @@ struct xe_bo *xe_managed_bo_create_pin_map(struct xe_device *xe, struct xe_tile int ret;
KUNIT_STATIC_STUB_REDIRECT(xe_managed_bo_create_pin_map, xe, tile, size, flags);drivers/gpu/drm/xe/xe_bo.c +0
-2- - bo = xe_bo_create_pin_map(xe, tile, NULL, size,
ttm_bo_type_kernel, flags);drivers/gpu/drm/xe/xe_bo.c +1
-0+ bo = xe_bo_create_pin_map_novm(xe, tile, size,
ttm_bo_type_kernel, flags, true);
if (IS_ERR(bo))
return bo;drivers/gpu/drm/xe/xe_bo.h +0
-0@@ -108,7 +108,11 @@ struct xe_bo *xe_bo_create_user(struct
xe_device*xe, structxe_vm*vm,size_ts
u16cpu_caching, u32 flags, structdrm_exec*exec);
structxe_bo*xe_bo_create_pin_map(structxe_device*xe, structxe_tile*tile,
structxe_vm*vm,size_tsize,drivers/gpu/drm/xe/xe_bo.h +0
-1- enum ttm_bo_type type, u32flags);
drivers/gpu/drm/xe/xe_bo.h +1
-0+ enum ttm_bo_type type, u32flags,
drivers/gpu/drm/xe/xe_bo.h +2
-0+ struct drm_exec *exec); +struct xe_bo *xe_bo_create_pin_map_novm(struct xe_device *xe,struct
xe_tile*tile,drivers/gpu/drm/xe/xe_bo.h +1
-0+size_t size, enum
ttm_bo_typetype, u32 flags,drivers/gpu/drm/xe/xe_bo.h +1
-0+ bool intr);struct
xe_bo*
xe_bo_create_pin_map_at_novm(structxe_device*xe, structxe_tile*tile,
size_tsize, u64 offset, enumttm_bo_typetype,drivers/gpu/drm/xe/xe_gsc.c +0
-0@@ -136,10 +136,10 @@ static int query_compatibility_version(struct xe_gsc *gsc) u64 ggtt_offset; int err;drivers/gpu/drm/xe/xe_gsc.c +0
-1- bo = xe_bo_create_pin_map(xe, tile, NULL, GSC_VER_PKT_SZ *2,
drivers/gpu/drm/xe/xe_gsc.c +1
-3- 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,
drivers/gpu/drm/xe/xe_gsc.c +3
-0+ 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");
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-0@@ -1452,7 +1452,6 @@ static bool pf_release_vf_config_lmem(struct
xe_gt*gt, structxe_gt_sriov_confi
static intpf_provision_vf_lmem(struct xe_gt *gt, unsigned int vfid, u64 size)
{
structxe_gt_sriov_config*config =pf_pick_vf_config(gt, vfid);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-1-struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;struct
xe_device*xe =gt_to_xe(gt);
structxe_tile*tile =gt_to_tile(gt);
structxe_bo*bo;drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-0@@ -1479,24 +1478,17 @@ 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);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +5
-8- 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_map_at_novm(xe, tile, + ALIGN(size, PAGE_SIZE), + 0, + ttm_bo_type_kernel, +
XE_BO_FLAG_VRAM_IF_DGFX(tile)|drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +2
-0+ XE_BO_FLAG_NEEDS_2M | +
XE_BO_FLAG_PINNED_LATE_RESTORE,drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +1
-0+ false, 0, false);if (
IS_ERR(bo))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-7- 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_gt_sriov_pf_migration.c +0
-0@@ -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));drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +6
-6- 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))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +0
-0@@ -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));drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +6
-6- 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))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-0@@ -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;drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- metadata_bo = xe_bo_create_pin_map(gt_to_xe(gt), tile,NULL,
PAGE_ALIGN(metadata_size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- ttm_bo_type_kernel,
XE_BO_FLAG_SYSTEM|drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- XE_BO_FLAG_GGTT |
XE_BO_FLAG_GGTT_INVALIDATE);drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ metadata_bo = xe_bo_create_pin_map_novm(gt_to_xe(gt),tile,
PAGE_ALIGN(metadata_size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ ttm_bo_type_kernel,
XE_BO_FLAG_SYSTEM|drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ XE_BO_FLAG_GGTT |
XE_BO_FLAG_GGTT_INVALIDATE,drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ false);
if (IS_ERR(metadata_bo))
returnPTR_ERR(metadata_bo);drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- bo = xe_bo_create_pin_map(gt_to_xe(gt), tile, NULL,
PAGE_ALIGN(size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- ttm_bo_type_kernel,
XE_BO_FLAG_VRAM_IF_DGFX(tile)|drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- XE_BO_FLAG_GGTT |
XE_BO_FLAG_GGTT_INVALIDATE);drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ bo = xe_bo_create_pin_map_novm(gt_to_xe(gt), tile,
PAGE_ALIGN(size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ ttm_bo_type_kernel,
XE_BO_FLAG_VRAM_IF_DGFX(tile)|drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ 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 +0
-0@@ -67,12 +67,12 @@ static struct xe_lmtt_pt *lmtt_pt_alloc(struct
xe_lmtt*lmtt, unsigned int level
goto out;
}drivers/gpu/drm/xe/xe_lmtt.c +0
-1- bo = xe_bo_create_pin_map(lmtt_to_xe(lmtt),
lmtt_to_tile(lmtt), NULL,drivers/gpu/drm/xe/xe_lmtt.c +0
-1- PAGE_ALIGN(lmtt->ops-Quoted 1 line
lmtt_pte_size(level)*drivers/gpu/drm/xe/xe_lmtt.c +0
-1- lmtt->ops-Quoted 1 line
lmtt_pte_num(level)),drivers/gpu/drm/xe/xe_lmtt.c +0
-2- ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX(lmtt_to_tile(lmtt)) |
drivers/gpu/drm/xe/xe_lmtt.c +1
-1- XE_BO_FLAG_NEEDS_64K); + bo = xe_bo_create_pin_map_novm(lmtt_to_xe(lmtt),
lmtt_to_tile(lmtt),drivers/gpu/drm/xe/xe_lmtt.c +1
-0+ PAGE_ALIGN(lmtt->ops-Quoted 1 line
lmtt_pte_size(level)*drivers/gpu/drm/xe/xe_lmtt.c +1
-0+ lmtt->ops-Quoted 1 line
lmtt_pte_num(level)),drivers/gpu/drm/xe/xe_lmtt.c +2
-0+ ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX(lmtt_to_tile(lmtt)) |
drivers/gpu/drm/xe/xe_lmtt.c +1
-0+ XE_BO_FLAG_NEEDS_64K,false);
if (IS_ERR(bo)) {
err =PTR_ERR(bo);
gotoout_free_pt;drivers/gpu/drm/xe/xe_lrc.c +0
-0@@ -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;drivers/gpu/drm/xe/xe_lrc.c +4
-3- 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))
returnPTR_ERR(lrc->bo);drivers/gpu/drm/xe/xe_migrate.c +1
-0@@ -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"drivers/gpu/drm/xe/xe_migrate.c +0
-0@@ -173,7 +174,7 @@ static void xe_migrate_program_identity(struct xe_device *xe, struct xe_vm *vm, }
static int xe_migrate_prepare_vm(structxe_tile*tile, structxe_migrate*m,drivers/gpu/drm/xe/xe_migrate.c +1
-1- struct xe_vm *vm) + struct xe_vm *vm, struct drm_exec*exec)
{
structxe_device*xe =tile_to_xe(tile);
u16pat_index= xe->pat.idx[XE_CACHE_WB];drivers/gpu/drm/xe/xe_migrate.c +0
-0@@ -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)|drivers/gpu/drm/xe/xe_migrate.c +1
-1- XE_BO_FLAG_PAGETABLE); + XE_BO_FLAG_PAGETABLE, exec);if (
IS_ERR(bo))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_migrate.c +2
-0@@ -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;drivers/gpu/drm/xe/xe_migrate.c +0
-0@@ -413,11 +416,16 @@ int xe_migrate_init(struct xe_migrate *m) if (IS_ERR(vm)) return PTR_ERR(vm);drivers/gpu/drm/xe/xe_migrate.c +2
-3-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,0 , err, false){
drivers/gpu/drm/xe/xe_migrate.c +6
-0+ 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)
drivers/gpu/drm/xe/xe_migrate.c +1
-1- goto err_out; +return err;
if (xe->info.has_usm) {
structxe_hw_engine*hwe =
xe_gt_hw_engine(primary_gt,drivers/gpu/drm/xe/xe_oa.c +0
-0@@ -883,9 +883,9 @@ static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size) { struct xe_bo *bo;drivers/gpu/drm/xe/xe_oa.c +0
-1- bo = xe_bo_create_pin_map(stream->oa->xe, stream->gt-Quoted 1 line
tile, NULL,
drivers/gpu/drm/xe/xe_oa.c +0
-2- size, ttm_bo_type_kernel, - XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_GGTT);drivers/gpu/drm/xe/xe_oa.c +1
-0+ bo = xe_bo_create_pin_map_novm(stream->oa->xe, stream->gt-Quoted 1 line
tile,
drivers/gpu/drm/xe/xe_oa.c +2
-0+ size, ttm_bo_type_kernel, + XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_GGTT, false);
if (IS_ERR(bo))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_pt.c +1
-0@@ -88,6 +88,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 metadatastructure. Also
* create the corresponding page-table bo, but don't initialize it. If thedrivers/gpu/drm/xe/xe_pt.c +1
-1@@ -99,7 +100,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;drivers/gpu/drm/xe/xe_pt.c +0
-0@@ -123,9 +124,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;drivers/gpu/drm/xe/xe_pt.c +2
-0+ +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,drivers/gpu/drm/xe/xe_pt.c +1
-1- bo_flags); + bo_flags, exec);if (
IS_ERR(bo)) {
err =PTR_ERR(bo);
gotoerr_kfree;drivers/gpu/drm/xe/xe_pt.c +0
-0@@ -589,7 +592,8 @@ xe_pt_stage_bind_entry(struct xe_ptw *parent, pgoff_t offset, if (covers || !*child) { u64 flags = 0;drivers/gpu/drm/xe/xe_pt.c +0
-1- xe_child = xe_pt_create(xe_walk->vm, xe_walk-Quoted 1 line
tile, level - 1);
drivers/gpu/drm/xe/xe_pt.c +1
-0+ xe_child = xe_pt_create(xe_walk->vm, xe_walk-Quoted 1 line
tile, level - 1,
drivers/gpu/drm/xe/xe_pt.c +1
-0+ xe_vm_validation_exec(vm));
if (IS_ERR(xe_child))
returnPTR_ERR(xe_child);drivers/gpu/drm/xe/xe_pt.h +0
-0@@ -10,6 +10,7 @@ #include "xe_pt_types.h"
structdma_fence;
+structdrm_exec;
structxe_bo;
structxe_device;
structxe_exec_queue;drivers/gpu/drm/xe/xe_pt.h +0
-0@@ -29,7 +30,7 @@ struct xe_vma_ops; unsigned int xe_pt_shift(unsigned int level);
structxe_pt*xe_pt_create(structxe_vm*vm, structxe_tile*tile,drivers/gpu/drm/xe/xe_pt.h +1
-1- unsigned int level); + unsigned int level, struct drm_exec*exec);
voidxe_pt_populate_empty(struct xe_tile *tile, struct xe_vm *vm, struct xe_pt *pt);drivers/gpu/drm/xe/xe_pxp_submit.c +0
-0@@ -54,8 +54,9 @@ static int allocate_vcs_execution_resources(struct xe_pxp *pxp) * Each termination is 16 DWORDS, so 4K is enough tocontain a
* termination for each sessions.
*/drivers/gpu/drm/xe/xe_pxp_submit.c +0
-1- bo = xe_bo_create_pin_map(xe, tile, NULL, SZ_4K,
ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_pxp_submit.c +0
-1- XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|XE_BO_FLAG_GGTT);drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ bo = xe_bo_create_pin_map_novm(xe, tile, SZ_4K,
ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|XE_BO_FLAG_GGTT,drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ false);if (
IS_ERR(bo)) {
err =PTR_ERR(bo);
gotoout_queue;drivers/gpu/drm/xe/xe_pxp_submit.c +2
-0@@ -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;drivers/gpu/drm/xe/xe_pxp_submit.c +0
-0@@ -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 */drivers/gpu/drm/xe/xe_pxp_submit.c +0
-2-xe_vm_lock (vm, false); - bo = xe_bo_create_pin_map(xe, tile, vm, PXP_BB_SIZE +
inout_size* 2,drivers/gpu/drm/xe/xe_pxp_submit.c +0
-2- ttm_bo_type_kernel, - XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|XE_BO_FLAG_NEEDS_UC);drivers/gpu/drm/xe/xe_pxp_submit.c +2
-4-xe_vm_unlock (vm); -if (IS_ERR (bo)) { - err =PTR_ERR (bo); - goto vm_out; + +xe_validation_guard (&ctx, &xe->val, &exec,0 , err, false){
drivers/gpu/drm/xe/xe_pxp_submit.c +6
-0+ 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,drivers/gpu/drm/xe/xe_pxp_submit.c +2
-0+ ttm_bo_type_kernel, + XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ XE_BO_FLAG_NEEDS_UC,&exec);
drivers/gpu/drm/xe/xe_pxp_submit.c +6
-0+drm_exec_retry_on_contention (&exec); +if (IS_ERR (bo)) { + err =PTR_ERR (bo); +xe_validation_retry_on_oom (&ctx, &err); +break ; + }}
drivers/gpu/drm/xe/xe_pxp_submit.c +2
-0+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 +1
-0@@ -1606,6 +1606,7 @@ static void vm_destroy_work_func(struct work_struct *w); * @xe: xe device. * @tile: tile to set up for. * @vm: vm to set up for. + * @exec: The struct drm_exec object used to lock the vm resv. * * Sets up a pagetable tree with one page-table per level and asingle
* leaf PTE. All pagetable entries point to the single page-table or,drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1615,20 +1616,19 @@ static void vm_destroy_work_func(structwork_struct *w); * Return: 0 on success, negative error code on error. */ static int xe_vm_create_scratch(struct
xe_device*xe, structxe_tile*tile,drivers/gpu/drm/xe/xe_vm.c +1
-1- struct xe_vm *vm) + struct xe_vm *vm, struct drm_exec*exec)
{
u8 id =tile->id;
int i;
for (i =MAX_HUGEPTE_LEVEL; i < vm->pt_root[id]->level; i++) {drivers/gpu/drm/xe/xe_vm.c +1
-1- vm->scratch_pt[id][i] =xe_pt_create (vm, tile, i); + vm->scratch_pt[id][i] = xe_pt_create(vm, tile, i,exec);
if (IS_ERR(vm->scratch_pt[id][i])) { int err =PTR_ERR(vm->scratch_pt[id][i]);
vm->scratch_pt[id][i] = NULL; return err;
}
-
xe_pt_populate_empty(tile, vm, vm-Quoted 1 line
scratch_pt[id][i]);
}
drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1656,9 +1656,26 @@ static void xe_vm_free_scratch(struct xe_vm *vm) } }drivers/gpu/drm/xe/xe_vm.c +10
-0+static void xe_vm_pt_destroy (struct xe_vm *vm) +{ +struct xe_tile *tile; +u8 id; + +xe_vm_assert_held (vm); + +for_each_tile (tile, vm->xe, id) { +if (vm->pt_root[id]) { + xe_pt_destroy(vm->pt_root[id], vm->flags,NULL);
drivers/gpu/drm/xe/xe_vm.c +5
-0+ vm->pt_root[id] =NULL ; + } + } +} +struct
xe_vm*xe_vm_create(structxe_device*xe, u32 flags, structxe_file*xef)
{
structdrm_gem_object*vm_resv_obj;drivers/gpu/drm/xe/xe_vm.c +2
-0+struct xe_validation_ctx ctx; +struct drm_exec exec;struct
xe_vm*vm;
int err,number_tiles= 0;
structxe_tile*tile;drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1745,49 +1762,64 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
drm_gem_object_put(vm_resv_obj);drivers/gpu/drm/xe/xe_vm.c +2
-3- err =xe_vm_lock (vm, true); -if (err) - goto err_close; + err =0 ; + xe_validation_guard(&ctx, &xe->val, &exec,
DRM_EXEC_INTERRUPTIBLE_WAIT,drivers/gpu/drm/xe/xe_vm.c +3
-0+ err, true) { + err =xe_vm_drm_exec_lock (vm, &exec); +drm_exec_retry_on_contention (&exec);drivers/gpu/drm/xe/xe_vm.c +0
-1- if (IS_DGFX(xe) && xe->info.vram_flags &
XE_VRAM_FLAGS_NEED64K)drivers/gpu/drm/xe/xe_vm.c +1
-1- vm->flags |=XE_VM_FLAG_64K ; + if (IS_DGFX(xe) && xe->info.vram_flags &
XE_VRAM_FLAGS_NEED64K)drivers/gpu/drm/xe/xe_vm.c +1
-0+ vm->flags |=XE_VM_FLAG_64K ;drivers/gpu/drm/xe/xe_vm.c +4
-4-for_each_tile (tile, xe, id) { -if (flags &XE_VM_FLAG_MIGRATION && - tile->id != XE_VM_FLAG_TILE_ID(flags)) -continue ; +for_each_tile (tile, xe, id) { +if (flags &XE_VM_FLAG_MIGRATION && + tile->id != XE_VM_FLAG_TILE_ID(flags)) +continue ;drivers/gpu/drm/xe/xe_vm.c +0
-1- vm->pt_root[id] = xe_pt_create(vm, tile, xe-Quoted 1 line
info.vm_max_level);
drivers/gpu/drm/xe/xe_vm.c +1
-4-if (IS_ERR (vm->pt_root[id])) { - err =PTR_ERR (vm->pt_root[id]); - vm->pt_root[id] =NULL ; - goto err_unlock_close; + vm->pt_root[id] = xe_pt_create(vm, tile,
xe->info.vm_max_level,drivers/gpu/drm/xe/xe_vm.c +6
-0+ &exec); +if (IS_ERR (vm->pt_root[id])) { + err =PTR_ERR (vm->pt_root[id]); + vm->pt_root[id] =NULL ; +xe_vm_pt_destroy (vm); + drm_exec_retry_on_contention(&exec);
drivers/gpu/drm/xe/xe_vm.c +1
-0+ xe_validation_retry_on_oom(&ctx,&err);
drivers/gpu/drm/xe/xe_vm.c +2
-0+ goto err_close; + }}
drivers/gpu/drm/xe/xe_vm.c +0
-1- }drivers/gpu/drm/xe/xe_vm.c +6
-1-if (xe_vm_has_scratch (vm)) { +if (xe_vm_has_scratch (vm)) { +for_each_tile (tile, xe, id) { +if (!vm->pt_root[id]) +continue ; + + err = xe_vm_create_scratch(xe,tile, vm, &exec);
drivers/gpu/drm/xe/xe_vm.c +4
-0+if (err) { +xe_vm_free_scratch (vm); +xe_vm_pt_destroy (vm); + drm_exec_retry_on_contenti
on(&exec);drivers/gpu/drm/xe/xe_vm.c +1
-0+ xe_validation_retry_on_oom(&ctx, &err);
drivers/gpu/drm/xe/xe_vm.c +8
-0+ goto err_close; + } + } + vm->batch_invalidate_tlb = true; + } + +if (vm->flags &XE_VM_FLAG_LR_MODE ) { + INIT_WORK(&vm->preempt.rebind_work,
preempt_rebind_work_func);drivers/gpu/drm/xe/xe_vm.c +4
-0+ vm->batch_invalidate_tlb = false; + } + +/* Fill pt_root after allocating scratch tables */
for_each_tile(tile, xe, id){
if (!vm->pt_root[id])
continue;drivers/gpu/drm/xe/xe_vm.c +1
-3- err =xe_vm_create_scratch (xe, tile, vm); -if (err) - goto err_unlock_close; + xe_pt_populate_empty(tile, vm, vm-Quoted 1 line
pt_root[id]);
}
drivers/gpu/drm/xe/xe_vm.c +0
-12- vm->batch_invalidate_tlb = true; - } - -if (vm->flags &XE_VM_FLAG_LR_MODE ) - vm->batch_invalidate_tlb = false; - -/* Fill pt_root after allocating scratch tables */ -for_each_tile (tile, xe, id) { -if (!vm->pt_root[id]) -continue ; - -xe_pt_populate_empty (tile, vm, vm->pt_root[id]);}
drivers/gpu/drm/xe/xe_vm.c +2
-1-xe_vm_unlock (vm); +if (err) + goto err_close;
/* Kernel migration VM shouldn't have a circular loop.. */ if (!(flags &XE_VM_FLAG_MIGRATION)) {drivers/gpu/drm/xe/xe_vm.c +1
-1@@ -1820,7 +1852,7 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef) &xe->usm.next_asid, GFP_KERNEL); up_write(&xe->usm.lock); if (err < 0) - goto err_unlock_close; + goto err_close;
vm->usm.asid= asid;
}drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1829,8 +1861,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
return vm;drivers/gpu/drm/xe/xe_vm.c +0
-2-err_unlock_close: -xe_vm_unlock (vm);err_close:
xe_vm_close_and_put(vm);
returnERR_PTR(err);drivers/gpu/drm/xe/xe_vm.c +1
-7@@ -1959,13 +1989,7 @@ void xe_vm_close_and_put(struct xe_vm *vm)* destroy the pagetables immediately. */ xe_vm_free_scratch(vm); - -for_each_tile (tile, xe, id) { -if (vm->pt_root[id]) { -xe_pt_destroy (vm->pt_root[id], vm->flags, NULL); - vm->pt_root[id] =NULL ; - } - } +xe_vm_pt_destroy (vm); xe_vm_unlock(vm);
/*drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -3845,7 +3869,6 @@ struct dma_fence *xe_vm_bind_kernel_bo(structxe_vm *vm, struct xe_bo *bo, */ int xe_vm_lock(struct xe_vm *vm, bool intr)
Quoted 8 lines
drivers/gpu/drm/xe/xe_vm.c struct dma_fence *xe_vm_bind_kernel_bo(struct · line 3849
Quoted 2 lines
drivers/gpu/drm/xe/xe_vm.c +0
-1{ -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;You add this earlier in the series and then delete it here, which seems
odd. If the intent is to apply a workaround (WA) earlier and finalize it
here, that makes sense.
Yes, the patch that introduces these identifies all the call-sites where we need a fix-up, and uses lockdep to verify that a validation transaction starting there doesn't violate the dma_resv locking orders.
Most of the series then eliminates these _UNIMPLEMENTED one by one. Of course one could do it in the opposite order to avoid introducing and then eliminating these but I think that would be harder both for the developer and reviewer.
Quoted 8 lines
However, deleting it here appears to leave a problematic path in
xe_svm.caroundxe_vm_range_rebind, wherevm->validating._execmay remain unset/stale. I’m surprised CI didn’t catch this—perhaps due to an
unbalancedxe_vm_set_validation_execleaving stale state—or I’m missing
something.
Yes, you are correct. There was an imbalance and I will fix that.
Thanks,
Thomas
Quoted 27 lines
Matt
Quoted 24 lines
drivers/gpu/drm/xe/xe_vm.c +0
-0int ret;
if (intr)drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -3853,9 +3876,6 @@ int xe_vm_lock(struct xe_vm *vm, bool intr)else
ret =dma_resv_lock(xe_vm_resv(vm), NULL);drivers/gpu/drm/xe/xe_vm.c +0
-3-if (!ret) -xe_vm_set_validation_exec (vm, exec); -return ret;
}drivers/gpu/drm/xe/xe_vm.c +0
-1@@ -3867,7 +3887,6 @@ 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)); }Signature · 1 line
2.50.1
Matthew Brost
maintainerRe: [PATCH 14/15] drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction
Quoted 1,098 lines · Thomas Hellström
Quoted 1,088 lines · Matthew Brost
Quoted 1,087 lines · Thomas Hellström
Introduce an
xe_bo_create_pin_map_novm()function that does not take thedrm_execparamenter to simplify the conversion of many callsites.
For the rest, ensure that the samedrm_execcontext that was used for locking the vm is passed down to validation.Use
xe_validation_guard()where appropriate.Signed-off-by Thomas Hellström <[email protected]>---
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 | 39 +++--- 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 | 53 +++++++- drivers/gpu/drm/xe/xe_bo.h | 6 +- drivers/gpu/drm/xe/xe_gsc.c | 8 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 24 ++--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 | 119 ++++++++++---- ---- 19 files changed, 252 insertions(+), 171 deletions(-)drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-0@@ -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)) {drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1- obj = xe_bo_create_pin_map(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-2- NULL, size, - ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-2- XE_BO_FLAG_STOLEN | - XE_BO_FLAG_GGTT); + obj = xe_bo_create_pin_map_novm(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/intel_fbdev_fb.c +2
-0+ size, + ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+XE_BO_FLAG_STOLEN |
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+ XE_BO_FLAG_GGTT,false);
if (!IS_ERR(obj))
drm_info(&xe->drm, "Allocated fbdev into stolen\n");
elsedrivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-0@@ -54,10 +54,10 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper, }
if (IS_ERR(obj)) {drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1- obj = xe_bo_create_pin_map(xe,
xe_device_get_root_tile(xe), NULL, size,drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1- ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +0
-1-XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-1- XE_BO_FLAG_GGTT); + obj = xe_bo_create_pin_map_novm(xe,
xe_device_get_root_tile(xe), size,drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+ ttm_bo_type_kernel,
XE_BO_FLAG_SCANOUT|drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+XE_BO_FLAG_VRAM_IF _DGFX(xe_device_get_root_tile(xe)) |
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +1
-0+ XE_BO_FLAG_GGTT,false);
}
if (IS_ERR(obj)) {drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-0@@ -43,11 +43,11 @@ bool intel_dsb_buffer_create(struct intel_crtc *crtc, struct intel_dsb_buffer *d return false;
/* Set scanout flag for WC mapping */drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-1- obj = xe_bo_create_pin_map(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-3- NULL, PAGE_ALIGN(size), - ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(xe)) |
drivers/gpu/drm/xe/display/xe_dsb_buffer.c +0
-1- XE_BO_FLAG_SCANOUT |
XE_BO_FLAG_GGTT);drivers/gpu/drm/xe/display/xe_dsb_buffer.c +1
-0+ obj = xe_bo_create_pin_map_novm(xe,
xe_device_get_root_tile(xe),drivers/gpu/drm/xe/display/xe_dsb_buffer.c +3
-0+PAGE_ALIGN (size), + ttm_bo_type_kernel, + XE_BO_FLAG_VRAM_IF_DGFX(xe
_device_get_root_tile(xe)) |drivers/gpu/drm/xe/display/xe_dsb_buffer.c +1
-0+ XE_BO_FLAG_SCANOUT |
XE_BO_FLAG_GGTT, false);
if (IS_ERR(obj)) {
kfree(vma);
return false;drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-0@@ -102,32 +102,23 @@ static int __xe_pin_fb_vma_dpt(const structintel_framebuffer *fb, XE_PAGE_SIZE);
if (IS_DGFX(xe))drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- dpt = xe_bo_create_pin_map_at_novm(xe, tile0, - dpt_size,~0ull,
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
ttm_bo_type_kernel,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- true, -
XE_BO_FLAG_VRAM0|drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- XE_BO_FLAG_GGTT|
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
XE_BO_FLAG_PAGETABLE,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- alignment,false);
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ dpt = xe_bo_create_pin_map_novm(xe, tile0,
dpt_size,drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ ttm_bo_type_kernel,
drivers/gpu/drm/xe/display/xe_fb_pin.c +3
-0+XE_BO_FLAG_VRAM0 | +XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETAB LE, true);
elsedrivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- dpt = xe_bo_create_pin_map_at_novm(xe, tile0, - dpt_size,~0ull,
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
ttm_bo_type_kernel,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- true, -
XE_BO_FLAG_STOLEN|drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- XE_BO_FLAG_GGTT|
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
XE_BO_FLAG_PAGETABLE,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- alignment,false);
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ dpt = xe_bo_create_pin_map_novm(xe, tile0,
dpt_size,drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ ttm_bo_type_kernel,
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+XE_BO_FLAG_STOLEN |
drivers/gpu/drm/xe/display/xe_fb_pin.c +2
-0+XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETAB LE, true);
if (IS_ERR(dpt))drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- dpt = xe_bo_create_pin_map_at_novm(xe, tile0, - dpt_size,~0ull,
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
ttm_bo_type_kernel,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-2- true, -
XE_BO_FLAG_SYSTEM|drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- XE_BO_FLAG_GGTT|
drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1-
XE_BO_FLAG_PAGETABLE,drivers/gpu/drm/xe/display/xe_fb_pin.c +0
-1- alignment,false);
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ dpt = xe_bo_create_pin_map_novm(xe, tile0,
dpt_size,drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+ ttm_bo_type_kernel,
drivers/gpu/drm/xe/display/xe_fb_pin.c +1
-0+XE_BO_FLAG_SYSTEM |
drivers/gpu/drm/xe/display/xe_fb_pin.c +2
-0+XE_BO_FLAG_GGTT | +XE_BO_FLAG_PAGETAB LE, true);
if (IS_ERR(dpt))
returnPTR_ERR(dpt);drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +0
-0@@ -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 */drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +0
-1- bo = xe_bo_create_pin_map(xe, xe_device_get_root_tile(xe),NULL,
PAGE_SIZE* 2,drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +1
-3- 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,drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +3
-0+ 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 +0
-0@@ -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,drivers/gpu/drm/xe/tests/xe_migrate.c +2
-1- 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;drivers/gpu/drm/xe/tests/xe_migrate.c +0
-0@@ -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,drivers/gpu/drm/xe/tests/xe_migrate.c +2
-1- 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));drivers/gpu/drm/xe/tests/xe_migrate.c +2
-1@@ -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 +0
-0@@ -2343,16 +2343,60 @@ xe_bo_create_pin_map_at_novm(struct xe_device *xe, struct xe_tile *tile, return ret ? ERR_PTR(ret) : bo; }
+/**
+ *xe_bo_create_pin_map()- Create pinned and mapped bo
+ * @xe: The xe device.
+ * @tile: The tile to select for migration of this bo, and the tile used for
+ * @vm: The vm to associate the buffer object with. The vm's resv must be locked
+ * with the transaction represented by @exec.
+ * GGTT binding if any. Only to be non-NULL forttm_bo_type_kernelbos.
+ * @size: The storage size to use for the bo.
+ * @type: The TTM buffer object type.
+ * @flags:XE_BO_FLAG_flags.
+ * @exec: Thedrm_exectransaction to use for exhaustive eviction, and
+ * previously used for locking @vm's resv.
+ *
+ * Create a pinned and mapped bo. The bo will be external and not associated
+ * with a VM.
+ *
+ * Return: The buffer object on success. Negative error pointer on failure.
+ * In particular, the function may returnERR_PTR(%-EINTR)if @intr was set
+ * to true on entry.
+ */
structxe_bo*xe_bo_create_pin_map(structxe_device*xe, structxe_tile*tile,
structxe_vm*vm,size_tsize,drivers/gpu/drm/xe/xe_bo.c +0
-1- enum ttm_bo_type type, u32flags)
drivers/gpu/drm/xe/xe_bo.c +1
-0+ enum ttm_bo_type type, u32flags,
drivers/gpu/drm/xe/xe_bo.c +1
-0+ struct drm_exec *exec){
drivers/gpu/drm/xe/xe_bo.c +0
-1- struct drm_exec *exec = vm ? xe_vm_validation_exec(vm) :
XE_VALIDATION_UNIMPLEMENTED;drivers/gpu/drm/xe/xe_bo.c +1
-1- +xe_assert (xe, exec);return xe_bo_create_pin_map_at_aligned(xe, tile, vm, size, ~0ull, type, flags,
true, 0, exec); }
+/**
+ *xe_bo_create_pin_map_novm()- Create pinned and mapped bo
+ * @xe: The xe device.
+ * @tile: The tile to select for migration of this bo, and the tile used for
+ * GGTT binding if any. Only to be non-NULL forttm_bo_type_kernelbos.
+ * @size: The storage size to use for the bo.
+ * @type: The TTM buffer object type.
+ * @flags:XE_BO_FLAG_flags.
+ * @intr: Whether to execut any waits for backing store interruptible.
+ *
+ * Create a pinned and mapped bo. The bo will be external and not associated
+ * with a VM.
+ *
+ * Return: The buffer object on success. Negative error pointer on failure.
+ * In particular, the function may returnERR_PTR(%-EINTR)if @intr was set
+ * to true on entry.
+ */
+structxe_bo*xe_bo_create_pin_map_novm(structxe_device*xe, structxe_tile*tile,drivers/gpu/drm/xe/xe_bo.c +1
-0+size_t size, enum
ttm_bo_typetype, u32 flags,drivers/gpu/drm/xe/xe_bo.c +3
-0+ bool intr) +{ + return xe_bo_create_pin_map_at_novm(xe, tile, size, ~0ull,type, flags, true, 0, intr);
drivers/gpu/drm/xe/xe_bo.c +2
-0+} +static void
__xe_bo_unpin_map_no_vm(void *arg)
{
xe_bo_unpin_map_no_vm(arg);drivers/gpu/drm/xe/xe_bo.c +0
-0@@ -2365,8 +2409,7 @@ struct xe_bo *xe_managed_bo_create_pin_map(struct xe_device *xe, struct xe_tile int ret;
KUNIT_STATIC_STUB_REDIRECT(xe_managed_bo_create_pin_map, xe, tile, size, flags);drivers/gpu/drm/xe/xe_bo.c +0
-2- - bo = xe_bo_create_pin_map(xe, tile, NULL, size,
ttm_bo_type_kernel, flags);drivers/gpu/drm/xe/xe_bo.c +1
-0+ bo = xe_bo_create_pin_map_novm(xe, tile, size,
ttm_bo_type_kernel, flags, true);
if (IS_ERR(bo))
return bo;drivers/gpu/drm/xe/xe_bo.h +0
-0@@ -108,7 +108,11 @@ struct xe_bo *xe_bo_create_user(struct
xe_device*xe, structxe_vm*vm,size_ts
u16cpu_caching, u32 flags, structdrm_exec*exec);
structxe_bo*xe_bo_create_pin_map(structxe_device*xe, structxe_tile*tile,
structxe_vm*vm,size_tsize,drivers/gpu/drm/xe/xe_bo.h +0
-1- enum ttm_bo_type type, u32flags);
drivers/gpu/drm/xe/xe_bo.h +1
-0+ enum ttm_bo_type type, u32flags,
drivers/gpu/drm/xe/xe_bo.h +2
-0+ struct drm_exec *exec); +struct xe_bo *xe_bo_create_pin_map_novm(struct xe_device *xe,struct
xe_tile*tile,drivers/gpu/drm/xe/xe_bo.h +1
-0+size_t size, enum
ttm_bo_typetype, u32 flags,drivers/gpu/drm/xe/xe_bo.h +1
-0+ bool intr);struct
xe_bo*
xe_bo_create_pin_map_at_novm(structxe_device*xe, structxe_tile*tile,
size_tsize, u64 offset, enumttm_bo_typetype,drivers/gpu/drm/xe/xe_gsc.c +0
-0@@ -136,10 +136,10 @@ static int query_compatibility_version(struct xe_gsc *gsc) u64 ggtt_offset; int err;drivers/gpu/drm/xe/xe_gsc.c +0
-1- bo = xe_bo_create_pin_map(xe, tile, NULL, GSC_VER_PKT_SZ *2,
drivers/gpu/drm/xe/xe_gsc.c +1
-3- 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,
drivers/gpu/drm/xe/xe_gsc.c +3
-0+ 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");
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-0@@ -1452,7 +1452,6 @@ static bool pf_release_vf_config_lmem(struct
xe_gt*gt, structxe_gt_sriov_confi
static intpf_provision_vf_lmem(struct xe_gt *gt, unsigned int vfid, u64 size)
{
structxe_gt_sriov_config*config =pf_pick_vf_config(gt, vfid);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-1-struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;struct
xe_device*xe =gt_to_xe(gt);
structxe_tile*tile =gt_to_tile(gt);
structxe_bo*bo;drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-0@@ -1479,24 +1478,17 @@ 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);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +5
-8- 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_map_at_novm(xe, tile, + ALIGN(size, PAGE_SIZE), + 0, + ttm_bo_type_kernel, +
XE_BO_FLAG_VRAM_IF_DGFX(tile)|drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +2
-0+ XE_BO_FLAG_NEEDS_2M | +
XE_BO_FLAG_PINNED_LATE_RESTORE,drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +1
-0+ false, 0, false);if (
IS_ERR(bo))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c +0
-7- 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_gt_sriov_pf_migration.c +0
-0@@ -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));drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +6
-6- 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))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +0
-0@@ -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));drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c +6
-6- 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))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-0@@ -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;drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- metadata_bo = xe_bo_create_pin_map(gt_to_xe(gt), tile,NULL,
PAGE_ALIGN(metadata_size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- ttm_bo_type_kernel,
XE_BO_FLAG_SYSTEM|drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- XE_BO_FLAG_GGTT |
XE_BO_FLAG_GGTT_INVALIDATE);drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ metadata_bo = xe_bo_create_pin_map_novm(gt_to_xe(gt),tile,
PAGE_ALIGN(metadata_size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ ttm_bo_type_kernel,
XE_BO_FLAG_SYSTEM|drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ XE_BO_FLAG_GGTT |
XE_BO_FLAG_GGTT_INVALIDATE,drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ false);
if (IS_ERR(metadata_bo))
returnPTR_ERR(metadata_bo);drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- bo = xe_bo_create_pin_map(gt_to_xe(gt), tile, NULL,
PAGE_ALIGN(size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- ttm_bo_type_kernel,
XE_BO_FLAG_VRAM_IF_DGFX(tile)|drivers/gpu/drm/xe/xe_guc_engine_activity.c +0
-1- XE_BO_FLAG_GGTT |
XE_BO_FLAG_GGTT_INVALIDATE);drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ bo = xe_bo_create_pin_map_novm(gt_to_xe(gt), tile,
PAGE_ALIGN(size),drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ ttm_bo_type_kernel,
XE_BO_FLAG_VRAM_IF_DGFX(tile)|drivers/gpu/drm/xe/xe_guc_engine_activity.c +1
-0+ 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 +0
-0@@ -67,12 +67,12 @@ static struct xe_lmtt_pt *lmtt_pt_alloc(struct
xe_lmtt*lmtt, unsigned int level
goto out;
}drivers/gpu/drm/xe/xe_lmtt.c +0
-1- bo = xe_bo_create_pin_map(lmtt_to_xe(lmtt),
lmtt_to_tile(lmtt), NULL,drivers/gpu/drm/xe/xe_lmtt.c +0
-1- PAGE_ALIGN(lmtt->ops-Quoted 1 line
lmtt_pte_size(level)*drivers/gpu/drm/xe/xe_lmtt.c +0
-1- lmtt->ops-Quoted 1 line
lmtt_pte_num(level)),drivers/gpu/drm/xe/xe_lmtt.c +0
-2- ttm_bo_type_kernel, -XE_BO_FLAG_VRAM_IF_DGFX(lmtt_to_tile(lmtt)) |
drivers/gpu/drm/xe/xe_lmtt.c +1
-1- XE_BO_FLAG_NEEDS_64K); + bo = xe_bo_create_pin_map_novm(lmtt_to_xe(lmtt),
lmtt_to_tile(lmtt),drivers/gpu/drm/xe/xe_lmtt.c +1
-0+ PAGE_ALIGN(lmtt->ops-Quoted 1 line
lmtt_pte_size(level)*drivers/gpu/drm/xe/xe_lmtt.c +1
-0+ lmtt->ops-Quoted 1 line
lmtt_pte_num(level)),drivers/gpu/drm/xe/xe_lmtt.c +2
-0+ ttm_bo_type_kernel, +XE_BO_FLAG_VRAM_IF_DGFX(lmtt_to_tile(lmtt)) |
drivers/gpu/drm/xe/xe_lmtt.c +1
-0+ XE_BO_FLAG_NEEDS_64K,false);
if (IS_ERR(bo)) {
err =PTR_ERR(bo);
gotoout_free_pt;drivers/gpu/drm/xe/xe_lrc.c +0
-0@@ -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;drivers/gpu/drm/xe/xe_lrc.c +4
-3- 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))
returnPTR_ERR(lrc->bo);drivers/gpu/drm/xe/xe_migrate.c +1
-0@@ -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"drivers/gpu/drm/xe/xe_migrate.c +0
-0@@ -173,7 +174,7 @@ static void xe_migrate_program_identity(struct xe_device *xe, struct xe_vm *vm, }
static int xe_migrate_prepare_vm(structxe_tile*tile, structxe_migrate*m,drivers/gpu/drm/xe/xe_migrate.c +1
-1- struct xe_vm *vm) + struct xe_vm *vm, struct drm_exec*exec)
{
structxe_device*xe =tile_to_xe(tile);
u16pat_index= xe->pat.idx[XE_CACHE_WB];drivers/gpu/drm/xe/xe_migrate.c +0
-0@@ -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)|drivers/gpu/drm/xe/xe_migrate.c +1
-1- XE_BO_FLAG_PAGETABLE); + XE_BO_FLAG_PAGETABLE, exec);if (
IS_ERR(bo))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_migrate.c +2
-0@@ -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;drivers/gpu/drm/xe/xe_migrate.c +0
-0@@ -413,11 +416,16 @@ int xe_migrate_init(struct xe_migrate *m) if (IS_ERR(vm)) return PTR_ERR(vm);drivers/gpu/drm/xe/xe_migrate.c +2
-3-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,0 , err, false){
drivers/gpu/drm/xe/xe_migrate.c +6
-0+ 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)
drivers/gpu/drm/xe/xe_migrate.c +1
-1- goto err_out; +return err;
if (xe->info.has_usm) {
structxe_hw_engine*hwe =
xe_gt_hw_engine(primary_gt,drivers/gpu/drm/xe/xe_oa.c +0
-0@@ -883,9 +883,9 @@ static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size) { struct xe_bo *bo;drivers/gpu/drm/xe/xe_oa.c +0
-1- bo = xe_bo_create_pin_map(stream->oa->xe, stream->gt-Quoted 1 line
tile, NULL,
drivers/gpu/drm/xe/xe_oa.c +0
-2- size, ttm_bo_type_kernel, - XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_GGTT);drivers/gpu/drm/xe/xe_oa.c +1
-0+ bo = xe_bo_create_pin_map_novm(stream->oa->xe, stream->gt-Quoted 1 line
tile,
drivers/gpu/drm/xe/xe_oa.c +2
-0+ size, ttm_bo_type_kernel, + XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_GGTT, false);
if (IS_ERR(bo))
returnPTR_ERR(bo);drivers/gpu/drm/xe/xe_pt.c +1
-0@@ -88,6 +88,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 metadatastructure. Also
* create the corresponding page-table bo, but don't initialize it. If thedrivers/gpu/drm/xe/xe_pt.c +1
-1@@ -99,7 +100,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;drivers/gpu/drm/xe/xe_pt.c +0
-0@@ -123,9 +124,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;drivers/gpu/drm/xe/xe_pt.c +2
-0+ +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,drivers/gpu/drm/xe/xe_pt.c +1
-1- bo_flags); + bo_flags, exec);if (
IS_ERR(bo)) {
err =PTR_ERR(bo);
gotoerr_kfree;drivers/gpu/drm/xe/xe_pt.c +0
-0@@ -589,7 +592,8 @@ xe_pt_stage_bind_entry(struct xe_ptw *parent, pgoff_t offset, if (covers || !*child) { u64 flags = 0;drivers/gpu/drm/xe/xe_pt.c +0
-1- xe_child = xe_pt_create(xe_walk->vm, xe_walk-Quoted 1 line
tile, level - 1);
drivers/gpu/drm/xe/xe_pt.c +1
-0+ xe_child = xe_pt_create(xe_walk->vm, xe_walk-Quoted 1 line
tile, level - 1,
drivers/gpu/drm/xe/xe_pt.c +1
-0+ xe_vm_validation_exec(vm));
if (IS_ERR(xe_child))
returnPTR_ERR(xe_child);drivers/gpu/drm/xe/xe_pt.h +0
-0@@ -10,6 +10,7 @@ #include "xe_pt_types.h"
structdma_fence;
+structdrm_exec;
structxe_bo;
structxe_device;
structxe_exec_queue;drivers/gpu/drm/xe/xe_pt.h +0
-0@@ -29,7 +30,7 @@ struct xe_vma_ops; unsigned int xe_pt_shift(unsigned int level);
structxe_pt*xe_pt_create(structxe_vm*vm, structxe_tile*tile,drivers/gpu/drm/xe/xe_pt.h +1
-1- unsigned int level); + unsigned int level, struct drm_exec*exec);
voidxe_pt_populate_empty(struct xe_tile *tile, struct xe_vm *vm, struct xe_pt *pt);drivers/gpu/drm/xe/xe_pxp_submit.c +0
-0@@ -54,8 +54,9 @@ static int allocate_vcs_execution_resources(struct xe_pxp *pxp) * Each termination is 16 DWORDS, so 4K is enough tocontain a
* termination for each sessions.
*/drivers/gpu/drm/xe/xe_pxp_submit.c +0
-1- bo = xe_bo_create_pin_map(xe, tile, NULL, SZ_4K,
ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_pxp_submit.c +0
-1- XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|XE_BO_FLAG_GGTT);drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ bo = xe_bo_create_pin_map_novm(xe, tile, SZ_4K,
ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|XE_BO_FLAG_GGTT,drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ false);if (
IS_ERR(bo)) {
err =PTR_ERR(bo);
gotoout_queue;drivers/gpu/drm/xe/xe_pxp_submit.c +2
-0@@ -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;drivers/gpu/drm/xe/xe_pxp_submit.c +0
-0@@ -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 */drivers/gpu/drm/xe/xe_pxp_submit.c +0
-2-xe_vm_lock (vm, false); - bo = xe_bo_create_pin_map(xe, tile, vm, PXP_BB_SIZE +
inout_size* 2,drivers/gpu/drm/xe/xe_pxp_submit.c +0
-2- ttm_bo_type_kernel, - XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|XE_BO_FLAG_NEEDS_UC);drivers/gpu/drm/xe/xe_pxp_submit.c +2
-4-xe_vm_unlock (vm); -if (IS_ERR (bo)) { - err =PTR_ERR (bo); - goto vm_out; + +xe_validation_guard (&ctx, &xe->val, &exec,0 , err, false){
drivers/gpu/drm/xe/xe_pxp_submit.c +6
-0+ 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,drivers/gpu/drm/xe/xe_pxp_submit.c +2
-0+ ttm_bo_type_kernel, + XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_PINNED|drivers/gpu/drm/xe/xe_pxp_submit.c +1
-0+ XE_BO_FLAG_NEEDS_UC,&exec);
drivers/gpu/drm/xe/xe_pxp_submit.c +6
-0+drm_exec_retry_on_contention (&exec); +if (IS_ERR (bo)) { + err =PTR_ERR (bo); +xe_validation_retry_on_oom (&ctx, &err); +break ; + }}
drivers/gpu/drm/xe/xe_pxp_submit.c +2
-0+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 +1
-0@@ -1606,6 +1606,7 @@ static void vm_destroy_work_func(struct work_struct *w); * @xe: xe device. * @tile: tile to set up for. * @vm: vm to set up for. + * @exec: The struct drm_exec object used to lock the vm resv. * * Sets up a pagetable tree with one page-table per level and asingle
* leaf PTE. All pagetable entries point to the single page-table or,drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1615,20 +1616,19 @@ static void vm_destroy_work_func(structwork_struct *w); * Return: 0 on success, negative error code on error. */ static int xe_vm_create_scratch(struct
xe_device*xe, structxe_tile*tile,drivers/gpu/drm/xe/xe_vm.c +1
-1- struct xe_vm *vm) + struct xe_vm *vm, struct drm_exec*exec)
{
u8 id =tile->id;
int i;
for (i =MAX_HUGEPTE_LEVEL; i < vm->pt_root[id]->level; i++) {drivers/gpu/drm/xe/xe_vm.c +1
-1- vm->scratch_pt[id][i] =xe_pt_create (vm, tile, i); + vm->scratch_pt[id][i] = xe_pt_create(vm, tile, i,exec);
if (IS_ERR(vm->scratch_pt[id][i])) { int err =PTR_ERR(vm->scratch_pt[id][i]);
vm->scratch_pt[id][i] = NULL; return err;
}
-
xe_pt_populate_empty(tile, vm, vm-Quoted 1 line
scratch_pt[id][i]);
}
drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1656,9 +1656,26 @@ static void xe_vm_free_scratch(struct xe_vm *vm) } }drivers/gpu/drm/xe/xe_vm.c +10
-0+static void xe_vm_pt_destroy (struct xe_vm *vm) +{ +struct xe_tile *tile; +u8 id; + +xe_vm_assert_held (vm); + +for_each_tile (tile, vm->xe, id) { +if (vm->pt_root[id]) { + xe_pt_destroy(vm->pt_root[id], vm->flags,NULL);
drivers/gpu/drm/xe/xe_vm.c +5
-0+ vm->pt_root[id] =NULL ; + } + } +} +struct
xe_vm*xe_vm_create(structxe_device*xe, u32 flags, structxe_file*xef)
{
structdrm_gem_object*vm_resv_obj;drivers/gpu/drm/xe/xe_vm.c +2
-0+struct xe_validation_ctx ctx; +struct drm_exec exec;struct
xe_vm*vm;
int err,number_tiles= 0;
structxe_tile*tile;drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1745,49 +1762,64 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
drm_gem_object_put(vm_resv_obj);drivers/gpu/drm/xe/xe_vm.c +2
-3- err =xe_vm_lock (vm, true); -if (err) - goto err_close; + err =0 ; + xe_validation_guard(&ctx, &xe->val, &exec,
DRM_EXEC_INTERRUPTIBLE_WAIT,drivers/gpu/drm/xe/xe_vm.c +3
-0+ err, true) { + err =xe_vm_drm_exec_lock (vm, &exec); +drm_exec_retry_on_contention (&exec);drivers/gpu/drm/xe/xe_vm.c +0
-1- if (IS_DGFX(xe) && xe->info.vram_flags &
XE_VRAM_FLAGS_NEED64K)drivers/gpu/drm/xe/xe_vm.c +1
-1- vm->flags |=XE_VM_FLAG_64K ; + if (IS_DGFX(xe) && xe->info.vram_flags &
XE_VRAM_FLAGS_NEED64K)drivers/gpu/drm/xe/xe_vm.c +1
-0+ vm->flags |=XE_VM_FLAG_64K ;drivers/gpu/drm/xe/xe_vm.c +4
-4-for_each_tile (tile, xe, id) { -if (flags &XE_VM_FLAG_MIGRATION && - tile->id != XE_VM_FLAG_TILE_ID(flags)) -continue ; +for_each_tile (tile, xe, id) { +if (flags &XE_VM_FLAG_MIGRATION && + tile->id != XE_VM_FLAG_TILE_ID(flags)) +continue ;drivers/gpu/drm/xe/xe_vm.c +0
-1- vm->pt_root[id] = xe_pt_create(vm, tile, xe-Quoted 1 line
info.vm_max_level);
drivers/gpu/drm/xe/xe_vm.c +1
-4-if (IS_ERR (vm->pt_root[id])) { - err =PTR_ERR (vm->pt_root[id]); - vm->pt_root[id] =NULL ; - goto err_unlock_close; + vm->pt_root[id] = xe_pt_create(vm, tile,
xe->info.vm_max_level,drivers/gpu/drm/xe/xe_vm.c +6
-0+ &exec); +if (IS_ERR (vm->pt_root[id])) { + err =PTR_ERR (vm->pt_root[id]); + vm->pt_root[id] =NULL ; +xe_vm_pt_destroy (vm); + drm_exec_retry_on_contention(&exec);
drivers/gpu/drm/xe/xe_vm.c +1
-0+ xe_validation_retry_on_oom(&ctx,&err);
drivers/gpu/drm/xe/xe_vm.c +2
-0+ goto err_close; + }}
drivers/gpu/drm/xe/xe_vm.c +0
-1- }drivers/gpu/drm/xe/xe_vm.c +6
-1-if (xe_vm_has_scratch (vm)) { +if (xe_vm_has_scratch (vm)) { +for_each_tile (tile, xe, id) { +if (!vm->pt_root[id]) +continue ; + + err = xe_vm_create_scratch(xe,tile, vm, &exec);
drivers/gpu/drm/xe/xe_vm.c +4
-0+if (err) { +xe_vm_free_scratch (vm); +xe_vm_pt_destroy (vm); + drm_exec_retry_on_contenti
on(&exec);drivers/gpu/drm/xe/xe_vm.c +1
-0+ xe_validation_retry_on_oom(&ctx, &err);
drivers/gpu/drm/xe/xe_vm.c +8
-0+ goto err_close; + } + } + vm->batch_invalidate_tlb = true; + } + +if (vm->flags &XE_VM_FLAG_LR_MODE ) { + INIT_WORK(&vm->preempt.rebind_work,
preempt_rebind_work_func);drivers/gpu/drm/xe/xe_vm.c +4
-0+ vm->batch_invalidate_tlb = false; + } + +/* Fill pt_root after allocating scratch tables */
for_each_tile(tile, xe, id){
if (!vm->pt_root[id])
continue;drivers/gpu/drm/xe/xe_vm.c +1
-3- err =xe_vm_create_scratch (xe, tile, vm); -if (err) - goto err_unlock_close; + xe_pt_populate_empty(tile, vm, vm-Quoted 1 line
pt_root[id]);
}
drivers/gpu/drm/xe/xe_vm.c +0
-12- vm->batch_invalidate_tlb = true; - } - -if (vm->flags &XE_VM_FLAG_LR_MODE ) - vm->batch_invalidate_tlb = false; - -/* Fill pt_root after allocating scratch tables */ -for_each_tile (tile, xe, id) { -if (!vm->pt_root[id]) -continue ; - -xe_pt_populate_empty (tile, vm, vm->pt_root[id]);}
drivers/gpu/drm/xe/xe_vm.c +2
-1-xe_vm_unlock (vm); +if (err) + goto err_close;
/* Kernel migration VM shouldn't have a circular loop.. */ if (!(flags &XE_VM_FLAG_MIGRATION)) {drivers/gpu/drm/xe/xe_vm.c +1
-1@@ -1820,7 +1852,7 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef) &xe->usm.next_asid, GFP_KERNEL); up_write(&xe->usm.lock); if (err < 0) - goto err_unlock_close; + goto err_close;
vm->usm.asid= asid;
}drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -1829,8 +1861,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags, struct xe_file *xef)
return vm;drivers/gpu/drm/xe/xe_vm.c +0
-2-err_unlock_close: -xe_vm_unlock (vm);err_close:
xe_vm_close_and_put(vm);
returnERR_PTR(err);drivers/gpu/drm/xe/xe_vm.c +1
-7@@ -1959,13 +1989,7 @@ void xe_vm_close_and_put(struct xe_vm *vm)* destroy the pagetables immediately. */ xe_vm_free_scratch(vm); - -for_each_tile (tile, xe, id) { -if (vm->pt_root[id]) { -xe_pt_destroy (vm->pt_root[id], vm->flags, NULL); - vm->pt_root[id] =NULL ; - } - } +xe_vm_pt_destroy (vm); xe_vm_unlock(vm);
/*drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -3845,7 +3869,6 @@ struct dma_fence *xe_vm_bind_kernel_bo(structxe_vm *vm, struct xe_bo *bo, */ int xe_vm_lock(struct xe_vm *vm, bool intr)Quoted 8 lines
drivers/gpu/drm/xe/xe_vm.c struct dma_fence *xe_vm_bind_kernel_bo(struct · line 3849
Quoted 2 lines
drivers/gpu/drm/xe/xe_vm.c +0
-1{ -struct drm_exec *exec =XE_VALIDATION_UNIMPLEMENTED ;You add this earlier in the series and then delete it here, which seems
odd. If the intent is to apply a workaround (WA) earlier and finalize it
here, that makes sense.
Quoted 9 lines
Yes, the patch that introduces these identifies all the call-sites where we need a fix-up, and uses lockdep to verify that a validation transaction starting there doesn't violate the
dma_resvlocking orders.Most of the series then eliminates these
_UNIMPLEMENTEDone by one. Of course one could do it in the opposite order to avoid introducing and then eliminating these but I think that would be harder both for the developer and reviewer.
Fine with the ordering, just wanted to make sure I was understanding why this was done.
Quoted 11 lines
Quoted 8 lines
However, deleting it here appears to leave a problematic path in
xe_svm.caroundxe_vm_range_rebind, wherevm->validating._execmay remain unset/stale. I’m surprised CI didn’t catch this—perhaps due to an
unbalancedxe_vm_set_validation_execleaving stale state—or I’m missing
something.Yes, you are correct. There was an imbalance and I will fix that.
+1
Matt
Quoted 31 lines
Thanks,
ThomasQuoted 27 lines
Matt
Quoted 24 lines
drivers/gpu/drm/xe/xe_vm.c +0
-0int ret;
if (intr)drivers/gpu/drm/xe/xe_vm.c +0
-0@@ -3853,9 +3876,6 @@ int xe_vm_lock(struct xe_vm *vm, bool intr)else
ret =dma_resv_lock(xe_vm_resv(vm), NULL);drivers/gpu/drm/xe/xe_vm.c +0
-3-if (!ret) -xe_vm_set_validation_exec (vm, exec); -return ret;
}drivers/gpu/drm/xe/xe_vm.c +0
-1@@ -3867,7 +3887,6 @@ 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)); }Signature · 1 line
2.50.1
Thomas Hellström
maintainerPATCH 15/15 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.
--- drivers/gpu/drm/xe/xe_bo.c | 205 +++++++++++++++++++------------------ 1 file changed, 108 insertions(+), 97 deletions(-)
drivers/gpu/drm/xe/xe_bo.c +108 -97
@@ -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, 0, ret, true) { + 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; }
@@ -1215,99 +1219,106 @@ int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo)int xe_bo_evict_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 = bo->backup_obj;bool backup_created = false;bool unmap = false;int ret =0 ; -xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, 0, ret, true) { + 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 ; - goto out_unlock_bo; - } +if (WARN_ON (!bo->ttm.resource)) { + ret = -EINVAL ; +break ; + } -if (WARN_ON (!xe_bo_is_pinned (bo))) { - ret = -EINVAL ; - goto out_unlock_bo; - } +if (WARN_ON (!xe_bo_is_pinned (bo))) { + ret = -EINVAL ; +break ; + } -if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ; -if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; +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)) { - ret =PTR_ERR (backup); - 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)) { +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; } - 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; - -if (bo->tile) - migrate = bo->tile->migrate; -else - migrate =mem_type_to_migrate (xe, bo->ttm.resource->mem_type); +if (xe_bo_is_user (bo) || (bo->flags &XE_BO_FLAG_PINNED_LATE_RESTORE )) { +struct xe_migrate *migrate; +struct dma_fence *fence; - ret =dma_resv_reserve_fences (bo->ttm.base.resv,1 ); -if (ret) - goto out_backup; +if (bo->tile) + migrate = bo->tile->migrate; +else + migrate =mem_type_to_migrate (xe, bo->ttm.resource->mem_type); - ret =dma_resv_reserve_fences (backup->ttm.base.resv,1 ); -if (ret) - goto out_backup; + ret =dma_resv_reserve_fences (bo->ttm.base.resv,1 ); +if (ret) + goto out_backup; - fence =xe_migrate_copy (migrate, bo, backup, bo->ttm.resource, - backup->ttm.resource, false); -if (IS_ERR (fence)) { - ret =PTR_ERR (fence); - goto out_backup; - } + ret =dma_resv_reserve_fences (backup->ttm.base.resv,1 ); +if (ret) + goto out_backup; -dma_resv_add_fence (bo->ttm.base.resv, fence, -DMA_RESV_USAGE_KERNEL ); -dma_resv_add_fence (backup->ttm.base.resv, fence, -DMA_RESV_USAGE_KERNEL ); -dma_fence_put (fence); - }else { - ret =xe_bo_vmap (backup); -if (ret) - goto out_backup; + fence =xe_migrate_copy (migrate, bo, backup, bo->ttm.resource, + backup->ttm.resource, false); +if (IS_ERR (fence)) { + ret =PTR_ERR (fence); + goto out_backup; + } -if (iosys_map_is_null (&bo->vmap)) { - ret =xe_bo_vmap (bo); +dma_resv_add_fence (bo->ttm.base.resv, fence, +DMA_RESV_USAGE_KERNEL ); +dma_resv_add_fence (backup->ttm.base.resv, fence, +DMA_RESV_USAGE_KERNEL ); +dma_fence_put (fence); + }else { + ret =xe_bo_vmap (backup);if (ret) goto out_backup; - unmap = true; - } -xe_map_memcpy_from (xe, backup->vmap.vaddr, &bo->vmap,0 , -xe_bo_size (bo)); - } +if (iosys_map_is_null (&bo->vmap)) { + ret =xe_bo_vmap (bo); +if (ret) + goto out_vunmap; + unmap = true; + } -if (!bo->backup_obj) - bo->backup_obj = backup; +xe_map_memcpy_from (xe, backup->vmap.vaddr, &bo->vmap,0 , +xe_bo_size (bo)); + } +if (!bo->backup_obj) + bo->backup_obj = backup; +out_vunmap: +xe_bo_vunmap (backup); out_backup: -xe_bo_vunmap (backup); -if (ret && backup_created) -xe_bo_put (backup); -out_unlock_bo: -if (unmap) -xe_bo_vunmap (bo); -xe_bo_unlock (bo); +if (ret && backup_created) +xe_bo_put (backup); +if (unmap) +xe_bo_vunmap (bo); + } +return ret; }
Signature · 1 line
2.50.1
Re: [PATCH 15/15] drm/xe: Convert pinned suspend eviction for exhaustive eviction
Hi,
Quoted 16 lines · Thomas Hellström
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.
Signed-off-by Thomas Hellström <[email protected]>--- drivers/gpu/drm/xe/xe_bo.c | 205 +++++++++++++++++++------------------ 1 file changed, 108 insertions(+), 97 deletions(-)drivers/gpu/drm/xe/xe_bo.c +0
-0@@ -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)
drivers/gpu/drm/xe/xe_bo.c long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo, · line 1147
Quoted 10 lines
drivers/gpu/drm/xe/xe_bo.c +3
-2{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, 0, ret, true) {
Ah, this reminded me of https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4288
Could this help with that? If you could maybe keep the exlusive mode turned on for the entire prepare/unprepare stage, to ensure other execs/validates back off until we are done?
Quoted 240 lines
drivers/gpu/drm/xe/xe_bo.c +105
-95+ 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; }@@ -1215,99 +1219,106 @@ int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo)int xe_bo_evict_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 = bo->backup_obj;bool backup_created = false;bool unmap = false;int ret =0 ; -xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, 0, ret, true) { + 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 ; - goto out_unlock_bo; - } +if (WARN_ON (!bo->ttm.resource)) { + ret = -EINVAL ; +break ; + } -if (WARN_ON (!xe_bo_is_pinned (bo))) { - ret = -EINVAL ; - goto out_unlock_bo; - } +if (WARN_ON (!xe_bo_is_pinned (bo))) { + ret = -EINVAL ; +break ; + } -if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ; -if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; +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)) { - ret =PTR_ERR (backup); - 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)) { +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; } - 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; - -if (bo->tile) - migrate = bo->tile->migrate; -else - migrate =mem_type_to_migrate (xe, bo->ttm.resource->mem_type); +if (xe_bo_is_user (bo) || (bo->flags &XE_BO_FLAG_PINNED_LATE_RESTORE )) { +struct xe_migrate *migrate; +struct dma_fence *fence; - ret =dma_resv_reserve_fences (bo->ttm.base.resv,1 ); -if (ret) - goto out_backup; +if (bo->tile) + migrate = bo->tile->migrate; +else + migrate =mem_type_to_migrate (xe, bo->ttm.resource->mem_type); - ret =dma_resv_reserve_fences (backup->ttm.base.resv,1 ); -if (ret) - goto out_backup; + ret =dma_resv_reserve_fences (bo->ttm.base.resv,1 ); +if (ret) + goto out_backup; - fence =xe_migrate_copy (migrate, bo, backup, bo->ttm.resource, - backup->ttm.resource, false); -if (IS_ERR (fence)) { - ret =PTR_ERR (fence); - goto out_backup; - } + ret =dma_resv_reserve_fences (backup->ttm.base.resv,1 ); +if (ret) + goto out_backup; -dma_resv_add_fence (bo->ttm.base.resv, fence, -DMA_RESV_USAGE_KERNEL ); -dma_resv_add_fence (backup->ttm.base.resv, fence, -DMA_RESV_USAGE_KERNEL ); -dma_fence_put (fence); - }else { - ret =xe_bo_vmap (backup); -if (ret) - goto out_backup; + fence =xe_migrate_copy (migrate, bo, backup, bo->ttm.resource, + backup->ttm.resource, false); +if (IS_ERR (fence)) { + ret =PTR_ERR (fence); + goto out_backup; + } -if (iosys_map_is_null (&bo->vmap)) { - ret =xe_bo_vmap (bo); +dma_resv_add_fence (bo->ttm.base.resv, fence, +DMA_RESV_USAGE_KERNEL ); +dma_resv_add_fence (backup->ttm.base.resv, fence, +DMA_RESV_USAGE_KERNEL ); +dma_fence_put (fence); + }else { + ret =xe_bo_vmap (backup);if (ret) goto out_backup; - unmap = true; - } -xe_map_memcpy_from (xe, backup->vmap.vaddr, &bo->vmap,0 , -xe_bo_size (bo)); - } +if (iosys_map_is_null (&bo->vmap)) { + ret =xe_bo_vmap (bo); +if (ret) + goto out_vunmap; + unmap = true; + } -if (!bo->backup_obj) - bo->backup_obj = backup; +xe_map_memcpy_from (xe, backup->vmap.vaddr, &bo->vmap,0 , +xe_bo_size (bo)); + } +if (!bo->backup_obj) + bo->backup_obj = backup; +out_vunmap: +xe_bo_vunmap (backup); out_backup: -xe_bo_vunmap (backup); -if (ret && backup_created) -xe_bo_put (backup); -out_unlock_bo: -if (unmap) -xe_bo_vunmap (bo); -xe_bo_unlock (bo); +if (ret && backup_created) +xe_bo_put (backup); +if (unmap) +xe_bo_vunmap (bo); + } +return ret; }
Thomas Hellström
maintainerRe: [PATCH 15/15] drm/xe: Convert pinned suspend eviction for exhaustive eviction
Quoted 36 lines · Matthew Auld
Hi,
Quoted 27 lines · Thomas Hellström
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.
Signed-off-by Thomas Hellström <[email protected]>---
drivers/gpu/drm/xe/xe_bo.c| 205 +++++++++++++++++++-------------
-----1 file changed, 108 insertions(+), 97 deletions(-)drivers/gpu/drm/xe/xe_bo.c +2
-1@@ -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;drivers/gpu/drm/xe/xe_bo.c
Quoted 2 lines
drivers/gpu/drm/xe/xe_bo.c +1
-1-xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, 0, ret, true) {Ah, this reminded me of
https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4288
Quoted 3 lines
Could this help with that? If you could maybe keep the exlusive mode turned on for the entire prepare/unprepare stage, to ensure other execs/validates back off until we are done?
I have a fix in the pipe for that, but I reverted it just before sending since the whole suspend / resume stuff needs some interface additions. I'm seeing some false lockdep errors.
Basically xe_validation_guard is set to block on an interruptible struct completion if we're suspending. We can only do this on freezable tasks allowing interruptible waits ATM, otherwise these tasks will block on the completion until freezing time and then never freeze.
Otherwise when freezing the wait is interrupted and an -ERESTARTSYS is returned, and the task will be frozen in the signal delivery code. This part I have verified to work.
This should take care of most validations during suspend, but not the rebind worker. I figure we can handle it as well by using a freezable workqueue and if the worker receives an -EINTR or -ERESTARTSYS it doesn't error but simply requeues itself as newly added work items aren't run until the wqs are thawed. This part I haven't verified, though.
Finally this assumes that all validations under uninterruptible context are too few to cause any problems during suspend.
/Thomas
Quoted 284 lines
Quoted 283 lines
drivers/gpu/drm/xe/xe_bo.c +4
-0+ 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);drivers/gpu/drm/xe/xe_bo.c +2
-1-xe_assert (xe, !bo->backup_obj); +/* +* Since this is called from the PM notifier we might have raced with
drivers/gpu/drm/xe/xe_bo.c +1
-0+* someone unpinning this after we dropped the pinned list lock and
drivers/gpu/drm/xe/xe_bo.c +4
-0+* grabbing the above bo lock. +*/ +if (!xe_bo_is_pinned (bo)) +break ;drivers/gpu/drm/xe/xe_bo.c +0
-2-/* -* Since this is called from the PM notifier we might have raced with
drivers/gpu/drm/xe/xe_bo.c +0
-1-* someone unpinning this after we dropped the pinned list lock and
drivers/gpu/drm/xe/xe_bo.c +2
-4-* grabbing the above bo lock. -*/ -if (!xe_bo_is_pinned (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ;drivers/gpu/drm/xe/xe_bo.c +2
-2-if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) +break ;drivers/gpu/drm/xe/xe_bo.c +1
-2-if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; + backup = xe_bo_init_locked(xe, NULL, NULL, bo-Quoted 1 line
ttm.base.resv, NULL,
xe_bo_size(bo),drivers/gpu/drm/xe/xe_bo.c +1
-0+
DRM_XE_GEM_CPU_CACHING_WB,ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +1
-0+ XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +1
-0+ XE_BO_FLAG_PINNED,&exec);
drivers/gpu/drm/xe/xe_bo.c +6
-0+if (IS_ERR (backup)) { +drm_exec_retry_on_contention (&exec); + ret =PTR_ERR (backup); +xe_validation_retry_on_oom (&ctx, &ret); +break ; + }drivers/gpu/drm/xe/xe_bo.c +0
-1- backup = xe_bo_init_locked(xe, NULL, NULL, bo-Quoted 1 line
ttm.base.resv, NULL,
xe_bo_size(bo),drivers/gpu/drm/xe/xe_bo.c +0
-1- DRM_XE_GEM_CPU_CACHING_WB,
ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +0
-1- XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +1
-4- 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*/drivers/gpu/drm/xe/xe_bo.c +2
-0+ttm_bo_pin (&backup->ttm); + bo->backup_obj = backup;}
drivers/gpu/drm/xe/xe_bo.c +0
-1- backup->parent_obj =xe_bo_get (bo);/* Released by
bo_destroy*/drivers/gpu/drm/xe/xe_bo.c +0
-5-ttm_bo_pin (&backup->ttm); - bo->backup_obj = backup; - -out_unlock_bo: -xe_bo_unlock (bo);return ret;
}drivers/gpu/drm/xe/xe_bo.c +2
-1@@ -1215,99 +1219,106 @@ int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo) int xe_bo_evict_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 = bo->backup_obj; bool backup_created = false; bool unmap = false; int ret = 0;drivers/gpu/drm/xe/xe_bo.c +4
-1-xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, 0, ret, true) { + ret =drm_exec_lock_obj (&exec, &bo->ttm.base); +drm_exec_retry_on_contention (&exec); +xe_assert (xe, !ret);drivers/gpu/drm/xe/xe_bo.c +4
-4-if (WARN_ON (!bo->ttm.resource)) { - ret = -EINVAL ; - goto out_unlock_bo; - } +if (WARN_ON (!bo->ttm.resource)) { + ret = -EINVAL ; +break ; + }drivers/gpu/drm/xe/xe_bo.c +4
-4-if (WARN_ON (!xe_bo_is_pinned (bo))) { - ret = -EINVAL ; - goto out_unlock_bo; - } +if (WARN_ON (!xe_bo_is_pinned (bo))) { + ret = -EINVAL ; +break ; + }drivers/gpu/drm/xe/xe_bo.c +2
-2-if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ;drivers/gpu/drm/xe/xe_bo.c +2
-2-if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; +if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) +break ;drivers/gpu/drm/xe/xe_bo.c +0
-2-if (!backup) { - backup = xe_bo_init_locked(xe, NULL, NULL, bo-Quoted 1 line
ttm.base.resv, NULL,
xe_bo_size(bo),drivers/gpu/drm/xe/xe_bo.c +0
-1-
DRM_XE_GEM_CPU_CACHING_WB,ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +0
-1- XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +0
-1- XE_BO_FLAG_PINNED,exec);
drivers/gpu/drm/xe/xe_bo.c +2
-3-if (IS_ERR (backup)) { - ret =PTR_ERR (backup); - goto out_unlock_bo; +if (!backup) { + backup = xe_bo_init_locked(xe, NULL, NULL,
bo->ttm.base.resv, NULL,drivers/gpu/drm/xe/xe_bo.c +2
-0+ xe_bo_size(bo), +
DRM_XE_GEM_CPU_CACHING_WB,ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +1
-0+
XE_BO_FLAG_SYSTEM|XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +1
-0+
XE_BO_FLAG_PINNED, &exec);drivers/gpu/drm/xe/xe_bo.c +2
-0+if (IS_ERR (backup)) { + drm_exec_retry_on_contention(&exec);
drivers/gpu/drm/xe/xe_bo.c +2
-0+ ret =PTR_ERR (backup); + xe_validation_retry_on_oom(&ctx,&ret);
drivers/gpu/drm/xe/xe_bo.c +3
-0+break ; + } + backup->parent_obj =xe_bo_get (bo);/* Released by
bo_destroy*/drivers/gpu/drm/xe/xe_bo.c +1
-0+ backup_created = true;}
drivers/gpu/drm/xe/xe_bo.c +0
-1- backup->parent_obj =xe_bo_get (bo);/* Released by
bo_destroy*/drivers/gpu/drm/xe/xe_bo.c +0
-2- backup_created = true; - }drivers/gpu/drm/xe/xe_bo.c +0
-1- if (xe_bo_is_user(bo) || (bo->flags &
XE_BO_FLAG_PINNED_LATE_RESTORE)) {drivers/gpu/drm/xe/xe_bo.c +0
-7-struct xe_migrate *migrate; -struct dma_fence *fence; - -if (bo->tile) - migrate = bo->tile->migrate; -else - migrate = mem_type_to_migrate(xe, bo-Quoted 1 line
ttm.resource->mem_type);drivers/gpu/drm/xe/xe_bo.c +1
-0+ if (xe_bo_is_user(bo) || (bo->flags &
XE_BO_FLAG_PINNED_LATE_RESTORE)) {drivers/gpu/drm/xe/xe_bo.c +2
-0+struct xe_migrate *migrate; +struct dma_fence *fence;drivers/gpu/drm/xe/xe_bo.c +0
-1- ret = dma_resv_reserve_fences(bo->ttm.base.resv,1);
drivers/gpu/drm/xe/xe_bo.c +4
-2-if (ret) - goto out_backup; +if (bo->tile) + migrate = bo->tile->migrate; +else + migrate = mem_type_to_migrate(xe,
bo->ttm.resource->mem_type);drivers/gpu/drm/xe/xe_bo.c +0
-1- ret = dma_resv_reserve_fences(backup-Quoted 1 line
ttm.base.resv, 1);
drivers/gpu/drm/xe/xe_bo.c +1
-2-if (ret) - goto out_backup; + ret = dma_resv_reserve_fences(bo-Quoted 1 line
ttm.base.resv, 1);
drivers/gpu/drm/xe/xe_bo.c +2
-0+if (ret) + goto out_backup;drivers/gpu/drm/xe/xe_bo.c +0
-1- fence = xe_migrate_copy(migrate, bo, backup, bo-Quoted 1 line
ttm.resource,
drivers/gpu/drm/xe/xe_bo.c +0
-1- backup->ttm.resource,false);
drivers/gpu/drm/xe/xe_bo.c +1
-4-if (IS_ERR (fence)) { - ret =PTR_ERR (fence); - goto out_backup; - } + ret = dma_resv_reserve_fences(backup-Quoted 1 line
ttm.base.resv, 1);
drivers/gpu/drm/xe/xe_bo.c +2
-0+if (ret) + goto out_backup;drivers/gpu/drm/xe/xe_bo.c +1
-9-dma_resv_add_fence (bo->ttm.base.resv, fence, - DMA_RESV_USAGE_KERNEL); -dma_resv_add_fence (backup->ttm.base.resv, fence, - DMA_RESV_USAGE_KERNEL); -dma_fence_put (fence); - }else { - ret =xe_bo_vmap (backup); -if (ret) - goto out_backup; + fence = xe_migrate_copy(migrate, bo,backup,
bo->ttm.resource,drivers/gpu/drm/xe/xe_bo.c +1
-0+ backup-Quoted 1 line
ttm.resource, false);
drivers/gpu/drm/xe/xe_bo.c +4
-0+if (IS_ERR (fence)) { + ret =PTR_ERR (fence); + goto out_backup; + }drivers/gpu/drm/xe/xe_bo.c +1
-2-if (iosys_map_is_null (&bo->vmap)) { - ret =xe_bo_vmap (bo); + dma_resv_add_fence(bo->ttm.base.resv,fence,
drivers/gpu/drm/xe/xe_bo.c +2
-0+ DMA_RESV_USAGE_KERNEL); + dma_resv_add_fence(backup->ttm.base.resv,fence,
drivers/gpu/drm/xe/xe_bo.c +4
-0+ DMA_RESV_USAGE_KERNEL); +dma_fence_put (fence); + }else { + ret =xe_bo_vmap (backup);if (ret)
gotoout_backup;drivers/gpu/drm/xe/xe_bo.c +0
-2- unmap = true; - }drivers/gpu/drm/xe/xe_bo.c +0
-1- xe_map_memcpy_from(xe, backup->vmap.vaddr, &bo-Quoted 1 line
vmap, 0,
drivers/gpu/drm/xe/xe_bo.c +6
-2- xe_bo_size(bo)); - } +if (iosys_map_is_null (&bo->vmap)) { + ret =xe_bo_vmap (bo); +if (ret) + goto out_vunmap; + unmap = true; + }drivers/gpu/drm/xe/xe_bo.c +1
-2-if (!bo->backup_obj) - bo->backup_obj = backup; + xe_map_memcpy_from(xe, backup->vmap.vaddr,
&bo->vmap, 0,drivers/gpu/drm/xe/xe_bo.c +2
-0+ xe_bo_size(bo)); + }drivers/gpu/drm/xe/xe_bo.c +4
-0+if (!bo->backup_obj) + bo->backup_obj = backup; +out_vunmap: +xe_bo_vunmap (backup);
out_backup:drivers/gpu/drm/xe/xe_bo.c +6
-7-xe_bo_vunmap (backup); -if (ret && backup_created) -xe_bo_put (backup); -out_unlock_bo: -if (unmap) -xe_bo_vunmap (bo); -xe_bo_unlock (bo); +if (ret && backup_created) +xe_bo_put (backup); +if (unmap) +xe_bo_vunmap (bo); + } +return ret;
}
Matthew Brost
maintainerRe: [PATCH 15/15] drm/xe: Convert pinned suspend eviction for exhaustive eviction
In reply to Thomas HellströmQuoted 238 lines · Thomas Hellström
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.
Signed-off-by Thomas Hellström <[email protected]>--- drivers/gpu/drm/xe/xe_bo.c | 205 +++++++++++++++++++------------------ 1 file changed, 108 insertions(+), 97 deletions(-)drivers/gpu/drm/xe/xe_bo.c +95
-88@@ -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, 0, ret, true) { + 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; }@@ -1215,99 +1219,106 @@ int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo)int xe_bo_evict_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 = bo->backup_obj;bool backup_created = false;bool unmap = false;int ret =0 ; -xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, 0, ret, true) { + 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 ; - goto out_unlock_bo; - } +if (WARN_ON (!bo->ttm.resource)) { + ret = -EINVAL ; +break ; + } -if (WARN_ON (!xe_bo_is_pinned (bo))) { - ret = -EINVAL ; - goto out_unlock_bo; - } +if (WARN_ON (!xe_bo_is_pinned (bo))) { + ret = -EINVAL ; +break ; + } -if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ; -if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; +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)) { - ret =PTR_ERR (backup); - 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)) { +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; } - 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; - -if (bo->tile) - migrate = bo->tile->migrate; -else - migrate =mem_type_to_migrate (xe, bo->ttm.resource->mem_type); +if (xe_bo_is_user (bo) || (bo->flags &XE_BO_FLAG_PINNED_LATE_RESTORE )) { +struct xe_migrate *migrate; +struct dma_fence *fence; - ret =dma_resv_reserve_fences (bo->ttm.base.resv,1 ); -if (ret) - goto out_backup; +if (bo->tile) + migrate = bo->tile->migrate; +else + migrate =mem_type_to_migrate (xe, bo->ttm.resource->mem_type); - ret =dma_resv_reserve_fences (backup->ttm.base.resv,1 ); -if (ret) - goto out_backup; + ret =dma_resv_reserve_fences (bo->ttm.base.resv,1 ); +if (ret) + goto out_backup; - fence =xe_migrate_copy (migrate, bo, backup, bo->ttm.resource, - backup->ttm.resource, false); -if (IS_ERR (fence)) { - ret =PTR_ERR (fence); - goto out_backup; - } + ret =dma_resv_reserve_fences (backup->ttm.base.resv,1 ); +if (ret) + goto out_backup; -dma_resv_add_fence (bo->ttm.base.resv, fence, -DMA_RESV_USAGE_KERNEL ); -dma_resv_add_fence (backup->ttm.base.resv, fence, -DMA_RESV_USAGE_KERNEL ); -dma_fence_put (fence); - }else { - ret =xe_bo_vmap (backup); -if (ret) - goto out_backup; + fence =xe_migrate_copy (migrate, bo, backup, bo->ttm.resource, + backup->ttm.resource, false); +if (IS_ERR (fence)) { + ret =PTR_ERR (fence); + goto out_backup; + } -if (iosys_map_is_null (&bo->vmap)) { - ret =xe_bo_vmap (bo); +dma_resv_add_fence (bo->ttm.base.resv, fence, +DMA_RESV_USAGE_KERNEL ); +dma_resv_add_fence (backup->ttm.base.resv, fence, +DMA_RESV_USAGE_KERNEL ); +dma_fence_put (fence); + }else { + ret =xe_bo_vmap (backup);if (ret) goto out_backup; - unmap = true; - } -xe_map_memcpy_from (xe, backup->vmap.vaddr, &bo->vmap,0 , -xe_bo_size (bo)); - } +if (iosys_map_is_null (&bo->vmap)) { + ret =xe_bo_vmap (bo); +if (ret) + goto out_vunmap; + unmap = true; + }
drivers/gpu/drm/xe/xe_bo.c int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo) · line 1313
Quoted 10 lines
drivers/gpu/drm/xe/xe_bo.c +6
-2-if (!bo->backup_obj) - bo->backup_obj = backup; +xe_map_memcpy_from (xe, backup->vmap.vaddr, &bo->vmap,0 , +xe_bo_size (bo)); + } +if (!bo->backup_obj) + bo->backup_obj = backup; +out_vunmap:
I just want to confirm that this is safe. The cleanup.h documentation discourages the use of goto because of scoping issues. I assume that since this label is within the scope of the guard, it is fine.
It might be worth adding a quick note in the validation guard’s kernel-doc mentioning that goto can be dangerous, explaining what is allowed, and perhaps referencing the cleanup.h documentation. I could see this being something developers might trip over.
Patch LGTM, though.
Matt
Quoted 21 lines
drivers/gpu/drm/xe/xe_bo.c +7
-7+xe_bo_vunmap (backup); out_backup: -xe_bo_vunmap (backup); -if (ret && backup_created) -xe_bo_put (backup); -out_unlock_bo: -if (unmap) -xe_bo_vunmap (bo); -xe_bo_unlock (bo); +if (ret && backup_created) +xe_bo_put (backup); +if (unmap) +xe_bo_vunmap (bo); + } +return ret; }Signature · 1 line
2.50.1
Thomas Hellström
maintainerRe: [PATCH 15/15] drm/xe: Convert pinned suspend eviction for exhaustive eviction
Quoted 299 lines · Matthew Brost
Quoted 290 lines · Thomas Hellström
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.
Signed-off-by Thomas Hellström <[email protected]>---
drivers/gpu/drm/xe/xe_bo.c | 205 +++++++++++++++++++--------------
----1 file changed, 108 insertions(+), 97 deletions(-)drivers/gpu/drm/xe/xe_bo.c +2
-1@@ -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;drivers/gpu/drm/xe/xe_bo.c +5
-1-xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, 0, ret, true) { + 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);drivers/gpu/drm/xe/xe_bo.c +2
-1-xe_assert (xe, !bo->backup_obj); +/* +* Since this is called from the PM notifier we might have raced with
drivers/gpu/drm/xe/xe_bo.c +1
-0+* someone unpinning this after we dropped the pinned list lock and
drivers/gpu/drm/xe/xe_bo.c +4
-0+* grabbing the above bo lock. +*/ +if (!xe_bo_is_pinned (bo)) +break ;drivers/gpu/drm/xe/xe_bo.c +0
-2-/* -* Since this is called from the PM notifier we might have raced with
drivers/gpu/drm/xe/xe_bo.c +0
-1-* someone unpinning this after we dropped the pinned list lock and
drivers/gpu/drm/xe/xe_bo.c +2
-4-* grabbing the above bo lock. -*/ -if (!xe_bo_is_pinned (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ;drivers/gpu/drm/xe/xe_bo.c +2
-2-if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) +break ;drivers/gpu/drm/xe/xe_bo.c +1
-2-if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; + backup = xe_bo_init_locked(xe, NULL, NULL, bo-Quoted 1 line
ttm.base.resv, NULL,
xe_bo_size(bo),drivers/gpu/drm/xe/xe_bo.c +1
-0+
DRM_XE_GEM_CPU_CACHING_WB,ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +1
-0+ XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +1
-0+ XE_BO_FLAG_PINNED,&exec);
drivers/gpu/drm/xe/xe_bo.c +6
-0+if (IS_ERR (backup)) { +drm_exec_retry_on_contention (&exec); + ret =PTR_ERR (backup); +xe_validation_retry_on_oom (&ctx, &ret); +break ; + }drivers/gpu/drm/xe/xe_bo.c +0
-1- backup = xe_bo_init_locked(xe, NULL, NULL, bo-Quoted 1 line
ttm.base.resv, NULL,
xe_bo_size(bo),drivers/gpu/drm/xe/xe_bo.c +0
-1- DRM_XE_GEM_CPU_CACHING_WB,
ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +0
-1- XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +1
-4- 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*/drivers/gpu/drm/xe/xe_bo.c +2
-0+ttm_bo_pin (&backup->ttm); + bo->backup_obj = backup;}
drivers/gpu/drm/xe/xe_bo.c +0
-1- backup->parent_obj =xe_bo_get (bo);/* Released by
bo_destroy*/drivers/gpu/drm/xe/xe_bo.c +0
-5-ttm_bo_pin (&backup->ttm); - bo->backup_obj = backup; - -out_unlock_bo: -xe_bo_unlock (bo);return ret;
}drivers/gpu/drm/xe/xe_bo.c +2
-1@@ -1215,99 +1219,106 @@ int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo) int xe_bo_evict_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 = bo->backup_obj; bool backup_created = false; bool unmap = false; int ret = 0;drivers/gpu/drm/xe/xe_bo.c +4
-1-xe_bo_lock (bo, false); + xe_validation_guard(&ctx, &xe->val, &exec, 0, ret, true) { + ret =drm_exec_lock_obj (&exec, &bo->ttm.base); +drm_exec_retry_on_contention (&exec); +xe_assert (xe, !ret);drivers/gpu/drm/xe/xe_bo.c +4
-4-if (WARN_ON (!bo->ttm.resource)) { - ret = -EINVAL ; - goto out_unlock_bo; - } +if (WARN_ON (!bo->ttm.resource)) { + ret = -EINVAL ; +break ; + }drivers/gpu/drm/xe/xe_bo.c +4
-4-if (WARN_ON (!xe_bo_is_pinned (bo))) { - ret = -EINVAL ; - goto out_unlock_bo; - } +if (WARN_ON (!xe_bo_is_pinned (bo))) { + ret = -EINVAL ; +break ; + }drivers/gpu/drm/xe/xe_bo.c +2
-2-if (!xe_bo_is_vram (bo)) - goto out_unlock_bo; +if (!xe_bo_is_vram (bo)) +break ;drivers/gpu/drm/xe/xe_bo.c +2
-2-if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) - goto out_unlock_bo; +if (bo->flags &XE_BO_FLAG_PINNED_NORESTORE ) +break ;drivers/gpu/drm/xe/xe_bo.c +0
-2-if (!backup) { - backup = xe_bo_init_locked(xe, NULL, NULL, bo-Quoted 1 line
ttm.base.resv, NULL,
xe_bo_size(bo),drivers/gpu/drm/xe/xe_bo.c +0
-1-
DRM_XE_GEM_CPU_CACHING_WB,ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +0
-1- XE_BO_FLAG_SYSTEM |
XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +0
-1- XE_BO_FLAG_PINNED,exec);
drivers/gpu/drm/xe/xe_bo.c +2
-3-if (IS_ERR (backup)) { - ret =PTR_ERR (backup); - goto out_unlock_bo; +if (!backup) { + backup = xe_bo_init_locked(xe, NULL, NULL,
bo->ttm.base.resv, NULL,drivers/gpu/drm/xe/xe_bo.c +2
-0+ xe_bo_size(bo), +
DRM_XE_GEM_CPU_CACHING_WB,ttm_bo_type_kernel,drivers/gpu/drm/xe/xe_bo.c +1
-0+
XE_BO_FLAG_SYSTEM|XE_BO_FLAG_NEEDS_CPU_ACCESS|drivers/gpu/drm/xe/xe_bo.c +1
-0+
XE_BO_FLAG_PINNED, &exec);drivers/gpu/drm/xe/xe_bo.c +2
-0+if (IS_ERR (backup)) { + drm_exec_retry_on_contention(&exec);
drivers/gpu/drm/xe/xe_bo.c +2
-0+ ret =PTR_ERR (backup); + xe_validation_retry_on_oom(&ctx,&ret);
drivers/gpu/drm/xe/xe_bo.c +3
-0+break ; + } + backup->parent_obj =xe_bo_get (bo);/* Released by
bo_destroy*/drivers/gpu/drm/xe/xe_bo.c +1
-0+ backup_created = true;}
drivers/gpu/drm/xe/xe_bo.c +0
-1- backup->parent_obj =xe_bo_get (bo);/* Released by
bo_destroy*/drivers/gpu/drm/xe/xe_bo.c +0
-2- backup_created = true; - }drivers/gpu/drm/xe/xe_bo.c +0
-1- if (xe_bo_is_user(bo) || (bo->flags &
XE_BO_FLAG_PINNED_LATE_RESTORE)) {drivers/gpu/drm/xe/xe_bo.c +0
-7-struct xe_migrate *migrate; -struct dma_fence *fence; - -if (bo->tile) - migrate = bo->tile->migrate; -else - migrate = mem_type_to_migrate(xe, bo-Quoted 1 line
ttm.resource->mem_type);drivers/gpu/drm/xe/xe_bo.c +1
-0+ if (xe_bo_is_user(bo) || (bo->flags &
XE_BO_FLAG_PINNED_LATE_RESTORE)) {drivers/gpu/drm/xe/xe_bo.c +2
-0+struct xe_migrate *migrate; +struct dma_fence *fence;drivers/gpu/drm/xe/xe_bo.c +0
-1- ret = dma_resv_reserve_fences(bo->ttm.base.resv,1);
drivers/gpu/drm/xe/xe_bo.c +4
-2-if (ret) - goto out_backup; +if (bo->tile) + migrate = bo->tile->migrate; +else + migrate = mem_type_to_migrate(xe,
bo->ttm.resource->mem_type);drivers/gpu/drm/xe/xe_bo.c +0
-1- ret = dma_resv_reserve_fences(backup-Quoted 1 line
ttm.base.resv, 1);
drivers/gpu/drm/xe/xe_bo.c +1
-2-if (ret) - goto out_backup; + ret = dma_resv_reserve_fences(bo-Quoted 1 line
ttm.base.resv, 1);
drivers/gpu/drm/xe/xe_bo.c +2
-0+if (ret) + goto out_backup;drivers/gpu/drm/xe/xe_bo.c +0
-1- fence = xe_migrate_copy(migrate, bo, backup, bo-Quoted 1 line
ttm.resource,
drivers/gpu/drm/xe/xe_bo.c +0
-1- backup->ttm.resource,false);
drivers/gpu/drm/xe/xe_bo.c +1
-4-if (IS_ERR (fence)) { - ret =PTR_ERR (fence); - goto out_backup; - } + ret = dma_resv_reserve_fences(backup-Quoted 1 line
ttm.base.resv, 1);
drivers/gpu/drm/xe/xe_bo.c +2
-0+if (ret) + goto out_backup;drivers/gpu/drm/xe/xe_bo.c +1
-9-dma_resv_add_fence (bo->ttm.base.resv, fence, - DMA_RESV_USAGE_KERNEL); -dma_resv_add_fence (backup->ttm.base.resv, fence, - DMA_RESV_USAGE_KERNEL); -dma_fence_put (fence); - }else { - ret =xe_bo_vmap (backup); -if (ret) - goto out_backup; + fence = xe_migrate_copy(migrate, bo,backup,
bo->ttm.resource,drivers/gpu/drm/xe/xe_bo.c +1
-0+ backup-Quoted 1 line
ttm.resource, false);
drivers/gpu/drm/xe/xe_bo.c +4
-0+if (IS_ERR (fence)) { + ret =PTR_ERR (fence); + goto out_backup; + }drivers/gpu/drm/xe/xe_bo.c +1
-2-if (iosys_map_is_null (&bo->vmap)) { - ret =xe_bo_vmap (bo); + dma_resv_add_fence(bo->ttm.base.resv,fence,
drivers/gpu/drm/xe/xe_bo.c +2
-0+ DMA_RESV_USAGE_KERNEL); + dma_resv_add_fence(backup->ttm.base.resv,fence,
drivers/gpu/drm/xe/xe_bo.c +4
-0+ DMA_RESV_USAGE_KERNEL); +dma_fence_put (fence); + }else { + ret =xe_bo_vmap (backup);if (ret)
gotoout_backup;drivers/gpu/drm/xe/xe_bo.c +0
-2- unmap = true; - }drivers/gpu/drm/xe/xe_bo.c +0
-1- xe_map_memcpy_from(xe, backup->vmap.vaddr, &bo-Quoted 1 line
vmap, 0,
drivers/gpu/drm/xe/xe_bo.c +6
-2- xe_bo_size(bo)); - } +if (iosys_map_is_null (&bo->vmap)) { + ret =xe_bo_vmap (bo); +if (ret) + goto out_vunmap; + unmap = true; + }drivers/gpu/drm/xe/xe_bo.c +1
-2-if (!bo->backup_obj) - bo->backup_obj = backup; + xe_map_memcpy_from(xe, backup->vmap.vaddr,
&bo->vmap, 0,drivers/gpu/drm/xe/xe_bo.c +2
-0+ xe_bo_size(bo)); + }drivers/gpu/drm/xe/xe_bo.c int xe_bo_notifier_unprepare_pinned(struct xe_bo *bo) · line 1313
Quoted 3 lines
drivers/gpu/drm/xe/xe_bo.c +3
-0+if (!bo->backup_obj) + bo->backup_obj = backup; +out_vunmap:I just want to confirm that this is safe. The
cleanup.hdocumentation discourages the use of goto because of scoping issues. I assume that since this label is within the scope of the guard, it is fine.
Quoted 5 lines
It might be worth adding a quick note in the validation guard’s kernel-doc mentioning that goto can be dangerous, explaining what is allowed, and perhaps referencing the
cleanup.hdocumentation. I could see this being something developers might trip over.
Yes you are correct. I'll avoid the gotos in v2.
/Thomas
Quoted 25 lines
Patch LGTM, though.
Matt
Quoted 21 lines
drivers/gpu/drm/xe/xe_bo.c +1
-0+xe_bo_vunmap (backup);out_backup:
drivers/gpu/drm/xe/xe_bo.c +6
-7-xe_bo_vunmap (backup); -if (ret && backup_created) -xe_bo_put (backup); -out_unlock_bo: -if (unmap) -xe_bo_vunmap (bo); -xe_bo_unlock (bo); +if (ret && backup_created) +xe_bo_put (backup); +if (unmap) +xe_bo_vunmap (bo); + } +return ret;
}Signature · 1 line
2.50.1
Patchwork
CI✗ CI.checkpatch: warning for Driver-managed exhaustive eviction
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction
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 6f9293a391ff3c575bc021f454be5d0a0c076f57
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 4425bbc1f8949d4655e6680ecd3e4dda32c7e69d
Author: Thomas Hellström <[email protected]> Date: Wed Aug 13 12:51:21 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.
+ /mt/dim checkpatch 546fc742f08b8dbd3fa1486933c9b15085e11d13 drm-intel cf30641243aa drm/xe/vm: Don't use a pin the vm_resv during validation5aa304916620 drm/xe/tests/xe_dma_buf: Set the drm_object::dma_buf member 2888a1ff8929 drm/xe/vm: Clear the scratch_pt pointer on error26a7db17e2ec drm/xe: Pass down drm_exec context to validation
-:1117: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #1117:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 1244 lines checkedfab6c1544ca5 drm/xe: Introduce an xe_validation wrapper around drm_exec
-:327: WARNING:MACRO_WITH_FLOW_CONTROL: Macros with flow control statements should be avoided #327: FILE: drivers/gpu/drm/xe/xe_validation.h:129:
+#define xe_validation_retry_on_oom(_ctx, _ret) \
+ do { \
+ if (xe_validation_should_retry(_ctx, _ret)) \
+ goto *__drm_exec_retry_ptr; \
+ } while (0)
-:349: WARNING:TABSTOP: Statements should start on a tabstop #349: FILE: drivers/gpu/drm/xe/xe_validation.h:151:
+ if (!IS_ERR(_T)) xe_validation_ctx_fini(_T);,
-:349: ERROR:SPACING: space required after that ';' (ctx:VxO) #349: FILE: drivers/gpu/drm/xe/xe_validation.h:151:
+ if (!IS_ERR(_T)) xe_validation_ctx_fini(_T);,
^
-:349: ERROR:TRAILING_STATEMENTS: trailing statements should be on next line #349: FILE: drivers/gpu/drm/xe/xe_validation.h:151:
+ if (!IS_ERR(_T)) xe_validation_ctx_fini(_T);,
-:370: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #370: FILE: drivers/gpu/drm/xe/xe_validation.h:172:
+#define xe_validation_guard(_ctx, _val, _exec, _flags, _ret, _excl) \
+ scoped_guard(xe_validation, _ctx, _val, _exec, _flags, _ret, _excl) \
+ 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.
-:370: CHECK:MACRO_ARG_REUSE: Macro argument reuse '_exec' - possible side-effects? #370: FILE: drivers/gpu/drm/xe/xe_validation.h:172:
+#define xe_validation_guard(_ctx, _val, _exec, _flags, _ret, _excl) \
+ scoped_guard(xe_validation, _ctx, _val, _exec, _flags, _ret, _excl) \
+ drm_exec_until_all_locked(_exec)
total: 3 errors, 2 warnings, 1 checks, 328 lines checkedb47d58d9d4a1 drm/xe: Convert xe_bo_create_user() for exhaustive eviction 16e2235dff4f drm/xe: Convert SVM validation for exhaustive eviction 0687b1d5f43c drm/xe: Convert existing drm_exec transactions for exhaustive eviction 1fe2c75f4aa2 drm/xe: Convert the CPU fault handler for exhaustive eviction 70dc7173e90e drm/xe/display: Convert __xe_pin_fb_vma()500867c30229 drm/xe: Convert xe_dma_buf.c for exhaustive eviction 11a5fd486fb7 drm/xe: Rename ___xe_bo_create_locked()e553928c86d4 drm/xe: Convert xe_bo_create_pin_map_at() for exhaustive eviction 12b3df6adabb drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction -:51: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#51: 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, 733 lines checked 4425bbc1f894 drm/xe: Convert pinned suspend eviction for exhaustive eviction
Patchwork
CI✓ CI.KUnit: success for Driver-managed exhaustive eviction
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction
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 [11:54:19] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [11:54:23] 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 [11:54:52] Starting KUnit Kernel (1/1)... [11:54:52] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [11:54:52] ================== guc_buf (11 subtests) =================== [11:54:52] [PASSED] test_smallest [11:54:52] [PASSED] test_largest [11:54:52] [PASSED] test_granular [11:54:52] [PASSED] test_unique [11:54:52] [PASSED] test_overlap [11:54:52] [PASSED] test_reusable [11:54:52] [PASSED] test_too_big [11:54:52] [PASSED] test_flush [11:54:52] [PASSED] test_lookup [11:54:52] [PASSED] test_data [11:54:52] [PASSED] test_class [11:54:52] ===================== [PASSED] guc_buf ===================== [11:54:52] =================== guc_dbm (7 subtests) =================== [11:54:52] [PASSED] test_empty [11:54:52] [PASSED] test_default [11:54:52] ======================== test_size ======================== [11:54:52] [PASSED] 4 [11:54:52] [PASSED] 8 [11:54:52] [PASSED] 32 [11:54:52] [PASSED] 256 [11:54:52] ==================== [PASSED] test_size ==================== [11:54:52] ======================= test_reuse ======================== [11:54:52] [PASSED] 4 [11:54:52] [PASSED] 8 [11:54:52] [PASSED] 32 [11:54:52] [PASSED] 256 [11:54:52] =================== [PASSED] test_reuse ==================== [11:54:52] =================== test_range_overlap ==================== [11:54:52] [PASSED] 4 [11:54:52] [PASSED] 8 [11:54:52] [PASSED] 32 [11:54:52] [PASSED] 256 [11:54:52] =============== [PASSED] test_range_overlap ================ [11:54:52] =================== test_range_compact ==================== [11:54:52] [PASSED] 4 [11:54:52] [PASSED] 8 [11:54:52] [PASSED] 32 [11:54:52] [PASSED] 256 [11:54:52] =============== [PASSED] test_range_compact ================ [11:54:52] ==================== test_range_spare ===================== [11:54:52] [PASSED] 4 [11:54:52] [PASSED] 8 [11:54:52] [PASSED] 32 [11:54:52] [PASSED] 256 [11:54:52] ================ [PASSED] test_range_spare ================= [11:54:52] ===================== [PASSED] guc_dbm ===================== [11:54:52] =================== guc_idm (6 subtests) =================== [11:54:52] [PASSED] bad_init [11:54:52] [PASSED] no_init [11:54:52] [PASSED] init_fini [11:54:52] [PASSED] check_used [11:54:52] [PASSED] check_quota [11:54:52] [PASSED] check_all [11:54:52] ===================== [PASSED] guc_idm ===================== [11:54:52] ================== no_relay (3 subtests) =================== [11:54:52] [PASSED] xe_drops_guc2pf_if_not_ready [11:54:52] [PASSED] xe_drops_guc2vf_if_not_ready [11:54:52] [PASSED] xe_rejects_send_if_not_ready [11:54:52] ==================== [PASSED] no_relay ===================== [11:54:52] ================== pf_relay (14 subtests) ================== [11:54:52] [PASSED] pf_rejects_guc2pf_too_short [11:54:52] [PASSED] pf_rejects_guc2pf_too_long [11:54:52] [PASSED] pf_rejects_guc2pf_no_payload [11:54:52] [PASSED] pf_fails_no_payload [11:54:52] [PASSED] pf_fails_bad_origin [11:54:52] [PASSED] pf_fails_bad_type [11:54:52] [PASSED] pf_txn_reports_error [11:54:52] [PASSED] pf_txn_sends_pf2guc [11:54:52] [PASSED] pf_sends_pf2guc [11:54:52] [SKIPPED] pf_loopback_nop [11:54:52] [SKIPPED] pf_loopback_echo [11:54:52] [SKIPPED] pf_loopback_fail [11:54:52] [SKIPPED] pf_loopback_busy [11:54:52] [SKIPPED] pf_loopback_retry [11:54:52] ==================== [PASSED] pf_relay ===================== [11:54:52] ================== vf_relay (3 subtests) =================== [11:54:52] [PASSED] vf_rejects_guc2vf_too_short [11:54:52] [PASSED] vf_rejects_guc2vf_too_long [11:54:52] [PASSED] vf_rejects_guc2vf_no_payload [11:54:52] ==================== [PASSED] vf_relay ===================== [11:54:52] ===================== lmtt (1 subtest) ===================== [11:54:52] ======================== test_ops ========================= [11:54:52] [PASSED] 2-level [11:54:52] [PASSED] multi-level [11:54:52] ==================== [PASSED] test_ops ===================== [11:54:52] ====================== [PASSED] lmtt ======================= [11:54:52] ================= pf_service (11 subtests) ================= [11:54:52] [PASSED] pf_negotiate_any [11:54:52] [PASSED] pf_negotiate_base_match [11:54:52] [PASSED] pf_negotiate_base_newer [11:54:52] [PASSED] pf_negotiate_base_next [11:54:52] [SKIPPED] pf_negotiate_base_older [11:54:52] [PASSED] pf_negotiate_base_prev [11:54:52] [PASSED] pf_negotiate_latest_match [11:54:52] [PASSED] pf_negotiate_latest_newer [11:54:52] [PASSED] pf_negotiate_latest_next [11:54:52] [SKIPPED] pf_negotiate_latest_older [11:54:52] [SKIPPED] pf_negotiate_latest_prev [11:54:52] =================== [PASSED] pf_service ==================== [11:54:52] =================== xe_mocs (2 subtests) =================== [11:54:52] ================ xe_live_mocs_kernel_kunit ================ [11:54:52] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [11:54:52] ================ xe_live_mocs_reset_kunit ================= [11:54:52] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [11:54:52] ==================== [SKIPPED] xe_mocs ===================== [11:54:52] ================= xe_migrate (2 subtests) ================== [11:54:52] ================= xe_migrate_sanity_kunit ================= [11:54:52] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [11:54:52] ================== xe_validate_ccs_kunit ================== [11:54:52] ============= [SKIPPED] xe_validate_ccs_kunit ============== [11:54:52] =================== [SKIPPED] xe_migrate =================== [11:54:52] ================== xe_dma_buf (1 subtest) ================== [11:54:52] ==================== xe_dma_buf_kunit ===================== [11:54:52] ================ [SKIPPED] xe_dma_buf_kunit ================ [11:54:52] =================== [SKIPPED] xe_dma_buf =================== [11:54:52] ================= xe_bo_shrink (1 subtest) ================= [11:54:52] =================== xe_bo_shrink_kunit ==================== [11:54:52] =============== [SKIPPED] xe_bo_shrink_kunit =============== [11:54:52] ================== [SKIPPED] xe_bo_shrink ================== [11:54:52] ==================== xe_bo (2 subtests) ==================== [11:54:52] ================== xe_ccs_migrate_kunit =================== [11:54:52] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [11:54:52] ==================== xe_bo_evict_kunit ==================== [11:54:52] =============== [SKIPPED] xe_bo_evict_kunit ================ [11:54:52] ===================== [SKIPPED] xe_bo ====================== [11:54:52] ==================== args (11 subtests) ==================== [11:54:52] [PASSED] count_args_test [11:54:52] [PASSED] call_args_example [11:54:52] [PASSED] call_args_test [11:54:52] [PASSED] drop_first_arg_example [11:54:52] [PASSED] drop_first_arg_test [11:54:52] [PASSED] first_arg_example [11:54:52] [PASSED] first_arg_test [11:54:52] [PASSED] last_arg_example [11:54:52] [PASSED] last_arg_test [11:54:52] [PASSED] pick_arg_example [11:54:52] [PASSED] sep_comma_example [11:54:52] ====================== [PASSED] args ======================= [11:54:52] =================== xe_pci (3 subtests) ==================== [11:54:52] ==================== check_graphics_ip ==================== [11:54:52] [PASSED] 12.70 Xe_LPG [11:54:52] [PASSED] 12.71 Xe_LPG [11:54:52] [PASSED] 12.74 Xe_LPG+ [11:54:52] [PASSED] 20.01 Xe2_HPG [11:54:52] [PASSED] 20.02 Xe2_HPG [11:54:52] [PASSED] 20.04 Xe2_LPG [11:54:52] [PASSED] 30.00 Xe3_LPG [11:54:52] [PASSED] 30.01 Xe3_LPG [11:54:52] [PASSED] 30.03 Xe3_LPG [11:54:52] ================ [PASSED] check_graphics_ip ================ [11:54:52] ===================== check_media_ip ====================== [11:54:52] [PASSED] 13.00 Xe_LPM+ [11:54:52] [PASSED] 13.01 Xe2_HPM [11:54:52] [PASSED] 20.00 Xe2_LPM [11:54:52] [PASSED] 30.00 Xe3_LPM [11:54:52] [PASSED] 30.02 Xe3_LPM [11:54:52] ================= [PASSED] check_media_ip ================== [11:54:52] ================= check_platform_gt_count ================= [11:54:52] [PASSED] 0x9A60 (TIGERLAKE) [11:54:52] [PASSED] 0x9A68 (TIGERLAKE) [11:54:52] [PASSED] 0x9A70 (TIGERLAKE) [11:54:52] [PASSED] 0x9A40 (TIGERLAKE) [11:54:52] [PASSED] 0x9A49 (TIGERLAKE) [11:54:52] [PASSED] 0x9A59 (TIGERLAKE) [11:54:52] [PASSED] 0x9A78 (TIGERLAKE) [11:54:52] [PASSED] 0x9AC0 (TIGERLAKE) [11:54:52] [PASSED] 0x9AC9 (TIGERLAKE) [11:54:52] [PASSED] 0x9AD9 (TIGERLAKE) [11:54:52] [PASSED] 0x9AF8 (TIGERLAKE) [11:54:52] [PASSED] 0x4C80 (ROCKETLAKE) [11:54:52] [PASSED] 0x4C8A (ROCKETLAKE) [11:54:52] [PASSED] 0x4C8B (ROCKETLAKE) [11:54:52] [PASSED] 0x4C8C (ROCKETLAKE) [11:54:52] [PASSED] 0x4C90 (ROCKETLAKE) [11:54:52] [PASSED] 0x4C9A (ROCKETLAKE) [11:54:52] [PASSED] 0x4680 (ALDERLAKE_S) [11:54:52] [PASSED] 0x4682 (ALDERLAKE_S) [11:54:52] [PASSED] 0x4688 (ALDERLAKE_S) [11:54:52] [PASSED] 0x468A (ALDERLAKE_S) [11:54:52] [PASSED] 0x468B (ALDERLAKE_S) [11:54:52] [PASSED] 0x4690 (ALDERLAKE_S) [11:54:52] [PASSED] 0x4692 (ALDERLAKE_S) [11:54:52] [PASSED] 0x4693 (ALDERLAKE_S) [11:54:52] [PASSED] 0x46A0 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46A1 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46A2 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46A3 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46A6 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46A8 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46AA (ALDERLAKE_P) [11:54:52] [PASSED] 0x462A (ALDERLAKE_P) [11:54:52] [PASSED] 0x4626 (ALDERLAKE_P) [11:54:52] [PASSED] 0x4628 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46B0 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46B1 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46B2 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46B3 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46C0 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46C1 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46C2 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46C3 (ALDERLAKE_P) [11:54:52] [PASSED] 0x46D0 (ALDERLAKE_N) [11:54:52] [PASSED] 0x46D1 (ALDERLAKE_N) [11:54:52] [PASSED] 0x46D2 (ALDERLAKE_N) [11:54:52] [PASSED] 0x46D3 (ALDERLAKE_N) [11:54:52] [PASSED] 0x46D4 (ALDERLAKE_N) [11:54:52] [PASSED] 0xA721 (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7A1 (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7A9 (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7AC (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7AD (ALDERLAKE_P) [11:54:52] [PASSED] 0xA720 (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7A0 (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7A8 (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7AA (ALDERLAKE_P) [11:54:52] [PASSED] 0xA7AB (ALDERLAKE_P) [11:54:52] [PASSED] 0xA780 (ALDERLAKE_S) [11:54:52] [PASSED] 0xA781 (ALDERLAKE_S) [11:54:52] [PASSED] 0xA782 (ALDERLAKE_S) [11:54:52] [PASSED] 0xA783 (ALDERLAKE_S) [11:54:52] [PASSED] 0xA788 (ALDERLAKE_S) [11:54:52] [PASSED] 0xA789 (ALDERLAKE_S) [11:54:52] [PASSED] 0xA78A (ALDERLAKE_S) [11:54:52] [PASSED] 0xA78B (ALDERLAKE_S) [11:54:52] [PASSED] 0x4905 (DG1) [11:54:52] [PASSED] 0x4906 (DG1) [11:54:52] [PASSED] 0x4907 (DG1) [11:54:52] [PASSED] 0x4908 (DG1) [11:54:52] [PASSED] 0x4909 (DG1) [11:54:52] [PASSED] 0x56C0 (DG2) [11:54:52] [PASSED] 0x56C2 (DG2) [11:54:52] [PASSED] 0x56C1 (DG2) [11:54:52] [PASSED] 0x7D51 (METEORLAKE) [11:54:52] [PASSED] 0x7DD1 (METEORLAKE) [11:54:52] [PASSED] 0x7D41 (METEORLAKE) [11:54:52] [PASSED] 0x7D67 (METEORLAKE) [11:54:52] [PASSED] 0xB640 (METEORLAKE) [11:54:52] [PASSED] 0x56A0 (DG2) [11:54:52] [PASSED] 0x56A1 (DG2) [11:54:52] [PASSED] 0x56A2 (DG2) [11:54:52] [PASSED] 0x56BE (DG2) [11:54:52] [PASSED] 0x56BF (DG2) [11:54:52] [PASSED] 0x5690 (DG2) [11:54:52] [PASSED] 0x5691 (DG2) [11:54:52] [PASSED] 0x5692 (DG2) [11:54:52] [PASSED] 0x56A5 (DG2) [11:54:52] [PASSED] 0x56A6 (DG2) [11:54:52] [PASSED] 0x56B0 (DG2) [11:54:52] [PASSED] 0x56B1 (DG2) [11:54:52] [PASSED] 0x56BA (DG2) [11:54:52] [PASSED] 0x56BB (DG2) [11:54:52] [PASSED] 0x56BC (DG2) [11:54:52] [PASSED] 0x56BD (DG2) [11:54:52] [PASSED] 0x5693 (DG2) [11:54:52] [PASSED] 0x5694 (DG2) [11:54:52] [PASSED] 0x5695 (DG2) [11:54:52] [PASSED] 0x56A3 (DG2) [11:54:52] [PASSED] 0x56A4 (DG2) [11:54:52] [PASSED] 0x56B2 (DG2) [11:54:52] [PASSED] 0x56B3 (DG2) [11:54:52] [PASSED] 0x5696 (DG2) [11:54:52] [PASSED] 0x5697 (DG2) [11:54:52] [PASSED] 0xB69 (PVC) [11:54:52] [PASSED] 0xB6E (PVC) [11:54:52] [PASSED] 0xBD4 (PVC) [11:54:52] [PASSED] 0xBD5 (PVC) [11:54:52] [PASSED] 0xBD6 (PVC) [11:54:52] [PASSED] 0xBD7 (PVC) [11:54:52] [PASSED] 0xBD8 (PVC) [11:54:52] [PASSED] 0xBD9 (PVC) [11:54:52] [PASSED] 0xBDA (PVC) [11:54:52] [PASSED] 0xBDB (PVC) [11:54:52] [PASSED] 0xBE0 (PVC) [11:54:52] [PASSED] 0xBE1 (PVC) [11:54:52] [PASSED] 0xBE5 (PVC) [11:54:52] [PASSED] 0x7D40 (METEORLAKE) [11:54:52] [PASSED] 0x7D45 (METEORLAKE) [11:54:52] [PASSED] 0x7D55 (METEORLAKE) [11:54:52] [PASSED] 0x7D60 (METEORLAKE) [11:54:52] [PASSED] 0x7DD5 (METEORLAKE) [11:54:52] [PASSED] 0x6420 (LUNARLAKE) [11:54:52] [PASSED] 0x64A0 (LUNARLAKE) [11:54:52] [PASSED] 0x64B0 (LUNARLAKE) [11:54:52] [PASSED] 0xE202 (BATTLEMAGE) [11:54:52] [PASSED] 0xE209 (BATTLEMAGE) [11:54:52] [PASSED] 0xE20B (BATTLEMAGE) [11:54:52] [PASSED] 0xE20C (BATTLEMAGE) [11:54:52] [PASSED] 0xE20D (BATTLEMAGE) [11:54:52] [PASSED] 0xE210 (BATTLEMAGE) [11:54:52] [PASSED] 0xE211 (BATTLEMAGE) [11:54:52] [PASSED] 0xE212 (BATTLEMAGE) [11:54:52] [PASSED] 0xE216 (BATTLEMAGE) [11:54:52] [PASSED] 0xE220 (BATTLEMAGE) [11:54:52] [PASSED] 0xE221 (BATTLEMAGE) [11:54:52] [PASSED] 0xE222 (BATTLEMAGE) [11:54:52] [PASSED] 0xE223 (BATTLEMAGE) [11:54:52] [PASSED] 0xB080 (PANTHERLAKE) [11:54:52] [PASSED] 0xB081 (PANTHERLAKE) [11:54:52] [PASSED] 0xB082 (PANTHERLAKE) [11:54:52] [PASSED] 0xB083 (PANTHERLAKE) [11:54:52] [PASSED] 0xB084 (PANTHERLAKE) [11:54:52] [PASSED] 0xB085 (PANTHERLAKE) [11:54:52] [PASSED] 0xB086 (PANTHERLAKE) [11:54:52] [PASSED] 0xB087 (PANTHERLAKE) [11:54:52] [PASSED] 0xB08F (PANTHERLAKE) [11:54:52] [PASSED] 0xB090 (PANTHERLAKE) [11:54:52] [PASSED] 0xB0A0 (PANTHERLAKE) [11:54:52] [PASSED] 0xB0B0 (PANTHERLAKE) [11:54:52] [PASSED] 0xFD80 (PANTHERLAKE) [11:54:52] [PASSED] 0xFD81 (PANTHERLAKE) [11:54:52] ============= [PASSED] check_platform_gt_count ============= [11:54:52] ===================== [PASSED] xe_pci ====================== [11:54:52] =================== xe_rtp (2 subtests) ==================== [11:54:52] =============== xe_rtp_process_to_sr_tests ================ [11:54:52] [PASSED] coalesce-same-reg [11:54:52] [PASSED] no-match-no-add [11:54:52] [PASSED] match-or [11:54:52] [PASSED] match-or-xfail [11:54:52] [PASSED] no-match-no-add-multiple-rules [11:54:52] [PASSED] two-regs-two-entries [11:54:52] [PASSED] clr-one-set-other [11:54:52] [PASSED] set-field [11:54:52] [PASSED] conflict-duplicate [11:54:52] [PASSED] conflict-not-disjoint [11:54:52] [PASSED] conflict-reg-type [11:54:52] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [11:54:52] ================== xe_rtp_process_tests =================== [11:54:52] [PASSED] active1 [11:54:52] [PASSED] active2 [11:54:52] [PASSED] active-inactive [11:54:52] [PASSED] inactive-active [11:54:52] [PASSED] inactive-1st_or_active-inactive [11:54:52] [PASSED] inactive-2nd_or_active-inactive [11:54:52] [PASSED] inactive-last_or_active-inactive [11:54:52] [PASSED] inactive-no_or_active-inactive [11:54:52] ============== [PASSED] xe_rtp_process_tests =============== [11:54:52] ===================== [PASSED] xe_rtp ====================== [11:54:52] ==================== xe_wa (1 subtest) ===================== [11:54:52] ======================== xe_wa_gt ========================= [11:54:52] [PASSED] TIGERLAKE (B0) [11:54:52] [PASSED] DG1 (A0) [11:54:52] [PASSED] DG1 (B0) [11:54:52] [PASSED] ALDERLAKE_S (A0) [11:54:52] [PASSED] ALDERLAKE_S (B0) [11:54:52] [PASSED] ALDERLAKE_S (C0) [11:54:52] [PASSED] ALDERLAKE_S (D0) [11:54:52] [PASSED] ALDERLAKE_P (A0) [11:54:52] [PASSED] ALDERLAKE_P (B0) [11:54:52] [PASSED] ALDERLAKE_P (C0) [11:54:52] [PASSED] ALDERLAKE_S_RPLS (D0) [11:54:52] [PASSED] ALDERLAKE_P_RPLU (E0) [11:54:52] [PASSED] DG2_G10 (C0) [11:54:52] [PASSED] DG2_G11 (B1) [11:54:52] [PASSED] DG2_G12 (A1) [11:54:52] [PASSED] METEORLAKE (g:A0, m:A0) [11:54:52] [PASSED] METEORLAKE (g:A0, m:A0) [11:54:52] [PASSED] METEORLAKE (g:A0, m:A0) [11:54:52] [PASSED] LUNARLAKE (g:A0, m:A0) [11:54:52] [PASSED] LUNARLAKE (g:B0, m:A0) stty: 'standard input': Inappropriate ioctl for device [11:54:52] [PASSED] BATTLEMAGE (g:A0, m:A1) [11:54:52] ==================== [PASSED] xe_wa_gt ===================== [11:54:52] ====================== [PASSED] xe_wa ====================== [11:54:52] ============================================================ [11:54:52] Testing complete. Ran 297 tests: passed: 281, skipped: 16 [11:54:52] Elapsed time: 33.288s total, 4.222s configuring, 28.699s building, 0.319s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [11:54:52] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [11:54:54] 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 [11:55:17] Starting KUnit Kernel (1/1)... [11:55:17] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [11:55:17] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [11:55:17] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [11:55:17] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [11:55:17] =========== drm_validate_clone_mode (2 subtests) =========== [11:55:17] ============== drm_test_check_in_clone_mode =============== [11:55:17] [PASSED] in_clone_mode [11:55:17] [PASSED] not_in_clone_mode [11:55:17] ========== [PASSED] drm_test_check_in_clone_mode =========== [11:55:17] =============== drm_test_check_valid_clones =============== [11:55:17] [PASSED] not_in_clone_mode [11:55:17] [PASSED] valid_clone [11:55:17] [PASSED] invalid_clone [11:55:17] =========== [PASSED] drm_test_check_valid_clones =========== [11:55:17] ============= [PASSED] drm_validate_clone_mode ============= [11:55:17] ============= drm_validate_modeset (1 subtest) ============= [11:55:17] [PASSED] drm_test_check_connector_changed_modeset [11:55:17] ============== [PASSED] drm_validate_modeset =============== [11:55:17] ====== drm_test_bridge_get_current_state (2 subtests) ====== [11:55:17] [PASSED] drm_test_drm_bridge_get_current_state_atomic [11:55:17] [PASSED] drm_test_drm_bridge_get_current_state_legacy [11:55:17] ======== [PASSED] drm_test_bridge_get_current_state ======== [11:55:17] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [11:55:17] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [11:55:17] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [11:55:17] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [11:55:17] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [11:55:17] ============== drm_bridge_alloc (2 subtests) =============== [11:55:17] [PASSED] drm_test_drm_bridge_alloc_basic [11:55:17] [PASSED] drm_test_drm_bridge_alloc_get_put [11:55:17] ================ [PASSED] drm_bridge_alloc ================= [11:55:17] ================== drm_buddy (7 subtests) ================== [11:55:17] [PASSED] drm_test_buddy_alloc_limit [11:55:17] [PASSED] drm_test_buddy_alloc_optimistic [11:55:17] [PASSED] drm_test_buddy_alloc_pessimistic [11:55:17] [PASSED] drm_test_buddy_alloc_pathological [11:55:17] [PASSED] drm_test_buddy_alloc_contiguous [11:55:17] [PASSED] drm_test_buddy_alloc_clear [11:55:17] [PASSED] drm_test_buddy_alloc_range_bias [11:55:17] ==================== [PASSED] drm_buddy ==================== [11:55:17] ============= drm_cmdline_parser (40 subtests) ============= [11:55:17] [PASSED] drm_test_cmdline_force_d_only [11:55:17] [PASSED] drm_test_cmdline_force_D_only_dvi [11:55:17] [PASSED] drm_test_cmdline_force_D_only_hdmi [11:55:17] [PASSED] drm_test_cmdline_force_D_only_not_digital [11:55:17] [PASSED] drm_test_cmdline_force_e_only [11:55:17] [PASSED] drm_test_cmdline_res [11:55:17] [PASSED] drm_test_cmdline_res_vesa [11:55:17] [PASSED] drm_test_cmdline_res_vesa_rblank [11:55:17] [PASSED] drm_test_cmdline_res_rblank [11:55:17] [PASSED] drm_test_cmdline_res_bpp [11:55:17] [PASSED] drm_test_cmdline_res_refresh [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [11:55:17] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [11:55:17] [PASSED] drm_test_cmdline_res_margins_force_on [11:55:17] [PASSED] drm_test_cmdline_res_vesa_margins [11:55:17] [PASSED] drm_test_cmdline_name [11:55:17] [PASSED] drm_test_cmdline_name_bpp [11:55:17] [PASSED] drm_test_cmdline_name_option [11:55:17] [PASSED] drm_test_cmdline_name_bpp_option [11:55:17] [PASSED] drm_test_cmdline_rotate_0 [11:55:17] [PASSED] drm_test_cmdline_rotate_90 [11:55:17] [PASSED] drm_test_cmdline_rotate_180 [11:55:17] [PASSED] drm_test_cmdline_rotate_270 [11:55:17] [PASSED] drm_test_cmdline_hmirror [11:55:17] [PASSED] drm_test_cmdline_vmirror [11:55:17] [PASSED] drm_test_cmdline_margin_options [11:55:17] [PASSED] drm_test_cmdline_multiple_options [11:55:17] [PASSED] drm_test_cmdline_bpp_extra_and_option [11:55:17] [PASSED] drm_test_cmdline_extra_and_option [11:55:17] [PASSED] drm_test_cmdline_freestanding_options [11:55:17] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [11:55:17] [PASSED] drm_test_cmdline_panel_orientation [11:55:17] ================ drm_test_cmdline_invalid ================= [11:55:17] [PASSED] margin_only [11:55:17] [PASSED] interlace_only [11:55:17] [PASSED] res_missing_x [11:55:17] [PASSED] res_missing_y [11:55:17] [PASSED] res_bad_y [11:55:17] [PASSED] res_missing_y_bpp [11:55:17] [PASSED] res_bad_bpp [11:55:17] [PASSED] res_bad_refresh [11:55:17] [PASSED] res_bpp_refresh_force_on_off [11:55:17] [PASSED] res_invalid_mode [11:55:17] [PASSED] res_bpp_wrong_place_mode [11:55:17] [PASSED] name_bpp_refresh [11:55:17] [PASSED] name_refresh [11:55:17] [PASSED] name_refresh_wrong_mode [11:55:17] [PASSED] name_refresh_invalid_mode [11:55:17] [PASSED] rotate_multiple [11:55:17] [PASSED] rotate_invalid_val [11:55:17] [PASSED] rotate_truncated [11:55:17] [PASSED] invalid_option [11:55:17] [PASSED] invalid_tv_option [11:55:17] [PASSED] truncated_tv_option [11:55:17] ============ [PASSED] drm_test_cmdline_invalid ============= [11:55:17] =============== drm_test_cmdline_tv_options =============== [11:55:17] [PASSED] NTSC [11:55:17] [PASSED] NTSC_443 [11:55:17] [PASSED] NTSC_J [11:55:17] [PASSED] PAL [11:55:17] [PASSED] PAL_M [11:55:17] [PASSED] PAL_N [11:55:17] [PASSED] SECAM [11:55:17] [PASSED] MONO_525 [11:55:17] [PASSED] MONO_625 [11:55:17] =========== [PASSED] drm_test_cmdline_tv_options =========== [11:55:17] =============== [PASSED] drm_cmdline_parser ================ [11:55:17] ========== drmm_connector_hdmi_init (20 subtests) ========== [11:55:17] [PASSED] drm_test_connector_hdmi_init_valid [11:55:17] [PASSED] drm_test_connector_hdmi_init_bpc_8 [11:55:17] [PASSED] drm_test_connector_hdmi_init_bpc_10 [11:55:17] [PASSED] drm_test_connector_hdmi_init_bpc_12 [11:55:17] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [11:55:17] [PASSED] drm_test_connector_hdmi_init_bpc_null [11:55:17] [PASSED] drm_test_connector_hdmi_init_formats_empty [11:55:17] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [11:55:17] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [11:55:17] [PASSED] supported_formats=0x9 yuv420_allowed=1 [11:55:17] [PASSED] supported_formats=0x9 yuv420_allowed=0 [11:55:17] [PASSED] supported_formats=0x3 yuv420_allowed=1 [11:55:17] [PASSED] supported_formats=0x3 yuv420_allowed=0 [11:55:17] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [11:55:17] [PASSED] drm_test_connector_hdmi_init_null_ddc [11:55:17] [PASSED] drm_test_connector_hdmi_init_null_product [11:55:17] [PASSED] drm_test_connector_hdmi_init_null_vendor [11:55:17] [PASSED] drm_test_connector_hdmi_init_product_length_exact [11:55:17] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [11:55:17] [PASSED] drm_test_connector_hdmi_init_product_valid [11:55:17] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [11:55:17] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [11:55:17] [PASSED] drm_test_connector_hdmi_init_vendor_valid [11:55:17] ========= drm_test_connector_hdmi_init_type_valid ========= [11:55:17] [PASSED] HDMI-A [11:55:17] [PASSED] HDMI-B [11:55:17] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [11:55:17] ======== drm_test_connector_hdmi_init_type_invalid ======== [11:55:17] [PASSED] Unknown [11:55:17] [PASSED] VGA [11:55:17] [PASSED] DVI-I [11:55:17] [PASSED] DVI-D [11:55:17] [PASSED] DVI-A [11:55:17] [PASSED] Composite [11:55:17] [PASSED] SVIDEO [11:55:17] [PASSED] LVDS [11:55:17] [PASSED] Component [11:55:17] [PASSED] DIN [11:55:17] [PASSED] DP [11:55:17] [PASSED] TV [11:55:17] [PASSED] eDP [11:55:17] [PASSED] Virtual [11:55:17] [PASSED] DSI [11:55:17] [PASSED] DPI [11:55:17] [PASSED] Writeback [11:55:17] [PASSED] SPI [11:55:17] [PASSED] USB [11:55:17] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [11:55:17] ============ [PASSED] drmm_connector_hdmi_init ============= [11:55:17] ============= drmm_connector_init (3 subtests) ============= [11:55:17] [PASSED] drm_test_drmm_connector_init [11:55:17] [PASSED] drm_test_drmm_connector_init_null_ddc [11:55:17] ========= drm_test_drmm_connector_init_type_valid ========= [11:55:17] [PASSED] Unknown [11:55:17] [PASSED] VGA [11:55:17] [PASSED] DVI-I [11:55:17] [PASSED] DVI-D [11:55:17] [PASSED] DVI-A [11:55:17] [PASSED] Composite [11:55:17] [PASSED] SVIDEO [11:55:17] [PASSED] LVDS [11:55:17] [PASSED] Component [11:55:17] [PASSED] DIN [11:55:17] [PASSED] DP [11:55:17] [PASSED] HDMI-A [11:55:17] [PASSED] HDMI-B [11:55:17] [PASSED] TV [11:55:17] [PASSED] eDP [11:55:17] [PASSED] Virtual [11:55:17] [PASSED] DSI [11:55:17] [PASSED] DPI [11:55:17] [PASSED] Writeback [11:55:17] [PASSED] SPI [11:55:17] [PASSED] USB [11:55:17] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [11:55:17] =============== [PASSED] drmm_connector_init =============== [11:55:17] ========= drm_connector_dynamic_init (6 subtests) ========== [11:55:17] [PASSED] drm_test_drm_connector_dynamic_init [11:55:17] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [11:55:17] [PASSED] drm_test_drm_connector_dynamic_init_not_added [11:55:17] [PASSED] drm_test_drm_connector_dynamic_init_properties [11:55:17] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [11:55:17] [PASSED] Unknown [11:55:17] [PASSED] VGA [11:55:17] [PASSED] DVI-I [11:55:17] [PASSED] DVI-D [11:55:17] [PASSED] DVI-A [11:55:17] [PASSED] Composite [11:55:17] [PASSED] SVIDEO [11:55:17] [PASSED] LVDS [11:55:17] [PASSED] Component [11:55:17] [PASSED] DIN [11:55:17] [PASSED] DP [11:55:17] [PASSED] HDMI-A [11:55:17] [PASSED] HDMI-B [11:55:17] [PASSED] TV [11:55:17] [PASSED] eDP [11:55:17] [PASSED] Virtual [11:55:17] [PASSED] DSI [11:55:17] [PASSED] DPI [11:55:17] [PASSED] Writeback [11:55:17] [PASSED] SPI [11:55:17] [PASSED] USB [11:55:17] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [11:55:17] ======== drm_test_drm_connector_dynamic_init_name ========= [11:55:17] [PASSED] Unknown [11:55:17] [PASSED] VGA [11:55:17] [PASSED] DVI-I [11:55:17] [PASSED] DVI-D [11:55:17] [PASSED] DVI-A [11:55:17] [PASSED] Composite [11:55:17] [PASSED] SVIDEO [11:55:17] [PASSED] LVDS [11:55:17] [PASSED] Component [11:55:17] [PASSED] DIN [11:55:17] [PASSED] DP [11:55:17] [PASSED] HDMI-A [11:55:17] [PASSED] HDMI-B [11:55:17] [PASSED] TV [11:55:17] [PASSED] eDP [11:55:17] [PASSED] Virtual [11:55:17] [PASSED] DSI [11:55:17] [PASSED] DPI [11:55:17] [PASSED] Writeback [11:55:17] [PASSED] SPI [11:55:17] [PASSED] USB [11:55:17] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [11:55:17] =========== [PASSED] drm_connector_dynamic_init ============ [11:55:17] ==== drm_connector_dynamic_register_early (4 subtests) ===== [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [11:55:17] ====== [PASSED] drm_connector_dynamic_register_early ======= [11:55:17] ======= drm_connector_dynamic_register (7 subtests) ======== [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_on_list [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_no_init [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [11:55:17] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [11:55:17] ========= [PASSED] drm_connector_dynamic_register ========== [11:55:17] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [11:55:17] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [11:55:17] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [11:55:17] === [PASSED] drm_connector_attach_broadcast_rgb_property === [11:55:17] ========== drm_get_tv_mode_from_name (2 subtests) ========== [11:55:17] ========== drm_test_get_tv_mode_from_name_valid =========== [11:55:17] [PASSED] NTSC [11:55:17] [PASSED] NTSC-443 [11:55:17] [PASSED] NTSC-J [11:55:17] [PASSED] PAL [11:55:17] [PASSED] PAL-M [11:55:17] [PASSED] PAL-N [11:55:17] [PASSED] SECAM [11:55:17] [PASSED] Mono [11:55:17] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [11:55:17] [PASSED] drm_test_get_tv_mode_from_name_truncated [11:55:17] ============ [PASSED] drm_get_tv_mode_from_name ============ [11:55:17] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [11:55:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [11:55:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [11:55:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [11:55:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [11:55:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [11:55:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [11:55:17] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [11:55:17] [PASSED] VIC 96 [11:55:17] [PASSED] VIC 97 [11:55:17] [PASSED] VIC 101 [11:55:17] [PASSED] VIC 102 [11:55:17] [PASSED] VIC 106 [11:55:17] [PASSED] VIC 107 [11:55:17] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [11:55:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [11:55:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [11:55:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [11:55:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [11:55:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [11:55:17] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [11:55:17] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [11:55:17] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [11:55:17] [PASSED] Automatic [11:55:17] [PASSED] Full [11:55:17] [PASSED] Limited 16:235 [11:55:17] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [11:55:17] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [11:55:17] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [11:55:17] == drm_hdmi_connector_get_output_format_name (2 subtests) == [11:55:17] === drm_test_drm_hdmi_connector_get_output_format_name ==== [11:55:17] [PASSED] RGB [11:55:17] [PASSED] YUV 4:2:0 [11:55:17] [PASSED] YUV 4:2:2 [11:55:17] [PASSED] YUV 4:4:4 [11:55:17] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [11:55:17] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [11:55:17] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [11:55:17] ============= drm_damage_helper (21 subtests) ============== [11:55:17] [PASSED] drm_test_damage_iter_no_damage [11:55:17] [PASSED] drm_test_damage_iter_no_damage_fractional_src [11:55:17] [PASSED] drm_test_damage_iter_no_damage_src_moved [11:55:17] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [11:55:17] [PASSED] drm_test_damage_iter_no_damage_not_visible [11:55:17] [PASSED] drm_test_damage_iter_no_damage_no_crtc [11:55:17] [PASSED] drm_test_damage_iter_no_damage_no_fb [11:55:17] [PASSED] drm_test_damage_iter_simple_damage [11:55:17] [PASSED] drm_test_damage_iter_single_damage [11:55:17] [PASSED] drm_test_damage_iter_single_damage_intersect_src [11:55:17] [PASSED] drm_test_damage_iter_single_damage_outside_src [11:55:17] [PASSED] drm_test_damage_iter_single_damage_fractional_src [11:55:17] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [11:55:17] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [11:55:17] [PASSED] drm_test_damage_iter_single_damage_src_moved [11:55:17] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [11:55:17] [PASSED] drm_test_damage_iter_damage [11:55:17] [PASSED] drm_test_damage_iter_damage_one_intersect [11:55:17] [PASSED] drm_test_damage_iter_damage_one_outside [11:55:17] [PASSED] drm_test_damage_iter_damage_src_moved [11:55:17] [PASSED] drm_test_damage_iter_damage_not_visible [11:55:17] ================ [PASSED] drm_damage_helper ================ [11:55:17] ============== drm_dp_mst_helper (3 subtests) ============== [11:55:17] ============== drm_test_dp_mst_calc_pbn_mode ============== [11:55:17] [PASSED] Clock 154000 BPP 30 DSC disabled [11:55:17] [PASSED] Clock 234000 BPP 30 DSC disabled [11:55:17] [PASSED] Clock 297000 BPP 24 DSC disabled [11:55:17] [PASSED] Clock 332880 BPP 24 DSC enabled [11:55:17] [PASSED] Clock 324540 BPP 24 DSC enabled [11:55:17] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [11:55:17] ============== drm_test_dp_mst_calc_pbn_div =============== [11:55:17] [PASSED] Link rate 2000000 lane count 4 [11:55:17] [PASSED] Link rate 2000000 lane count 2 [11:55:17] [PASSED] Link rate 2000000 lane count 1 [11:55:17] [PASSED] Link rate 1350000 lane count 4 [11:55:17] [PASSED] Link rate 1350000 lane count 2 [11:55:17] [PASSED] Link rate 1350000 lane count 1 [11:55:17] [PASSED] Link rate 1000000 lane count 4 [11:55:17] [PASSED] Link rate 1000000 lane count 2 [11:55:17] [PASSED] Link rate 1000000 lane count 1 [11:55:17] [PASSED] Link rate 810000 lane count 4 [11:55:17] [PASSED] Link rate 810000 lane count 2 [11:55:17] [PASSED] Link rate 810000 lane count 1 [11:55:17] [PASSED] Link rate 540000 lane count 4 [11:55:17] [PASSED] Link rate 540000 lane count 2 [11:55:17] [PASSED] Link rate 540000 lane count 1 [11:55:17] [PASSED] Link rate 270000 lane count 4 [11:55:17] [PASSED] Link rate 270000 lane count 2 [11:55:17] [PASSED] Link rate 270000 lane count 1 [11:55:17] [PASSED] Link rate 162000 lane count 4 [11:55:17] [PASSED] Link rate 162000 lane count 2 [11:55:17] [PASSED] Link rate 162000 lane count 1 [11:55:17] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [11:55:17] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [11:55:17] [PASSED] DP_ENUM_PATH_RESOURCES with port number [11:55:17] [PASSED] DP_POWER_UP_PHY with port number [11:55:17] [PASSED] DP_POWER_DOWN_PHY with port number [11:55:17] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [11:55:17] [PASSED] DP_ALLOCATE_PAYLOAD with port number [11:55:17] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [11:55:17] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [11:55:17] [PASSED] DP_QUERY_PAYLOAD with port number [11:55:17] [PASSED] DP_QUERY_PAYLOAD with VCPI [11:55:17] [PASSED] DP_REMOTE_DPCD_READ with port number [11:55:17] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [11:55:17] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [11:55:17] [PASSED] DP_REMOTE_DPCD_WRITE with port number [11:55:17] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [11:55:17] [PASSED] DP_REMOTE_DPCD_WRITE with data array [11:55:17] [PASSED] DP_REMOTE_I2C_READ with port number [11:55:17] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [11:55:17] [PASSED] DP_REMOTE_I2C_READ with transactions array [11:55:17] [PASSED] DP_REMOTE_I2C_WRITE with port number [11:55:17] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [11:55:17] [PASSED] DP_REMOTE_I2C_WRITE with data array [11:55:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [11:55:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [11:55:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [11:55:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [11:55:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [11:55:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [11:55:17] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [11:55:17] ================ [PASSED] drm_dp_mst_helper ================ [11:55:17] ================== drm_exec (7 subtests) =================== [11:55:17] [PASSED] sanitycheck [11:55:17] [PASSED] test_lock [11:55:17] [PASSED] test_lock_unlock [11:55:17] [PASSED] test_duplicates [11:55:17] [PASSED] test_prepare [11:55:17] [PASSED] test_prepare_array [11:55:17] [PASSED] test_multiple_loops [11:55:17] ==================== [PASSED] drm_exec ===================== [11:55:17] =========== drm_format_helper_test (17 subtests) =========== [11:55:17] ============== drm_test_fb_xrgb8888_to_gray8 ============== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [11:55:17] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [11:55:17] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [11:55:17] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [11:55:17] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [11:55:17] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [11:55:17] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [11:55:17] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [11:55:17] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [11:55:17] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [11:55:17] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [11:55:17] ============== drm_test_fb_xrgb8888_to_mono =============== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [11:55:17] ==================== drm_test_fb_swab ===================== [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ================ [PASSED] drm_test_fb_swab ================= [11:55:17] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [11:55:17] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [11:55:17] [PASSED] single_pixel_source_buffer [11:55:17] [PASSED] single_pixel_clip_rectangle [11:55:17] [PASSED] well_known_colors [11:55:17] [PASSED] destination_pitch [11:55:17] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [11:55:17] ================= drm_test_fb_clip_offset ================= [11:55:17] [PASSED] pass through [11:55:17] [PASSED] horizontal offset [11:55:17] [PASSED] vertical offset [11:55:17] [PASSED] horizontal and vertical offset [11:55:17] [PASSED] horizontal offset (custom pitch) [11:55:17] [PASSED] vertical offset (custom pitch) [11:55:17] [PASSED] horizontal and vertical offset (custom pitch) [11:55:17] ============= [PASSED] drm_test_fb_clip_offset ============= [11:55:17] =================== drm_test_fb_memcpy ==================== [11:55:17] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [11:55:17] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [11:55:17] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [11:55:17] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [11:55:17] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [11:55:17] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [11:55:17] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [11:55:17] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [11:55:17] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [11:55:17] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [11:55:17] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [11:55:17] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [11:55:17] =============== [PASSED] drm_test_fb_memcpy ================ [11:55:17] ============= [PASSED] drm_format_helper_test ============== [11:55:17] ================= drm_format (18 subtests) ================= [11:55:17] [PASSED] drm_test_format_block_width_invalid [11:55:17] [PASSED] drm_test_format_block_width_one_plane [11:55:17] [PASSED] drm_test_format_block_width_two_plane [11:55:17] [PASSED] drm_test_format_block_width_three_plane [11:55:17] [PASSED] drm_test_format_block_width_tiled [11:55:17] [PASSED] drm_test_format_block_height_invalid [11:55:17] [PASSED] drm_test_format_block_height_one_plane [11:55:17] [PASSED] drm_test_format_block_height_two_plane [11:55:17] [PASSED] drm_test_format_block_height_three_plane [11:55:17] [PASSED] drm_test_format_block_height_tiled [11:55:17] [PASSED] drm_test_format_min_pitch_invalid [11:55:17] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [11:55:17] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [11:55:17] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [11:55:17] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [11:55:17] [PASSED] drm_test_format_min_pitch_two_plane [11:55:17] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [11:55:17] [PASSED] drm_test_format_min_pitch_tiled [11:55:17] =================== [PASSED] drm_format ==================== [11:55:17] ============== drm_framebuffer (10 subtests) =============== [11:55:17] ========== drm_test_framebuffer_check_src_coords ========== [11:55:17] [PASSED] Success: source fits into fb [11:55:17] [PASSED] Fail: overflowing fb with x-axis coordinate [11:55:17] [PASSED] Fail: overflowing fb with y-axis coordinate [11:55:17] [PASSED] Fail: overflowing fb with source width [11:55:17] [PASSED] Fail: overflowing fb with source height [11:55:17] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [11:55:17] [PASSED] drm_test_framebuffer_cleanup [11:55:17] =============== drm_test_framebuffer_create =============== [11:55:17] [PASSED] ABGR8888 normal sizes [11:55:17] [PASSED] ABGR8888 max sizes [11:55:17] [PASSED] ABGR8888 pitch greater than min required [11:55:17] [PASSED] ABGR8888 pitch less than min required [11:55:17] [PASSED] ABGR8888 Invalid width [11:55:17] [PASSED] ABGR8888 Invalid buffer handle [11:55:17] [PASSED] No pixel format [11:55:17] [PASSED] ABGR8888 Width 0 [11:55:17] [PASSED] ABGR8888 Height 0 [11:55:17] [PASSED] ABGR8888 Out of bound height * pitch combination [11:55:17] [PASSED] ABGR8888 Large buffer offset [11:55:17] [PASSED] ABGR8888 Buffer offset for inexistent plane [11:55:17] [PASSED] ABGR8888 Invalid flag [11:55:17] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [11:55:17] [PASSED] ABGR8888 Valid buffer modifier [11:55:17] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [11:55:17] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [11:55:17] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [11:55:17] [PASSED] NV12 Normal sizes [11:55:17] [PASSED] NV12 Max sizes [11:55:17] [PASSED] NV12 Invalid pitch [11:55:17] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [11:55:17] [PASSED] NV12 different modifier per-plane [11:55:17] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [11:55:17] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [11:55:17] [PASSED] NV12 Modifier for inexistent plane [11:55:17] [PASSED] NV12 Handle for inexistent plane [11:55:17] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [11:55:17] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [11:55:17] [PASSED] YVU420 Normal sizes [11:55:17] [PASSED] YVU420 Max sizes [11:55:17] [PASSED] YVU420 Invalid pitch [11:55:17] [PASSED] YVU420 Different pitches [11:55:17] [PASSED] YVU420 Different buffer offsets/pitches [11:55:17] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [11:55:17] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [11:55:17] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [11:55:17] [PASSED] YVU420 Valid modifier [11:55:17] [PASSED] YVU420 Different modifiers per plane [11:55:17] [PASSED] YVU420 Modifier for inexistent plane [11:55:17] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [11:55:17] [PASSED] X0L2 Normal sizes [11:55:17] [PASSED] X0L2 Max sizes [11:55:17] [PASSED] X0L2 Invalid pitch [11:55:17] [PASSED] X0L2 Pitch greater than minimum required [11:55:17] [PASSED] X0L2 Handle for inexistent plane [11:55:17] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [11:55:17] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [11:55:17] [PASSED] X0L2 Valid modifier [11:55:17] [PASSED] X0L2 Modifier for inexistent plane [11:55:17] =========== [PASSED] drm_test_framebuffer_create =========== [11:55:17] [PASSED] drm_test_framebuffer_free [11:55:17] [PASSED] drm_test_framebuffer_init [11:55:17] [PASSED] drm_test_framebuffer_init_bad_format [11:55:17] [PASSED] drm_test_framebuffer_init_dev_mismatch [11:55:17] [PASSED] drm_test_framebuffer_lookup [11:55:17] [PASSED] drm_test_framebuffer_lookup_inexistent [11:55:17] [PASSED] drm_test_framebuffer_modifiers_not_supported [11:55:17] ================= [PASSED] drm_framebuffer ================= [11:55:17] ================ drm_gem_shmem (8 subtests) ================ [11:55:17] [PASSED] drm_gem_shmem_test_obj_create [11:55:17] [PASSED] drm_gem_shmem_test_obj_create_private [11:55:17] [PASSED] drm_gem_shmem_test_pin_pages [11:55:17] [PASSED] drm_gem_shmem_test_vmap [11:55:17] [PASSED] drm_gem_shmem_test_get_pages_sgt [11:55:17] [PASSED] drm_gem_shmem_test_get_sg_table [11:55:17] [PASSED] drm_gem_shmem_test_madvise [11:55:17] [PASSED] drm_gem_shmem_test_purge [11:55:17] ================== [PASSED] drm_gem_shmem ================== [11:55:17] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [11:55:17] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [11:55:17] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [11:55:17] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [11:55:17] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [11:55:17] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [11:55:17] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [11:55:17] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [11:55:17] [PASSED] Automatic [11:55:17] [PASSED] Full [11:55:17] [PASSED] Limited 16:235 [11:55:17] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [11:55:17] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [11:55:17] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [11:55:17] [PASSED] drm_test_check_disable_connector [11:55:17] [PASSED] drm_test_check_hdmi_funcs_reject_rate [11:55:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [11:55:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [11:55:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [11:55:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [11:55:17] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [11:55:17] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [11:55:17] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [11:55:17] [PASSED] drm_test_check_output_bpc_dvi [11:55:17] [PASSED] drm_test_check_output_bpc_format_vic_1 [11:55:17] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [11:55:17] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [11:55:17] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [11:55:17] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [11:55:17] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [11:55:17] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [11:55:17] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [11:55:17] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [11:55:17] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [11:55:17] [PASSED] drm_test_check_broadcast_rgb_value [11:55:17] [PASSED] drm_test_check_bpc_8_value [11:55:17] [PASSED] drm_test_check_bpc_10_value [11:55:17] [PASSED] drm_test_check_bpc_12_value [11:55:17] [PASSED] drm_test_check_format_value [11:55:17] [PASSED] drm_test_check_tmds_char_value [11:55:17] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [11:55:17] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [11:55:17] [PASSED] drm_test_check_mode_valid [11:55:17] [PASSED] drm_test_check_mode_valid_reject [11:55:17] [PASSED] drm_test_check_mode_valid_reject_rate [11:55:17] [PASSED] drm_test_check_mode_valid_reject_max_clock [11:55:17] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [11:55:17] ================= drm_managed (2 subtests) ================= [11:55:17] [PASSED] drm_test_managed_release_action [11:55:17] [PASSED] drm_test_managed_run_action [11:55:17] =================== [PASSED] drm_managed =================== [11:55:17] =================== drm_mm (6 subtests) ==================== [11:55:17] [PASSED] drm_test_mm_init [11:55:17] [PASSED] drm_test_mm_debug [11:55:17] [PASSED] drm_test_mm_align32 [11:55:17] [PASSED] drm_test_mm_align64 [11:55:17] [PASSED] drm_test_mm_lowest [11:55:17] [PASSED] drm_test_mm_highest [11:55:17] ===================== [PASSED] drm_mm ====================== [11:55:17] ============= drm_modes_analog_tv (5 subtests) ============= [11:55:17] [PASSED] drm_test_modes_analog_tv_mono_576i [11:55:17] [PASSED] drm_test_modes_analog_tv_ntsc_480i [11:55:17] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [11:55:17] [PASSED] drm_test_modes_analog_tv_pal_576i [11:55:17] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [11:55:17] =============== [PASSED] drm_modes_analog_tv =============== [11:55:17] ============== drm_plane_helper (2 subtests) =============== [11:55:17] =============== drm_test_check_plane_state ================ [11:55:17] [PASSED] clipping_simple [11:55:17] [PASSED] clipping_rotate_reflect [11:55:17] [PASSED] positioning_simple [11:55:17] [PASSED] upscaling [11:55:17] [PASSED] downscaling [11:55:17] [PASSED] rounding1 [11:55:17] [PASSED] rounding2 [11:55:17] [PASSED] rounding3 [11:55:17] [PASSED] rounding4 [11:55:17] =========== [PASSED] drm_test_check_plane_state ============ [11:55:17] =========== drm_test_check_invalid_plane_state ============ [11:55:17] [PASSED] positioning_invalid [11:55:17] [PASSED] upscaling_invalid [11:55:17] [PASSED] downscaling_invalid [11:55:17] ======= [PASSED] drm_test_check_invalid_plane_state ======== [11:55:17] ================ [PASSED] drm_plane_helper ================= [11:55:17] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [11:55:17] ====== drm_test_connector_helper_tv_get_modes_check ======= [11:55:17] [PASSED] None [11:55:17] [PASSED] PAL [11:55:17] [PASSED] NTSC [11:55:17] [PASSED] Both, NTSC Default [11:55:17] [PASSED] Both, PAL Default [11:55:17] [PASSED] Both, NTSC Default, with PAL on command-line [11:55:17] [PASSED] Both, PAL Default, with NTSC on command-line [11:55:17] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [11:55:17] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [11:55:17] ================== drm_rect (9 subtests) =================== [11:55:17] [PASSED] drm_test_rect_clip_scaled_div_by_zero [11:55:17] [PASSED] drm_test_rect_clip_scaled_not_clipped [11:55:17] [PASSED] drm_test_rect_clip_scaled_clipped [11:55:17] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [11:55:17] ================= drm_test_rect_intersect ================= [11:55:17] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [11:55:17] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [11:55:17] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [11:55:17] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [11:55:17] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [11:55:17] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [11:55:17] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [11:55:17] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [11:55:17] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [11:55:17] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [11:55:17] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [11:55:17] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [11:55:17] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [11:55:17] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [11:55:17] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [11:55:17] ============= [PASSED] drm_test_rect_intersect ============= [11:55:17] ================ drm_test_rect_calc_hscale ================ [11:55:17] [PASSED] normal use [11:55:17] [PASSED] out of max range [11:55:17] [PASSED] out of min range [11:55:17] [PASSED] zero dst [11:55:17] [PASSED] negative src [11:55:17] [PASSED] negative dst [11:55:17] ============ [PASSED] drm_test_rect_calc_hscale ============ [11:55:17] ================ drm_test_rect_calc_vscale ================ [11:55:17] [PASSED] normal use [11:55:17] [PASSED] out of max range [11:55:17] [PASSED] out of min range [11:55:17] [PASSED] zero dst [11:55:17] [PASSED] negative src [11:55:17] [PASSED] negative dst [11:55:17] ============ [PASSED] drm_test_rect_calc_vscale ============ [11:55:17] ================== drm_test_rect_rotate =================== [11:55:17] [PASSED] reflect-x [11:55:17] [PASSED] reflect-y [11:55:17] [PASSED] rotate-0 [11:55:17] [PASSED] rotate-90 [11:55:17] [PASSED] rotate-180 [11:55:17] [PASSED] rotate-270 stty: 'standard input': Inappropriate ioctl for device [11:55:17] ============== [PASSED] drm_test_rect_rotate =============== [11:55:17] ================ drm_test_rect_rotate_inv ================= [11:55:17] [PASSED] reflect-x [11:55:17] [PASSED] reflect-y [11:55:17] [PASSED] rotate-0 [11:55:17] [PASSED] rotate-90 [11:55:17] [PASSED] rotate-180 [11:55:17] [PASSED] rotate-270 [11:55:17] ============ [PASSED] drm_test_rect_rotate_inv ============= [11:55:17] ==================== [PASSED] drm_rect ===================== [11:55:17] ============ drm_sysfb_modeset_test (1 subtest) ============ [11:55:17] ============ drm_test_sysfb_build_fourcc_list ============= [11:55:17] [PASSED] no native formats [11:55:17] [PASSED] XRGB8888 as native format [11:55:17] [PASSED] remove duplicates [11:55:17] [PASSED] convert alpha formats [11:55:17] [PASSED] random formats [11:55:17] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [11:55:17] ============= [PASSED] drm_sysfb_modeset_test ============== [11:55:17] ============================================================ [11:55:17] Testing complete. Ran 616 tests: passed: 616 [11:55:17] Elapsed time: 25.094s total, 1.736s configuring, 23.137s building, 0.193s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [11:55:17] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [11:55:19] 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 [11:55:27] Starting KUnit Kernel (1/1)... [11:55:27] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [11:55:27] ================= ttm_device (5 subtests) ================== [11:55:27] [PASSED] ttm_device_init_basic [11:55:27] [PASSED] ttm_device_init_multiple [11:55:27] [PASSED] ttm_device_fini_basic [11:55:27] [PASSED] ttm_device_init_no_vma_man [11:55:27] ================== ttm_device_init_pools ================== [11:55:27] [PASSED] No DMA allocations, no DMA32 required [11:55:27] [PASSED] DMA allocations, DMA32 required [11:55:27] [PASSED] No DMA allocations, DMA32 required [11:55:27] [PASSED] DMA allocations, no DMA32 required [11:55:27] ============== [PASSED] ttm_device_init_pools ============== [11:55:27] =================== [PASSED] ttm_device ==================== [11:55:27] ================== ttm_pool (8 subtests) =================== [11:55:27] ================== ttm_pool_alloc_basic =================== [11:55:27] [PASSED] One page [11:55:27] [PASSED] More than one page [11:55:27] [PASSED] Above the allocation limit [11:55:27] [PASSED] One page, with coherent DMA mappings enabled [11:55:27] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [11:55:27] ============== [PASSED] ttm_pool_alloc_basic =============== [11:55:27] ============== ttm_pool_alloc_basic_dma_addr ============== [11:55:27] [PASSED] One page [11:55:27] [PASSED] More than one page [11:55:27] [PASSED] Above the allocation limit [11:55:27] [PASSED] One page, with coherent DMA mappings enabled [11:55:27] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [11:55:27] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [11:55:27] [PASSED] ttm_pool_alloc_order_caching_match [11:55:27] [PASSED] ttm_pool_alloc_caching_mismatch [11:55:27] [PASSED] ttm_pool_alloc_order_mismatch [11:55:27] [PASSED] ttm_pool_free_dma_alloc [11:55:27] [PASSED] ttm_pool_free_no_dma_alloc [11:55:27] [PASSED] ttm_pool_fini_basic [11:55:27] ==================== [PASSED] ttm_pool ===================== [11:55:27] ================ ttm_resource (8 subtests) ================= [11:55:27] ================= ttm_resource_init_basic ================= [11:55:27] [PASSED] Init resource in TTM_PL_SYSTEM [11:55:27] [PASSED] Init resource in TTM_PL_VRAM [11:55:27] [PASSED] Init resource in a private placement [11:55:27] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [11:55:27] ============= [PASSED] ttm_resource_init_basic ============= [11:55:27] [PASSED] ttm_resource_init_pinned [11:55:27] [PASSED] ttm_resource_fini_basic [11:55:27] [PASSED] ttm_resource_manager_init_basic [11:55:27] [PASSED] ttm_resource_manager_usage_basic [11:55:27] [PASSED] ttm_resource_manager_set_used_basic [11:55:27] [PASSED] ttm_sys_man_alloc_basic [11:55:27] [PASSED] ttm_sys_man_free_basic [11:55:27] ================== [PASSED] ttm_resource =================== [11:55:27] =================== ttm_tt (15 subtests) =================== [11:55:27] ==================== ttm_tt_init_basic ==================== [11:55:27] [PASSED] Page-aligned size [11:55:27] [PASSED] Extra pages requested [11:55:27] ================ [PASSED] ttm_tt_init_basic ================ [11:55:27] [PASSED] ttm_tt_init_misaligned [11:55:27] [PASSED] ttm_tt_fini_basic [11:55:27] [PASSED] ttm_tt_fini_sg [11:55:27] [PASSED] ttm_tt_fini_shmem [11:55:27] [PASSED] ttm_tt_create_basic [11:55:27] [PASSED] ttm_tt_create_invalid_bo_type [11:55:27] [PASSED] ttm_tt_create_ttm_exists [11:55:27] [PASSED] ttm_tt_create_failed [11:55:27] [PASSED] ttm_tt_destroy_basic [11:55:27] [PASSED] ttm_tt_populate_null_ttm [11:55:27] [PASSED] ttm_tt_populate_populated_ttm [11:55:27] [PASSED] ttm_tt_unpopulate_basic [11:55:27] [PASSED] ttm_tt_unpopulate_empty_ttm [11:55:27] [PASSED] ttm_tt_swapin_basic [11:55:27] ===================== [PASSED] ttm_tt ====================== [11:55:27] =================== ttm_bo (14 subtests) =================== [11:55:27] =========== ttm_bo_reserve_optimistic_no_ticket =========== [11:55:27] [PASSED] Cannot be interrupted and sleeps [11:55:27] [PASSED] Cannot be interrupted, locks straight away [11:55:27] [PASSED] Can be interrupted, sleeps [11:55:27] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [11:55:27] [PASSED] ttm_bo_reserve_locked_no_sleep [11:55:27] [PASSED] ttm_bo_reserve_no_wait_ticket [11:55:27] [PASSED] ttm_bo_reserve_double_resv [11:55:27] [PASSED] ttm_bo_reserve_interrupted [11:55:27] [PASSED] ttm_bo_reserve_deadlock [11:55:27] [PASSED] ttm_bo_unreserve_basic [11:55:27] [PASSED] ttm_bo_unreserve_pinned [11:55:27] [PASSED] ttm_bo_unreserve_bulk [11:55:27] [PASSED] ttm_bo_put_basic [11:55:27] [PASSED] ttm_bo_put_shared_resv [11:55:27] [PASSED] ttm_bo_pin_basic [11:55:27] [PASSED] ttm_bo_pin_unpin_resource [11:55:27] [PASSED] ttm_bo_multiple_pin_one_unpin [11:55:27] ===================== [PASSED] ttm_bo ====================== [11:55:27] ============== ttm_bo_validate (21 subtests) =============== [11:55:27] ============== ttm_bo_init_reserved_sys_man =============== [11:55:27] [PASSED] Buffer object for userspace [11:55:27] [PASSED] Kernel buffer object [11:55:27] [PASSED] Shared buffer object [11:55:27] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [11:55:27] ============== ttm_bo_init_reserved_mock_man ============== [11:55:27] [PASSED] Buffer object for userspace [11:55:27] [PASSED] Kernel buffer object [11:55:27] [PASSED] Shared buffer object [11:55:27] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [11:55:27] [PASSED] ttm_bo_init_reserved_resv [11:55:27] ================== ttm_bo_validate_basic ================== [11:55:27] [PASSED] Buffer object for userspace [11:55:27] [PASSED] Kernel buffer object [11:55:27] [PASSED] Shared buffer object [11:55:27] ============== [PASSED] ttm_bo_validate_basic ============== [11:55:27] [PASSED] ttm_bo_validate_invalid_placement [11:55:27] ============= ttm_bo_validate_same_placement ============== [11:55:27] [PASSED] System manager [11:55:27] [PASSED] VRAM manager [11:55:27] ========= [PASSED] ttm_bo_validate_same_placement ========== [11:55:27] [PASSED] ttm_bo_validate_failed_alloc [11:55:27] [PASSED] ttm_bo_validate_pinned [11:55:27] [PASSED] ttm_bo_validate_busy_placement [11:55:27] ================ ttm_bo_validate_multihop ================= [11:55:27] [PASSED] Buffer object for userspace [11:55:27] [PASSED] Kernel buffer object [11:55:27] [PASSED] Shared buffer object [11:55:27] ============ [PASSED] ttm_bo_validate_multihop ============= [11:55:27] ========== ttm_bo_validate_no_placement_signaled ========== [11:55:27] [PASSED] Buffer object in system domain, no page vector [11:55:27] [PASSED] Buffer object in system domain with an existing page vector [11:55:27] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [11:55:27] ======== ttm_bo_validate_no_placement_not_signaled ======== [11:55:27] [PASSED] Buffer object for userspace [11:55:27] [PASSED] Kernel buffer object [11:55:27] [PASSED] Shared buffer object [11:55:27] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [11:55:27] [PASSED] ttm_bo_validate_move_fence_signaled [11:55:27] ========= ttm_bo_validate_move_fence_not_signaled ========= [11:55:27] [PASSED] Waits for GPU [11:55:27] [PASSED] Tries to lock straight away [11:55:27] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [11:55:27] [PASSED] ttm_bo_validate_happy_evict [11:55:27] [PASSED] ttm_bo_validate_all_pinned_evict [11:55:27] [PASSED] ttm_bo_validate_allowed_only_evict [11:55:27] [PASSED] ttm_bo_validate_deleted_evict [11:55:27] [PASSED] ttm_bo_validate_busy_domain_evict [11:55:27] [PASSED] ttm_bo_validate_evict_gutting [11:55:27] [PASSED] ttm_bo_validate_recrusive_evict stty: 'standard input': Inappropriate ioctl for device [11:55:27] ================= [PASSED] ttm_bo_validate ================= [11:55:27] ============================================================ [11:55:27] Testing complete. Ran 101 tests: passed: 101 [11:55:27] Elapsed time: 9.690s total, 1.701s configuring, 7.773s building, 0.187s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
Patchwork
CI✗ Xe.CI.BAT: failure for Driver-managed exhaustive eviction
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction
URL : https://patchwork.freedesktop.org/series/152882/
State : failure
== Summary ==
CI Bug Log - changes from xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13_BAT -> xe-pw-152882v1_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-152882v1_BAT absolutely need to be verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-152882v1_BAT, 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 (11 -> 9)
------------------------------
Missing (2): bat-adlp-vm bat-ptl-vm
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-152882v1_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-all:
- bat-bmg-2: [PASS][1] -> [FAIL][2] +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/bat-bmg-2/igt@sriov_basic@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/bat-bmg-2/igt@sriov_basic@[email protected]
- bat-atsm-2: [PASS][3] -> [FAIL][4] +1 other test fail
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/bat-atsm-2/igt@sriov_basic@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/bat-atsm-2/igt@sriov_basic@[email protected]
* igt@xe_sriov_flr@flr-vf1-clear:
- bat-bmg-1: [PASS][5] -> [FAIL][6] +4 other tests fail
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/bat-bmg-1/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/bat-bmg-1/igt@[email protected]
Build changes
-------------
* Linux: xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13 -> xe-pw-152882v1
IGT_8493: 8493
xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13: 546fc742f08b8dbd3fa1486933c9b15085e11d13
xe-pw-152882v1: 152882v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/index.html
Patchwork
CI✗ Xe.CI.Full: failure for Driver-managed exhaustive eviction
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: Driver-managed exhaustive eviction
URL : https://patchwork.freedesktop.org/series/152882/
State : failure
== Summary ==
CI Bug Log - changes from xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13_FULL -> xe-pw-152882v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-152882v1_FULL absolutely need to be verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-152882v1_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-152882v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic@pipe-d-hdmi-a-3-x:
- shard-bmg: [PASS][1] -> [DMESG-WARN][2] +6 other tests dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-7/igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic@pipe-d-hdmi-a-3-x.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic@pipe-d-hdmi-a-3-x.html
* igt@kms_async_flips@crc-atomic@pipe-c-dp-2:
- shard-bmg: [PASS][3] -> [DMESG-FAIL][4] +3 other tests dmesg-fail
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-7/igt@kms_async_flips@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-3/igt@kms_async_flips@[email protected]
* igt@kms_fbcon_fbt@fbc:
- shard-adlp: [PASS][5] -> [FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-2/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-1/igt@[email protected]
- shard-dg2-set2: [PASS][7] -> [FAIL][8]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-433/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-464/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-blt:
- shard-dg2-set2: [PASS][9] -> [SKIP][10] +67 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-433/igt@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-464/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-1p-rte:
- shard-adlp: [PASS][11] -> [SKIP][12] +11 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-9/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-8/igt@[email protected]
- shard-dg2-set2: NOTRUN -> [SKIP][13] +2 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-7:
- shard-bmg: [PASS][14] -> [FAIL][15] +33 other tests fail
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-2/igt@sriov_basic@[email protected]
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-5/igt@sriov_basic@[email protected]
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-imm:
- shard-lnl: NOTRUN -> [FAIL][16]
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-imm.html
* igt@xe_sriov_flr@flr-each-isolation:
- shard-bmg: NOTRUN -> [FAIL][17]
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses. They do not affect the overall result.
* {igt@kms_async_flips@async-flip-hang@pipe-d-dp-2}:
- shard-bmg: [PASS][18] -> [DMESG-WARN][19] +9 other tests dmesg-warn
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-2/igt@kms_async_flips@[email protected]
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-5/igt@kms_async_flips@[email protected]
* {igt@xe_compute_preempt@compute-preempt-many-vram}:
- shard-bmg: [PASS][20] -> [INCOMPLETE][21] +1 other test incomplete
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@[email protected]
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-1/igt@[email protected]
* {igt@xe_pmu@engine-activity-suspend}:
- shard-dg2-set2: [PASS][22] -> [INCOMPLETE][23]
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-434/igt@[email protected]
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-434/igt@[email protected]
Known issues
------------
Here are the changes found in xe-pw-152882v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@crc-atomic@pipe-d-hdmi-a-3:
- shard-bmg: [PASS][24] -> [FAIL][25] ([Intel XE#4677]) +1 other test fail
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-7/igt@kms_async_flips@[email protected]
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-3/igt@kms_async_flips@[email protected]
* igt@kms_async_flips@crc@pipe-d-dp-2:
- shard-bmg: [PASS][26] -> [FAIL][27] ([Intel XE#3884]) +1 other test fail
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-5/igt@kms_async_flips@[email protected]
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-8/igt@kms_async_flips@[email protected]
* igt@kms_async_flips@crc@pipe-d-hdmi-a-3:
- shard-bmg: [PASS][28] -> [DMESG-FAIL][29] ([Intel XE#4626]) +8 other tests dmesg-fail
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-5/igt@kms_async_flips@[email protected]
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-8/igt@kms_async_flips@[email protected]
* igt@kms_atomic_transition@plane-all-modeset-transition:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#3279])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_big_fb@4-tiled-addfb-size-offset-overflow:
- shard-adlp: NOTRUN -> [SKIP][31] ([Intel XE#607])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_big_fb@y-tiled-16bpp-rotate-0:
- shard-adlp: [PASS][32] -> [DMESG-FAIL][33] ([Intel XE#4543]) +7 other tests dmesg-fail
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-3/igt@[email protected]
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-3/igt@[email protected]
* igt@kms_big_fb@y-tiled-16bpp-rotate-180:
- shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#1124]) +2 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_big_fb@y-tiled-16bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][35] ([Intel XE#316]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-dg2-set2: NOTRUN -> [SKIP][36] ([Intel XE#1124])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_big_fb@yf-tiled-8bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#1124]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
- shard-dg2-set2: NOTRUN -> [SKIP][38] ([Intel XE#607])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_big_fb@yf-tiled-addfb-size-overflow:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#1428])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-adlp: NOTRUN -> [SKIP][40] ([Intel XE#1124]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_bw@linear-tiling-2-displays-1920x1080p:
- shard-dg2-set2: NOTRUN -> [SKIP][41] ([Intel XE#367])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-435/igt@[email protected]
* igt@kms_bw@linear-tiling-2-displays-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#367]) +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-a-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][43] ([Intel XE#787]) +146 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-adlp: NOTRUN -> [SKIP][44] ([Intel XE#2907])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#455] / [Intel XE#787]) +24 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][46] -> [INCOMPLETE][47] ([Intel XE#3862]) +1 other test incomplete
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-1/igt@[email protected]
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-5/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
- shard-dg2-set2: [PASS][48] -> [INCOMPLETE][49] ([Intel XE#3862]) +1 other test incomplete
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-464/igt@[email protected]
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-433/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#2652] / [Intel XE#787]) +3 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@kms_ccs@[email protected]
* igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#2887]) +3 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#2887]) +5 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_ccs@random-ccs-data-y-tiled-ccs:
- shard-adlp: NOTRUN -> [SKIP][53] ([Intel XE#455] / [Intel XE#787]) +5 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_ccs@random-ccs-data-y-tiled-ccs@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][54] ([Intel XE#787]) +8 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@kms_ccs@[email protected]
* igt@kms_cdclk@mode-transition@pipe-a-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][55] ([Intel XE#4417]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@kms_cdclk@[email protected]
* igt@kms_chamelium_color@ctm-max:
- shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#306])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_chamelium_edid@dp-mode-timings:
- shard-adlp: NOTRUN -> [SKIP][57] ([Intel XE#373])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_chamelium_frames@hdmi-aspect-ratio:
- shard-dg2-set2: NOTRUN -> [SKIP][58] ([Intel XE#373]) +3 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-435/igt@[email protected]
* igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#2252])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#373]) +2 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_concurrent@multi-plane-atomic-lowres:
- shard-bmg: NOTRUN -> [ABORT][61] ([Intel XE#5826])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_concurrent@multi-plane-atomic-lowres@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [ABORT][62] ([Intel XE#5898])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@kms_concurrent@[email protected]
* igt@kms_concurrent@multi-plane-atomic-lowres@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [DMESG-WARN][63] ([Intel XE#5826])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@kms_concurrent@[email protected]
* igt@kms_content_protection@content-type-change:
- shard-lnl: NOTRUN -> [SKIP][64] ([Intel XE#3278])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-lnl: NOTRUN -> [SKIP][65] ([Intel XE#307])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-dg2-set2: NOTRUN -> [SKIP][66] ([Intel XE#307])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_content_protection@lic-type-0@pipe-a-dp-4:
- shard-dg2-set2: NOTRUN -> [FAIL][67] ([Intel XE#3304])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-434/igt@kms_content_protection@[email protected]
* igt@kms_content_protection@uevent@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][68] ([Intel XE#1188])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@kms_content_protection@[email protected]
* igt@kms_cursor_crc@cursor-onscreen-256x85:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#2320]) +1 other test skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_cursor_crc@cursor-onscreen-32x32:
- shard-adlp: NOTRUN -> [SKIP][70] ([Intel XE#455])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_cursor_crc@cursor-random-32x32:
- shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#1424])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#2321])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_cursor_legacy@cursora-vs-flipb-atomic:
- shard-adlp: NOTRUN -> [SKIP][73] ([Intel XE#309])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
- shard-bmg: [PASS][74] -> [SKIP][75] ([Intel XE#2291]) +1 other test skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-8/igt@[email protected]
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#309]) +1 other test skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
- shard-dg2-set2: NOTRUN -> [SKIP][77] ([Intel XE#323])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
- shard-lnl: NOTRUN -> [SKIP][78] ([Intel XE#1508])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_dp_link_training@non-uhbr-sst:
- shard-bmg: [PASS][79] -> [SKIP][80] ([Intel XE#4354])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-7/igt@[email protected]
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_dsc@dsc-with-bpc:
- shard-dg2-set2: NOTRUN -> [SKIP][81] ([Intel XE#455]) +3 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-435/igt@[email protected]
- shard-lnl: NOTRUN -> [SKIP][82] ([Intel XE#2244])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
* igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
- shard-bmg: [PASS][83] -> [SKIP][84] ([Intel XE#2316]) +2 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-8/igt@[email protected]
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_flip@2x-flip-vs-rmfb-interruptible:
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#1421]) +4 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_flip@flip-vs-dpms-on-nop-interruptible@a-hdmi-a1:
- shard-adlp: [PASS][86] -> [DMESG-WARN][87] ([Intel XE#4543]) +13 other tests dmesg-warn
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-1/igt@kms_flip@[email protected]
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-6/igt@kms_flip@[email protected]
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [PASS][88] -> [FAIL][89] ([Intel XE#301]) +1 other test fail
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-7/igt@[email protected]
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-5/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [PASS][90] -> [FAIL][91] ([Intel XE#301] / [Intel XE#3149])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-3/igt@kms_flip@[email protected]
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@kms_flip@[email protected]
* igt@kms_flip@flip-vs-rmfb:
- shard-adlp: [PASS][92] -> [DMESG-WARN][93] ([Intel XE#5208])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-3/igt@[email protected]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-3/igt@[email protected]
* igt@kms_flip@flip-vs-suspend:
- shard-bmg: [PASS][94] -> [INCOMPLETE][95] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-8/igt@[email protected]
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-1/igt@[email protected]
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#2293] / [Intel XE#2380])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][97] ([Intel XE#2293])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#1397] / [Intel XE#1745])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#1397])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][100] ([Intel XE#1401] / [Intel XE#1745])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][101] ([Intel XE#1401])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][102] ([Intel XE#2311]) +4 other tests skip
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
- shard-adlp: NOTRUN -> [SKIP][103] ([Intel XE#651]) +1 other test skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_frontbuffer_tracking@drrs-slowdraw:
- shard-lnl: NOTRUN -> [SKIP][104] ([Intel XE#651]) +5 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_frontbuffer_tracking@drrs-suspend:
- shard-dg2-set2: NOTRUN -> [SKIP][105] ([Intel XE#651]) +4 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
- shard-adlp: NOTRUN -> [SKIP][106] ([Intel XE#656]) +7 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move:
- shard-bmg: NOTRUN -> [SKIP][107] ([Intel XE#5390]) +1 other test skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][108] ([Intel XE#656]) +12 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt:
- shard-adlp: NOTRUN -> [SKIP][109] ([Intel XE#653]) +3 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff:
- shard-dg2-set2: NOTRUN -> [SKIP][110] ([Intel XE#653]) +6 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-modesetfrombusy:
- shard-bmg: NOTRUN -> [SKIP][111] ([Intel XE#2313]) +6 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_getfb@getfb-handle-closed:
- shard-adlp: [PASS][112] -> [DMESG-WARN][113] ([Intel XE#2953] / [Intel XE#4173])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-1/igt@[email protected]
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-6/igt@[email protected]
* igt@kms_hdr@brightness-with-hdr:
- shard-lnl: NOTRUN -> [SKIP][114] ([Intel XE#3374] / [Intel XE#3544])
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_hdr@invalid-metadata-sizes:
- shard-bmg: [PASS][115] -> [SKIP][116] ([Intel XE#1503])
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-8/igt@[email protected]
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_joiner@basic-force-big-joiner:
- shard-bmg: [PASS][117] -> [SKIP][118] ([Intel XE#3012])
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-4/igt@[email protected]
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_plane_multiple@tiling-x@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [FAIL][119] ([Intel XE#4658]) +3 other tests fail
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@kms_plane_multiple@[email protected]
* igt@kms_plane_scaling@planes-downscale-factor-0-5:
- shard-lnl: NOTRUN -> [SKIP][120] ([Intel XE#2763]) +3 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_pm_backlight@brightness-with-dpms:
- shard-bmg: NOTRUN -> [SKIP][121] ([Intel XE#2938])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-lnl: NOTRUN -> [SKIP][122] ([Intel XE#1439] / [Intel XE#3141])
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-adlp: NOTRUN -> [SKIP][123] ([Intel XE#836])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][124] ([Intel XE#1489] / [Intel XE#5899]) +1 other test skip
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
- shard-dg2-set2: NOTRUN -> [SKIP][125] ([Intel XE#1489] / [Intel XE#5899]) +1 other test skip
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
- shard-adlp: NOTRUN -> [SKIP][126] ([Intel XE#1489] / [Intel XE#5899])
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_psr@fbc-pr-cursor-blt:
- shard-bmg: NOTRUN -> [SKIP][127] ([Intel XE#2234] / [Intel XE#2850] / [Intel XE#5899]) +2 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@kms_psr@pr-dpms:
- shard-lnl: NOTRUN -> [SKIP][128] ([Intel XE#1406] / [Intel XE#5899]) +1 other test skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_psr@pr-sprite-render:
- shard-adlp: NOTRUN -> [SKIP][129] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_psr@psr2-primary-render:
- shard-dg2-set2: NOTRUN -> [SKIP][130] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +2 other tests skip
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-435/igt@[email protected]
* igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-adlp: NOTRUN -> [FAIL][131] ([Intel XE#1874])
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@kms_rotation_crc@primary-x-tiled-reflect-x-0:
- shard-lnl: NOTRUN -> [FAIL][132] ([Intel XE#4689])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-dg2-set2: NOTRUN -> [SKIP][133] ([Intel XE#3414])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_setmode@clone-exclusive-crtc:
- shard-lnl: NOTRUN -> [SKIP][134] ([Intel XE#1435])
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
* igt@kms_vrr@flip-dpms:
- shard-bmg: NOTRUN -> [SKIP][135] ([Intel XE#1499])
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@xe_ccs@block-multicopy-inplace:
- shard-adlp: NOTRUN -> [SKIP][136] ([Intel XE#455] / [Intel XE#488] / [Intel XE#5607])
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@xe_create@multigpu-create-massive-size:
- shard-dg2-set2: NOTRUN -> [SKIP][137] ([Intel XE#944])
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@xe_eudebug@basic-connect:
- shard-lnl: NOTRUN -> [SKIP][138] ([Intel XE#4837]) +3 other tests skip
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@xe_eudebug@basic-vm-bind-discovery:
- shard-dg2-set2: NOTRUN -> [SKIP][139] ([Intel XE#4837]) +2 other tests skip
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@xe_eudebug_online@interrupt-all-set-breakpoint-faultable:
- shard-adlp: NOTRUN -> [SKIP][140] ([Intel XE#4837] / [Intel XE#5565])
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@xe_eudebug_online@single-step:
- shard-bmg: NOTRUN -> [SKIP][141] ([Intel XE#4837]) +1 other test skip
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@xe_evict@evict-beng-large-multi-vm:
- shard-lnl: NOTRUN -> [SKIP][142] ([Intel XE#688])
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
* igt@xe_evict@evict-beng-small-external-cm:
- shard-adlp: NOTRUN -> [SKIP][143] ([Intel XE#261] / [Intel XE#5564] / [Intel XE#688]) +1 other test skip
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-4/igt@[email protected]
* igt@xe_evict@evict-large-external:
- shard-adlp: NOTRUN -> [SKIP][144] ([Intel XE#261] / [Intel XE#5564])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-4/igt@[email protected]
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-rebind:
- shard-bmg: NOTRUN -> [SKIP][145] ([Intel XE#2322]) +1 other test skip
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race:
- shard-dg2-set2: [PASS][146] -> [SKIP][147] ([Intel XE#1392]) +5 other tests skip
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-433/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race.html
* igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][148] ([Intel XE#1392]) +4 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
- shard-adlp: NOTRUN -> [SKIP][149] ([Intel XE#1392] / [Intel XE#5575]) +1 other test skip
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@xe_exec_fault_mode@invalid-va:
- shard-dg2-set2: NOTRUN -> [SKIP][150] ([Intel XE#288]) +4 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@xe_exec_fault_mode@twice-userptr-rebind-prefetch:
- shard-adlp: NOTRUN -> [SKIP][151] ([Intel XE#288] / [Intel XE#5561]) +5 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@xe_exec_reset@parallel-gt-reset:
- shard-adlp: [PASS][152] -> [DMESG-WARN][153] ([Intel XE#3876])
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-2/igt@[email protected]
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-1/igt@[email protected]
* igt@xe_exec_system_allocator@many-large-mmap-free-race-nomemset:
- shard-dg2-set2: NOTRUN -> [SKIP][154] ([Intel XE#4915]) +50 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@xe_exec_system_allocator@once-malloc-bo-unmap:
- shard-adlp: NOTRUN -> [SKIP][155] ([Intel XE#4915]) +36 other tests skip
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@xe_exec_system_allocator@threads-many-execqueues-mmap-new-huge:
- shard-bmg: NOTRUN -> [SKIP][156] ([Intel XE#4943]) +5 other tests skip
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@xe_exec_system_allocator@threads-many-execqueues-mmap-new-huge.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-free-huge-nomemset:
- shard-lnl: NOTRUN -> [SKIP][157] ([Intel XE#4943]) +9 other tests skip
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-free-huge-nomemset.html
* igt@xe_exec_threads@threads-bal-shared-vm-userptr:
- shard-adlp: [PASS][158] -> [DMESG-FAIL][159] ([Intel XE#3876])
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-2/igt@[email protected]
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-1/igt@[email protected]
* igt@xe_media_fill@media-fill:
- shard-bmg: NOTRUN -> [SKIP][160] ([Intel XE#2459] / [Intel XE#2596])
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@xe_mmap@vram:
- shard-adlp: NOTRUN -> [SKIP][161] ([Intel XE#1008] / [Intel XE#5591])
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@xe_module_load@load:
- shard-lnl: ([PASS][162], [PASS][163], [PASS][164], [PASS][165], [PASS][166], [PASS][167], [PASS][168], [PASS][169], [PASS][170], [PASS][171], [PASS][172], [PASS][173], [PASS][174], [PASS][175], [PASS][176], [PASS][177], [PASS][178], [PASS][179], [PASS][180], [PASS][181], [PASS][182], [PASS][183], [PASS][184], [PASS][185], [PASS][186]) -> ([PASS][187], [PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [PASS][194], [PASS][195], [PASS][196], [PASS][197], [PASS][198], [PASS][199], [PASS][200], [PASS][201], [PASS][202], [PASS][203], [PASS][204], [PASS][205], [PASS][206], [PASS][207], [PASS][208], [PASS][209], [PASS][210], [SKIP][211], [PASS][212]) ([Intel XE#378])
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-2/igt@[email protected]
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-1/igt@[email protected]
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-3/igt@[email protected]
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-1/igt@[email protected]
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-7/igt@[email protected]
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-7/igt@[email protected]
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-2/igt@[email protected]
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-1/igt@[email protected]
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-8/igt@[email protected]
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-3/igt@[email protected]
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-3/igt@[email protected]
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-3/igt@[email protected]
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-5/igt@[email protected]
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-5/igt@[email protected]
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-1/igt@[email protected]
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-4/igt@[email protected]
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-2/igt@[email protected]
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-4/igt@[email protected]
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-4/igt@[email protected]
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-5/igt@[email protected]
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-7/igt@[email protected]
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-8/igt@[email protected]
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-8/igt@[email protected]
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-8/igt@[email protected]
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-2/igt@[email protected]
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-5/igt@[email protected]
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-8/igt@[email protected]
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-3/igt@[email protected]
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-3/igt@[email protected]
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-8/igt@[email protected]
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-8/igt@[email protected]
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-3/igt@[email protected]
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-3/igt@[email protected]
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-8/igt@[email protected]
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-5/igt@[email protected]
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-7/igt@[email protected]
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-8/igt@[email protected]
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-7/igt@[email protected]
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-7/igt@[email protected]
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-5/igt@[email protected]
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@xe_oa@mmio-triggered-reports-read:
- shard-dg2-set2: NOTRUN -> [SKIP][213] ([Intel XE#5103])
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@xe_oa@polling:
- shard-adlp: NOTRUN -> [SKIP][214] ([Intel XE#3573])
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
* igt@xe_peer2peer@read:
- shard-lnl: NOTRUN -> [SKIP][215] ([Intel XE#1061])
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
* igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p:
- shard-dg2-set2: NOTRUN -> [FAIL][216] ([Intel XE#1173]) +1 other test fail
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-435/igt@xe_peer2peer@[email protected]
* igt@xe_pm@d3cold-mmap-system:
- shard-lnl: NOTRUN -> [SKIP][217] ([Intel XE#2284] / [Intel XE#366])
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@xe_pm@s2idle-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][218] ([Intel XE#2284])
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-4/igt@[email protected]
* igt@xe_pm@s3-vm-bind-unbind-all:
- shard-lnl: NOTRUN -> [SKIP][219] ([Intel XE#584])
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
* igt@xe_query@multigpu-query-cs-cycles:
- shard-lnl: NOTRUN -> [SKIP][220] ([Intel XE#944]) +1 other test skip
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-1/igt@[email protected]
* igt@xe_query@multigpu-query-pxp-status:
- shard-adlp: NOTRUN -> [SKIP][221] ([Intel XE#944])
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-9/igt@[email protected]
#### Possible fixes ####
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-adlp: [DMESG-FAIL][222] ([Intel XE#4543]) -> [PASS][223]
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-3/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-3/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
- shard-bmg: [SKIP][224] ([Intel XE#2314] / [Intel XE#2894]) -> [PASS][225]
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@[email protected]
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
- shard-dg2-set2: [INCOMPLETE][226] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][227]
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-433/igt@[email protected]
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-432/igt@[email protected]
* igt@kms_concurrent@multi-plane-atomic-lowres:
- shard-dg2-set2: [ABORT][228] ([Intel XE#5826]) -> [PASS][229]
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-436/igt@[email protected]
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-435/igt@[email protected]
- shard-lnl: [ABORT][230] ([Intel XE#5826]) -> [PASS][231] +1 other test pass
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-5/igt@[email protected]
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-4/igt@[email protected]
* igt@kms_concurrent@multi-plane-atomic-lowres@pipe-a-hdmi-a-6:
- shard-dg2-set2: [ABORT][232] ([Intel XE#5826] / [Intel XE#5898]) -> [PASS][233]
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-436/igt@kms_concurrent@[email protected]
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-435/igt@kms_concurrent@[email protected]
* igt@kms_cursor_crc@cursor-random-256x85:
- shard-adlp: [ABORT][234] ([Intel XE#5826]) -> [PASS][235] +1 other test pass
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-4/igt@[email protected]
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-4/igt@[email protected]
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size:
- shard-bmg: [SKIP][236] ([Intel XE#2291]) -> [PASS][237] +5 other tests pass
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html
* igt@kms_display_modes@extended-mode-basic:
- shard-bmg: [SKIP][238] ([Intel XE#4302]) -> [PASS][239]
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@[email protected]
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@[email protected]
* igt@kms_flip@2x-plain-flip-fb-recreate:
- shard-bmg: [SKIP][240] ([Intel XE#2316]) -> [PASS][241] +7 other tests pass
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@[email protected]
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank@b-edp1:
- shard-lnl: [FAIL][242] ([Intel XE#301]) -> [PASS][243]
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-3/igt@kms_flip@[email protected]
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@kms_flip@[email protected]
* igt@kms_flip@plain-flip-interruptible@b-hdmi-a1:
- shard-adlp: [DMESG-WARN][244] ([Intel XE#4543]) -> [PASS][245] +7 other tests pass
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-3/igt@kms_flip@[email protected]
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-3/igt@kms_flip@[email protected]
* igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-1:
- shard-adlp: [DMESG-WARN][246] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][247] +4 other tests pass
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-8/igt@kms_pipe_crc_basic@[email protected]
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-2/igt@kms_pipe_crc_basic@[email protected]
* igt@xe_exec_basic@multigpu-no-exec-null-defer-bind:
- shard-dg2-set2: [SKIP][248] ([Intel XE#1392]) -> [PASS][249] +5 other tests pass
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-dg2-432/igt@[email protected]
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-dg2-464/igt@[email protected]
#### Warnings ####
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-adlp: [DMESG-FAIL][250] ([Intel XE#4543]) -> [FAIL][251] ([Intel XE#1874])
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-9/igt@[email protected]
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-8/igt@[email protected]
* igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate:
- shard-lnl: [ABORT][252] -> [SKIP][253] ([Intel XE#373])
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-1/igt@[email protected]
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_content_protection@srm:
- shard-bmg: [FAIL][254] ([Intel XE#1178]) -> [SKIP][255] ([Intel XE#2341])
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-4/igt@[email protected]
[255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_content_protection@uevent:
- shard-bmg: [SKIP][256] ([Intel XE#2341]) -> [FAIL][257] ([Intel XE#1188])
[256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@[email protected]
[257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@[email protected]
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-adlp: [ABORT][258] ([Intel XE#4847]) -> [ABORT][259] ([Intel XE#4847] / [Intel XE#5545])
[258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-adlp-2/igt@[email protected]
[259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-adlp-1/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank:
- shard-lnl: [FAIL][260] ([Intel XE#301]) -> [FAIL][261] ([Intel XE#301] / [Intel XE#3149])
[260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-3/igt@[email protected]
[261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-2/igt@[email protected]
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render:
- shard-bmg: [SKIP][262] ([Intel XE#2312]) -> [SKIP][263] ([Intel XE#2311]) +15 other tests skip
[262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render.html
[263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc:
- shard-bmg: [SKIP][264] ([Intel XE#2311]) -> [SKIP][265] ([Intel XE#2312]) +9 other tests skip
[264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
[265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: [SKIP][266] ([Intel XE#2312]) -> [SKIP][267] ([Intel XE#5390]) +4 other tests skip
[266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@[email protected]
[267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-1/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-bmg: [SKIP][268] ([Intel XE#5390]) -> [SKIP][269] ([Intel XE#2312]) +7 other tests skip
[268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-7/igt@[email protected]
[269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt:
- shard-bmg: [SKIP][270] ([Intel XE#2312]) -> [SKIP][271] ([Intel XE#2313]) +15 other tests skip
[270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
[271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][272] ([Intel XE#2313]) -> [SKIP][273] ([Intel XE#2312]) +10 other tests skip
[272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
[273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-bmg: [SKIP][274] ([Intel XE#5021]) -> [SKIP][275] ([Intel XE#4596])
[274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-7/igt@[email protected]
[275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-6/igt@[email protected]
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][276] ([Intel XE#2509]) -> [SKIP][277] ([Intel XE#2426])
[276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-bmg-5/igt@[email protected]
[277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-bmg-8/igt@[email protected]
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-lnl: [ABORT][278] ([Intel XE#4917] / [Intel XE#5466]) -> [ABORT][279] ([Intel XE#5466])
[278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13/shard-lnl-2/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/shard-lnl-8/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1008
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[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#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1428
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
[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#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[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#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[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#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2459
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2596
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
[Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3012]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3012
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
[Intel XE#3279]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3279
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
[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#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
[Intel XE#4302]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4302
[Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
[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#4626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4626
[Intel XE#4658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4658
[Intel XE#4677]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4677
[Intel XE#4689]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4689
[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#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5103]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5103
[Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
[Intel XE#5564]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5564
[Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5591
[Intel XE#5607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5607
[Intel XE#5826]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5826
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#5898]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5898
[Intel XE#5899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5899
[Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
[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#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13 -> xe-pw-152882v1
IGT_8493: 8493
xe-3539-546fc742f08b8dbd3fa1486933c9b15085e11d13: 546fc742f08b8dbd3fa1486933c9b15085e11d13
xe-pw-152882v1: 152882v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152882v1/index.html