drm/xe: Only try to lock external BOs in VM bind
authorMatthew Brost <matthew.brost@intel.com>
Tue, 28 Mar 2023 01:34:49 +0000 (18:34 -0700)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:34:50 +0000 (11:34 -0500)
We only need to try to lock a BO if it's external as non-external BOs
share the dma-resv with the already locked VM. Trying to lock
non-external BOs caused an issue (list corruption) in an uncoming patch
which adds bulk LRU move. Since this code isn't needed, remove it.

v2: New commit message, s/mattthew/matthew/

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_vm.c

index 5ac819a65cf14078e695af244a7927676a41a570..c98801ee3f55819f722af9ef071a1a9bf064c68c 100644 (file)
@@ -2157,9 +2157,11 @@ static int vm_bind_ioctl(struct xe_vm *vm, struct xe_vma *vma,
                 */
                xe_bo_get(vbo);
 
-               tv_bo.bo = &vbo->ttm;
-               tv_bo.num_shared = 1;
-               list_add(&tv_bo.head, &objs);
+               if (!vbo->vm) {
+                       tv_bo.bo = &vbo->ttm;
+                       tv_bo.num_shared = 1;
+                       list_add(&tv_bo.head, &objs);
+               }
        }
 
 again: