summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/linux/ioctl_channel.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/ioctl_channel.c')
-rw-r--r--drivers/gpu/nvgpu/common/linux/ioctl_channel.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_channel.c b/drivers/gpu/nvgpu/common/linux/ioctl_channel.c
index 781a803e..0c8bff43 100644
--- a/drivers/gpu/nvgpu/common/linux/ioctl_channel.c
+++ b/drivers/gpu/nvgpu/common/linux/ioctl_channel.c
@@ -455,12 +455,27 @@ clean_up:
455 return err; 455 return err;
456} 456}
457 457
458int nvgpu_channel_ioctl_alloc_gpfifo(struct channel_gk20a *c, 458static u32 nvgpu_gpfifo_user_flags_to_common_flags(u32 user_flags)
459 struct nvgpu_alloc_gpfifo_ex_args *args)
460{ 459{
461 return gk20a_channel_alloc_gpfifo(c, args->num_entries, 460 u32 flags = 0;
462 args->num_inflight_jobs, 461
463 args->flags); 462 if (user_flags & NVGPU_ALLOC_GPFIFO_EX_FLAGS_VPR_ENABLED)
463 flags |= NVGPU_GPFIFO_FLAGS_SUPPORT_VPR;
464
465 if (user_flags & NVGPU_ALLOC_GPFIFO_EX_FLAGS_DETERMINISTIC)
466 flags |= NVGPU_GPFIFO_FLAGS_SUPPORT_DETERMINISTIC;
467
468 return flags;
469}
470
471static int nvgpu_channel_ioctl_alloc_gpfifo(struct channel_gk20a *c,
472 unsigned int num_entries,
473 unsigned int num_inflight_jobs,
474 u32 user_flags)
475{
476 return gk20a_channel_alloc_gpfifo(c, num_entries,
477 num_inflight_jobs,
478 nvgpu_gpfifo_user_flags_to_common_flags(user_flags));
464} 479}
465 480
466 481
@@ -1031,7 +1046,7 @@ long gk20a_channel_ioctl(struct file *filp,
1031 gk20a_idle(ch->g); 1046 gk20a_idle(ch->g);
1032 break; 1047 break;
1033 } 1048 }
1034 err = gk20a_channel_alloc_gpfifo(ch, 1049 err = nvgpu_channel_ioctl_alloc_gpfifo(ch,
1035 alloc_gpfifo_ex_args->num_entries, 1050 alloc_gpfifo_ex_args->num_entries,
1036 alloc_gpfifo_ex_args->num_inflight_jobs, 1051 alloc_gpfifo_ex_args->num_inflight_jobs,
1037 alloc_gpfifo_ex_args->flags); 1052 alloc_gpfifo_ex_args->flags);
@@ -1056,7 +1071,7 @@ long gk20a_channel_ioctl(struct file *filp,
1056 * submitted gpfifos and another one after, for internal usage. 1071 * submitted gpfifos and another one after, for internal usage.
1057 * Triple the requested size. 1072 * Triple the requested size.
1058 */ 1073 */
1059 err = gk20a_channel_alloc_gpfifo(ch, 1074 err = nvgpu_channel_ioctl_alloc_gpfifo(ch,
1060 alloc_gpfifo_args->num_entries * 3, 1075 alloc_gpfifo_args->num_entries * 3,
1061 0, 1076 0,
1062 alloc_gpfifo_args->flags); 1077 alloc_gpfifo_args->flags);