When a BO is currently moving we otherwise would blindly
access the new location without checking.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
 int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)
 {
        bool is_iomem;
-       int r;
+       long r;
 
        if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)
                return -EPERM;
                }
                return 0;
        }
+
+       r = reservation_object_wait_timeout_rcu(bo->tbo.resv, false, false,
+                                               MAX_SCHEDULE_TIMEOUT);
+       if (r < 0)
+               return r;
+
        r = ttm_bo_kmap(&bo->tbo, 0, bo->tbo.num_pages, &bo->kmap);
-       if (r) {
+       if (r)
                return r;
-       }
+
        bo->kptr = ttm_kmap_obj_virtual(&bo->kmap, &is_iomem);
-       if (ptr) {
+       if (ptr)
                *ptr = bo->kptr;
-       }
+
        return 0;
 }