summaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorAnuj Gangwar <anujg@nvidia.com>2019-02-25 01:22:54 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2019-04-11 16:42:42 -0400
commit9d1f5e243d40759e6eaed6b2d03ae7559b9da600 (patch)
tree6d027873c48b2c5ec6f5b574174468b307a577f1 /include/uapi
parent41595d875403a2bf79433ed7697d87c4db012e1b (diff)
include: uapi: move tegra_profiler header file
Creating new file tegra_profiler.h in include/uapi/linux/. The File has uapi definitions which copied from linux/tegra_profiler.h. Removing the IOCTL definitions in linux/tegra_profiler.h. Bug 2062672 Change-Id: I0e756617cd4e55c03dc6013c9aff3d74d0c1232b Signed-off-by: Anuj Gangwar <anujg@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2027220 (cherry picked from commit 700cc51c4e2e91f914455622477f004adcb22ada) Reviewed-on: https://git-master.nvidia.com/r/2093404 GVS: Gerrit_Virtual_Submit Reviewed-by: Roman Rybalko <rrybalko@nvidia.com> Tested-by: Igor Nabirushkin <inabirushkin@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/tegra_profiler.h652
1 files changed, 652 insertions, 0 deletions
diff --git a/include/uapi/linux/tegra_profiler.h b/include/uapi/linux/tegra_profiler.h
new file mode 100644
index 000000000..0e0c36f15
--- /dev/null
+++ b/include/uapi/linux/tegra_profiler.h
@@ -0,0 +1,652 @@
1/*
2 * include/uapi/linux/tegra_profiler.h
3 *
4 * Copyright (c) 2013-2019, NVIDIA CORPORATION. All rights reserved.
5 *
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,
8 * version 2, as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 * more details.
14 *
15 */
16
17#ifndef __UAPI_TEGRA_PROFILER_H
18#define __UAPI_TEGRA_PROFILER_H
19
20#include <linux/ioctl.h>
21#include <linux/types.h>
22
23#define QUADD_SAMPLES_VERSION 46
24#define QUADD_IO_VERSION 26
25
26#define QUADD_IO_VERSION_DYNAMIC_RB 5
27#define QUADD_IO_VERSION_RB_MAX_FILL_COUNT 6
28#define QUADD_IO_VERSION_MOD_STATE_STATUS_FIELD 7
29#define QUADD_IO_VERSION_BT_KERNEL_CTX 8
30#define QUADD_IO_VERSION_GET_MMAP 9
31#define QUADD_IO_VERSION_BT_UNWIND_TABLES 10
32#define QUADD_IO_VERSION_UNWIND_MIXED 11
33#define QUADD_IO_VERSION_EXTABLES_MMAP 12
34#define QUADD_IO_VERSION_ARCH_TIMER_OPT 13
35#define QUADD_IO_VERSION_DATA_MMAP 14
36#define QUADD_IO_VERSION_BT_LOWER_BOUND 15
37#define QUADD_IO_VERSION_STACK_OFFSET 16
38#define QUADD_IO_VERSION_SECTIONS_INFO 17
39#define QUADD_IO_VERSION_UNW_METHODS_OPT 18
40#define QUADD_IO_VERSION_PER_CPU_SETUP 19
41#define QUADD_IO_VERSION_TRACE_ALL_TASKS 20
42#define QUADD_IO_VERSION_CB_POWER_OF_2 21
43#define QUADD_IO_VERSION_RAW_EVENTS 22
44#define QUADD_IO_VERSION_SAMPLING_MODE 23
45#define QUADD_IO_VERSION_FORCE_ARCH_TIMER 24
46#define QUADD_IO_VERSION_SAMPLE_ALL_TASKS 25
47#define QUADD_IO_VERSION_EXTABLES_PID 26
48
49#define QUADD_SAMPLE_VERSION_THUMB_MODE_FLAG 17
50#define QUADD_SAMPLE_VERSION_GROUP_SAMPLES 18
51#define QUADD_SAMPLE_VERSION_THREAD_STATE_FLD 19
52#define QUADD_SAMPLE_VERSION_BT_UNWIND_TABLES 22
53#define QUADD_SAMPLE_VERSION_SUPPORT_IP64 23
54#define QUADD_SAMPLE_VERSION_SPECIAL_MMAP 24
55#define QUADD_SAMPLE_VERSION_UNWIND_MIXED 25
56#define QUADD_SAMPLE_VERSION_UNW_ENTRY_TYPE 26
57#define QUADD_SAMPLE_VERSION_USE_ARCH_TIMER 27
58#define QUADD_SAMPLE_VERSION_SCHED_SAMPLES 28
59#define QUADD_SAMPLE_VERSION_HDR_UNW_METHOD 29
60#define QUADD_SAMPLE_VERSION_HDR_ARCH_TIMER 30
61#define QUADD_SAMPLE_VERSION_STACK_OFFSET 31
62#define QUADD_SAMPLE_VERSION_SCHED_TASK_STATE 32
63#define QUADD_SAMPLE_VERSION_URCS 33
64#define QUADD_SAMPLE_VERSION_HOTPLUG 34
65#define QUADD_SAMPLE_VERSION_PER_CPU_SETUP 35
66#define QUADD_SAMPLE_VERSION_REPORT_TGID 36
67#define QUADD_SAMPLE_VERSION_MMAP_TS 37
68#define QUADD_SAMPLE_VERSION_RAW_EVENTS 38
69#define QUADD_SAMPLE_VERSION_OVERHEAD_INFO 39
70#define QUADD_SAMPLE_VERSION_REPORT_VPID 40
71#define QUADD_SAMPLE_VERSION_SCHED_REPORT_VPID 41
72#define QUADD_SAMPLE_VERSION_SAMPLING_MODE 42
73#define QUADD_SAMPLE_VERSION_SAMPLE_ALL_TASKS 43
74#define QUADD_SAMPLE_VERSION_KTHREAD_TSK_FLAG 44
75#define QUADD_SAMPLE_VERSION_MMAP_CPUID 45
76#define QUADD_SAMPLE_VERSION_PCLK_SEND_CHANGES 46
77
78#define QUADD_MMAP_HEADER_VERSION 1
79
80#define QUADD_MAX_COUNTERS 32
81#define QUADD_MAX_PROCESS 64
82
83#define QUADD_DEVICE_NAME "quadd"
84#define QUADD_AUTH_DEVICE_NAME "quadd_auth"
85
86#define QUADD_MOD_DEVICE_NAME "quadd_mod"
87#define QUADD_MOD_AUTH_DEVICE_NAME "quadd_mod_auth"
88
89#define QUADD_IOCTL 100
90
91/*
92 * Setup params (profiling frequency, etc.)
93 */
94#define IOCTL_SETUP _IOW(QUADD_IOCTL, 0, struct quadd_parameters)
95
96/*
97 * Start profiling.
98 */
99#define IOCTL_START _IO(QUADD_IOCTL, 1)
100
101/*
102 * Stop profiling.
103 */
104#define IOCTL_STOP _IO(QUADD_IOCTL, 2)
105
106/*
107 * Getting capabilities
108 */
109#define IOCTL_GET_CAP _IOR(QUADD_IOCTL, 3, struct quadd_comm_cap)
110
111/*
112 * Getting state of module
113 */
114#define IOCTL_GET_STATE _IOR(QUADD_IOCTL, 4, struct quadd_module_state)
115
116/*
117 * Getting version of module
118 */
119#define IOCTL_GET_VERSION _IOR(QUADD_IOCTL, 5, struct quadd_module_version)
120
121/*
122 * Send exception-handling tables info
123 * This ioctl is obsolete
124 */
125/*#define IOCTL_SET_EXTAB _IOW(QUADD_IOCTL, 6, struct quadd_extables)*/
126
127/*
128 * Send ring buffer mmap info
129 */
130#define IOCTL_SET_MMAP_RB _IOW(QUADD_IOCTL, 7, struct quadd_mmap_rb_info)
131
132/*
133 * Send sections info
134 */
135#define IOCTL_SET_SECTIONS_INFO _IOW(QUADD_IOCTL, 8, struct quadd_sections)
136
137/*
138 * Per CPU PMU setup
139 */
140#define IOCTL_SETUP_PMU_FOR_CPU _IOW(QUADD_IOCTL, 9,\
141 struct quadd_pmu_setup_for_cpu)
142
143/*
144 * Per CPU capabilities
145 */
146#define IOCTL_GET_CAP_FOR_CPU _IOWR(QUADD_IOCTL, 10,\
147 struct quadd_comm_cap_for_cpu)
148
149
150
151#define QUADD_CPUMODE_TEGRA_POWER_CLUSTER_LP (1 << 29) /* LP CPU */
152#define QUADD_CPUMODE_THUMB (1 << 30) /* thumb mode */
153
154enum quadd_events_id {
155 QUADD_EVENT_HW_CPU_CYCLES = 0,
156
157 QUADD_EVENT_HW_INSTRUCTIONS,
158 QUADD_EVENT_HW_BRANCH_INSTRUCTIONS,
159 QUADD_EVENT_HW_BRANCH_MISSES,
160 QUADD_EVENT_HW_BUS_CYCLES,
161
162 QUADD_EVENT_HW_L1_DCACHE_READ_MISSES,
163 QUADD_EVENT_HW_L1_DCACHE_WRITE_MISSES,
164 QUADD_EVENT_HW_L1_ICACHE_MISSES,
165
166 QUADD_EVENT_HW_L2_DCACHE_READ_MISSES,
167 QUADD_EVENT_HW_L2_DCACHE_WRITE_MISSES,
168 QUADD_EVENT_HW_L2_ICACHE_MISSES,
169
170 QUADD_EVENT_HW_MAX,
171};
172
173enum quadd_record_type {
174 QUADD_RECORD_TYPE_SAMPLE = 1,
175 QUADD_RECORD_TYPE_MMAP,
176 QUADD_RECORD_TYPE_MA,
177 QUADD_RECORD_TYPE_COMM,
178 QUADD_RECORD_TYPE_DEBUG,
179 QUADD_RECORD_TYPE_HEADER,
180 QUADD_RECORD_TYPE_POWER_RATE,
181 QUADD_RECORD_TYPE_ADDITIONAL_SAMPLE,
182 QUADD_RECORD_TYPE_SCHED,
183 QUADD_RECORD_TYPE_HOTPLUG,
184};
185
186enum quadd_event_source {
187 QUADD_EVENT_SOURCE_PMU = 1,
188 QUADD_EVENT_SOURCE_PL310,
189};
190
191enum quadd_cpu_mode {
192 QUADD_CPU_MODE_KERNEL = 1,
193 QUADD_CPU_MODE_USER,
194 QUADD_CPU_MODE_NONE,
195};
196
197#pragma pack(push, 1)
198
199#define QUADD_SAMPLE_URC_MASK 0xff
200
201#define QUADD_SAMPLE_URC_SHIFT_FP 0
202#define QUADD_SAMPLE_URC_SHIFT_UT (1 * 8)
203#define QUADD_SAMPLE_URC_SHIFT_DWARF (2 * 8)
204
205enum {
206 QUADD_URC_SUCCESS = 0,
207 QUADD_URC_FAILURE,
208 QUADD_URC_IDX_NOT_FOUND,
209 QUADD_URC_TBL_NOT_EXIST,
210 QUADD_URC_EACCESS,
211 QUADD_URC_TBL_IS_CORRUPT,
212 QUADD_URC_CANTUNWIND,
213 QUADD_URC_UNHANDLED_INSTRUCTION,
214 QUADD_URC_REFUSE_TO_UNWIND,
215 QUADD_URC_SP_INCORRECT,
216 QUADD_URC_SPARE_ENCODING,
217 QUADD_URC_UNSUPPORTED_PR,
218 QUADD_URC_PC_INCORRECT,
219 QUADD_URC_LEVEL_TOO_DEEP,
220 QUADD_URC_FP_INCORRECT,
221 QUADD_URC_NONE,
222 QUADD_URC_UNWIND_MISMATCH,
223 QUADD_URC_TBL_LINK_INCORRECT,
224 QUADD_URC_MAX,
225};
226
227#define QUADD_SED_STACK_OFFSET_SHIFT 1
228#define QUADD_SED_STACK_OFFSET_MASK (0xffff << QUADD_SED_STACK_OFFSET_SHIFT)
229
230enum {
231 QUADD_UNW_TYPE_FP = 0,
232 QUADD_UNW_TYPE_UT,
233 QUADD_UNW_TYPE_LR_FP,
234 QUADD_UNW_TYPE_LR_UT,
235 QUADD_UNW_TYPE_KCTX,
236 QUADD_UNW_TYPE_DWARF_EH,
237 QUADD_UNW_TYPE_DWARF_DF,
238};
239
240#define QUADD_SAMPLE_FLAG_USER_MODE (1 << 0)
241#define QUADD_SAMPLE_FLAG_LP_MODE (1 << 1)
242#define QUADD_SAMPLE_FLAG_THUMB_MODE (1 << 2)
243#define QUADD_SAMPLE_FLAG_STATE (1 << 3)
244#define QUADD_SAMPLE_FLAG_IN_INTERRUPT (1 << 4)
245#define QUADD_SAMPLE_FLAG_IS_VPID (1 << 5)
246#define QUADD_SAMPLE_FLAG_PF_KTHREAD (1 << 6)
247#define QUADD_SAMPLE_FLAG_URCS (1 << 7)
248#define QUADD_SAMPLE_FLAG_IP64 (1 << 8)
249
250struct quadd_sample_data {
251 __u64 ip;
252 __u32 pid;
253 __u32 tgid;
254 __u64 time;
255
256 __u8 cpu_id;
257 __u32 flags;
258
259 __u8 callchain_nr;
260 __u32 events_flags;
261};
262
263#define QUADD_MMAP_FLAG_LP_MODE (1 << 0)
264#define QUADD_MMAP_FLAG_USER_MODE (1 << 1)
265#define QUADD_MMAP_FLAG_IS_FILE_EXISTS (1 << 2)
266
267struct quadd_mmap_data {
268 __u32 pid;
269 __u64 time;
270
271 __u8 cpu_id;
272 __u16 flags;
273
274 __u64 addr;
275 __u64 len;
276
277 __u16 filename_length;
278};
279
280struct quadd_ma_data {
281 __u32 pid;
282 __u64 time;
283
284 __u32 vm_size;
285 __u32 rss_size;
286};
287
288enum {
289 QUADD_POWER_CLK_CPU = 1,
290 QUADD_POWER_CLK_GPU,
291 QUADD_POWER_CLK_EMC,
292};
293
294struct quadd_power_rate_data {
295 __u8 type;
296 __u64 time;
297 __u32 cpu_id;
298
299 __u16 nr_values;
300 __u32 flags;
301};
302
303struct quadd_hotplug_data {
304 __u64 time;
305 __u32 cpu;
306
307 __u32 is_online:1,
308 reserved:31;
309};
310
311struct quadd_additional_sample {
312 __u8 type;
313
314 __u32 values[6];
315 __u16 extra_length;
316};
317
318#define QUADD_SCHED_FLAG_LP_MODE (1ULL << 0)
319#define QUADD_SCHED_FLAG_SCHED_IN (1ULL << 1)
320#define QUADD_SCHED_FLAG_IS_VPID (1ULL << 2)
321#define QUADD_SCHED_FLAG_PF_KTHREAD (1ULL << 3)
322
323struct quadd_sched_data {
324 __u32 pid;
325 __u32 tgid;
326 __u64 time;
327
328 __u8 cpu_id;
329 __u64 flags;
330 __u16 task_state;
331};
332
333enum {
334 QM_DEBUG_SAMPLE_TYPE_SCHED_IN = 1,
335 QM_DEBUG_SAMPLE_TYPE_SCHED_OUT,
336
337 QM_DEBUG_SAMPLE_TYPE_TIMER_HANDLE,
338 QM_DEBUG_SAMPLE_TYPE_TIMER_START,
339 QM_DEBUG_SAMPLE_TYPE_TIMER_CANCEL,
340 QM_DEBUG_SAMPLE_TYPE_TIMER_FORWARD,
341
342 QM_DEBUG_SAMPLE_TYPE_READ_COUNTER,
343
344 QM_DEBUG_SAMPLE_TYPE_SOURCE_START,
345 QM_DEBUG_SAMPLE_TYPE_SOURCE_STOP,
346};
347
348struct quadd_debug_data {
349 __u8 type;
350
351 __u32 pid;
352 __u64 time;
353
354 __u16 cpu:6,
355 user_mode:1,
356 lp_mode:1,
357 thumb_mode:1,
358 reserved:7;
359
360 __u32 extra_value[2];
361 __u16 extra_length;
362};
363
364#define QUADD_HEADER_MAGIC 0x1122
365
366#define QUADD_HDR_FLAG_BACKTRACE (1ULL << 0)
367#define QUADD_HDR_FLAG_USE_FREQ (1ULL << 1)
368#define QUADD_HDR_FLAG_POWER_RATE (1ULL << 2)
369#define QUADD_HDR_FLAG_DEBUG_SAMPLES (1ULL << 3)
370#define QUADD_HDR_FLAG_GET_MMAP (1ULL << 4)
371#define QUADD_HDR_FLAG_BT_FP (1ULL << 5)
372#define QUADD_HDR_FLAG_BT_UT (1ULL << 6)
373#define QUADD_HDR_FLAG_BT_UT_CE (1ULL << 7)
374#define QUADD_HDR_FLAG_BT_DWARF (1ULL << 8)
375#define QUADD_HDR_FLAG_USE_ARCH_TIMER (1ULL << 9)
376#define QUADD_HDR_FLAG_STACK_OFFSET (1ULL << 10)
377#define QUADD_HDR_FLAG_HAS_CPUID (1ULL << 11)
378#define QUADD_HDR_FLAG_MODE_SAMPLING (1ULL << 12)
379#define QUADD_HDR_FLAG_MODE_TRACING (1ULL << 13)
380#define QUADD_HDR_FLAG_MODE_SAMPLE_ALL (1ULL << 14)
381#define QUADD_HDR_FLAG_MODE_TRACE_ALL (1ULL << 15)
382#define QUADD_HDR_FLAG_MODE_SAMPLE_TREE (1ULL << 16)
383#define QUADD_HDR_FLAG_MODE_TRACE_TREE (1ULL << 17)
384
385struct quadd_header_data {
386 __u16 magic;
387 __u64 time;
388
389 __u16 samples_version;
390 __u16 io_version;
391
392 __u8 cpu_id;
393 __u64 flags;
394
395 __u32 freq;
396 __u16 ma_freq;
397 __u16 power_rate_freq;
398
399 __u8 nr_events;
400 __u16 extra_length;
401};
402
403struct quadd_record_data {
404 __u8 record_type;
405 __u16 extra_size;
406
407 /* sample: it should be the biggest size */
408 union {
409 struct quadd_sample_data sample;
410 struct quadd_mmap_data mmap;
411 struct quadd_ma_data ma;
412 struct quadd_debug_data debug;
413 struct quadd_header_data hdr;
414 struct quadd_power_rate_data power_rate;
415 struct quadd_hotplug_data hotplug;
416 struct quadd_sched_data sched;
417 struct quadd_additional_sample additional_sample;
418 };
419} __aligned(4);
420
421#pragma pack(4)
422
423#define QUADD_MAX_PACKAGE_NAME 320
424
425enum {
426 QUADD_PARAM_IDX_SIZE_OF_RB = 0,
427 QUADD_PARAM_IDX_EXTRA = 1,
428 QUADD_PARAM_IDX_BT_LOWER_BOUND = 2,
429};
430
431#define QUADD_PARAM_EXTRA_GET_MMAP (1 << 0)
432#define QUADD_PARAM_EXTRA_BT_FP (1 << 1)
433#define QUADD_PARAM_EXTRA_BT_UT (1 << 2)
434#define QUADD_PARAM_EXTRA_BT_MIXED (1 << 3)
435#define QUADD_PARAM_EXTRA_USE_ARCH_TIMER (1 << 4)
436#define QUADD_PARAM_EXTRA_STACK_OFFSET (1 << 5)
437#define QUADD_PARAM_EXTRA_BT_UT_CE (1 << 6)
438#define QUADD_PARAM_EXTRA_BT_DWARF (1 << 7)
439#define QUADD_PARAM_EXTRA_PER_PMU_SETUP (1 << 8)
440#define QUADD_PARAM_EXTRA_SAMPLING (1 << 9)
441#define QUADD_PARAM_EXTRA_FORCE_ARCH_TIMER (1 << 10)
442#define QUADD_PARAM_EXTRA_SAMPLE_ALL_TASKS (1 << 11)
443#define QUADD_PARAM_EXTRA_SAMPLE_TREE (1 << 12)
444#define QUADD_PARAM_EXTRA_TRACING (1 << 13)
445#define QUADD_PARAM_EXTRA_TRACE_TREE (1 << 14)
446
447enum {
448 QUADD_EVENT_TYPE_RAW = 0,
449 QUADD_EVENT_TYPE_HARDWARE = 1,
450
451 QUADD_EVENT_TYPE_MAX,
452};
453
454struct quadd_event {
455 __u32 type;
456 __u32 id;
457};
458
459struct quadd_parameters {
460 __u32 freq;
461 __u32 ma_freq;
462 __u32 power_rate_freq;
463
464 __u64 backtrace:1,
465 use_freq:1,
466 system_wide:1,
467 debug_samples:1,
468 trace_all_tasks:1;
469
470 __u32 pids[QUADD_MAX_PROCESS];
471 __u32 nr_pids;
472
473 __u8 package_name[QUADD_MAX_PACKAGE_NAME];
474
475 struct quadd_event events[QUADD_MAX_COUNTERS];
476 __u32 nr_events;
477
478 __u32 reserved[16]; /* reserved fields for future extensions */
479};
480
481struct quadd_pmu_setup_for_cpu {
482 __u32 cpuid;
483
484 struct quadd_event events[QUADD_MAX_COUNTERS];
485 __u32 nr_events;
486
487 __u32 reserved[16];
488};
489
490struct quadd_events_cap {
491 __u32 cpu_cycles:1,
492 instructions:1,
493 branch_instructions:1,
494 branch_misses:1,
495 bus_cycles:1,
496
497 l1_dcache_read_misses:1,
498 l1_dcache_write_misses:1,
499 l1_icache_misses:1,
500
501 l2_dcache_read_misses:1,
502 l2_dcache_write_misses:1,
503 l2_icache_misses:1;
504
505 __u32 raw_event_mask;
506};
507
508enum {
509 QUADD_COMM_CAP_IDX_EXTRA = 0,
510 QUADD_COMM_CAP_IDX_CPU_MASK = 1,
511};
512
513#define QUADD_COMM_CAP_EXTRA_BT_KERNEL_CTX (1 << 0)
514#define QUADD_COMM_CAP_EXTRA_GET_MMAP (1 << 1)
515#define QUADD_COMM_CAP_EXTRA_GROUP_SAMPLES (1 << 2)
516#define QUADD_COMM_CAP_EXTRA_BT_UNWIND_TABLES (1 << 3)
517#define QUADD_COMM_CAP_EXTRA_SUPPORT_AARCH64 (1 << 4)
518#define QUADD_COMM_CAP_EXTRA_SPECIAL_ARCH_MMAP (1 << 5)
519#define QUADD_COMM_CAP_EXTRA_UNWIND_MIXED (1 << 6)
520#define QUADD_COMM_CAP_EXTRA_UNW_ENTRY_TYPE (1 << 7)
521#define QUADD_COMM_CAP_EXTRA_ARCH_TIMER (1 << 8)
522#define QUADD_COMM_CAP_EXTRA_RB_MMAP_OP (1 << 9)
523#define QUADD_COMM_CAP_EXTRA_CPU_MASK (1 << 10)
524#define QUADD_COMM_CAP_EXTRA_ARCH_TIMER_USR (1 << 11)
525
526struct quadd_comm_cap {
527 __u32 pmu:1,
528 power_rate:1,
529 l2_cache:1,
530 l2_multiple_events:1,
531 tegra_lp_cluster:1,
532 blocked_read:1;
533
534 struct quadd_events_cap events_cap; /* Deprecated. */
535
536 __u32 reserved[16]; /* reserved fields for future extensions */
537};
538
539struct quadd_comm_cap_for_cpu {
540 __u32 l2_cache:1,
541 l2_multiple_events:1;
542
543 __u8 cpuid;
544 struct quadd_events_cap events_cap;
545};
546
547enum {
548 QUADD_MOD_STATE_IDX_RB_MAX_FILL_COUNT = 0,
549 QUADD_MOD_STATE_IDX_STATUS,
550};
551
552#define QUADD_MOD_STATE_STATUS_IS_ACTIVE (1 << 0)
553#define QUADD_MOD_STATE_STATUS_IS_AUTH_OPEN (1 << 1)
554
555struct quadd_module_state {
556 __u64 nr_all_samples;
557 __u64 nr_skipped_samples;
558
559 __u32 buffer_size;
560 __u32 buffer_fill_size;
561
562 __u32 reserved[16]; /* reserved fields for future extensions */
563};
564
565struct quadd_module_version {
566 __u8 branch[32];
567 __u8 version[16];
568
569 __u32 samples_version;
570 __u32 io_version;
571
572 __u32 reserved[4]; /* reserved fields for future extensions */
573};
574
575enum {
576 QUADD_SEC_TYPE_EXTAB = 0,
577 QUADD_SEC_TYPE_EXIDX,
578
579 QUADD_SEC_TYPE_EH_FRAME,
580 QUADD_SEC_TYPE_EH_FRAME_HDR,
581
582 QUADD_SEC_TYPE_DEBUG_FRAME,
583 QUADD_SEC_TYPE_DEBUG_FRAME_HDR,
584
585 QUADD_SEC_TYPE_MAX,
586};
587
588struct quadd_sec_info {
589 __u64 addr;
590 __u64 length;
591
592 __u64 mmap_offset;
593};
594
595#define QUADD_SECTIONS_FLAG_IS_SHARED (1ULL << 0)
596
597struct quadd_sections {
598 __u64 vm_start;
599 __u64 vm_end;
600
601 struct quadd_sec_info sec[QUADD_SEC_TYPE_MAX];
602
603 __u64 user_mmap_start;
604 __u32 file_hash;
605
606 __u32 pid;
607 __u64 flags;
608};
609
610struct quadd_mmap_rb_info {
611 __u32 cpu_id;
612
613 __u64 vm_start;
614 __u64 vm_end;
615
616 __u32 reserved[4]; /* reserved fields for future extensions */
617};
618
619#define QUADD_MMAP_HEADER_MAGIC 0x33445566
620
621struct quadd_mmap_header {
622 __u32 magic;
623 __u32 version;
624
625 __u32 cpu_id;
626 __u32 samples_version;
627
628 __u32 reserved[4]; /* reserved fields for future extensions */
629} __aligned(8);
630
631enum {
632 QUADD_RB_STATE_NONE = 0,
633 QUADD_RB_STATE_ACTIVE,
634 QUADD_RB_STATE_STOPPED,
635};
636
637struct quadd_ring_buffer_hdr {
638 __u32 state;
639 __u32 size;
640
641 __u32 pos_read;
642 __u32 pos_write;
643
644 __u32 max_fill_count;
645 __u32 skipped_samples;
646
647 __u32 reserved[4]; /* reserved fields for future extensions */
648} __aligned(8);
649
650#pragma pack(pop)
651
652#endif /* __UAPI_TEGRA_PROFILER_H */