diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c index 9b4b756d6..8cc852c71 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c @@ -286,7 +286,7 @@ static void gk20a_channel_syncpt_destroy(struct gk20a_channel_sync *s) struct gk20a_channel_syncpt *sp = container_of(s, struct gk20a_channel_syncpt, ops); nvhost_syncpt_set_min_eq_max_ext(sp->host1x_pdev, sp->id); - nvhost_syncpt_put_ref_ext(sp->id); + nvhost_syncpt_put_ref_ext(sp->host1x_pdev, sp->id); kfree(sp); } @@ -294,6 +294,7 @@ static struct gk20a_channel_sync * gk20a_channel_syncpt_create(struct channel_gk20a *c) { struct gk20a_channel_syncpt *sp; + char syncpt_name[16]; sp = kzalloc(sizeof(*sp), GFP_KERNEL); if (!sp) @@ -301,14 +302,19 @@ gk20a_channel_syncpt_create(struct channel_gk20a *c) sp->c = c; sp->host1x_pdev = c->g->host1x_dev; - sp->id = nvhost_get_syncpt_host_managed(c->g->dev, c->hw_chid); - nvhost_syncpt_set_min_eq_max_ext(sp->host1x_pdev, sp->id); + + sprintf(syncpt_name, "%s_%d", dev_name(&c->g->dev->dev), c->hw_chid); + + sp->id = nvhost_get_syncpt_host_managed(sp->host1x_pdev, + c->hw_chid, syncpt_name); if (!sp->id) { kfree(sp); gk20a_err(&c->g->dev->dev, "failed to get free syncpt"); return NULL; } + nvhost_syncpt_set_min_eq_max_ext(sp->host1x_pdev, sp->id); + sp->ops.wait_syncpt = gk20a_channel_syncpt_wait_syncpt; sp->ops.wait_fd = gk20a_channel_syncpt_wait_fd; sp->ops.incr = gk20a_channel_syncpt_incr;