]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: Remove last fence dependency check from binds and execs
authorMatthew Brost <matthew.brost@intel.com>
Fri, 31 Oct 2025 23:40:50 +0000 (16:40 -0700)
committerMatthew Brost <matthew.brost@intel.com>
Tue, 4 Nov 2025 16:21:18 +0000 (08:21 -0800)
Eliminate redundant last fence dependency checks in exec and bind jobs,
as they are now equivalent to xe_exec_queue_is_idle. Simplify the code
by removing this dead logic.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Link: https://patch.msgid.link/20251031234050.3043507-7-matthew.brost@intel.com
drivers/gpu/drm/xe/xe_exec.c
drivers/gpu/drm/xe/xe_exec_queue.c
drivers/gpu/drm/xe/xe_exec_queue.h
drivers/gpu/drm/xe/xe_pt.c
drivers/gpu/drm/xe/xe_sched_job.c
drivers/gpu/drm/xe/xe_sched_job.h

index bf71a2fe53514d1450d77dbf4d8802389eb0a8b6..4d81210e41f5246f0fb4593c34e5e16a07d52c37 100644 (file)
@@ -302,10 +302,6 @@ retry:
                goto err_put_job;
 
        if (!xe_vm_in_lr_mode(vm)) {
-               err = xe_sched_job_last_fence_add_dep(job, vm);
-               if (err)
-                       goto err_put_job;
-
                err = xe_svm_notifier_lock_interruptible(vm);
                if (err)
                        goto err_put_job;
index aada199faf71862403241e6c7c704eac542f0e80..8724f8de67e2738dffef72aeab2a67d8cfe35656 100644 (file)
@@ -1125,29 +1125,6 @@ void xe_exec_queue_last_fence_set(struct xe_exec_queue *q, struct xe_vm *vm,
        q->last_fence = dma_fence_get(fence);
 }
 
-/**
- * xe_exec_queue_last_fence_test_dep - Test last fence dependency of queue
- * @q: The exec queue
- * @vm: The VM the engine does a bind or exec for
- *
- * Returns:
- * -ETIME if there exists an unsignalled last fence dependency, zero otherwise.
- */
-int xe_exec_queue_last_fence_test_dep(struct xe_exec_queue *q, struct xe_vm *vm)
-{
-       struct dma_fence *fence;
-       int err = 0;
-
-       fence = xe_exec_queue_last_fence_get(q, vm);
-       if (fence) {
-               err = test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags) ?
-                       0 : -ETIME;
-               dma_fence_put(fence);
-       }
-
-       return err;
-}
-
 /**
  * xe_exec_queue_tlb_inval_last_fence_put() - Drop ref to last TLB invalidation fence
  * @q: The exec queue
index 1ba7354b33d1b07504374d1cc5de031189d61a74..fda4d4f9bda86bd69296b27ac9e9012bc2d5f734 100644 (file)
@@ -88,8 +88,6 @@ struct dma_fence *xe_exec_queue_last_fence_get_for_resume(struct xe_exec_queue *
                                                          struct xe_vm *vm);
 void xe_exec_queue_last_fence_set(struct xe_exec_queue *e, struct xe_vm *vm,
                                  struct dma_fence *fence);
-int xe_exec_queue_last_fence_test_dep(struct xe_exec_queue *q,
-                                     struct xe_vm *vm);
 
 void xe_exec_queue_tlb_inval_last_fence_put(struct xe_exec_queue *q,
                                            struct xe_vm *vm,
index 8ef9bfcbd9979ac0495f90428d944f205b5cb706..884127b4d97ddce4a00553daaa4fac14e1b07726 100644 (file)
@@ -1338,13 +1338,6 @@ static int xe_pt_vm_dependencies(struct xe_sched_job *job,
                        return err;
        }
 
-       if (!(pt_update_ops->q->flags & EXEC_QUEUE_FLAG_KERNEL)) {
-               if (job)
-                       err = xe_sched_job_last_fence_add_dep(job, vm);
-               else
-                       err = xe_exec_queue_last_fence_test_dep(pt_update_ops->q, vm);
-       }
-
        for (i = 0; job && !err && i < vops->num_syncs; i++)
                err = xe_sync_entry_add_deps(&vops->syncs[i], job);
 
index f1ba9c19e2182ca9f2e4d6a5fcf7fa049b51354f..cb674a322113b04617dadcc66db470be3d95bca2 100644 (file)
@@ -297,23 +297,6 @@ void xe_sched_job_push(struct xe_sched_job *job)
        xe_sched_job_put(job);
 }
 
-/**
- * xe_sched_job_last_fence_add_dep - Add last fence dependency to job
- * @job:job to add the last fence dependency to
- * @vm: virtual memory job belongs to
- *
- * Returns:
- * 0 on success, or an error on failing to expand the array.
- */
-int xe_sched_job_last_fence_add_dep(struct xe_sched_job *job, struct xe_vm *vm)
-{
-       struct dma_fence *fence;
-
-       fence = xe_exec_queue_last_fence_get(job->q, vm);
-
-       return drm_sched_job_add_dependency(&job->drm, fence);
-}
-
 /**
  * xe_sched_job_init_user_fence - Initialize user_fence for the job
  * @job: job whose user_fence needs an init
index b467131b6d5f061ec95148b04ff17d0e60d36c97..1c1cb44216c3c60d1d0c22b2237da0cd9c513bc0 100644 (file)
@@ -58,7 +58,6 @@ bool xe_sched_job_completed(struct xe_sched_job *job);
 void xe_sched_job_arm(struct xe_sched_job *job);
 void xe_sched_job_push(struct xe_sched_job *job);
 
-int xe_sched_job_last_fence_add_dep(struct xe_sched_job *job, struct xe_vm *vm);
 void xe_sched_job_init_user_fence(struct xe_sched_job *job,
                                  struct xe_sync_entry *sync);