drm/v3d: Use drm_sched_job_add_syncobj_dependency()
authorMaíra Canal <mcanal@igalia.com>
Thu, 9 Feb 2023 12:44:48 +0000 (09:44 -0300)
committerMaíra Canal <mairacanal@riseup.net>
Fri, 24 Feb 2023 20:23:43 +0000 (17:23 -0300)
As v3d_job_add_deps() performs the same steps as
drm_sched_job_add_syncobj_dependency(), replace the open-coded
implementation in v3d in order to simply use the DRM function.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Melissa Wen <mwen@igalia.com>
Signed-off-by: Maíra Canal <mairacanal@riseup.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20230209124447.467867-6-mcanal@igalia.com
drivers/gpu/drm/v3d/v3d_gem.c

index 5da1806..2e94ce7 100644 (file)
@@ -397,20 +397,6 @@ v3d_wait_bo_ioctl(struct drm_device *dev, void *data,
 }
 
 static int
-v3d_job_add_deps(struct drm_file *file_priv, struct v3d_job *job,
-                u32 in_sync, u32 point)
-{
-       struct dma_fence *in_fence = NULL;
-       int ret;
-
-       ret = drm_syncobj_find_fence(file_priv, in_sync, point, 0, &in_fence);
-       if (ret == -EINVAL)
-               return ret;
-
-       return drm_sched_job_add_dependency(&job->base, in_fence);
-}
-
-static int
 v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv,
             void **container, size_t size, void (*free)(struct kref *ref),
             u32 in_sync, struct v3d_submit_ext *se, enum v3d_queue queue)
@@ -447,14 +433,18 @@ v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv,
                                        DRM_DEBUG("Failed to copy wait dep handle.\n");
                                        goto fail_deps;
                                }
-                               ret = v3d_job_add_deps(file_priv, job, in.handle, 0);
-                               if (ret)
+                               ret = drm_sched_job_add_syncobj_dependency(&job->base, file_priv, in.handle, 0);
+
+                               // TODO: Investigate why this was filtered out for the IOCTL.
+                               if (ret && ret != -ENOENT)
                                        goto fail_deps;
                        }
                }
        } else {
-               ret = v3d_job_add_deps(file_priv, job, in_sync, 0);
-               if (ret)
+               ret = drm_sched_job_add_syncobj_dependency(&job->base, file_priv, in_sync, 0);
+
+               // TODO: Investigate why this was filtered out for the IOCTL.
+               if (ret && ret != -ENOENT)
                        goto fail_deps;
        }