diff options
author | Matthew Brost <matthew.brost@intel.com> | 2023-09-20 22:29:28 +0300 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-12-21 19:43:11 +0300 |
commit | e05c6c9774630702143bf4d35f2a753e61a57622 (patch) | |
tree | 0b7f6dc452378153458238c68a711189f49c39de /drivers/gpu/drm/xe/xe_exec_queue.c | |
parent | 5009d554e0d501741de1411db797a593a6fa94bb (diff) | |
download | linux-e05c6c9774630702143bf4d35f2a753e61a57622.tar.xz |
drm/xe: Deprecate XE_EXEC_QUEUE_SET_PROPERTY_COMPUTE_MODE implementation
We are going to remove XE_EXEC_QUEUE_SET_PROPERTY_COMPUTE_MODE from the
uAPI, deprecate the implementation first by making
XE_EXEC_QUEUE_SET_PROPERTY_COMPUTE_MODE a NOP. After removal of
XE_EXEC_QUEUE_SET_PROPERTY_COMPUTE_MODE the proper is simply inherented
from the VM.
v2:
- Update commit message with explaination of removal (Niranjana)
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Diffstat (limited to 'drivers/gpu/drm/xe/xe_exec_queue.c')
-rw-r--r-- | drivers/gpu/drm/xe/xe_exec_queue.c | 57 |
1 files changed, 14 insertions, 43 deletions
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c index c88acecc3a90..b9e645e86b4f 100644 --- a/drivers/gpu/drm/xe/xe_exec_queue.c +++ b/drivers/gpu/drm/xe/xe_exec_queue.c @@ -323,39 +323,6 @@ static int exec_queue_set_preemption_timeout(struct xe_device *xe, static int exec_queue_set_compute_mode(struct xe_device *xe, struct xe_exec_queue *q, u64 value, bool create) { - if (XE_IOCTL_DBG(xe, !create)) - return -EINVAL; - - if (XE_IOCTL_DBG(xe, q->flags & EXEC_QUEUE_FLAG_COMPUTE_MODE)) - return -EINVAL; - - if (XE_IOCTL_DBG(xe, q->flags & EXEC_QUEUE_FLAG_VM)) - return -EINVAL; - - if (value) { - struct xe_vm *vm = q->vm; - int err; - - if (XE_IOCTL_DBG(xe, xe_vm_in_fault_mode(vm))) - return -EOPNOTSUPP; - - if (XE_IOCTL_DBG(xe, !xe_vm_in_compute_mode(vm))) - return -EOPNOTSUPP; - - if (XE_IOCTL_DBG(xe, q->width != 1)) - return -EINVAL; - - q->compute.context = dma_fence_context_alloc(1); - spin_lock_init(&q->compute.lock); - - err = xe_vm_add_compute_exec_queue(vm, q); - if (XE_IOCTL_DBG(xe, err)) - return err; - - q->flags |= EXEC_QUEUE_FLAG_COMPUTE_MODE; - q->flags &= ~EXEC_QUEUE_FLAG_PERSISTENT; - } - return 0; } @@ -365,7 +332,7 @@ static int exec_queue_set_persistence(struct xe_device *xe, struct xe_exec_queue if (XE_IOCTL_DBG(xe, !create)) return -EINVAL; - if (XE_IOCTL_DBG(xe, q->flags & EXEC_QUEUE_FLAG_COMPUTE_MODE)) + if (XE_IOCTL_DBG(xe, xe_vm_in_compute_mode(q->vm))) return -EINVAL; if (value) @@ -742,18 +709,21 @@ int xe_exec_queue_create_ioctl(struct drm_device *dev, void *data, xe_vm_put(vm); if (IS_ERR(q)) return PTR_ERR(q); + + if (xe_vm_in_compute_mode(vm)) { + q->compute.context = dma_fence_context_alloc(1); + spin_lock_init(&q->compute.lock); + + err = xe_vm_add_compute_exec_queue(vm, q); + if (XE_IOCTL_DBG(xe, err)) + goto put_exec_queue; + } } if (args->extensions) { err = exec_queue_user_extensions(xe, q, args->extensions, 0, true); if (XE_IOCTL_DBG(xe, err)) - goto put_exec_queue; - } - - if (XE_IOCTL_DBG(xe, q->vm && xe_vm_in_compute_mode(q->vm) != - !!(q->flags & EXEC_QUEUE_FLAG_COMPUTE_MODE))) { - err = -EOPNOTSUPP; - goto put_exec_queue; + goto kill_exec_queue; } q->persistent.xef = xef; @@ -762,14 +732,15 @@ int xe_exec_queue_create_ioctl(struct drm_device *dev, void *data, err = xa_alloc(&xef->exec_queue.xa, &id, q, xa_limit_32b, GFP_KERNEL); mutex_unlock(&xef->exec_queue.lock); if (err) - goto put_exec_queue; + goto kill_exec_queue; args->exec_queue_id = id; return 0; -put_exec_queue: +kill_exec_queue: xe_exec_queue_kill(q); +put_exec_queue: xe_exec_queue_put(q); return err; } |