summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2016-04-26 20:25:30 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-04-29 17:44:48 -0400
commit4c5e29436d0adc4e222ae5d11af507f749e7cd52 (patch)
tree2478256ee727368e292813fce7cbf3b478724272 /drivers/gpu/nvgpu/gk20a/channel_gk20a.c
parenta191fd905a9ae437e849944804a800dc4c5e6d29 (diff)
gpu: nvgpu: Flush FB before checking semaphores
Before checking semaphore values to determine if jobs have been completed flush the FB. If this is not done, despite the sempahore memory being mapped as volatile in the GMMU, outstanding writes can still be pending. Bug 1732449 JIRA DNVGPU-12 Change-Id: I67b596cd23a5465af05d6d173641a579cb7f168c Signed-off-by: Alex Waterman <alexw@nvidia.com> Reviewed-on: http://git-master/r/1133787 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 5b259672..a7f8005b 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)
2826 2826
2827 gk20a_dbg_fn(""); 2827 gk20a_dbg_fn("");
2828 2828
2829 /*
2830 * Ensure that all pending writes are actually done before trying to
2831 * read semaphore values from DRAM.
2832 */
2833 g->ops.mm.fb_flush(g);
2834
2829 for (chid = 0; chid < f->num_channels; chid++) { 2835 for (chid = 0; chid < f->num_channels; chid++) {
2830 struct channel_gk20a *c = g->fifo.channel+chid; 2836 struct channel_gk20a *c = g->fifo.channel+chid;
2831 if (gk20a_channel_get(c)) { 2837 if (gk20a_channel_get(c)) {