summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 64266fe5..371793ef 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -2006,11 +2006,13 @@ void gk20a_channel_deterministic_idle(struct gk20a *g)
2006 if (!gk20a_channel_get(ch)) 2006 if (!gk20a_channel_get(ch))
2007 continue; 2007 continue;
2008 2008
2009 if (ch->deterministic) { 2009 if (ch->deterministic && !ch->deterministic_railgate_allowed) {
2010 /* 2010 /*
2011 * Drop the power ref taken when setting deterministic 2011 * Drop the power ref taken when setting deterministic
2012 * flag. deterministic_unidle will put this and the 2012 * flag. deterministic_unidle will put this and the
2013 * channel ref back. 2013 * channel ref back. If railgate is allowed separately
2014 * for this channel, the power ref has already been put
2015 * away.
2014 * 2016 *
2015 * Hold the channel ref: it must not get freed in 2017 * Hold the channel ref: it must not get freed in
2016 * between. A race could otherwise result in lost 2018 * between. A race could otherwise result in lost
@@ -2045,7 +2047,7 @@ void gk20a_channel_deterministic_unidle(struct gk20a *g)
2045 * Deterministic state changes inside deterministic_busy lock, 2047 * Deterministic state changes inside deterministic_busy lock,
2046 * which we took in deterministic_idle. 2048 * which we took in deterministic_idle.
2047 */ 2049 */
2048 if (ch->deterministic) { 2050 if (ch->deterministic && !ch->deterministic_railgate_allowed) {
2049 if (gk20a_busy(g)) 2051 if (gk20a_busy(g))
2050 nvgpu_err(g, "cannot busy() again!"); 2052 nvgpu_err(g, "cannot busy() again!");
2051 /* Took this in idle() */ 2053 /* Took this in idle() */