drm/amdgpu: simplify and fix amdgpu_sync_resv
authorChristian König <christian.koenig@amd.com>
Wed, 22 Jan 2020 15:19:02 +0000 (16:19 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 5 Feb 2020 04:30:39 +0000 (23:30 -0500)
No matter what we always need to sync to moves.

Signed-off-by: Christian König <christian.koenig@amd.com>
Tested-by: Tom St Denis <tom.stdenis@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c

index c124f64..9f42032 100644 (file)
@@ -232,10 +232,19 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, struct amdgpu_sync *sync,
 
                f = rcu_dereference_protected(flist->shared[i],
                                              dma_resv_held(resv));
+
+               fence_owner = amdgpu_sync_get_owner(f);
+
+               /* Always sync to moves, no matter what */
+               if (fence_owner == AMDGPU_FENCE_OWNER_UNDEFINED) {
+                       r = amdgpu_sync_fence(sync, f, false);
+                       if (r)
+                               break;
+               }
+
                /* We only want to trigger KFD eviction fences on
                 * evict or move jobs. Skip KFD fences otherwise.
                 */
-               fence_owner = amdgpu_sync_get_owner(f);
                if (fence_owner == AMDGPU_FENCE_OWNER_KFD &&
                    owner != AMDGPU_FENCE_OWNER_UNDEFINED)
                        continue;
@@ -265,9 +274,7 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, struct amdgpu_sync *sync,
                        break;
 
                case AMDGPU_SYNC_EXPLICIT:
-                       if (owner != AMDGPU_FENCE_OWNER_UNDEFINED)
-                               continue;
-                       break;
+                       continue;
                }
 
                r = amdgpu_sync_fence(sync, f, false);