[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