diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 99cfb07e..59c3e31d 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |||
@@ -1754,9 +1754,14 @@ void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) | |||
1754 | 1754 | ||
1755 | trace_gk20a_channel_update(c->hw_chid); | 1755 | trace_gk20a_channel_update(c->hw_chid); |
1756 | 1756 | ||
1757 | update_gp_get(c->g, c); | ||
1757 | wake_up(&c->submit_wq); | 1758 | wake_up(&c->submit_wq); |
1758 | 1759 | ||
1759 | mutex_lock(&c->submit_lock); | 1760 | mutex_lock(&c->submit_lock); |
1761 | |||
1762 | /* gp_put check needs to be done inside submit lock */ | ||
1763 | check_gp_put(c->g, c); | ||
1764 | |||
1760 | mutex_lock(&c->jobs_lock); | 1765 | mutex_lock(&c->jobs_lock); |
1761 | list_for_each_entry_safe(job, n, &c->jobs, list) { | 1766 | list_for_each_entry_safe(job, n, &c->jobs, list) { |
1762 | struct gk20a *g = c->g; | 1767 | struct gk20a *g = c->g; |
@@ -1893,8 +1898,6 @@ int gk20a_submit_channel_gpfifo(struct channel_gk20a *c, | |||
1893 | flags, | 1898 | flags, |
1894 | fence ? fence->id : 0, | 1899 | fence ? fence->id : 0, |
1895 | fence ? fence->value : 0); | 1900 | fence ? fence->value : 0); |
1896 | check_gp_put(g, c); | ||
1897 | update_gp_get(g, c); | ||
1898 | 1901 | ||
1899 | gk20a_dbg_info("pre-submit put %d, get %d, size %d", | 1902 | gk20a_dbg_info("pre-submit put %d, get %d, size %d", |
1900 | c->gpfifo.put, c->gpfifo.get, c->gpfifo.entry_num); | 1903 | c->gpfifo.put, c->gpfifo.get, c->gpfifo.entry_num); |