diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/as_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/as_gk20a.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/as_gk20a.c b/drivers/gpu/nvgpu/gk20a/as_gk20a.c index 3d690e01..038fa4c8 100644 --- a/drivers/gpu/nvgpu/gk20a/as_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/as_gk20a.c | |||
@@ -183,12 +183,16 @@ static int gk20a_as_ioctl_get_va_regions( | |||
183 | unsigned int write_entries; | 183 | unsigned int write_entries; |
184 | struct nvgpu_as_va_region __user *user_region_ptr; | 184 | struct nvgpu_as_va_region __user *user_region_ptr; |
185 | struct vm_gk20a *vm = as_share->vm; | 185 | struct vm_gk20a *vm = as_share->vm; |
186 | int page_sizes = gmmu_nr_page_sizes; | ||
186 | 187 | ||
187 | gk20a_dbg_fn(""); | 188 | gk20a_dbg_fn(""); |
188 | 189 | ||
190 | if (!vm->big_pages) | ||
191 | page_sizes--; | ||
192 | |||
189 | write_entries = args->buf_size / sizeof(struct nvgpu_as_va_region); | 193 | write_entries = args->buf_size / sizeof(struct nvgpu_as_va_region); |
190 | if (write_entries > gmmu_nr_page_sizes) | 194 | if (write_entries > page_sizes) |
191 | write_entries = gmmu_nr_page_sizes; | 195 | write_entries = page_sizes; |
192 | 196 | ||
193 | user_region_ptr = | 197 | user_region_ptr = |
194 | (struct nvgpu_as_va_region __user *)(uintptr_t)args->buf_addr; | 198 | (struct nvgpu_as_va_region __user *)(uintptr_t)args->buf_addr; |
@@ -216,7 +220,7 @@ static int gk20a_as_ioctl_get_va_regions( | |||
216 | } | 220 | } |
217 | 221 | ||
218 | args->buf_size = | 222 | args->buf_size = |
219 | gmmu_nr_page_sizes * sizeof(struct nvgpu_as_va_region); | 223 | page_sizes * sizeof(struct nvgpu_as_va_region); |
220 | 224 | ||
221 | return 0; | 225 | return 0; |
222 | } | 226 | } |