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.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_as.c b/drivers/gpu/nvgpu/common/linux/ioctl_as.c
index 8aea3d22..c5769476 100644
--- a/drivers/gpu/nvgpu/common/linux/ioctl_as.c
+++ b/drivers/gpu/nvgpu/common/linux/ioctl_as.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * GK20A Address Spaces 2 * GK20A Address Spaces
3 * 3 *
4 * Copyright (c) 2011-2017, NVIDIA CORPORATION. All rights reserved. 4 * Copyright (c) 2011-2018, NVIDIA CORPORATION. All rights reserved.
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify it 6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms and conditions of the GNU General Public License, 7 * under the terms and conditions of the GNU General Public License,
@@ -256,6 +256,33 @@ static int gk20a_as_ioctl_get_va_regions(
256 return 0; 256 return 0;
257} 257}
258 258
259static int nvgpu_as_ioctl_get_sync_ro_map(
260 struct gk20a_as_share *as_share,
261 struct nvgpu_as_get_sync_ro_map_args *args)
262{
263#ifdef CONFIG_TEGRA_GK20A_NVHOST
264 struct vm_gk20a *vm = as_share->vm;
265 struct gk20a *g = gk20a_from_vm(vm);
266 u64 base_gpuva;
267 u32 sync_size;
268 int err = 0;
269
270 if (!g->ops.fifo.get_sync_ro_map)
271 return -EINVAL;
272
273 err = g->ops.fifo.get_sync_ro_map(vm, &base_gpuva, &sync_size);
274 if (err)
275 return err;
276
277 args->base_gpuva = base_gpuva;
278 args->sync_size = sync_size;
279
280 return err;
281#else
282 return -EINVAL;
283#endif
284}
285
259int gk20a_as_dev_open(struct inode *inode, struct file *filp) 286int gk20a_as_dev_open(struct inode *inode, struct file *filp)
260{ 287{
261 struct nvgpu_os_linux *l; 288 struct nvgpu_os_linux *l;
@@ -367,6 +394,10 @@ long gk20a_as_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
367 err = gk20a_as_ioctl_map_buffer_batch(as_share, 394 err = gk20a_as_ioctl_map_buffer_batch(as_share,
368 (struct nvgpu_as_map_buffer_batch_args *)buf); 395 (struct nvgpu_as_map_buffer_batch_args *)buf);
369 break; 396 break;
397 case NVGPU_AS_IOCTL_GET_SYNC_RO_MAP:
398 err = nvgpu_as_ioctl_get_sync_ro_map(as_share,
399 (struct nvgpu_as_get_sync_ro_map_args *)buf);
400 break;
370 default: 401 default:
371 err = -ENOTTY; 402 err = -ENOTTY;
372 break; 403 break;