summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/tegra_profiler.h58
1 files changed, 53 insertions, 5 deletions
diff --git a/include/linux/tegra_profiler.h b/include/linux/tegra_profiler.h
index 9a7299e45..9f849a46f 100644
--- a/include/linux/tegra_profiler.h
+++ b/include/linux/tegra_profiler.h
@@ -19,18 +19,20 @@
19 19
20#include <linux/ioctl.h> 20#include <linux/ioctl.h>
21 21
22#define QUADD_SAMPLES_VERSION 21 22#define QUADD_SAMPLES_VERSION 22
23#define QUADD_IO_VERSION 9 23#define QUADD_IO_VERSION 10
24 24
25#define QUADD_IO_VERSION_DYNAMIC_RB 5 25#define QUADD_IO_VERSION_DYNAMIC_RB 5
26#define QUADD_IO_VERSION_RB_MAX_FILL_COUNT 6 26#define QUADD_IO_VERSION_RB_MAX_FILL_COUNT 6
27#define QUADD_IO_VERSION_MOD_STATE_STATUS_FIELD 7 27#define QUADD_IO_VERSION_MOD_STATE_STATUS_FIELD 7
28#define QUADD_IO_VERSION_BT_KERNEL_CTX 8 28#define QUADD_IO_VERSION_BT_KERNEL_CTX 8
29#define QUADD_IO_VERSION_GET_MMAP 9 29#define QUADD_IO_VERSION_GET_MMAP 9
30#define QUADD_IO_VERSION_BT_UNWIND_TABLES 10
30 31
31#define QUADD_SAMPLE_VERSION_THUMB_MODE_FLAG 17 32#define QUADD_SAMPLE_VERSION_THUMB_MODE_FLAG 17
32#define QUADD_SAMPLE_VERSION_GROUP_SAMPLES 18 33#define QUADD_SAMPLE_VERSION_GROUP_SAMPLES 18
33#define QUADD_SAMPLE_VERSION_THREAD_STATE_FLD 19 34#define QUADD_SAMPLE_VERSION_THREAD_STATE_FLD 19
35#define QUADD_SAMPLE_VERSION_BT_UNWIND_TABLES 22
34 36
35#define QUADD_MAX_COUNTERS 32 37#define QUADD_MAX_COUNTERS 32
36#define QUADD_MAX_PROCESS 64 38#define QUADD_MAX_PROCESS 64
@@ -73,8 +75,10 @@
73 */ 75 */
74#define IOCTL_GET_VERSION _IOR(QUADD_IOCTL, 5, struct quadd_module_version) 76#define IOCTL_GET_VERSION _IOR(QUADD_IOCTL, 5, struct quadd_module_version)
75 77
76 78/*
77#define QUADD_HRT_SCHED_IN_FUNC "finish_task_switch" 79 * Send exception-handling tables info
80 */
81#define IOCTL_SET_EXTAB _IOW(QUADD_IOCTL, 6, struct quadd_extables)
78 82
79#define QUADD_CPUMODE_TEGRA_POWER_CLUSTER_LP (1 << 29) /* LP CPU */ 83#define QUADD_CPUMODE_TEGRA_POWER_CLUSTER_LP (1 << 29) /* LP CPU */
80#define QUADD_CPUMODE_THUMB (1 << 30) /* thumb mode */ 84#define QUADD_CPUMODE_THUMB (1 << 30) /* thumb mode */
@@ -132,6 +136,32 @@ typedef u32 quadd_bt_addr_t;
132 136
133#pragma pack(push, 1) 137#pragma pack(push, 1)
134 138
139#define QUADD_SAMPLE_UNW_METHOD_SHIFT 0
140#define QUADD_SAMPLE_UNW_METHOD_MASK (1 << QUADD_SAMPLE_UNW_METHOD_SHIFT)
141
142enum {
143 QUADD_UNW_METHOD_FP = 0,
144 QUADD_UNW_METHOD_EHT,
145};
146
147#define QUADD_SAMPLE_URC_SHIFT 1
148#define QUADD_SAMPLE_URC_MASK (0x0f << QUADD_SAMPLE_URC_SHIFT)
149
150enum {
151 QUADD_URC_SUCCESS = 0,
152 QUADD_URC_FAILURE,
153 QUADD_URC_IDX_NOT_FOUND,
154 QUADD_URC_TBL_NOT_EXIST,
155 QUADD_URC_EACCESS,
156 QUADD_URC_TBL_IS_CORRUPT,
157 QUADD_URC_CANTUNWIND,
158 QUADD_URC_UNHANDLED_INSTRUCTION,
159 QUADD_URC_REFUSE_TO_UNWIND,
160 QUADD_URC_SP_INCORRECT,
161 QUADD_URC_SPARE_ENCODING,
162 QUADD_URC_UNSUPPORTED_PR,
163};
164
135struct quadd_sample_data { 165struct quadd_sample_data {
136 u64 ip; 166 u64 ip;
137 u32 pid; 167 u32 pid;
@@ -260,7 +290,9 @@ enum {
260 QUADD_PARAM_IDX_EXTRA = 1, 290 QUADD_PARAM_IDX_EXTRA = 1,
261}; 291};
262 292
263#define QUADD_PARAM_IDX_EXTRA_GET_MMAP (1 << 0) 293#define QUADD_PARAM_EXTRA_GET_MMAP (1 << 0)
294#define QUADD_PARAM_EXTRA_BT_FP (1 << 1)
295#define QUADD_PARAM_EXTRA_BT_UNWIND_TABLES (1 << 2)
264 296
265struct quadd_parameters { 297struct quadd_parameters {
266 u32 freq; 298 u32 freq;
@@ -306,6 +338,7 @@ enum {
306#define QUADD_COMM_CAP_EXTRA_BT_KERNEL_CTX (1 << 0) 338#define QUADD_COMM_CAP_EXTRA_BT_KERNEL_CTX (1 << 0)
307#define QUADD_COMM_CAP_EXTRA_GET_MMAP (1 << 1) 339#define QUADD_COMM_CAP_EXTRA_GET_MMAP (1 << 1)
308#define QUADD_COMM_CAP_EXTRA_GROUP_SAMPLES (1 << 2) 340#define QUADD_COMM_CAP_EXTRA_GROUP_SAMPLES (1 << 2)
341#define QUADD_COMM_CAP_EXTRA_BT_UNWIND_TABLES (1 << 3)
309 342
310struct quadd_comm_cap { 343struct quadd_comm_cap {
311 u32 pmu:1, 344 u32 pmu:1,
@@ -348,6 +381,21 @@ struct quadd_module_version {
348 u32 reserved[4]; /* reserved fields for future extensions */ 381 u32 reserved[4]; /* reserved fields for future extensions */
349}; 382};
350 383
384struct quadd_sec_info {
385 u64 addr;
386 u64 length;
387};
388
389struct quadd_extables {
390 u64 vm_start;
391 u64 vm_end;
392
393 struct quadd_sec_info extab;
394 struct quadd_sec_info exidx;
395
396 u32 reserved[4]; /* reserved fields for future extensions */
397};
398
351#pragma pack(pop) 399#pragma pack(pop)
352 400
353#ifdef __KERNEL__ 401#ifdef __KERNEL__