[PATCH 11/11] drm/amdgpu: remove now unnecessary checks
Alex Deucher
alexdeucher at gmail.com
Mon Jun 6 21:14:33 UTC 2016
On Wed, Jun 1, 2016 at 9:10 AM, Christian König <deathsimple at vodafone.de> wrote:
> From: Christian König <christian.koenig at amd.com>
>
> vm_flush() now comes directly after vm_grab_id().
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
For the series:
Acked-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 -
> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 31 +++++++++++--------------------
> 2 files changed, 11 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 52326d3..e054542 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -886,7 +886,6 @@ struct amdgpu_vm_id {
> struct fence *first;
> struct amdgpu_sync active;
> struct fence *last_flush;
> - struct amdgpu_ring *last_user;
> atomic64_t owner;
>
> uint64_t pd_gpu_addr;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 8ea1c73..48d5ad18 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -237,6 +237,7 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
> i = ring->idx;
> do {
> struct fence *flushed;
> + bool same_ring = ring->idx == i;
>
> id = vm->ids[i++];
> if (i == AMDGPU_MAX_RINGS)
> @@ -252,7 +253,7 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
> if (pd_addr != id->pd_gpu_addr)
> continue;
>
> - if (id->last_user != ring &&
> + if (!same_ring &&
> (!id->last_flush || !fence_is_signaled(id->last_flush)))
> continue;
>
> @@ -261,15 +262,9 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
> (!flushed || fence_is_later(updates, flushed)))
> continue;
>
> - /* Good we can use this VMID */
> - if (id->last_user == ring) {
> - r = amdgpu_sync_fence(ring->adev, sync,
> - id->first);
> - if (r)
> - goto error;
> - }
> -
> - /* And remember this submission as user of the VMID */
> + /* Good we can use this VMID. Remember this submission as
> + * user of the VMID.
> + */
> r = amdgpu_sync_fence(ring->adev, &id->active, fence);
> if (r)
> goto error;
> @@ -306,7 +301,6 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
> id->pd_gpu_addr = pd_addr;
>
> list_move_tail(&id->list, &adev->vm_manager.ids_lru);
> - id->last_user = ring;
> atomic64_set(&id->owner, vm->client_id);
> vm->ids[ring->idx] = id;
>
> @@ -357,16 +351,13 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring,
> trace_amdgpu_vm_flush(pd_addr, ring->idx, vm_id);
> amdgpu_ring_emit_vm_flush(ring, vm_id, pd_addr);
>
> + r = amdgpu_fence_emit(ring, &fence);
> + if (r)
> + return r;
> +
> mutex_lock(&adev->vm_manager.lock);
> - if ((id->pd_gpu_addr == pd_addr) && (id->last_user == ring)) {
> - r = amdgpu_fence_emit(ring, &fence);
> - if (r) {
> - mutex_unlock(&adev->vm_manager.lock);
> - return r;
> - }
> - fence_put(id->last_flush);
> - id->last_flush = fence;
> - }
> + fence_put(id->last_flush);
> + id->last_flush = fence;
> mutex_unlock(&adev->vm_manager.lock);
> }
>
> --
> 2.5.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list