mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-14 03:15:21 -04:00
drm/xe: Fix unbind of unaccessed VMA (fault mode)
In fault mode, page table binding is deferred until fault handler. Thus vma->tile_present will be unset unless the VMA is accessed by GPU. During a later unbind, the logic doesn't account for the fact that local fence variable will be NULL in this case, leading to pass NULL into dma_fence_add_callback() and causing few WARN_ONs to print to console. The fix is already present in the code, just hoist the fence variable computation to be done earlier. Resolves warnings seen with igt@xe_exec_fault_mode@once-invalid-fault Signed-off-by: Brian Welty <brian.welty@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
committed by
Rodrigo Vivi
parent
6ffef7b699
commit
04dfef5b41
@@ -1740,14 +1740,14 @@ xe_vm_unbind_vma(struct xe_vma *vma, struct xe_exec_queue *q,
|
||||
}
|
||||
}
|
||||
|
||||
fence = cf ? &cf->base : !fence ?
|
||||
xe_exec_queue_last_fence_get(wait_exec_queue, vm) : fence;
|
||||
if (last_op) {
|
||||
for (i = 0; i < num_syncs; i++)
|
||||
xe_sync_entry_signal(&syncs[i], NULL,
|
||||
cf ? &cf->base : fence);
|
||||
xe_sync_entry_signal(&syncs[i], NULL, fence);
|
||||
}
|
||||
|
||||
return cf ? &cf->base : !fence ?
|
||||
xe_exec_queue_last_fence_get(wait_exec_queue, vm) : fence;
|
||||
return fence;
|
||||
|
||||
err_fences:
|
||||
if (fences) {
|
||||
|
||||
Reference in New Issue
Block a user