[PATCH] drm/amdgpu: Fix amdgpu_sync_add_later to preserve explicit flag.

Christian König christian.koenig at amd.com
Tue Dec 5 14:42:31 UTC 2017


Am 05.12.2017 um 15:41 schrieb Andrey Grodzovsky:
> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 9 ++++++---
>   1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
> index f3d1a25..84fd367 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
> @@ -120,7 +120,7 @@ static void amdgpu_sync_keep_later(struct dma_fence **keep,
>    * Tries to add the fence to an existing hash entry. Returns true when an entry
>    * was found, false otherwise.
>    */
> -static bool amdgpu_sync_add_later(struct amdgpu_sync *sync, struct dma_fence *f)
> +static bool amdgpu_sync_add_later(struct amdgpu_sync *sync, struct dma_fence *f, bool explicit)
>   {
>   	struct amdgpu_sync_entry *e;
>   
> @@ -129,6 +129,10 @@ static bool amdgpu_sync_add_later(struct amdgpu_sync *sync, struct dma_fence *f)
>   			continue;
>   
>   		amdgpu_sync_keep_later(&e->fence, f);
> +
> +		/* Preserve eplicit flag to not loose pipe line sync */
> +		e->explicit |= explicit;
> +
>   		return true;
>   	}
>   	return false;
> @@ -148,12 +152,11 @@ int amdgpu_sync_fence(struct amdgpu_device *adev, struct amdgpu_sync *sync,
>   
>   	if (!f)
>   		return 0;
> -
>   	if (amdgpu_sync_same_dev(adev, f) &&
>   	    amdgpu_sync_get_owner(f) == AMDGPU_FENCE_OWNER_VM)
>   		amdgpu_sync_keep_later(&sync->last_vm_update, f);
>   
> -	if (amdgpu_sync_add_later(sync, f))
> +	if (amdgpu_sync_add_later(sync, f, explicit))
>   		return 0;
>   
>   	e = kmem_cache_alloc(amdgpu_sync_slab, GFP_KERNEL);



More information about the amd-gfx mailing list