diff --git a/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c b/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c index e91e94187..463b8218f 100644 --- a/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c +++ b/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c @@ -56,27 +56,14 @@ nvgpu_channel_sync_syncpt_from_base(struct nvgpu_channel_sync *base) offsetof(struct nvgpu_channel_sync_syncpt, base)); } -static int channel_sync_syncpt_gen_wait_cmd(struct nvgpu_channel *c, +static void channel_sync_syncpt_gen_wait_cmd(struct nvgpu_channel *c, u32 id, u32 thresh, struct priv_cmd_entry *wait_cmd, - u32 wait_cmd_size, bool preallocated) + u32 wait_cmd_size) { - int err = 0; - - if (!preallocated) { - err = nvgpu_channel_alloc_priv_cmdbuf(c, - c->g->ops.sync.syncpt.get_wait_cmd_size(), - wait_cmd); - if (err != 0) { - nvgpu_err(c->g, "not enough priv cmd buffer space"); - return err; - } - } nvgpu_log(c->g, gpu_dbg_info, "sp->id %d gpu va %llx", id, c->vm->syncpt_ro_map_gpu_va); c->g->ops.sync.syncpt.add_wait_cmd(c->g, wait_cmd, id, thresh, c->vm->syncpt_ro_map_gpu_va); - - return 0; } static int channel_sync_syncpt_wait_raw(struct nvgpu_channel_sync_syncpt *s, @@ -90,10 +77,18 @@ static int channel_sync_syncpt_wait_raw(struct nvgpu_channel_sync_syncpt *s, return -EINVAL; } - err = channel_sync_syncpt_gen_wait_cmd(c, id, thresh, - wait_cmd, wait_cmd_size, false); + err = nvgpu_channel_alloc_priv_cmdbuf(c, + c->g->ops.sync.syncpt.get_wait_cmd_size(), + wait_cmd); + if (err != 0) { + nvgpu_err(c->g, "not enough priv cmd buffer space"); + return err; + } - return err; + channel_sync_syncpt_gen_wait_cmd(c, id, thresh, + wait_cmd, wait_cmd_size); + + return 0; } static int channel_sync_syncpt_wait_fd(struct nvgpu_channel_sync *s, int fd, @@ -152,8 +147,8 @@ static int channel_sync_syncpt_wait_fd(struct nvgpu_channel_sync *s, int fd, for (i = 0; i < num_fences; i++) { nvgpu_os_fence_syncpt_extract_nth_syncpt( &os_fence_syncpt, i, &syncpt_id, &syncpt_thresh); - err = channel_sync_syncpt_gen_wait_cmd(c, syncpt_id, - syncpt_thresh, wait_cmd, wait_cmd_size, true); + channel_sync_syncpt_gen_wait_cmd(c, syncpt_id, + syncpt_thresh, wait_cmd, wait_cmd_size); } cleanup: