diff options
author | Alex Waterman <alexw@nvidia.com> | 2016-04-26 20:25:30 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-04-29 17:44:48 -0400 |
commit | 4c5e29436d0adc4e222ae5d11af507f749e7cd52 (patch) | |
tree | 2478256ee727368e292813fce7cbf3b478724272 /drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |
parent | a191fd905a9ae437e849944804a800dc4c5e6d29 (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.c | 6 |
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)) { |