Skip to content

Commit 1a2cf01

Browse files
committed
drm/xe: Remove last fence dependency check from binds and execs
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
1 parent aa87b68 commit 1a2cf01

6 files changed

Lines changed: 0 additions & 54 deletions

File tree

drivers/gpu/drm/xe/xe_exec.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,6 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
302302
goto err_put_job;
303303

304304
if (!xe_vm_in_lr_mode(vm)) {
305-
err = xe_sched_job_last_fence_add_dep(job, vm);
306-
if (err)
307-
goto err_put_job;
308-
309305
err = xe_svm_notifier_lock_interruptible(vm);
310306
if (err)
311307
goto err_put_job;

drivers/gpu/drm/xe/xe_exec_queue.c

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,29 +1125,6 @@ void xe_exec_queue_last_fence_set(struct xe_exec_queue *q, struct xe_vm *vm,
11251125
q->last_fence = dma_fence_get(fence);
11261126
}
11271127

1128-
/**
1129-
* xe_exec_queue_last_fence_test_dep - Test last fence dependency of queue
1130-
* @q: The exec queue
1131-
* @vm: The VM the engine does a bind or exec for
1132-
*
1133-
* Returns:
1134-
* -ETIME if there exists an unsignalled last fence dependency, zero otherwise.
1135-
*/
1136-
int xe_exec_queue_last_fence_test_dep(struct xe_exec_queue *q, struct xe_vm *vm)
1137-
{
1138-
struct dma_fence *fence;
1139-
int err = 0;
1140-
1141-
fence = xe_exec_queue_last_fence_get(q, vm);
1142-
if (fence) {
1143-
err = test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags) ?
1144-
0 : -ETIME;
1145-
dma_fence_put(fence);
1146-
}
1147-
1148-
return err;
1149-
}
1150-
11511128
/**
11521129
* xe_exec_queue_tlb_inval_last_fence_put() - Drop ref to last TLB invalidation fence
11531130
* @q: The exec queue

drivers/gpu/drm/xe/xe_exec_queue.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,6 @@ struct dma_fence *xe_exec_queue_last_fence_get_for_resume(struct xe_exec_queue *
8888
struct xe_vm *vm);
8989
void xe_exec_queue_last_fence_set(struct xe_exec_queue *e, struct xe_vm *vm,
9090
struct dma_fence *fence);
91-
int xe_exec_queue_last_fence_test_dep(struct xe_exec_queue *q,
92-
struct xe_vm *vm);
9391

9492
void xe_exec_queue_tlb_inval_last_fence_put(struct xe_exec_queue *q,
9593
struct xe_vm *vm,

drivers/gpu/drm/xe/xe_pt.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,13 +1338,6 @@ static int xe_pt_vm_dependencies(struct xe_sched_job *job,
13381338
return err;
13391339
}
13401340

1341-
if (!(pt_update_ops->q->flags & EXEC_QUEUE_FLAG_KERNEL)) {
1342-
if (job)
1343-
err = xe_sched_job_last_fence_add_dep(job, vm);
1344-
else
1345-
err = xe_exec_queue_last_fence_test_dep(pt_update_ops->q, vm);
1346-
}
1347-
13481341
for (i = 0; job && !err && i < vops->num_syncs; i++)
13491342
err = xe_sync_entry_add_deps(&vops->syncs[i], job);
13501343

drivers/gpu/drm/xe/xe_sched_job.c

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -297,23 +297,6 @@ void xe_sched_job_push(struct xe_sched_job *job)
297297
xe_sched_job_put(job);
298298
}
299299

300-
/**
301-
* xe_sched_job_last_fence_add_dep - Add last fence dependency to job
302-
* @job:job to add the last fence dependency to
303-
* @vm: virtual memory job belongs to
304-
*
305-
* Returns:
306-
* 0 on success, or an error on failing to expand the array.
307-
*/
308-
int xe_sched_job_last_fence_add_dep(struct xe_sched_job *job, struct xe_vm *vm)
309-
{
310-
struct dma_fence *fence;
311-
312-
fence = xe_exec_queue_last_fence_get(job->q, vm);
313-
314-
return drm_sched_job_add_dependency(&job->drm, fence);
315-
}
316-
317300
/**
318301
* xe_sched_job_init_user_fence - Initialize user_fence for the job
319302
* @job: job whose user_fence needs an init

drivers/gpu/drm/xe/xe_sched_job.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ bool xe_sched_job_completed(struct xe_sched_job *job);
5858
void xe_sched_job_arm(struct xe_sched_job *job);
5959
void xe_sched_job_push(struct xe_sched_job *job);
6060

61-
int xe_sched_job_last_fence_add_dep(struct xe_sched_job *job, struct xe_vm *vm);
6261
void xe_sched_job_init_user_fence(struct xe_sched_job *job,
6362
struct xe_sync_entry *sync);
6463

0 commit comments

Comments
 (0)