diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 1551dd16..a84d8ff0 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -229,8 +229,14 @@ static inline void pramin_access_batch_wr_n(struct gk20a *g, u32 start, | |||
229 | { | 229 | { |
230 | u32 r = start, *src_u32 = *arg; | 230 | u32 r = start, *src_u32 = *arg; |
231 | 231 | ||
232 | /* | ||
233 | * Barrier moved here from gk20a_writel in the loop. The writes don't | ||
234 | * have to be ordered. | ||
235 | */ | ||
236 | wmb(); | ||
237 | |||
232 | while (words--) { | 238 | while (words--) { |
233 | gk20a_writel(g, r, *src_u32++); | 239 | writel_relaxed(*src_u32++, g->regs + r); |
234 | r += sizeof(u32); | 240 | r += sizeof(u32); |
235 | } | 241 | } |
236 | 242 | ||
@@ -242,8 +248,14 @@ static inline void pramin_access_batch_set(struct gk20a *g, u32 start, | |||
242 | { | 248 | { |
243 | u32 r = start, repeat = **arg; | 249 | u32 r = start, repeat = **arg; |
244 | 250 | ||
251 | /* | ||
252 | * Barrier moved here from gk20a_writel in the loop. The writes don't | ||
253 | * have to be ordered. | ||
254 | */ | ||
255 | wmb(); | ||
256 | |||
245 | while (words--) { | 257 | while (words--) { |
246 | gk20a_writel(g, r, repeat); | 258 | writel_relaxed(repeat, g->regs + r); |
247 | r += sizeof(u32); | 259 | r += sizeof(u32); |
248 | } | 260 | } |
249 | } | 261 | } |