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