Snap for 5691688 from abda07cf4969632987fa795bcce3422ba67c2d13 to qt-aml-release

Change-Id: Ib451c247423e7e04e463910a8cb6196277e86c38
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 5e27dac..6996d0a 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -394,5 +394,6 @@
     SysEnterFtraceEvent sys_enter = 329;
     SysExitFtraceEvent sys_exit = 330;
     ZeroFtraceEvent zero = 331;
+    GpuFrequencyFtraceEvent gpu_frequency = 332;
   }
 }
diff --git a/protos/perfetto/trace/ftrace/power.proto b/protos/perfetto/trace/ftrace/power.proto
index b8548e5..a79cc03 100644
--- a/protos/perfetto/trace/ftrace/power.proto
+++ b/protos/perfetto/trace/ftrace/power.proto
@@ -39,3 +39,7 @@
   optional int32 val = 2;
   optional uint32 start = 3;
 }
+message GpuFrequencyFtraceEvent {
+  optional uint32 gpu_id = 1;
+  optional uint32 state = 2;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 0d1c759..f563be5 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -1932,6 +1932,7 @@
     SysEnterFtraceEvent sys_enter = 329;
     SysExitFtraceEvent sys_exit = 330;
     ZeroFtraceEvent zero = 331;
+    GpuFrequencyFtraceEvent gpu_frequency = 332;
   }
 }
 
@@ -2315,6 +2316,10 @@
   optional int32 val = 2;
   optional uint32 start = 3;
 }
+message GpuFrequencyFtraceEvent {
+  optional uint32 gpu_id = 1;
+  optional uint32 state = 2;
+}
 
 // End of protos/perfetto/trace/ftrace/power.proto
 
diff --git a/src/perfetto_cmd/perfetto_cmd.cc b/src/perfetto_cmd/perfetto_cmd.cc
index a54d235..e1f71dd 100644
--- a/src/perfetto_cmd/perfetto_cmd.cc
+++ b/src/perfetto_cmd/perfetto_cmd.cc
@@ -274,6 +274,7 @@
         ds_config->mutable_ftrace_config()->add_ftrace_events("sched_switch");
         ds_config->mutable_ftrace_config()->add_ftrace_events("cpu_idle");
         ds_config->mutable_ftrace_config()->add_ftrace_events("cpu_frequency");
+        ds_config->mutable_ftrace_config()->add_ftrace_events("gpu_frequency");
         ds_config->set_target_buffer(0);
         test_config.SerializeToString(&trace_config_raw);
       } else {
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index 92ed091..657a459 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -3615,6 +3615,16 @@
   {
     events.emplace_back(Event{});
     Event* event = &events.back();
+    event->name = "gpu_frequency";
+    event->group = "power";
+    event->proto_field_id = 332;
+    event->fields.push_back(MakeField("gpu_id", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("state", 2, ProtoSchemaType::kUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
     event->name = "sys_enter";
     event->group = "raw_syscalls";
     event->proto_field_id = 329;
diff --git a/src/traced/probes/ftrace/ftrace_config_muxer.cc b/src/traced/probes/ftrace/ftrace_config_muxer.cc
index a8d44d3..4dbf313 100644
--- a/src/traced/probes/ftrace/ftrace_config_muxer.cc
+++ b/src/traced/probes/ftrace/ftrace_config_muxer.cc
@@ -106,7 +106,6 @@
       if (category == "gfx") {
         AddEventGroup(table, "mdss", &events);
         AddEventGroup(table, "sde", &events);
-        AddEventGroup(table, "mali_systrace", &events);
         continue;
       }
 
@@ -166,6 +165,7 @@
 
       if (category == "freq") {
         events.insert(GroupAndName("power", "cpu_frequency"));
+        events.insert(GroupAndName("power", "gpu_frequency"));
         events.insert(GroupAndName("power", "clock_set_rate"));
         events.insert(GroupAndName("power", "clock_disable"));
         events.insert(GroupAndName("power", "clock_enable"));
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/power/gpu_frequency/format b/src/traced/probes/ftrace/test/data/synthetic/events/power/gpu_frequency/format
new file mode 100644
index 0000000..6b77071
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/power/gpu_frequency/format
@@ -0,0 +1,12 @@
+name: gpu_frequency
+ID: 511
+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 state;	offset:8;	size:4;	signed:0;
+	field:unsigned int gpu_id;	offset:12;	size:4;	signed:0;
+
+print fmt: "state=%lu gpu_id=%lu", REC->state, REC->gpu_id
diff --git a/tools/ftrace_proto_gen/event_whitelist b/tools/ftrace_proto_gen/event_whitelist
index 9f9737a..e0662ce 100644
--- a/tools/ftrace_proto_gen/event_whitelist
+++ b/tools/ftrace_proto_gen/event_whitelist
@@ -326,3 +326,4 @@
 raw_syscalls/sys_enter
 raw_syscalls/sys_exit
 systrace/0
+power/gpu_frequency