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.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 53b85ad8..444fec13 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -2501,6 +2501,12 @@ void gk20a_channel_event(struct channel_gk20a *ch)
2501 mutex_unlock(&ch->poll_events.lock); 2501 mutex_unlock(&ch->poll_events.lock);
2502} 2502}
2503 2503
2504void gk20a_channel_post_event(struct channel_gk20a *ch)
2505{
2506 gk20a_channel_event(ch);
2507 wake_up_interruptible_all(&ch->semaphore_wq);
2508}
2509
2504unsigned int gk20a_channel_poll(struct file *filep, poll_table *wait) 2510unsigned int gk20a_channel_poll(struct file *filep, poll_table *wait)
2505{ 2511{
2506 unsigned int mask = 0; 2512 unsigned int mask = 0;
@@ -2656,8 +2662,7 @@ void gk20a_channel_semaphore_wakeup(struct gk20a *g)
2656 for (chid = 0; chid < f->num_channels; chid++) { 2662 for (chid = 0; chid < f->num_channels; chid++) {
2657 struct channel_gk20a *c = g->fifo.channel+chid; 2663 struct channel_gk20a *c = g->fifo.channel+chid;
2658 if (gk20a_channel_get(c)) { 2664 if (gk20a_channel_get(c)) {
2659 gk20a_channel_event(c); 2665 gk20a_channel_post_event(c);
2660 wake_up_interruptible_all(&c->semaphore_wq);
2661 gk20a_channel_update(c, 0); 2666 gk20a_channel_update(c, 0);
2662 gk20a_channel_put(c); 2667 gk20a_channel_put(c);
2663 } 2668 }