summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2016-12-09 06:15:51 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2016-12-09 16:44:53 -0500
commit54810444d24bd8ca820f88eadbfd227b5fe8c492 (patch)
tree95b4ad4882e3babc162bbcb381e14e59bba1f786 /drivers/gpu/nvgpu/gk20a/mm_gk20a.c
parent0859cf9539841ed8e6af09472f4253e497e4248d (diff)
gpu: nvgpu: fix timeout retry usage in mm_gk20a.c
Loop conditions of timeout checking introduced in commit 21094783114b9314d57f412196544a34b3a40f4a ("gpu: nvgpu: Use timeout retry API in mm_gk20a.c") were flipped by accident, so each usage in a loop actually did not wait enough but ran only one iteration. Fix the conditions to loop as long as the timeout is NOT expired. Also restore l2 flush timeout to 10 ms from 1, which was done in commit 030ef82bdd474ef4261a2f40995b8db57857899e ("gpu: nvgpu: increase l2 flush timeout") but overwritten by the above "use timeout" commit. Bug 200260715 Change-Id: I0db16be79a1a27caa3d97fac9d4361582cc232e8 Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/1268482 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: Alex Waterman <alexw@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/mm_gk20a.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
index 7ecef39b..13dc4241 100644
--- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
@@ -5049,7 +5049,7 @@ int gk20a_mm_fb_flush(struct gk20a *g)
5049 udelay(5); 5049 udelay(5);
5050 } else 5050 } else
5051 break; 5051 break;
5052 } while (nvgpu_timeout_check(&timeout)); 5052 } while (!nvgpu_timeout_check(&timeout));
5053 5053
5054 if (nvgpu_timeout_peek(&timeout)) { 5054 if (nvgpu_timeout_peek(&timeout)) {
5055 if (g->ops.fb.dump_vpr_wpr_info) 5055 if (g->ops.fb.dump_vpr_wpr_info)
@@ -5092,7 +5092,7 @@ static void gk20a_mm_l2_invalidate_locked(struct gk20a *g)
5092 udelay(5); 5092 udelay(5);
5093 } else 5093 } else
5094 break; 5094 break;
5095 } while (nvgpu_timeout_check(&timeout)); 5095 } while (!nvgpu_timeout_check(&timeout));
5096 5096
5097 if (nvgpu_timeout_peek(&timeout)) 5097 if (nvgpu_timeout_peek(&timeout))
5098 gk20a_warn(dev_from_gk20a(g), 5098 gk20a_warn(dev_from_gk20a(g),
@@ -5125,7 +5125,7 @@ void gk20a_mm_l2_flush(struct gk20a *g, bool invalidate)
5125 if (!g->power_on) 5125 if (!g->power_on)
5126 goto hw_was_off; 5126 goto hw_was_off;
5127 5127
5128 nvgpu_timeout_init(g, &timeout, 200, NVGPU_TIMER_RETRY_TIMER); 5128 nvgpu_timeout_init(g, &timeout, 2000, NVGPU_TIMER_RETRY_TIMER);
5129 5129
5130 mutex_lock(&mm->l2_op_lock); 5130 mutex_lock(&mm->l2_op_lock);
5131 5131
@@ -5147,7 +5147,7 @@ void gk20a_mm_l2_flush(struct gk20a *g, bool invalidate)
5147 udelay(5); 5147 udelay(5);
5148 } else 5148 } else
5149 break; 5149 break;
5150 } while (nvgpu_timeout_check_msg(&timeout, 5150 } while (!nvgpu_timeout_check_msg(&timeout,
5151 "l2_flush_dirty too many retries")); 5151 "l2_flush_dirty too many retries"));
5152 5152
5153 trace_gk20a_mm_l2_flush_done(dev_name(g->dev)); 5153 trace_gk20a_mm_l2_flush_done(dev_name(g->dev));
@@ -5192,7 +5192,7 @@ void gk20a_mm_cbc_clean(struct gk20a *g)
5192 udelay(5); 5192 udelay(5);
5193 } else 5193 } else
5194 break; 5194 break;
5195 } while (nvgpu_timeout_check_msg(&timeout, 5195 } while (!nvgpu_timeout_check_msg(&timeout,
5196 "l2_clean_comptags too many retries")); 5196 "l2_clean_comptags too many retries"));
5197 5197
5198 mutex_unlock(&mm->l2_op_lock); 5198 mutex_unlock(&mm->l2_op_lock);
@@ -5259,7 +5259,7 @@ void gk20a_mm_tlb_invalidate(struct vm_gk20a *vm)
5259 if (fb_mmu_ctrl_pri_fifo_space_v(data) != 0) 5259 if (fb_mmu_ctrl_pri_fifo_space_v(data) != 0)
5260 break; 5260 break;
5261 udelay(2); 5261 udelay(2);
5262 } while (nvgpu_timeout_check_msg(&timeout, 5262 } while (!nvgpu_timeout_check_msg(&timeout,
5263 "wait mmu fifo space")); 5263 "wait mmu fifo space"));
5264 5264
5265 if (nvgpu_timeout_peek(&timeout)) 5265 if (nvgpu_timeout_peek(&timeout))
@@ -5283,7 +5283,7 @@ void gk20a_mm_tlb_invalidate(struct vm_gk20a *vm)
5283 fb_mmu_ctrl_pri_fifo_empty_false_f()) 5283 fb_mmu_ctrl_pri_fifo_empty_false_f())
5284 break; 5284 break;
5285 udelay(2); 5285 udelay(2);
5286 } while (nvgpu_timeout_check_msg(&timeout, 5286 } while (!nvgpu_timeout_check_msg(&timeout,
5287 "wait mmu invalidate")); 5287 "wait mmu invalidate"));
5288 5288
5289 trace_gk20a_mm_tlb_invalidate_done(dev_name(g->dev)); 5289 trace_gk20a_mm_tlb_invalidate_done(dev_name(g->dev));