summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/linux/ioctl_as.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/ioctl_as.c')
-rw-r--r--drivers/gpu/nvgpu/common/linux/ioctl_as.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_as.c b/drivers/gpu/nvgpu/common/linux/ioctl_as.c
index 848fee04..8aea3d22 100644
--- a/drivers/gpu/nvgpu/common/linux/ioctl_as.c
+++ b/drivers/gpu/nvgpu/common/linux/ioctl_as.c
@@ -32,6 +32,18 @@
32#include "ioctl_as.h" 32#include "ioctl_as.h"
33#include "os_linux.h" 33#include "os_linux.h"
34 34
35static u32 gk20a_as_translate_linux_flags(struct gk20a *g, u32 flags)
36{
37 u32 core_flags = 0;
38
39 if (flags & NVGPU_AS_ALLOC_SPACE_FLAGS_FIXED_OFFSET)
40 core_flags |= NVGPU_VM_AREA_ALLOC_FIXED_OFFSET;
41 if (flags & NVGPU_AS_ALLOC_SPACE_FLAGS_SPARSE)
42 core_flags |= NVGPU_VM_AREA_ALLOC_SPARSE;
43
44 return core_flags;
45}
46
35static int gk20a_as_ioctl_bind_channel( 47static int gk20a_as_ioctl_bind_channel(
36 struct gk20a_as_share *as_share, 48 struct gk20a_as_share *as_share,
37 struct nvgpu_as_bind_channel_args *args) 49 struct nvgpu_as_bind_channel_args *args)
@@ -62,9 +74,13 @@ static int gk20a_as_ioctl_alloc_space(
62 struct gk20a_as_share *as_share, 74 struct gk20a_as_share *as_share,
63 struct nvgpu_as_alloc_space_args *args) 75 struct nvgpu_as_alloc_space_args *args)
64{ 76{
77 struct gk20a *g = gk20a_from_vm(as_share->vm);
78
65 gk20a_dbg_fn(""); 79 gk20a_dbg_fn("");
66 return nvgpu_vm_area_alloc(as_share->vm, args->pages, args->page_size, 80 return nvgpu_vm_area_alloc(as_share->vm, args->pages, args->page_size,
67 &args->o_a.offset, args->flags); 81 &args->o_a.offset,
82 gk20a_as_translate_linux_flags(g,
83 args->flags));
68} 84}
69 85
70static int gk20a_as_ioctl_free_space( 86static int gk20a_as_ioctl_free_space(