summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorSang-Hun Lee <sanlee@nvidia.com>2014-06-03 13:28:45 -0700
committerRiham Haidar <rhaidar@nvidia.com>2014-06-13 11:54:49 -0700
commit855e9f43a7ea58540859998a01c9c2d0a38a3f63 (patch)
treeca3ebc46c07d3ee556c15ac6e3cebcc5ad11b103 /drivers/gpu
parent6708ac77f5f81ab3eca61c568e8d5a3ad73392f9 (diff)
gpu: nvgpu: flush write before unlocking
- gk20a_enable is reading the clock after unlocking the spinlock to flush any previous write - This could lead to a race if any write afterwards assume the write has been completed already - Read the clock before unlocking to ensure all previous writes have been completed before letting any other thread use gk20a Bug 200007520 Change-Id: I737fbbe825c68b25ca256c4a8ee2b99aa8baf0f5 Signed-off-by: Sang-Hun Lee <sanlee@nvidia.com> Reviewed-on: http://git-master/r/418485 (cherry picked from commit 2aed542a719caa69620766bf2dceefe50626c189) Reviewed-on: http://git-master/r/422773 Reviewed-by: Riham Haidar <rhaidar@nvidia.com> Tested-by: Riham Haidar <rhaidar@nvidia.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index ad6f9b63a04c..a44eac4bb50b 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -1590,8 +1590,8 @@ void gk20a_enable(struct gk20a *g, u32 units)
pmc = gk20a_readl(g, mc_enable_r());
pmc |= units;
gk20a_writel(g, mc_enable_r(), pmc);
- spin_unlock(&g->mc_enable_lock);
gk20a_readl(g, mc_enable_r());
+ spin_unlock(&g->mc_enable_lock);
udelay(20);
}