On 01/07/2021 10:12, Boris Brezillon wrote:
So we can re-use it from elsewhere.
Signed-off-by: Boris Brezillon boris.brezillon@collabora.com
Reviewed-by: Steven Price steven.price@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);
}
/**