aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMika Kuoppala <[email protected]>2023-12-05 16:41:42 +0200
committerRodrigo Vivi <[email protected]>2023-12-21 11:45:28 -0500
commit06d5ae90579e774934552ca023c4bbc56e8253f4 (patch)
treedaafcef546774dcc1f32d7f98cfa016f9a51d362
parent5a92da34ddb4ec75a037d4a956afa993876c67d4 (diff)
drm/xe/vm: Avoid asid lookup if none allocated
The destroy path can and will get called for incomplete vm objects on error paths, where the asid is not yet allocated. This leads to lookup fail and assert triggered. Fix this by not asserting of asid existence if vm never got assigned one. Cc: Ohad Sharabi <[email protected]> Cc: Thomas Hellström <[email protected]> Cc: Matthew Auld <[email protected]> Signed-off-by: Mika Kuoppala <[email protected]> Reviewed-by: Thomas Hellström <[email protected]> Signed-off-by: Rodrigo Vivi <[email protected]>
-rw-r--r--drivers/gpu/drm/xe/xe_vm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 265cc0c5e440..11667529e40b 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1634,7 +1634,7 @@ static void vm_destroy_work_func(struct work_struct *w)
if (!(vm->flags & XE_VM_FLAG_MIGRATION)) {
xe_device_mem_access_put(xe);
- if (xe->info.has_asid) {
+ if (xe->info.has_asid && vm->usm.asid) {
mutex_lock(&xe->usm.lock);
lookup = xa_erase(&xe->usm.asid_to_vm, vm->usm.asid);
xe_assert(xe, lookup == vm);