diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2017-11-07 12:56:40 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-11-08 01:24:14 -0500 |
commit | 58dd20f86b3b9faef89b24f2b4ec6b62a183fe9d (patch) | |
tree | bd90f82d117597fe44b004861056e50c175f5700 /drivers/gpu/nvgpu/common | |
parent | a51219e526cca5fdee33faf25268662bdd9453cb (diff) |
gpu: nvgpu: Introduce queries for big page sizes
Introduce query functions for default big page size and available
big page sizes. Move initialization of GPU characteristics big
page sizes to the GPU characteristics query function.
JIRA NVGPU-259
Change-Id: Ie66cc2fbfcd88205593056f8d5010ac2539c8bc2
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1593685
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
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 | } | ||