Lines Matching +full:0 +full:xe

31 	XE_EXEC_QUEUE_JOB_TIMEOUT = 0,
37 static int exec_queue_user_extensions(struct xe_device *xe, struct xe_exec_queue *q,
53 static struct xe_exec_queue *__xe_exec_queue_alloc(struct xe_device *xe, in __xe_exec_queue_alloc() argument
105 err = exec_queue_user_extensions(xe, q, extensions, 0); in __xe_exec_queue_alloc()
119 u32 flags = 0; in __xe_exec_queue_init()
141 for (i = 0; i < q->width; ++i) { in __xe_exec_queue_init()
156 return 0; in __xe_exec_queue_init()
162 for (i = i - 1; i >= 0; --i) in __xe_exec_queue_init()
167 struct xe_exec_queue *xe_exec_queue_create(struct xe_device *xe, struct xe_vm *vm, in xe_exec_queue_create() argument
176 …xe_assert(xe, !vm || (!!(vm->flags & XE_VM_FLAG_GSC) == !!(hwe->engine_id == XE_HW_ENGINE_GSCCS0))… in xe_exec_queue_create()
178 q = __xe_exec_queue_alloc(xe, vm, logical_mask, width, hwe, flags, in xe_exec_queue_create()
195 err = xe_pxp_exec_queue_add(xe->pxp, q); in xe_exec_queue_create()
208 struct xe_exec_queue *xe_exec_queue_create_class(struct xe_device *xe, struct xe_gt *gt, in xe_exec_queue_create_class() argument
215 u32 logical_mask = 0; in xe_exec_queue_create_class()
231 return xe_exec_queue_create(xe, vm, logical_mask, 1, hwe0, flags, extensions); in xe_exec_queue_create_class()
236 * @xe: Xe device.
250 struct xe_exec_queue *xe_exec_queue_create_bind(struct xe_device *xe, in xe_exec_queue_create_bind() argument
259 if (xe->info.has_usm) { in xe_exec_queue_create_bind()
270 q = xe_exec_queue_create(xe, migrate_vm, in xe_exec_queue_create_bind()
274 q = xe_exec_queue_create_class(xe, gt, migrate_vm, in xe_exec_queue_create_bind()
314 for (i = 0; i < q->width; ++i) in xe_exec_queue_fini()
360 xe_exec_queue_device_get_max_priority(struct xe_device *xe) in xe_exec_queue_device_get_max_priority() argument
366 static int exec_queue_set_priority(struct xe_device *xe, struct xe_exec_queue *q, in exec_queue_set_priority() argument
369 if (XE_IOCTL_DBG(xe, value > XE_EXEC_QUEUE_PRIORITY_HIGH)) in exec_queue_set_priority()
372 if (XE_IOCTL_DBG(xe, value > xe_exec_queue_device_get_max_priority(xe))) in exec_queue_set_priority()
376 return 0; in exec_queue_set_priority()
431 static int exec_queue_set_timeslice(struct xe_device *xe, struct xe_exec_queue *q, in exec_queue_set_timeslice() argument
434 u32 min = 0, max = 0; in exec_queue_set_timeslice()
444 return 0; in exec_queue_set_timeslice()
448 exec_queue_set_pxp_type(struct xe_device *xe, struct xe_exec_queue *q, u64 value) in exec_queue_set_pxp_type() argument
451 return 0; in exec_queue_set_pxp_type()
454 if (XE_IOCTL_DBG(xe, value != DRM_XE_PXP_TYPE_HWDRM)) in exec_queue_set_pxp_type()
457 if (!xe_pxp_is_enabled(xe->pxp)) in exec_queue_set_pxp_type()
460 return xe_pxp_exec_queue_set_type(xe->pxp, q, DRM_XE_PXP_TYPE_HWDRM); in exec_queue_set_pxp_type()
463 typedef int (*xe_exec_queue_set_property_fn)(struct xe_device *xe,
473 static int exec_queue_user_ext_set_property(struct xe_device *xe, in exec_queue_user_ext_set_property() argument
483 if (XE_IOCTL_DBG(xe, err)) in exec_queue_user_ext_set_property()
486 if (XE_IOCTL_DBG(xe, ext.property >= in exec_queue_user_ext_set_property()
488 XE_IOCTL_DBG(xe, ext.pad) || in exec_queue_user_ext_set_property()
489 XE_IOCTL_DBG(xe, ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY && in exec_queue_user_ext_set_property()
498 return exec_queue_set_property_funcs[idx](xe, q, ext.value); in exec_queue_user_ext_set_property()
501 typedef int (*xe_exec_queue_user_extension_fn)(struct xe_device *xe,
510 static int exec_queue_user_extensions(struct xe_device *xe, struct xe_exec_queue *q, in exec_queue_user_extensions() argument
518 if (XE_IOCTL_DBG(xe, ext_number >= MAX_USER_EXTENSIONS)) in exec_queue_user_extensions()
522 if (XE_IOCTL_DBG(xe, err)) in exec_queue_user_extensions()
525 if (XE_IOCTL_DBG(xe, ext.pad) || in exec_queue_user_extensions()
526 XE_IOCTL_DBG(xe, ext.name >= in exec_queue_user_extensions()
532 err = exec_queue_user_extension_funcs[idx](xe, q, extensions); in exec_queue_user_extensions()
533 if (XE_IOCTL_DBG(xe, err)) in exec_queue_user_extensions()
537 return exec_queue_user_extensions(xe, q, ext.next_extension, in exec_queue_user_extensions()
540 return 0; in exec_queue_user_extensions()
543 static u32 calc_validate_logical_mask(struct xe_device *xe, in calc_validate_logical_mask() argument
551 u32 return_mask = 0, prev_mask; in calc_validate_logical_mask()
553 if (XE_IOCTL_DBG(xe, !xe_device_uc_enabled(xe) && in calc_validate_logical_mask()
555 return 0; in calc_validate_logical_mask()
557 for (i = 0; i < width; ++i) { in calc_validate_logical_mask()
558 u32 current_mask = 0; in calc_validate_logical_mask()
560 for (j = 0; j < num_placements; ++j) { in calc_validate_logical_mask()
565 hwe = xe_hw_engine_lookup(xe, eci[n]); in calc_validate_logical_mask()
566 if (XE_IOCTL_DBG(xe, !hwe)) in calc_validate_logical_mask()
567 return 0; in calc_validate_logical_mask()
569 if (XE_IOCTL_DBG(xe, xe_hw_engine_is_reserved(hwe))) in calc_validate_logical_mask()
570 return 0; in calc_validate_logical_mask()
572 if (XE_IOCTL_DBG(xe, n && eci[n].gt_id != gt_id) || in calc_validate_logical_mask()
573 XE_IOCTL_DBG(xe, n && eci[n].engine_class != class)) in calc_validate_logical_mask()
574 return 0; in calc_validate_logical_mask()
585 if (i && XE_IOCTL_DBG(xe, current_mask != prev_mask << 1)) in calc_validate_logical_mask()
586 return 0; in calc_validate_logical_mask()
597 struct xe_device *xe = to_xe_device(dev); in xe_exec_queue_create_ioctl() local
608 u32 flags = 0; in xe_exec_queue_create_ioctl()
613 if (XE_IOCTL_DBG(xe, args->flags & ~DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT) || in xe_exec_queue_create_ioctl()
614 XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1])) in xe_exec_queue_create_ioctl()
618 if (XE_IOCTL_DBG(xe, !len || len > XE_HW_ENGINE_MAX_INSTANCE)) in xe_exec_queue_create_ioctl()
624 if (XE_IOCTL_DBG(xe, err)) in xe_exec_queue_create_ioctl()
627 if (XE_IOCTL_DBG(xe, eci[0].gt_id >= xe->info.gt_count)) in xe_exec_queue_create_ioctl()
633 if (eci[0].engine_class == DRM_XE_ENGINE_CLASS_VM_BIND) { in xe_exec_queue_create_ioctl()
634 if (XE_IOCTL_DBG(xe, args->width != 1) || in xe_exec_queue_create_ioctl()
635 XE_IOCTL_DBG(xe, args->num_placements != 1) || in xe_exec_queue_create_ioctl()
636 XE_IOCTL_DBG(xe, eci[0].engine_instance != 0)) in xe_exec_queue_create_ioctl()
639 for_each_tile(tile, xe, id) { in xe_exec_queue_create_ioctl()
646 new = xe_exec_queue_create_bind(xe, tile, flags, in xe_exec_queue_create_ioctl()
654 if (id == 0) in xe_exec_queue_create_ioctl()
661 logical_mask = calc_validate_logical_mask(xe, eci, in xe_exec_queue_create_ioctl()
664 if (XE_IOCTL_DBG(xe, !logical_mask)) in xe_exec_queue_create_ioctl()
667 hwe = xe_hw_engine_lookup(xe, eci[0]); in xe_exec_queue_create_ioctl()
668 if (XE_IOCTL_DBG(xe, !hwe)) in xe_exec_queue_create_ioctl()
672 if (XE_IOCTL_DBG(xe, !vm)) in xe_exec_queue_create_ioctl()
681 if (XE_IOCTL_DBG(xe, xe_vm_is_closed_or_banned(vm))) { in xe_exec_queue_create_ioctl()
687 q = xe_exec_queue_create(xe, vm, logical_mask, in xe_exec_queue_create_ioctl()
699 if (XE_IOCTL_DBG(xe, err)) in xe_exec_queue_create_ioctl()
719 return 0; in xe_exec_queue_create_ioctl()
731 struct xe_device *xe = to_xe_device(dev); in xe_exec_queue_get_property_ioctl() local
737 if (XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1])) in xe_exec_queue_get_property_ioctl()
741 if (XE_IOCTL_DBG(xe, !q)) in xe_exec_queue_get_property_ioctl()
747 ret = 0; in xe_exec_queue_get_property_ioctl()
772 return q->lrc[0]->fence_ctx.next_seqno - xe_lrc_seqno(q->lrc[0]) - 1; in xe_exec_queue_num_job_inflight()
783 struct xe_lrc *lrc = q->lrc[0]; in xe_exec_queue_ring_full()
808 for (i = 0; i < q->width; ++i) { in xe_exec_queue_is_idle()
817 return xe_lrc_seqno(q->lrc[0]) == in xe_exec_queue_is_idle()
818 q->lrc[0]->fence_ctx.next_seqno - 1; in xe_exec_queue_is_idle()
831 struct xe_device *xe = gt_to_xe(q->gt); in xe_exec_queue_update_run_ticks() local
843 /* Synchronize with unbind while holding the xe file open */ in xe_exec_queue_update_run_ticks()
844 if (!drm_dev_enter(&xe->drm, &idx)) in xe_exec_queue_update_run_ticks()
854 lrc = q->lrc[0]; in xe_exec_queue_update_run_ticks()
887 struct xe_device *xe = to_xe_device(dev); in xe_exec_queue_destroy_ioctl() local
892 if (XE_IOCTL_DBG(xe, args->pad) || in xe_exec_queue_destroy_ioctl()
893 XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1])) in xe_exec_queue_destroy_ioctl()
902 if (XE_IOCTL_DBG(xe, !q)) in xe_exec_queue_destroy_ioctl()
913 return 0; in xe_exec_queue_destroy_ioctl()
1034 int err = 0; in xe_exec_queue_last_fence_test_dep()
1039 0 : -ETIME; in xe_exec_queue_last_fence_test_dep()