diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2018-02-13 07:02:38 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-02-26 06:48:11 -0500 |
commit | 8d5536271f989e01018a543016340a3d76a2fae2 (patch) | |
tree | c4981034e75b1933862b35518157c0897027e2b7 /drivers/gpu/nvgpu/include | |
parent | 180604fec0bde1710923e78a3877d49892cbf883 (diff) |
gpu: nvgpu: add user API to get a syncpoint
Add new user API NVGPU_IOCTL_CHANNEL_GET_USER_SYNCPOINT which will expose
per-channel allocated syncpoint to user space
API will also return current value of the syncpoint
On supported platforms, this API will also return a RW semaphore address
(corresponding to syncpoint shim) to user space
Add new characteristics flag NVGPU_GPU_FLAGS_SUPPORT_USER_SYNCPOINT to indicate
support for this new API
Add new flag NVGPU_SUPPORT_USER_SYNCPOINT for use of core driver
Set this flag for GV11B and GP10B for now
Add a new API (*syncpt_address) in struct gk20a_channel_sync to get GPU_VA
address of a syncpoint
Add new API nvgpu_nvhost_syncpt_read_maxval() which will read and return MAX
value of syncpoint
Bug 200326065
Jira NVGPU-179
Change-Id: I9da6f17b85996f4fc6731c0bf94fca6f3181c3e0
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1658009
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Konsta Holtta <kholtta@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/include')
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/enabled.h | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/nvhost.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/enabled.h b/drivers/gpu/nvgpu/include/nvgpu/enabled.h index e6f9525d..a3d9df24 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/enabled.h +++ b/drivers/gpu/nvgpu/include/nvgpu/enabled.h | |||
@@ -157,11 +157,13 @@ struct gk20a; | |||
157 | 157 | ||
158 | /* GPU_VA address of a syncpoint is supported */ | 158 | /* GPU_VA address of a syncpoint is supported */ |
159 | #define NVGPU_SUPPORT_SYNCPOINT_ADDRESS 65 | 159 | #define NVGPU_SUPPORT_SYNCPOINT_ADDRESS 65 |
160 | /* Allocating per-channel syncpoint in user space is supported */ | ||
161 | #define NVGPU_SUPPORT_USER_SYNCPOINT 66 | ||
160 | 162 | ||
161 | /* | 163 | /* |
162 | * Must be greater than the largest bit offset in the above list. | 164 | * Must be greater than the largest bit offset in the above list. |
163 | */ | 165 | */ |
164 | #define NVGPU_MAX_ENABLED_BITS 66 | 166 | #define NVGPU_MAX_ENABLED_BITS 67 |
165 | 167 | ||
166 | /** | 168 | /** |
167 | * nvgpu_is_enabled - Check if the passed flag is enabled. | 169 | * nvgpu_is_enabled - Check if the passed flag is enabled. |
diff --git a/drivers/gpu/nvgpu/include/nvgpu/nvhost.h b/drivers/gpu/nvgpu/include/nvgpu/nvhost.h index 6e92637a..cb70f436 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/nvhost.h +++ b/drivers/gpu/nvgpu/include/nvgpu/nvhost.h | |||
@@ -50,6 +50,8 @@ void nvgpu_nvhost_syncpt_set_min_eq_max_ext(struct nvgpu_nvhost_dev *nvhost_dev, | |||
50 | u32 id); | 50 | u32 id); |
51 | int nvgpu_nvhost_syncpt_read_ext_check(struct nvgpu_nvhost_dev *nvhost_dev, | 51 | int nvgpu_nvhost_syncpt_read_ext_check(struct nvgpu_nvhost_dev *nvhost_dev, |
52 | u32 id, u32 *val); | 52 | u32 id, u32 *val); |
53 | u32 nvgpu_nvhost_syncpt_read_maxval(struct nvgpu_nvhost_dev *nvhost_dev, | ||
54 | u32 id); | ||
53 | 55 | ||
54 | int nvgpu_nvhost_intr_register_notifier(struct nvgpu_nvhost_dev *nvhost_dev, | 56 | int nvgpu_nvhost_intr_register_notifier(struct nvgpu_nvhost_dev *nvhost_dev, |
55 | u32 id, u32 thresh, void (*callback)(void *, int), void *private_data); | 57 | u32 id, u32 thresh, void (*callback)(void *, int), void *private_data); |