On 01/07/2021 10:12, Boris Brezillon wrote: > So we can re-use it from elsewhere. > > Signed-off-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> Reviewed-by: Steven Price <steven.price@xxxxxxx> > --- > drivers/gpu/drm/panfrost/panfrost_drv.c | 52 ++++++++++++++----------- > 1 file changed, 29 insertions(+), 23 deletions(-) > > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c > index 1ffaef5ec5ff..9bbc9e78cc85 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c > @@ -109,6 +109,34 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data, > return 0; > } > > +static int > +panfrost_get_job_mappings(struct drm_file *file_priv, struct panfrost_job *job) > +{ > + struct panfrost_file_priv *priv = file_priv->driver_priv; > + unsigned int i; > + > + job->mappings = kvmalloc_array(job->bo_count, > + sizeof(*job->mappings), > + GFP_KERNEL | __GFP_ZERO); > + if (!job->mappings) > + return -ENOMEM; > + > + for (i = 0; i < job->bo_count; i++) { > + struct panfrost_gem_mapping *mapping; > + struct panfrost_gem_object *bo; > + > + bo = to_panfrost_bo(job->bos[i]); > + mapping = panfrost_gem_mapping_get(bo, priv); > + if (!mapping) > + return -EINVAL; > + > + atomic_inc(&bo->gpu_usecount); > + job->mappings[i] = mapping; > + } > + > + return 0; > +} > + > /** > * panfrost_lookup_bos() - Sets up job->bo[] with the GEM objects > * referenced by the job. > @@ -128,8 +156,6 @@ panfrost_lookup_bos(struct drm_device *dev, > struct drm_panfrost_submit *args, > struct panfrost_job *job) > { > - struct panfrost_file_priv *priv = file_priv->driver_priv; > - struct panfrost_gem_object *bo; > unsigned int i; > int ret; > > @@ -144,27 +170,7 @@ panfrost_lookup_bos(struct drm_device *dev, > if (ret) > return ret; > > - job->mappings = kvmalloc_array(job->bo_count, > - sizeof(struct panfrost_gem_mapping *), > - GFP_KERNEL | __GFP_ZERO); > - if (!job->mappings) > - return -ENOMEM; > - > - for (i = 0; i < job->bo_count; i++) { > - struct panfrost_gem_mapping *mapping; > - > - bo = to_panfrost_bo(job->bos[i]); > - mapping = panfrost_gem_mapping_get(bo, priv); > - if (!mapping) { > - ret = -EINVAL; > - break; > - } > - > - atomic_inc(&bo->gpu_usecount); > - job->mappings[i] = mapping; > - } > - > - return ret; > + return panfrost_get_job_mappings(file_priv, job); > } > > /** >