diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/common/mm/vm.c | 19 |
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. |