diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 5b2596726..a7f8005b7 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c @@ -2826,6 +2826,12 @@ void gk20a_channel_semaphore_wakeup(struct gk20a *g, bool post_events) gk20a_dbg_fn(""); + /* + * Ensure that all pending writes are actually done before trying to + * read semaphore values from DRAM. + */ + g->ops.mm.fb_flush(g); + for (chid = 0; chid < f->num_channels; chid++) { struct channel_gk20a *c = g->fifo.channel+chid; if (gk20a_channel_get(c)) {