summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/mm_gk20a.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
index 179e6fc1..4872bb95 100644
--- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
@@ -831,8 +831,15 @@ static int gk20a_vidmem_clear_all(struct gk20a *g)
831 } 831 }
832 832
833 if (gk20a_fence_out) { 833 if (gk20a_fence_out) {
834 err = gk20a_fence_wait(gk20a_fence_out, 834 unsigned long end_jiffies = jiffies +
835 gk20a_get_gr_idle_timeout(g)); 835 msecs_to_jiffies(gk20a_get_gr_idle_timeout(g));
836
837 do {
838 unsigned int timeout = jiffies_to_msecs(end_jiffies - jiffies);
839 err = gk20a_fence_wait(gk20a_fence_out,
840 timeout);
841 } while ((err == -ERESTARTSYS) && time_before(jiffies, end_jiffies));
842
836 gk20a_fence_put(gk20a_fence_out); 843 gk20a_fence_put(gk20a_fence_out);
837 if (err) { 844 if (err) {
838 gk20a_err(g->dev, 845 gk20a_err(g->dev,
@@ -2880,8 +2887,15 @@ static int gk20a_gmmu_clear_vidmem_mem(struct gk20a *g, struct mem_desc *mem)
2880 } 2887 }
2881 2888
2882 if (gk20a_last_fence) { 2889 if (gk20a_last_fence) {
2883 err = gk20a_fence_wait(gk20a_last_fence, 2890 unsigned long end_jiffies = jiffies +
2884 gk20a_get_gr_idle_timeout(g)); 2891 msecs_to_jiffies(gk20a_get_gr_idle_timeout(g));
2892
2893 do {
2894 unsigned int timeout = jiffies_to_msecs(end_jiffies - jiffies);
2895 err = gk20a_fence_wait(gk20a_last_fence,
2896 timeout);
2897 } while ((err == -ERESTARTSYS) && time_before(jiffies, end_jiffies));
2898
2885 gk20a_fence_put(gk20a_last_fence); 2899 gk20a_fence_put(gk20a_last_fence);
2886 if (err) 2900 if (err)
2887 gk20a_err(g->dev, 2901 gk20a_err(g->dev,