summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorIgor Nabirushkin <inabirushkin@nvidia.com>2019-02-25 06:52:32 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2019-04-11 16:42:52 -0400
commit68303a6bdeb9ac5fd193941b61dc8a2246d014d3 (patch)
tree39745f520f96d6476e6cc1067f73a7e5adfb5c02 /include
parent9d1f5e243d40759e6eaed6b2d03ae7559b9da600 (diff)
misc: tegra-profiler: add task comm events
Add task COMM events: - Add support for quadd_event_comm() callback. - Send task COMM events to userspace. Bug 2514095 Jira DTSP-2432 Change-Id: Id5b92f544497b69098e3b16bf82baf0f6abb77e1 Signed-off-by: Igor Nabirushkin <inabirushkin@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2027490 (cherry picked from commit a0c0d3bf9eeabbdad2a43b768235e1cc846b04ef) Reviewed-on: https://git-master.nvidia.com/r/2093405 GVS: Gerrit_Virtual_Submit Reviewed-by: Roman Rybalko <rrybalko@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')
-rw-r--r--include/linux/tegra_profiler.h10
-rw-r--r--include/uapi/linux/tegra_profiler.h179
2 files changed, 106 insertions, 83 deletions
diff --git a/include/linux/tegra_profiler.h b/include/linux/tegra_profiler.h
index c55f25b57..edca37b25 100644
--- a/include/linux/tegra_profiler.h
+++ b/include/linux/tegra_profiler.h
@@ -31,6 +31,7 @@ extern void __quadd_task_sched_out(struct task_struct *prev,
31extern void __quadd_event_mmap(struct vm_area_struct *vma); 31extern void __quadd_event_mmap(struct vm_area_struct *vma);
32extern void __quadd_event_fork(struct task_struct *task); 32extern void __quadd_event_fork(struct task_struct *task);
33extern void __quadd_event_exit(struct task_struct *task); 33extern void __quadd_event_exit(struct task_struct *task);
34extern void __quadd_event_comm(struct task_struct *task, bool exec);
34 35
35static inline void quadd_task_sched_in(struct task_struct *prev, 36static inline void quadd_task_sched_in(struct task_struct *prev,
36 struct task_struct *task) 37 struct task_struct *task)
@@ -59,6 +60,11 @@ static inline void quadd_event_exit(struct task_struct *task)
59 __quadd_event_exit(task); 60 __quadd_event_exit(task);
60} 61}
61 62
63static inline void quadd_event_comm(struct task_struct *task, bool exec)
64{
65 __quadd_event_comm(task, exec);
66}
67
62#else /* CONFIG_TEGRA_PROFILER */ 68#else /* CONFIG_TEGRA_PROFILER */
63 69
64static inline void quadd_task_sched_in(struct task_struct *prev, 70static inline void quadd_task_sched_in(struct task_struct *prev,
@@ -83,6 +89,10 @@ static inline void quadd_event_exit(struct task_struct *task)
83{ 89{
84} 90}
85 91
92static inline void quadd_event_comm(struct task_struct *task, bool exec)
93{
94}
95
86#endif /* CONFIG_TEGRA_PROFILER */ 96#endif /* CONFIG_TEGRA_PROFILER */
87 97
88#endif /* __TEGRA_PROFILER_H */ 98#endif /* __TEGRA_PROFILER_H */
diff --git a/include/uapi/linux/tegra_profiler.h b/include/uapi/linux/tegra_profiler.h
index 0e0c36f15..b05e46724 100644
--- a/include/uapi/linux/tegra_profiler.h
+++ b/include/uapi/linux/tegra_profiler.h
@@ -20,71 +20,72 @@
20#include <linux/ioctl.h> 20#include <linux/ioctl.h>
21#include <linux/types.h> 21#include <linux/types.h>
22 22
23#define QUADD_SAMPLES_VERSION 46 23#define QUADD_SAMPLES_VERSION 47
24#define QUADD_IO_VERSION 26 24#define QUADD_IO_VERSION 26
25 25
26#define QUADD_IO_VERSION_DYNAMIC_RB 5 26#define QUADD_IO_VERSION_DYNAMIC_RB 5
27#define QUADD_IO_VERSION_RB_MAX_FILL_COUNT 6 27#define QUADD_IO_VERSION_RB_MAX_FILL_COUNT 6
28#define QUADD_IO_VERSION_MOD_STATE_STATUS_FIELD 7 28#define QUADD_IO_VERSION_MOD_STATE_STATUS_FIELD 7
29#define QUADD_IO_VERSION_BT_KERNEL_CTX 8 29#define QUADD_IO_VERSION_BT_KERNEL_CTX 8
30#define QUADD_IO_VERSION_GET_MMAP 9 30#define QUADD_IO_VERSION_GET_MMAP 9
31#define QUADD_IO_VERSION_BT_UNWIND_TABLES 10 31#define QUADD_IO_VERSION_BT_UNWIND_TABLES 10
32#define QUADD_IO_VERSION_UNWIND_MIXED 11 32#define QUADD_IO_VERSION_UNWIND_MIXED 11
33#define QUADD_IO_VERSION_EXTABLES_MMAP 12 33#define QUADD_IO_VERSION_EXTABLES_MMAP 12
34#define QUADD_IO_VERSION_ARCH_TIMER_OPT 13 34#define QUADD_IO_VERSION_ARCH_TIMER_OPT 13
35#define QUADD_IO_VERSION_DATA_MMAP 14 35#define QUADD_IO_VERSION_DATA_MMAP 14
36#define QUADD_IO_VERSION_BT_LOWER_BOUND 15 36#define QUADD_IO_VERSION_BT_LOWER_BOUND 15
37#define QUADD_IO_VERSION_STACK_OFFSET 16 37#define QUADD_IO_VERSION_STACK_OFFSET 16
38#define QUADD_IO_VERSION_SECTIONS_INFO 17 38#define QUADD_IO_VERSION_SECTIONS_INFO 17
39#define QUADD_IO_VERSION_UNW_METHODS_OPT 18 39#define QUADD_IO_VERSION_UNW_METHODS_OPT 18
40#define QUADD_IO_VERSION_PER_CPU_SETUP 19 40#define QUADD_IO_VERSION_PER_CPU_SETUP 19
41#define QUADD_IO_VERSION_TRACE_ALL_TASKS 20 41#define QUADD_IO_VERSION_TRACE_ALL_TASKS 20
42#define QUADD_IO_VERSION_CB_POWER_OF_2 21 42#define QUADD_IO_VERSION_CB_POWER_OF_2 21
43#define QUADD_IO_VERSION_RAW_EVENTS 22 43#define QUADD_IO_VERSION_RAW_EVENTS 22
44#define QUADD_IO_VERSION_SAMPLING_MODE 23 44#define QUADD_IO_VERSION_SAMPLING_MODE 23
45#define QUADD_IO_VERSION_FORCE_ARCH_TIMER 24 45#define QUADD_IO_VERSION_FORCE_ARCH_TIMER 24
46#define QUADD_IO_VERSION_SAMPLE_ALL_TASKS 25 46#define QUADD_IO_VERSION_SAMPLE_ALL_TASKS 25
47#define QUADD_IO_VERSION_EXTABLES_PID 26 47#define QUADD_IO_VERSION_EXTABLES_PID 26
48 48
49#define QUADD_SAMPLE_VERSION_THUMB_MODE_FLAG 17 49#define QUADD_SAMPLE_VERSION_THUMB_MODE_FLAG 17
50#define QUADD_SAMPLE_VERSION_GROUP_SAMPLES 18 50#define QUADD_SAMPLE_VERSION_GROUP_SAMPLES 18
51#define QUADD_SAMPLE_VERSION_THREAD_STATE_FLD 19 51#define QUADD_SAMPLE_VERSION_THREAD_STATE_FLD 19
52#define QUADD_SAMPLE_VERSION_BT_UNWIND_TABLES 22 52#define QUADD_SAMPLE_VERSION_BT_UNWIND_TABLES 22
53#define QUADD_SAMPLE_VERSION_SUPPORT_IP64 23 53#define QUADD_SAMPLE_VERSION_SUPPORT_IP64 23
54#define QUADD_SAMPLE_VERSION_SPECIAL_MMAP 24 54#define QUADD_SAMPLE_VERSION_SPECIAL_MMAP 24
55#define QUADD_SAMPLE_VERSION_UNWIND_MIXED 25 55#define QUADD_SAMPLE_VERSION_UNWIND_MIXED 25
56#define QUADD_SAMPLE_VERSION_UNW_ENTRY_TYPE 26 56#define QUADD_SAMPLE_VERSION_UNW_ENTRY_TYPE 26
57#define QUADD_SAMPLE_VERSION_USE_ARCH_TIMER 27 57#define QUADD_SAMPLE_VERSION_USE_ARCH_TIMER 27
58#define QUADD_SAMPLE_VERSION_SCHED_SAMPLES 28 58#define QUADD_SAMPLE_VERSION_SCHED_SAMPLES 28
59#define QUADD_SAMPLE_VERSION_HDR_UNW_METHOD 29 59#define QUADD_SAMPLE_VERSION_HDR_UNW_METHOD 29
60#define QUADD_SAMPLE_VERSION_HDR_ARCH_TIMER 30 60#define QUADD_SAMPLE_VERSION_HDR_ARCH_TIMER 30
61#define QUADD_SAMPLE_VERSION_STACK_OFFSET 31 61#define QUADD_SAMPLE_VERSION_STACK_OFFSET 31
62#define QUADD_SAMPLE_VERSION_SCHED_TASK_STATE 32 62#define QUADD_SAMPLE_VERSION_SCHED_TASK_STATE 32
63#define QUADD_SAMPLE_VERSION_URCS 33 63#define QUADD_SAMPLE_VERSION_URCS 33
64#define QUADD_SAMPLE_VERSION_HOTPLUG 34 64#define QUADD_SAMPLE_VERSION_HOTPLUG 34
65#define QUADD_SAMPLE_VERSION_PER_CPU_SETUP 35 65#define QUADD_SAMPLE_VERSION_PER_CPU_SETUP 35
66#define QUADD_SAMPLE_VERSION_REPORT_TGID 36 66#define QUADD_SAMPLE_VERSION_REPORT_TGID 36
67#define QUADD_SAMPLE_VERSION_MMAP_TS 37 67#define QUADD_SAMPLE_VERSION_MMAP_TS 37
68#define QUADD_SAMPLE_VERSION_RAW_EVENTS 38 68#define QUADD_SAMPLE_VERSION_RAW_EVENTS 38
69#define QUADD_SAMPLE_VERSION_OVERHEAD_INFO 39 69#define QUADD_SAMPLE_VERSION_OVERHEAD_INFO 39
70#define QUADD_SAMPLE_VERSION_REPORT_VPID 40 70#define QUADD_SAMPLE_VERSION_REPORT_VPID 40
71#define QUADD_SAMPLE_VERSION_SCHED_REPORT_VPID 41 71#define QUADD_SAMPLE_VERSION_SCHED_REPORT_VPID 41
72#define QUADD_SAMPLE_VERSION_SAMPLING_MODE 42 72#define QUADD_SAMPLE_VERSION_SAMPLING_MODE 42
73#define QUADD_SAMPLE_VERSION_SAMPLE_ALL_TASKS 43 73#define QUADD_SAMPLE_VERSION_SAMPLE_ALL_TASKS 43
74#define QUADD_SAMPLE_VERSION_KTHREAD_TSK_FLAG 44 74#define QUADD_SAMPLE_VERSION_KTHREAD_TSK_FLAG 44
75#define QUADD_SAMPLE_VERSION_MMAP_CPUID 45 75#define QUADD_SAMPLE_VERSION_MMAP_CPUID 45
76#define QUADD_SAMPLE_VERSION_PCLK_SEND_CHANGES 46 76#define QUADD_SAMPLE_VERSION_PCLK_SEND_CHANGES 46
77 77#define QUADD_SAMPLE_VERSION_COMM_SAMPLES 47
78#define QUADD_MMAP_HEADER_VERSION 1 78
79 79#define QUADD_MMAP_HEADER_VERSION 1
80#define QUADD_MAX_COUNTERS 32 80
81#define QUADD_MAX_PROCESS 64 81#define QUADD_MAX_COUNTERS 32
82 82#define QUADD_MAX_PROCESS 64
83#define QUADD_DEVICE_NAME "quadd" 83
84#define QUADD_AUTH_DEVICE_NAME "quadd_auth" 84#define QUADD_DEVICE_NAME "quadd"
85 85#define QUADD_AUTH_DEVICE_NAME "quadd_auth"
86#define QUADD_MOD_DEVICE_NAME "quadd_mod" 86
87#define QUADD_MOD_AUTH_DEVICE_NAME "quadd_mod_auth" 87#define QUADD_MOD_DEVICE_NAME "quadd_mod"
88#define QUADD_MOD_AUTH_DEVICE_NAME "quadd_mod_auth"
88 89
89#define QUADD_IOCTL 100 90#define QUADD_IOCTL 100
90 91
@@ -345,6 +346,17 @@ enum {
345 QM_DEBUG_SAMPLE_TYPE_SOURCE_STOP, 346 QM_DEBUG_SAMPLE_TYPE_SOURCE_STOP,
346}; 347};
347 348
349#define QUADD_COMM_FLAG_EXEC (1U << 0)
350
351struct quadd_comm_data {
352 __u32 pid;
353 __u32 tgid;
354 __u64 time;
355
356 __u16 length;
357 __u32 flags;
358};
359
348struct quadd_debug_data { 360struct quadd_debug_data {
349 __u8 type; 361 __u8 type;
350 362
@@ -414,6 +426,7 @@ struct quadd_record_data {
414 struct quadd_power_rate_data power_rate; 426 struct quadd_power_rate_data power_rate;
415 struct quadd_hotplug_data hotplug; 427 struct quadd_hotplug_data hotplug;
416 struct quadd_sched_data sched; 428 struct quadd_sched_data sched;
429 struct quadd_comm_data comm;
417 struct quadd_additional_sample additional_sample; 430 struct quadd_additional_sample additional_sample;
418 }; 431 };
419} __aligned(4); 432} __aligned(4);
@@ -457,34 +470,34 @@ struct quadd_event {
457}; 470};
458 471
459struct quadd_parameters { 472struct quadd_parameters {
460 __u32 freq; 473 __u32 freq;
461 __u32 ma_freq; 474 __u32 ma_freq;
462 __u32 power_rate_freq; 475 __u32 power_rate_freq;
463 476
464 __u64 backtrace:1, 477 __u64 backtrace:1,
465 use_freq:1, 478 use_freq:1,
466 system_wide:1, 479 system_wide:1,
467 debug_samples:1, 480 debug_samples:1,
468 trace_all_tasks:1; 481 trace_all_tasks:1;
469 482
470 __u32 pids[QUADD_MAX_PROCESS]; 483 __u32 pids[QUADD_MAX_PROCESS];
471 __u32 nr_pids; 484 __u32 nr_pids;
472 485
473 __u8 package_name[QUADD_MAX_PACKAGE_NAME]; 486 __u8 package_name[QUADD_MAX_PACKAGE_NAME];
474 487
475 struct quadd_event events[QUADD_MAX_COUNTERS]; 488 struct quadd_event events[QUADD_MAX_COUNTERS];
476 __u32 nr_events; 489 __u32 nr_events;
477 490
478 __u32 reserved[16]; /* reserved fields for future extensions */ 491 __u32 reserved[16]; /* reserved fields for future extensions */
479}; 492};
480 493
481struct quadd_pmu_setup_for_cpu { 494struct quadd_pmu_setup_for_cpu {
482 __u32 cpuid; 495 __u32 cpuid;
483 496
484 struct quadd_event events[QUADD_MAX_COUNTERS]; 497 struct quadd_event events[QUADD_MAX_COUNTERS];
485 __u32 nr_events; 498 __u32 nr_events;
486 499
487 __u32 reserved[16]; 500 __u32 reserved[16];
488}; 501};
489 502
490struct quadd_events_cap { 503struct quadd_events_cap {