summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
diff options
context:
space:
mode:
authorSami Kiminki <skiminki@nvidia.com>2014-10-27 13:39:46 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:12:08 -0400
commitca474ca33f13c432bb43f7705f762907682e1219 (patch)
tree222a4ff59ea2b38426b88b72c2bf12b28b862c70 /drivers/gpu/nvgpu/gk20a/mm_gk20a.c
parentd11fbfe7b1b68b3aab93f7703896d95d40b79a58 (diff)
gpu: nvgpu: ALLOC_AS: don't fail on default big page size
gk20a_vm_alloc_share() fails when the default big page size is requested but ops.mm.set_big_page_size is unset. Rework the logic a bit to allow userspace to explicitly request the default big page size, too. Change-Id: I2a28c6d979fbf1dde5559ce9eb5f1310d232e27f Signed-off-by: Sami Kiminki <skiminki@nvidia.com> Reviewed-on: http://git-master/r/590456 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/mm_gk20a.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
index c37f790e..1cdb2f8a 100644
--- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
@@ -2341,6 +2341,7 @@ int gk20a_vm_alloc_share(struct gk20a_as_share *as_share, u32 big_page_size)
2341 struct vm_gk20a *vm; 2341 struct vm_gk20a *vm;
2342 char name[32]; 2342 char name[32];
2343 int err; 2343 int err;
2344 u32 default_big_page_size;
2344 2345
2345 gk20a_dbg_fn(""); 2346 gk20a_dbg_fn("");
2346 2347
@@ -2354,11 +2355,15 @@ int gk20a_vm_alloc_share(struct gk20a_as_share *as_share, u32 big_page_size)
2354 2355
2355 snprintf(name, sizeof(name), "gk20a_as_%d", as_share->id); 2356 snprintf(name, sizeof(name), "gk20a_as_%d", as_share->id);
2356 2357
2357 if (big_page_size && !g->ops.mm.set_big_page_size) 2358 default_big_page_size =
2358 return -EINVAL; 2359 gk20a_get_platform(g->dev)->default_big_page_size;
2360
2359 if (big_page_size == 0) 2361 if (big_page_size == 0)
2360 big_page_size = 2362 big_page_size = default_big_page_size;
2361 gk20a_get_platform(g->dev)->default_big_page_size; 2363
2364 if (big_page_size != default_big_page_size &&
2365 !g->ops.mm.set_big_page_size)
2366 return -EINVAL;
2362 2367
2363 err = gk20a_init_vm(mm, vm, big_page_size, big_page_size << 10, 2368 err = gk20a_init_vm(mm, vm, big_page_size, big_page_size << 10,
2364 mm->channel.size, true, name); 2369 mm->channel.size, true, name);