From 418fc5338e202c6d0b6b02d49fed736ed28279fb Mon Sep 17 00:00:00 2001 From: Sachit Kadle Date: Tue, 30 Aug 2016 20:23:31 -0700 Subject: gpu: nvgpu: add deterministic submit flag This change adds a new ioctl flag, NVGPU_SUBMIT_GPFIFO_FLAGS_DETERMINISTIC, which indicates that a gpfifo submission must exhibit deterministic behavior within the kernel. For submissions that require job tracking and also set this flag, we require the channel to have previously pre-allocated job tracking resources. Bug 1795076 Change-Id: I0496a2513c6c683fcda161b32db9e7ee6712d45c Signed-off-by: Sachit Kadle Reviewed-on: http://git-master/r/1210527 (cherry picked from commit 0a36a0ce3a6cbe398931993e742fc928f7b2c0aa) Reviewed-on: http://git-master/r/1223935 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 9 +++++++++ include/uapi/linux/nvgpu.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index cc3bbbd2..b846054d 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c @@ -2628,6 +2628,15 @@ int gk20a_submit_channel_gpfifo(struct channel_gk20a *c, !skip_buffer_refcounting; if (need_job_tracking) { + /* + * If the submit is to have deterministic latency and + * job tracking is required, the channel must have + * pre-allocated resources. Otherwise, we fail the submit here + */ + if ((flags & NVGPU_SUBMIT_GPFIFO_FLAGS_DETERMINISTIC) && + !channel_gk20a_is_prealloc_enabled(c)) + return -EINVAL; + /* gk20a_channel_update releases this ref. */ err = gk20a_busy(g->dev); if (err) { diff --git a/include/uapi/linux/nvgpu.h b/include/uapi/linux/nvgpu.h index 22e357b6..f3c75045 100644 --- a/include/uapi/linux/nvgpu.h +++ b/include/uapi/linux/nvgpu.h @@ -994,6 +994,8 @@ struct nvgpu_fence { #define NVGPU_SUBMIT_GPFIFO_FLAGS_SUPPRESS_WFI (1 << 4) /* skip buffer refcounting during submit */ #define NVGPU_SUBMIT_GPFIFO_FLAGS_SKIP_BUFFER_REFCOUNTING (1 << 5) +/* submit should exhibit deterministic latency */ +#define NVGPU_SUBMIT_GPFIFO_FLAGS_DETERMINISTIC (1 << 6) struct nvgpu_submit_gpfifo_args { __u64 gpfifo; -- cgit v1.2.2