[PATCH 1/2] drm/amdgpu/uvd: consolidate code for fetching addr from ctx

Christian König deathsimple at vodafone.de
Tue Nov 22 08:46:57 UTC 2016


Am 21.11.2016 um 22:37 schrieb Alex Deucher:
> Same code duplicated in both functions.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>

Good catch, series is Reviewed-by: Christian König 
<christian.koenig at amd.com>.

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 28 ++++++++++++++++------------
>   1 file changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> index fb270c7..330c474 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> @@ -360,6 +360,18 @@ static void amdgpu_uvd_force_into_uvd_segment(struct amdgpu_bo *abo)
>   	}
>   }
>   
> +static u64 amdgpu_uvd_get_addr_from_ctx(struct amdgpu_uvd_cs_ctx *ctx)
> +{
> +	uint32_t lo, hi;
> +	uint64_t addr;
> +
> +	lo = amdgpu_get_ib_value(ctx->parser, ctx->ib_idx, ctx->data0);
> +	hi = amdgpu_get_ib_value(ctx->parser, ctx->ib_idx, ctx->data1);
> +	addr = ((uint64_t)lo) | (((uint64_t)hi) << 32);
> +
> +	return addr;
> +}
> +
>   /**
>    * amdgpu_uvd_cs_pass1 - first parsing round
>    *
> @@ -372,14 +384,10 @@ static int amdgpu_uvd_cs_pass1(struct amdgpu_uvd_cs_ctx *ctx)
>   {
>   	struct amdgpu_bo_va_mapping *mapping;
>   	struct amdgpu_bo *bo;
> -	uint32_t cmd, lo, hi;
> -	uint64_t addr;
> +	uint32_t cmd;
> +	uint64_t addr = amdgpu_uvd_get_addr_from_ctx(ctx);
>   	int r = 0;
>   
> -	lo = amdgpu_get_ib_value(ctx->parser, ctx->ib_idx, ctx->data0);
> -	hi = amdgpu_get_ib_value(ctx->parser, ctx->ib_idx, ctx->data1);
> -	addr = ((uint64_t)lo) | (((uint64_t)hi) << 32);
> -
>   	mapping = amdgpu_cs_find_mapping(ctx->parser, addr, &bo);
>   	if (mapping == NULL) {
>   		DRM_ERROR("Can't find BO for addr 0x%08Lx\n", addr);
> @@ -698,15 +706,11 @@ static int amdgpu_uvd_cs_pass2(struct amdgpu_uvd_cs_ctx *ctx)
>   {
>   	struct amdgpu_bo_va_mapping *mapping;
>   	struct amdgpu_bo *bo;
> -	uint32_t cmd, lo, hi;
> +	uint32_t cmd;
>   	uint64_t start, end;
> -	uint64_t addr;
> +	uint64_t addr = amdgpu_uvd_get_addr_from_ctx(ctx);
>   	int r;
>   
> -	lo = amdgpu_get_ib_value(ctx->parser, ctx->ib_idx, ctx->data0);
> -	hi = amdgpu_get_ib_value(ctx->parser, ctx->ib_idx, ctx->data1);
> -	addr = ((uint64_t)lo) | (((uint64_t)hi) << 32);
> -
>   	mapping = amdgpu_cs_find_mapping(ctx->parser, addr, &bo);
>   	if (mapping == NULL)
>   		return -EINVAL;




More information about the amd-gfx mailing list