From 9ed117dd01d60d540d430aebcd286e7bacf84930 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Sat, 21 Apr 2018 04:43:43 -0700 Subject: gpu: nvgpu: add HAL to update doorbell Add new HAL gops.fifo.ring_channel_doorbell() to update channel doorbell register and to trigger a runlist scan Set existing API gv11b_ring_channel_doorbell() to this HAL for all volta chips Jira NVGPUT-18 Change-Id: I9d5e84cf5aa7b763363d84befe169efda00a0932 Signed-off-by: Deepak Nibade Reviewed-on: https://git-master.nvidia.com/r/1702114 Reviewed-by: svc-mobile-coverity GVS: Gerrit_Virtual_Submit Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Terje Bergstrom Reviewed-by: Seshendra Gadagottu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | 4 ++-- drivers/gpu/nvgpu/gv11b/fifo_gv11b.h | 1 + drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) (limited to 'drivers/gpu/nvgpu/gv11b') diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c index 51923636..9be29f45 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c @@ -209,7 +209,7 @@ int channel_gv11b_setup_ramfc(struct channel_gk20a *c, } -static void gv11b_ring_channel_doorbell(struct channel_gk20a *c) +void gv11b_ring_channel_doorbell(struct channel_gk20a *c) { struct fifo_gk20a *f = &c->g->fifo; u32 hw_chid = f->channel_base + c->chid; @@ -249,7 +249,7 @@ void gv11b_userd_gp_put(struct gk20a *g, struct channel_gk20a *c) /* Commit everything to GPU. */ nvgpu_mb(); - gv11b_ring_channel_doorbell(c); + g->ops.fifo.ring_channel_doorbell(c); } void channel_gv11b_unbind(struct channel_gk20a *ch) diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h index 380db592..9157c300 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h @@ -123,4 +123,5 @@ u32 gv11b_fifo_get_preempt_timeout(struct gk20a *g); void gv11b_fifo_init_ramfc_eng_method_buffer(struct gk20a *g, struct channel_gk20a *ch, struct nvgpu_mem *mem); void gv11b_userd_writeback_config(struct gk20a *g); +void gv11b_ring_channel_doorbell(struct channel_gk20a *c); #endif diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index ca530aba..47f832a6 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c @@ -560,6 +560,7 @@ static const struct gpu_ops gv11b_ops = { .handle_ctxsw_timeout = gv11b_fifo_handle_ctxsw_timeout, .runlist_hw_submit = gk20a_fifo_runlist_hw_submit, .runlist_wait_pending = gk20a_fifo_runlist_wait_pending, + .ring_channel_doorbell = gv11b_ring_channel_doorbell, }, .gr_ctx = { .get_netlist_name = gr_gv11b_get_netlist_name, -- cgit v1.2.2