From 85f579c6e57bdfcab18b01e6dba5854e5bc308ae Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Tue, 31 May 2016 18:09:08 +0530 Subject: gpu: nvgpu: use correct APIs for disable and preempt In gr_gp10b_set_preemption_mode() and in gp10b_fifo_resetup_ramfc(), we call channel specific APIs to disable/preempt/enable channel But we do not consider TSGs in this case Hence use correct (below) APIs in above function which will handle channel or TSG internally : gk20a_disable_channel_tsg() gk20a_fifo_preempt() gk20a_enable_channel_tsg() Bug 200205041 Change-Id: I2369e79b2af3b8a91699044106293865d5f8f260 Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/1157192 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gp10b/gr_gp10b.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/gp10b/gr_gp10b.c') diff --git a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c index 205d2c97..5db65175 100644 --- a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c @@ -2061,18 +2061,21 @@ static int gr_gp10b_set_preemption_mode(struct channel_gk20a *ch, if (gk20a_mem_begin(g, mem)) return -ENOMEM; - g->ops.fifo.disable_channel(ch); - err = g->ops.fifo.preempt_channel(g, ch->hw_chid); + err = gk20a_disable_channel_tsg(g, ch); if (err) goto unmap_ctx; + err = gk20a_fifo_preempt(g, ch); + if (err) + goto enable_ch; + if (g->ops.gr.update_ctxsw_preemption_mode) { g->ops.gr.update_ctxsw_preemption_mode(ch->g, ch_ctx, mem); g->ops.gr.commit_global_cb_manager(g, ch, true); } - g->ops.fifo.enable_channel(ch); - +enable_ch: + gk20a_enable_channel_tsg(g, ch); unmap_ctx: gk20a_mem_end(g, mem); -- cgit v1.2.2