summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSami Kiminki <skiminki@nvidia.com>2014-10-24 13:40:57 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:12:07 -0400
commitd11fbfe7b1b68b3aab93f7703896d95d40b79a58 (patch)
treea4b8574c9181284523efa5105878c2e3ef2e05fa /include
parent2c5fdd1c8a76ef9ca21abcf894f2c9525d57fd49 (diff)
gpu: nvgpu: GPU characteristics additions
Add the following info into GPU characteristics: available big page sizes, support indicators for sync fence fds and cycle stats, gpc mask, SM version, SM SPA version and warp count, and IOCTL interface levels. Also, add new IOCTL to fetch TPC masks. Bug 1551769 Bug 1558186 Change-Id: I8a47d882645f29c7bf0c8f74334ebf47240e41de Signed-off-by: Sami Kiminki <skiminki@nvidia.com> Reviewed-on: http://git-master/r/562904 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'include')
-rw-r--r--include/uapi/linux/nvgpu.h51
1 files changed, 47 insertions, 4 deletions
diff --git a/include/uapi/linux/nvgpu.h b/include/uapi/linux/nvgpu.h
index 6bde9d41..42673820 100644
--- a/include/uapi/linux/nvgpu.h
+++ b/include/uapi/linux/nvgpu.h
@@ -100,6 +100,10 @@ struct nvgpu_gpu_zbc_query_table_args {
100#define NVGPU_GPU_FLAGS_SUPPORT_PARTIAL_MAPPINGS (1 << 1) 100#define NVGPU_GPU_FLAGS_SUPPORT_PARTIAL_MAPPINGS (1 << 1)
101/* MAP_BUFFER_EX with sparse allocations */ 101/* MAP_BUFFER_EX with sparse allocations */
102#define NVGPU_GPU_FLAGS_SUPPORT_SPARSE_ALLOCS (1 << 2) 102#define NVGPU_GPU_FLAGS_SUPPORT_SPARSE_ALLOCS (1 << 2)
103/* sync fence FDs are available in, e.g., submit_gpfifo */
104#define NVGPU_GPU_FLAGS_SUPPORT_SYNC_FENCE_FDS (1 << 3)
105/* NVGPU_IOCTL_CHANNEL_CYCLE_STATS is available */
106#define NVGPU_GPU_FLAGS_SUPPORT_CYCLE_STATS (1 << 4)
103 107
104struct nvgpu_gpu_characteristics { 108struct nvgpu_gpu_characteristics {
105 __u32 arch; 109 __u32 arch;
@@ -111,14 +115,18 @@ struct nvgpu_gpu_characteristics {
111 __u64 L2_cache_size; /* bytes */ 115 __u64 L2_cache_size; /* bytes */
112 __u64 on_board_video_memory_size; /* bytes */ 116 __u64 on_board_video_memory_size; /* bytes */
113 117
114 __u32 num_tpc_per_gpc; 118 __u32 num_tpc_per_gpc; /* the architectural maximum */
115 __u32 bus_type; 119 __u32 bus_type;
116 120
117 __u32 big_page_size; 121 __u32 big_page_size; /* the default big page size */
118 __u32 compression_page_size; 122 __u32 compression_page_size;
119 123
120 __u32 pde_coverage_bit_count; 124 __u32 pde_coverage_bit_count;
121 __u32 reserved; 125
126 /* bit N set ==> big page size 2^N is available in
127 NVGPU_GPU_IOCTL_ALLOC_AS. The default big page size is
128 always available regardless of this field. */
129 __u32 available_big_page_sizes;
122 130
123 __u64 flags; 131 __u64 flags;
124 132
@@ -129,6 +137,23 @@ struct nvgpu_gpu_characteristics {
129 __u32 inline_to_memory_class; 137 __u32 inline_to_memory_class;
130 __u32 dma_copy_class; 138 __u32 dma_copy_class;
131 139
140 __u32 gpc_mask; /* enabled GPCs */
141
142 __u32 sm_arch_sm_version; /* sm version */
143 __u32 sm_arch_spa_version; /* sm instruction set */
144 __u32 sm_arch_warp_count;
145
146 /* IOCTL interface levels by service. -1 if not supported */
147 __s16 gpu_ioctl_nr_last;
148 __s16 tsg_ioctl_nr_last;
149 __s16 dbg_gpu_ioctl_nr_last;
150 __s16 ioctl_channel_nr_last;
151 __s16 as_ioctl_nr_last;
152
153 __u8 gpu_va_bit_count;
154
155 __u8 reserved;
156
132 /* Notes: 157 /* Notes:
133 - This struct can be safely appended with new fields. However, always 158 - This struct can be safely appended with new fields. However, always
134 keep the structure size multiple of 8 and make sure that the binary 159 keep the structure size multiple of 8 and make sure that the binary
@@ -197,6 +222,22 @@ struct nvgpu_gpu_open_tsg_args {
197 __u32 reserved; /* must be zero */ 222 __u32 reserved; /* must be zero */
198}; 223};
199 224
225struct nvgpu_gpu_get_tpc_masks_args {
226 /* [in] TPC mask buffer size reserved by userspace. Should be
227 at least sizeof(__u32) * fls(gpc_mask) to receive TPC
228 mask for each GPC.
229 [out] full kernel buffer size
230 */
231 __u32 mask_buf_size;
232 __u32 reserved;
233
234 /* [in] pointer to TPC mask buffer. It will receive one
235 32-bit TPC mask per GPC or 0 if GPC is not enabled or
236 not present. This parameter is ignored if
237 mask_buf_size is 0. */
238 __u64 mask_buf_addr;
239};
240
200#define NVGPU_GPU_IOCTL_ZCULL_GET_CTX_SIZE \ 241#define NVGPU_GPU_IOCTL_ZCULL_GET_CTX_SIZE \
201 _IOR(NVGPU_GPU_IOCTL_MAGIC, 1, struct nvgpu_gpu_zcull_get_ctx_size_args) 242 _IOR(NVGPU_GPU_IOCTL_MAGIC, 1, struct nvgpu_gpu_zcull_get_ctx_size_args)
202#define NVGPU_GPU_IOCTL_ZCULL_GET_INFO \ 243#define NVGPU_GPU_IOCTL_ZCULL_GET_INFO \
@@ -215,9 +256,11 @@ struct nvgpu_gpu_open_tsg_args {
215 _IOWR(NVGPU_GPU_IOCTL_MAGIC, 8, struct nvgpu_alloc_as_args) 256 _IOWR(NVGPU_GPU_IOCTL_MAGIC, 8, struct nvgpu_alloc_as_args)
216#define NVGPU_GPU_IOCTL_OPEN_TSG \ 257#define NVGPU_GPU_IOCTL_OPEN_TSG \
217 _IOWR(NVGPU_GPU_IOCTL_MAGIC, 9, struct nvgpu_gpu_open_tsg_args) 258 _IOWR(NVGPU_GPU_IOCTL_MAGIC, 9, struct nvgpu_gpu_open_tsg_args)
259#define NVGPU_GPU_IOCTL_GET_TPC_MASKS \
260 _IOWR(NVGPU_GPU_IOCTL_MAGIC, 10, struct nvgpu_gpu_get_tpc_masks_args)
218 261
219#define NVGPU_GPU_IOCTL_LAST \ 262#define NVGPU_GPU_IOCTL_LAST \
220 _IOC_NR(NVGPU_GPU_IOCTL_OPEN_TSG) 263 _IOC_NR(NVGPU_GPU_IOCTL_GET_TPC_MASKS)
221#define NVGPU_GPU_IOCTL_MAX_ARG_SIZE \ 264#define NVGPU_GPU_IOCTL_MAX_ARG_SIZE \
222 sizeof(struct nvgpu_gpu_prepare_compressible_read_args) 265 sizeof(struct nvgpu_gpu_prepare_compressible_read_args)
223 266