lkml.org 
[lkml]   [2022]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/15] drm/msm: Reorder lock vs submit alloc
    Date
    From: Rob Clark <robdclark@chromium.org>

    This lets us drop the NORETRY.

    Signed-off-by: Rob Clark <robdclark@chromium.org>
    ---
    drivers/gpu/drm/msm/msm_gem_submit.c | 24 ++++++++++--------------
    1 file changed, 10 insertions(+), 14 deletions(-)

    diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
    index c9e4aeb14f4a..b7c61a99d274 100644
    --- a/drivers/gpu/drm/msm/msm_gem_submit.c
    +++ b/drivers/gpu/drm/msm/msm_gem_submit.c
    @@ -36,7 +36,7 @@ static struct msm_gem_submit *submit_create(struct drm_device *dev,
    if (sz > SIZE_MAX)
    return ERR_PTR(-ENOMEM);

    - submit = kzalloc(sz, GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY);
    + submit = kzalloc(sz, GFP_KERNEL);
    if (!submit)
    return ERR_PTR(-ENOMEM);

    @@ -771,25 +771,21 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
    trace_msm_gpu_submit(pid_nr(pid), ring->id, submitid,
    args->nr_bos, args->nr_cmds);

    - ret = mutex_lock_interruptible(&queue->lock);
    - if (ret)
    - goto out_post_unlock;
    -
    if (args->flags & MSM_SUBMIT_FENCE_FD_OUT) {
    out_fence_fd = get_unused_fd_flags(O_CLOEXEC);
    if (out_fence_fd < 0) {
    ret = out_fence_fd;
    - goto out_unlock;
    + return ret;
    }
    }

    - submit = submit_create(dev, gpu, queue, args->nr_bos,
    - args->nr_cmds);
    - if (IS_ERR(submit)) {
    - ret = PTR_ERR(submit);
    - submit = NULL;
    - goto out_unlock;
    - }
    + submit = submit_create(dev, gpu, queue, args->nr_bos, args->nr_cmds);
    + if (IS_ERR(submit))
    + return PTR_ERR(submit);
    +
    + ret = mutex_lock_interruptible(&queue->lock);
    + if (ret)
    + goto out_post_unlock;

    submit->pid = pid;
    submit->ident = submitid;
    @@ -965,9 +961,9 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
    if (ret && (out_fence_fd >= 0))
    put_unused_fd(out_fence_fd);
    mutex_unlock(&queue->lock);
    +out_post_unlock:
    if (submit)
    msm_gem_submit_put(submit);
    -out_post_unlock:
    if (!IS_ERR_OR_NULL(post_deps)) {
    for (i = 0; i < args->nr_out_syncobjs; ++i) {
    kfree(post_deps[i].chain);
    --
    2.36.1
    \
     
     \ /
      Last update: 2022-06-26 00:55    [W:2.469 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site