[PATCH 5/5] drm/v3d: Use drm_sched_job_add_syncobj_dependency()
Melissa Wen
mwen at igalia.com
Thu Feb 9 11:27:31 UTC 2023
On 02/08, Maíra Canal wrote:
> 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, using the DRM function.
>
> Signed-off-by: Maíra Canal <mcanal at igalia.com>
> ---
> drivers/gpu/drm/v3d/v3d_gem.c | 9 +--------
> 1 file changed, 1 insertion(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c
> index 5da1806f3969..f149526ec971 100644
> --- a/drivers/gpu/drm/v3d/v3d_gem.c
> +++ b/drivers/gpu/drm/v3d/v3d_gem.c
> @@ -400,14 +400,7 @@ 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);
> + return drm_sched_job_add_syncobj_dependency(&job->base, file_priv, in_sync, point);
Hi Maíra,
First, thanks for making this function a common-code.
There are two issues to address before moving v3d to the new
drm_sche_job_add_syncobj_dependency():
1. We don't need the v3d_job_add_deps one line function just wrapping
the new drm_sched_job_add_syncobj_dependency() with the same parameters.
We can just replace all occurrences of v3d function with drm_sched
function. Except if we use v3d_job_add_deps to address the second issue:
2. Currently, v3d_job_add_deps returns 0 (success) if
drm_syncobj_find_fence() doesn't find the syncobj from handle (-ENOENT),
but drm_sched_job_add_syncobj_dependency() returns a negative value on
this case. If it happens, job submissions will fail (and may cause a
regression). One way to solve it is checking the return value of
drm_sched_job_add_syncobj_dependency in v3d_job_add_deps. The second
way is to replace v3d_job_add_deps by
drm_sched_job_add_syncobj_dependency and check expected return values
there.
Melissa
> }
>
> static int
> --
> 2.39.1
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230209/cc1e46be/attachment.sig>
More information about the dri-devel
mailing list