summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/common/mm/vm.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/vm.c b/drivers/gpu/nvgpu/common/mm/vm.c
index 904284ec..b957e755 100644
--- a/drivers/gpu/nvgpu/common/mm/vm.c
+++ b/drivers/gpu/nvgpu/common/mm/vm.c
@@ -279,7 +279,6 @@ int nvgpu_init_vm(struct mm_gk20a *mm,
279 279
280 vm->va_start = low_hole; 280 vm->va_start = low_hole;
281 vm->va_limit = aperture_size; 281 vm->va_limit = aperture_size;
282 vm->big_pages = big_pages;
283 282
284 vm->big_page_size = vm->gmmu_page_sizes[gmmu_page_size_big]; 283 vm->big_page_size = vm->gmmu_page_sizes[gmmu_page_size_big];
285 vm->userspace_managed = userspace_managed; 284 vm->userspace_managed = userspace_managed;
@@ -292,7 +291,13 @@ int nvgpu_init_vm(struct mm_gk20a *mm,
292 291
293 /* Setup vma limits. */ 292 /* Setup vma limits. */
294 if (kernel_reserved + low_hole < aperture_size) { 293 if (kernel_reserved + low_hole < aperture_size) {
295 if (nvgpu_is_enabled(g, NVGPU_MM_UNIFY_ADDRESS_SPACES)) { 294 /*
295 * If big_pages are disabled for this VM then it only makes
296 * sense to make one VM, same as if the unified address flag
297 * is set.
298 */
299 if (!big_pages ||
300 nvgpu_is_enabled(g, NVGPU_MM_UNIFY_ADDRESS_SPACES)) {
296 user_vma_start = low_hole; 301 user_vma_start = low_hole;
297 user_vma_limit = vm->va_limit - kernel_reserved; 302 user_vma_limit = vm->va_limit - kernel_reserved;
298 user_lp_vma_start = user_vma_limit; 303 user_lp_vma_start = user_vma_limit;
@@ -346,11 +351,13 @@ int nvgpu_init_vm(struct mm_gk20a *mm,
346 * space is used then check the user_lp vma instead of the user vma. 351 * space is used then check the user_lp vma instead of the user vma.
347 */ 352 */
348 if (nvgpu_is_enabled(g, NVGPU_MM_UNIFY_ADDRESS_SPACES)) 353 if (nvgpu_is_enabled(g, NVGPU_MM_UNIFY_ADDRESS_SPACES))
349 vm->big_pages = nvgpu_big_pages_possible(vm, user_vma_start, 354 vm->big_pages = big_pages &&
350 user_vma_limit - user_vma_start); 355 nvgpu_big_pages_possible(vm, user_vma_start,
356 user_vma_limit - user_vma_start);
351 else 357 else
352 vm->big_pages = nvgpu_big_pages_possible(vm, user_lp_vma_start, 358 vm->big_pages = big_pages &&
353 user_lp_vma_limit - user_lp_vma_start); 359 nvgpu_big_pages_possible(vm, user_lp_vma_start,
360 user_lp_vma_limit - user_lp_vma_start);
354 361
355 /* 362 /*
356 * User VMA. 363 * User VMA.