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;