summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/mm/vidmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/mm/vidmem.c')
-rw-r--r--drivers/gpu/nvgpu/common/mm/vidmem.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/vidmem.c b/drivers/gpu/nvgpu/common/mm/vidmem.c
index 37435f97..b6e1919f 100644
--- a/drivers/gpu/nvgpu/common/mm/vidmem.c
+++ b/drivers/gpu/nvgpu/common/mm/vidmem.c
@@ -39,6 +39,14 @@
39void nvgpu_vidmem_destroy(struct gk20a *g) 39void nvgpu_vidmem_destroy(struct gk20a *g)
40{ 40{
41 struct nvgpu_timeout timeout; 41 struct nvgpu_timeout timeout;
42 size_t size;
43
44 size = g->ops.mm.get_vidmem_size ?
45 g->ops.mm.get_vidmem_size(g) : 0;
46
47 /* Nothing to destroy if no vidmem */
48 if (!size)
49 return;
42 50
43 nvgpu_timeout_init(g, &timeout, 100, NVGPU_TIMER_RETRY_TIMER); 51 nvgpu_timeout_init(g, &timeout, 100, NVGPU_TIMER_RETRY_TIMER);
44 52
@@ -73,6 +81,9 @@ void nvgpu_vidmem_destroy(struct gk20a *g)
73 81
74 if (nvgpu_alloc_initialized(&g->mm.vidmem.allocator)) 82 if (nvgpu_alloc_initialized(&g->mm.vidmem.allocator))
75 nvgpu_alloc_destroy(&g->mm.vidmem.allocator); 83 nvgpu_alloc_destroy(&g->mm.vidmem.allocator);
84
85 if (nvgpu_alloc_initialized(&g->mm.vidmem.bootstrap_allocator))
86 nvgpu_alloc_destroy(&g->mm.vidmem.bootstrap_allocator);
76} 87}
77 88
78static int __nvgpu_vidmem_do_clear_all(struct gk20a *g) 89static int __nvgpu_vidmem_do_clear_all(struct gk20a *g)
@@ -297,15 +308,16 @@ static int nvgpu_vidmem_clear_pending_allocs_thr(void *mm_ptr)
297int nvgpu_vidmem_init(struct mm_gk20a *mm) 308int nvgpu_vidmem_init(struct mm_gk20a *mm)
298{ 309{
299 struct gk20a *g = mm->g; 310 struct gk20a *g = mm->g;
300 size_t size = g->ops.mm.get_vidmem_size ?
301 g->ops.mm.get_vidmem_size(g) : 0;
302 u64 bootstrap_base, bootstrap_size, base; 311 u64 bootstrap_base, bootstrap_size, base;
303 u64 default_page_size = SZ_64K; 312 u64 default_page_size = SZ_64K;
313 size_t size;
304 int err; 314 int err;
305 315
306 static struct nvgpu_alloc_carveout wpr_co = 316 static struct nvgpu_alloc_carveout wpr_co =
307 NVGPU_CARVEOUT("wpr-region", 0, SZ_16M); 317 NVGPU_CARVEOUT("wpr-region", 0, SZ_16M);
308 318
319 size = g->ops.mm.get_vidmem_size ?
320 g->ops.mm.get_vidmem_size(g) : 0;
309 if (!size) 321 if (!size)
310 return 0; 322 return 0;
311 323