[PATCH v2 2/7] drm/panfrost: Move the mappings collection out of panfrost_lookup_bos()
Steven Price
steven.price at arm.com
Fri Jul 2 09:43:49 UTC 2021
On 01/07/2021 10:12, Boris Brezillon wrote:
> So we can re-use it from elsewhere.
>
> Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Steven Price <steven.price at arm.com>
> ---
> 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);
> }
>
> /**
>
More information about the dri-devel
mailing list