summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/as_gk20a.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2014-10-16 08:15:11 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:11:46 -0400
commit2eb6dcb4694c8b83e22c50d9fd4d3fdd85b93c46 (patch)
tree0a2d10c9873b81fd6a6821959874d4345cc6bfad /drivers/gpu/nvgpu/gk20a/as_gk20a.c
parentecc6f27fd13e7560d124faf67d114b93d47b73de (diff)
gpu: nvgpu: Implement 64k large page support
Implement support for 64kB large page size. Add an API to create an address space via IOCTL so that we can accept flags, and assign one flag for enabling 64kB large page size. Also adds APIs to set per-context large page size. This is possible only on Maxwell, so return error if caller tries to set large page size on Kepler. Default large page size is still 128kB. Change-Id: I20b51c8f6d4a984acae8411ace3de9000c78e82f Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/as_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/as_gk20a.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/as_gk20a.c b/drivers/gpu/nvgpu/gk20a/as_gk20a.c
index 5ca7c806..74d83a7d 100644
--- a/drivers/gpu/nvgpu/gk20a/as_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/as_gk20a.c
@@ -37,8 +37,8 @@ static void release_as_share_id(struct gk20a_as *as, int id)
37 return; 37 return;
38} 38}
39 39
40static int gk20a_as_alloc_share(struct gk20a_as *as, 40int gk20a_as_alloc_share(struct gk20a_as *as,
41 struct gk20a_as_share **out) 41 u32 flags, struct gk20a_as_share **out)
42{ 42{
43 struct gk20a *g = gk20a_from_as(as); 43 struct gk20a *g = gk20a_from_as(as);
44 struct gk20a_as_share *as_share; 44 struct gk20a_as_share *as_share;
@@ -56,7 +56,7 @@ static int gk20a_as_alloc_share(struct gk20a_as *as,
56 as_share->ref_cnt.counter = 1; 56 as_share->ref_cnt.counter = 1;
57 57
58 /* this will set as_share->vm. */ 58 /* this will set as_share->vm. */
59 err = g->ops.mm.vm_alloc_share(as_share); 59 err = g->ops.mm.vm_alloc_share(as_share, flags);
60 if (err) 60 if (err)
61 goto failed; 61 goto failed;
62 62
@@ -186,7 +186,7 @@ int gk20a_as_dev_open(struct inode *inode, struct file *filp)
186 return err; 186 return err;
187 } 187 }
188 188
189 err = gk20a_as_alloc_share(&g->as, &as_share); 189 err = gk20a_as_alloc_share(&g->as, 0, &as_share);
190 if (err) { 190 if (err) {
191 gk20a_dbg_fn("failed to alloc share"); 191 gk20a_dbg_fn("failed to alloc share");
192 gk20a_put_client(g); 192 gk20a_put_client(g);