drm/xe: Attach last fence to TLB invalidation job queues

Add support for attaching the last fence to TLB invalidation job queues
to address serialization issues during bursts of unbind jobs. Ensure
that user fence signaling for a bind job reflects both the bind job
itself and the last fences of all related TLB invalidations. Maintain
submission order based solely on the state of the bind and TLB
invalidation queues.

Introduce support functions for last fence attachment to TLB
invalidation queues.

v3:
 - Fix assert in xe_exec_queue_tlb_inval_last_fence_set (CI)
 - Ensure migrate lock held for migrate queues (Testing)
v5:
 - Style nits (Thomas)
 - Rewrite commit message (Thomas)

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-3-matthew.brost@intel.com
This commit is contained in:
Matthew Brost
2025-10-31 16:40:46 -07:00
parent adda4e855a
commit b2d7ec41f2
6 changed files with 156 additions and 2 deletions

View File

@@ -1731,8 +1731,13 @@ void xe_vm_close_and_put(struct xe_vm *vm)
down_write(&vm->lock);
for_each_tile(tile, xe, id) {
if (vm->q[id])
if (vm->q[id]) {
int i;
xe_exec_queue_last_fence_put(vm->q[id], vm);
for_each_tlb_inval(i)
xe_exec_queue_tlb_inval_last_fence_put(vm->q[id], vm, i);
}
}
up_write(&vm->lock);