diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2014-10-16 08:15:11 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:11:46 -0400 |
commit | 2eb6dcb4694c8b83e22c50d9fd4d3fdd85b93c46 (patch) | |
tree | 0a2d10c9873b81fd6a6821959874d4345cc6bfad /drivers/gpu/nvgpu/gk20a/as_gk20a.c | |
parent | ecc6f27fd13e7560d124faf67d114b93d47b73de (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.c | 8 |
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 | ||
40 | static int gk20a_as_alloc_share(struct gk20a_as *as, | 40 | int 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); |