diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r-- | drivers/gpu/nvgpu/common/as.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/mm/mm.c | 26 |
3 files changed, 32 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/common/as.c b/drivers/gpu/nvgpu/common/as.c index 31cdd0b6..f4f00fba 100644 --- a/drivers/gpu/nvgpu/common/as.c +++ b/drivers/gpu/nvgpu/common/as.c | |||
@@ -62,7 +62,7 @@ static int gk20a_vm_alloc_share(struct gk20a_as_share *as_share, | |||
62 | if (!is_power_of_2(big_page_size)) | 62 | if (!is_power_of_2(big_page_size)) |
63 | return -EINVAL; | 63 | return -EINVAL; |
64 | 64 | ||
65 | if (!(big_page_size & g->gpu_characteristics.available_big_page_sizes)) | 65 | if (!(big_page_size & nvgpu_mm_get_available_big_page_sizes(g))) |
66 | return -EINVAL; | 66 | return -EINVAL; |
67 | } | 67 | } |
68 | 68 | ||
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c index d3961f79..02dedc9f 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c | |||
@@ -211,6 +211,11 @@ gk20a_ctrl_ioctl_gpu_characteristics( | |||
211 | pgpu->vbios_version = g->bios.vbios_version; | 211 | pgpu->vbios_version = g->bios.vbios_version; |
212 | pgpu->vbios_oem_version = g->bios.vbios_oem_version; | 212 | pgpu->vbios_oem_version = g->bios.vbios_oem_version; |
213 | 213 | ||
214 | pgpu->big_page_size = nvgpu_mm_get_default_big_page_size(g); | ||
215 | pgpu->pde_coverage_bit_count = | ||
216 | g->ops.mm.get_mmu_levels(g, pgpu->big_page_size)[0].lo_bit[0]; | ||
217 | pgpu->available_big_page_sizes = nvgpu_mm_get_available_big_page_sizes(g); | ||
218 | |||
214 | if (request->gpu_characteristics_buf_size > 0) { | 219 | if (request->gpu_characteristics_buf_size > 0) { |
215 | size_t write_size = sizeof(*pgpu); | 220 | size_t write_size = sizeof(*pgpu); |
216 | 221 | ||
diff --git a/drivers/gpu/nvgpu/common/mm/mm.c b/drivers/gpu/nvgpu/common/mm/mm.c index 73af31c9..86dc46c5 100644 --- a/drivers/gpu/nvgpu/common/mm/mm.c +++ b/drivers/gpu/nvgpu/common/mm/mm.c | |||
@@ -423,3 +423,29 @@ int nvgpu_init_mm_support(struct gk20a *g) | |||
423 | 423 | ||
424 | return err; | 424 | return err; |
425 | } | 425 | } |
426 | |||
427 | u32 nvgpu_mm_get_default_big_page_size(struct gk20a *g) | ||
428 | { | ||
429 | u32 big_page_size; | ||
430 | |||
431 | big_page_size = g->ops.mm.get_default_big_page_size(); | ||
432 | |||
433 | if (g->mm.disable_bigpage) | ||
434 | big_page_size = 0; | ||
435 | |||
436 | return big_page_size; | ||
437 | } | ||
438 | |||
439 | u32 nvgpu_mm_get_available_big_page_sizes(struct gk20a *g) | ||
440 | { | ||
441 | u32 available_big_page_sizes = 0; | ||
442 | |||
443 | if (!g->mm.disable_bigpage) { | ||
444 | available_big_page_sizes = | ||
445 | g->ops.mm.get_default_big_page_size(); | ||
446 | if (g->ops.mm.get_big_page_sizes) | ||
447 | available_big_page_sizes |= g->ops.mm.get_big_page_sizes(); | ||
448 | } | ||
449 | |||
450 | return available_big_page_sizes; | ||
451 | } | ||