drm/amdgpu: Correct unlocked update fence handling
authorPhilip Yang <Philip.Yang@amd.com>
Mon, 28 Mar 2022 02:02:56 +0000 (22:02 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 1 Apr 2022 03:05:53 +0000 (23:05 -0400)
To fix two issues with unlocked update fence:

1. vm->last_unlocked store the latest fence without taking refcount.
2. amdgpu_vm_bo_update_mapping returns old fence, not the latest fence.

Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c

index dbb5517..69fba68 100644 (file)
@@ -109,7 +109,7 @@ static int amdgpu_vm_sdma_commit(struct amdgpu_vm_update_params *p,
        if (p->unlocked) {
                struct dma_fence *tmp = dma_fence_get(f);
 
-               swap(p->vm->last_unlocked, f);
+               swap(p->vm->last_unlocked, tmp);
                dma_fence_put(tmp);
        } else {
                amdgpu_bo_fence(p->vm->root.bo, f, true);