diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/ioctl_as.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/ioctl_as.c | 18 |
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 | ||
35 | static 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 | |||
35 | static int gk20a_as_ioctl_bind_channel( | 47 | static 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 | ||
70 | static int gk20a_as_ioctl_free_space( | 86 | static int gk20a_as_ioctl_free_space( |