Add cpuhp ftrace events
Bug: 162568746
Change-Id: I633757f32df107d669addfaf4cc065a2ae00aa04
diff --git a/Android.bp b/Android.bp
index a5a45c5..cf155f9 100644
--- a/Android.bp
+++ b/Android.bp
@@ -3707,6 +3707,7 @@
"protos/perfetto/trace/ftrace/cgroup.proto",
"protos/perfetto/trace/ftrace/clk.proto",
"protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/cpuhp.proto",
"protos/perfetto/trace/ftrace/ext4.proto",
"protos/perfetto/trace/ftrace/f2fs.proto",
"protos/perfetto/trace/ftrace/fence.proto",
@@ -3752,6 +3753,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/clk.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/compaction.gen.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/ext4.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/f2fs.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/fence.gen.cc",
@@ -3797,6 +3799,7 @@
"protos/perfetto/trace/ftrace/cgroup.proto",
"protos/perfetto/trace/ftrace/clk.proto",
"protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/cpuhp.proto",
"protos/perfetto/trace/ftrace/ext4.proto",
"protos/perfetto/trace/ftrace/f2fs.proto",
"protos/perfetto/trace/ftrace/fence.proto",
@@ -3842,6 +3845,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/clk.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/compaction.gen.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/ext4.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/f2fs.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/fence.gen.h",
@@ -3891,6 +3895,7 @@
"protos/perfetto/trace/ftrace/cgroup.proto",
"protos/perfetto/trace/ftrace/clk.proto",
"protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/cpuhp.proto",
"protos/perfetto/trace/ftrace/ext4.proto",
"protos/perfetto/trace/ftrace/f2fs.proto",
"protos/perfetto/trace/ftrace/fence.proto",
@@ -3935,6 +3940,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/clk.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/compaction.pb.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/ext4.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/f2fs.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/fence.pb.cc",
@@ -3980,6 +3986,7 @@
"protos/perfetto/trace/ftrace/cgroup.proto",
"protos/perfetto/trace/ftrace/clk.proto",
"protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/cpuhp.proto",
"protos/perfetto/trace/ftrace/ext4.proto",
"protos/perfetto/trace/ftrace/f2fs.proto",
"protos/perfetto/trace/ftrace/fence.proto",
@@ -4024,6 +4031,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/clk.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/compaction.pb.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/ext4.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/f2fs.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/fence.pb.h",
@@ -4073,6 +4081,7 @@
"protos/perfetto/trace/ftrace/cgroup.proto",
"protos/perfetto/trace/ftrace/clk.proto",
"protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/cpuhp.proto",
"protos/perfetto/trace/ftrace/ext4.proto",
"protos/perfetto/trace/ftrace/f2fs.proto",
"protos/perfetto/trace/ftrace/fence.proto",
@@ -4118,6 +4127,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/clk.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/compaction.pbzero.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/ext4.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/f2fs.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/fence.pbzero.cc",
@@ -4163,6 +4173,7 @@
"protos/perfetto/trace/ftrace/cgroup.proto",
"protos/perfetto/trace/ftrace/clk.proto",
"protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/cpuhp.proto",
"protos/perfetto/trace/ftrace/ext4.proto",
"protos/perfetto/trace/ftrace/f2fs.proto",
"protos/perfetto/trace/ftrace/fence.proto",
@@ -4208,6 +4219,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/clk.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/compaction.pbzero.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/ext4.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/f2fs.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/fence.pbzero.h",
diff --git a/BUILD b/BUILD
index 576dc0e..0af3576 100644
--- a/BUILD
+++ b/BUILD
@@ -2187,6 +2187,7 @@
"protos/perfetto/trace/ftrace/cgroup.proto",
"protos/perfetto/trace/ftrace/clk.proto",
"protos/perfetto/trace/ftrace/compaction.proto",
+ "protos/perfetto/trace/ftrace/cpuhp.proto",
"protos/perfetto/trace/ftrace/ext4.proto",
"protos/perfetto/trace/ftrace/f2fs.proto",
"protos/perfetto/trace/ftrace/fence.proto",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 5eb1823..74f00d3 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -25,6 +25,7 @@
"cgroup.proto",
"clk.proto",
"compaction.proto",
+ "cpuhp.proto",
"ext4.proto",
"f2fs.proto",
"fence.proto",
diff --git a/protos/perfetto/trace/ftrace/cpuhp.proto b/protos/perfetto/trace/ftrace/cpuhp.proto
new file mode 100644
index 0000000..3214b51
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/cpuhp.proto
@@ -0,0 +1,31 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+package perfetto.protos;
+
+message CpuhpExitFtraceEvent {
+ optional uint32 cpu = 1;
+ optional int32 idx = 2;
+ optional int32 ret = 3;
+ optional int32 state = 4;
+}
+message CpuhpMultiEnterFtraceEvent {
+ optional uint32 cpu = 1;
+ optional uint64 fun = 2;
+ optional int32 idx = 3;
+ optional int32 target = 4;
+}
+message CpuhpEnterFtraceEvent {
+ optional uint32 cpu = 1;
+ optional uint64 fun = 2;
+ optional int32 idx = 3;
+ optional int32 target = 4;
+}
+message CpuhpLatencyFtraceEvent {
+ optional uint32 cpu = 1;
+ optional int32 ret = 2;
+ optional uint32 state = 3;
+ optional uint64 time = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 72b2f89..3550a9f 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -25,6 +25,7 @@
import "protos/perfetto/trace/ftrace/cgroup.proto";
import "protos/perfetto/trace/ftrace/clk.proto";
import "protos/perfetto/trace/ftrace/compaction.proto";
+import "protos/perfetto/trace/ftrace/cpuhp.proto";
import "protos/perfetto/trace/ftrace/ext4.proto";
import "protos/perfetto/trace/ftrace/f2fs.proto";
import "protos/perfetto/trace/ftrace/fence.proto";
@@ -425,5 +426,9 @@
GpuMemTotalFtraceEvent gpu_mem_total = 340;
ThermalTemperatureFtraceEvent thermal_temperature = 341;
CdevUpdateFtraceEvent cdev_update = 342;
+ CpuhpExitFtraceEvent cpuhp_exit = 343;
+ CpuhpMultiEnterFtraceEvent cpuhp_multi_enter = 344;
+ CpuhpEnterFtraceEvent cpuhp_enter = 345;
+ CpuhpLatencyFtraceEvent cpuhp_latency = 346;
}
}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 0be07f5..e0cb07e 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -2579,6 +2579,35 @@
// End of protos/perfetto/trace/ftrace/compaction.proto
+// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
+
+message CpuhpExitFtraceEvent {
+ optional uint32 cpu = 1;
+ optional int32 idx = 2;
+ optional int32 ret = 3;
+ optional int32 state = 4;
+}
+message CpuhpMultiEnterFtraceEvent {
+ optional uint32 cpu = 1;
+ optional uint64 fun = 2;
+ optional int32 idx = 3;
+ optional int32 target = 4;
+}
+message CpuhpEnterFtraceEvent {
+ optional uint32 cpu = 1;
+ optional uint64 fun = 2;
+ optional int32 idx = 3;
+ optional int32 target = 4;
+}
+message CpuhpLatencyFtraceEvent {
+ optional uint32 cpu = 1;
+ optional int32 ret = 2;
+ optional uint32 state = 3;
+ optional uint64 time = 4;
+}
+
+// End of protos/perfetto/trace/ftrace/cpuhp.proto
+
// Begin of protos/perfetto/trace/ftrace/ext4.proto
message Ext4DaWriteBeginFtraceEvent {
@@ -4785,6 +4814,10 @@
GpuMemTotalFtraceEvent gpu_mem_total = 340;
ThermalTemperatureFtraceEvent thermal_temperature = 341;
CdevUpdateFtraceEvent cdev_update = 342;
+ CpuhpExitFtraceEvent cpuhp_exit = 343;
+ CpuhpMultiEnterFtraceEvent cpuhp_multi_enter = 344;
+ CpuhpEnterFtraceEvent cpuhp_enter = 345;
+ CpuhpLatencyFtraceEvent cpuhp_latency = 346;
}
}
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index a90eca9..fa18e1c 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -1009,6 +1009,82 @@
kUnsetFtraceId,
112,
kUnsetSize},
+ {"cpuhp_exit",
+ "cpuhp",
+ {
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "cpu", 1, ProtoSchemaType::kUint32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "idx", 2, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "ret", 3, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "state", 4, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ },
+ kUnsetFtraceId,
+ 343,
+ kUnsetSize},
+ {"cpuhp_multi_enter",
+ "cpuhp",
+ {
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "cpu", 1, ProtoSchemaType::kUint32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "fun", 2, ProtoSchemaType::kUint64,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "idx", 3, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "target", 4, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ },
+ kUnsetFtraceId,
+ 344,
+ kUnsetSize},
+ {"cpuhp_enter",
+ "cpuhp",
+ {
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "cpu", 1, ProtoSchemaType::kUint32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "fun", 2, ProtoSchemaType::kUint64,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "idx", 3, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "target", 4, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ },
+ kUnsetFtraceId,
+ 345,
+ kUnsetSize},
+ {"cpuhp_latency",
+ "cpuhp",
+ {
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "cpu", 1, ProtoSchemaType::kUint32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "ret", 2, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "state", 3, ProtoSchemaType::kUint32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "time", 4, ProtoSchemaType::kUint64,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ },
+ kUnsetFtraceId,
+ 346,
+ kUnsetSize},
{"ext4_da_write_begin",
"ext4",
{
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_enter/format b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_enter/format
new file mode 100644
index 0000000..fd990fb
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_enter/format
@@ -0,0 +1,14 @@
+name: cpuhp_enter
+ID: 33
+format:
+ field:unsigned short common_type; offset:0; size:2; signed:0;
+ field:unsigned char common_flags; offset:2; size:1; signed:0;
+ field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ field:int common_pid; offset:4; size:4; signed:1;
+
+ field:unsigned int cpu; offset:8; size:4; signed:0;
+ field:int target; offset:12; size:4; signed:1;
+ field:int idx; offset:16; size:4; signed:1;
+ field:void * fun; offset:24; size:8; signed:0;
+
+print fmt: "cpu: %04u target: %3d step: %3d (%pf)", REC->cpu, REC->target, REC->idx, REC->fun
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_enter/id b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_enter/id
new file mode 100644
index 0000000..bb95160
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_enter/id
@@ -0,0 +1 @@
+33
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_exit/format b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_exit/format
new file mode 100644
index 0000000..ec5fdde
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_exit/format
@@ -0,0 +1,14 @@
+name: cpuhp_exit
+ID: 34
+format:
+ field:unsigned short common_type; offset:0; size:2; signed:0;
+ field:unsigned char common_flags; offset:2; size:1; signed:0;
+ field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ field:int common_pid; offset:4; size:4; signed:1;
+
+ field:unsigned int cpu; offset:8; size:4; signed:0;
+ field:int state; offset:12; size:4; signed:1;
+ field:int idx; offset:16; size:4; signed:1;
+ field:int ret; offset:20; size:4; signed:1;
+
+print fmt: " cpu: %04u state: %3d step: %3d ret: %d", REC->cpu, REC->state, REC->idx, REC->ret
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_exit/id b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_exit/id
new file mode 100644
index 0000000..a787364
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_exit/id
@@ -0,0 +1 @@
+34
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_latency/format b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_latency/format
new file mode 100644
index 0000000..9d01304
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_latency/format
@@ -0,0 +1,14 @@
+name: cpuhp_latency
+ID: 35
+format:
+ field:unsigned short common_type; offset:0; size:2; signed:0;
+ field:unsigned char common_flags; offset:2; size:1; signed:0;
+ field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ field:int common_pid; offset:4; size:4; signed:1;
+
+ field:unsigned int cpu; offset:8; size:4; signed:0;
+ field:unsigned int state; offset:12; size:4; signed:0;
+ field:u64 time; offset:16; size:8; signed:0;
+ field:int ret; offset:24; size:4; signed:1;
+
+print fmt: " cpu:%d state:%s latency:%llu USEC ret: %d", REC->cpu, REC->state ? "online" : "offline", REC->time, REC->ret
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_latency/id b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_latency/id
new file mode 100644
index 0000000..8f92bfd
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_latency/id
@@ -0,0 +1 @@
+35
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_multi_enter/format b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_multi_enter/format
new file mode 100644
index 0000000..fef4f62
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_multi_enter/format
@@ -0,0 +1,14 @@
+name: cpuhp_multi_enter
+ID: 36
+format:
+ field:unsigned short common_type; offset:0; size:2; signed:0;
+ field:unsigned char common_flags; offset:2; size:1; signed:0;
+ field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ field:int common_pid; offset:4; size:4; signed:1;
+
+ field:unsigned int cpu; offset:8; size:4; signed:0;
+ field:int target; offset:12; size:4; signed:1;
+ field:int idx; offset:16; size:4; signed:1;
+ field:void * fun; offset:24; size:8; signed:0;
+
+print fmt: "cpu: %04u target: %3d step: %3d (%pf)", REC->cpu, REC->target, REC->idx, REC->fun
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_multi_enter/id b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_multi_enter/id
new file mode 100644
index 0000000..7facc89
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/cpuhp/cpuhp_multi_enter/id
@@ -0,0 +1 @@
+36
diff --git a/tools/ftrace_proto_gen/event_list b/tools/ftrace_proto_gen/event_list
index e89131a..8bff045 100644
--- a/tools/ftrace_proto_gen/event_list
+++ b/tools/ftrace_proto_gen/event_list
@@ -337,3 +337,7 @@
gpu_mem/gpu_mem_total
thermal/thermal_temperature
thermal/cdev_update
+cpuhp/cpuhp_exit
+cpuhp/cpuhp_multi_enter
+cpuhp/cpuhp_enter
+cpuhp/cpuhp_latency