probes: add mali marker write event

Change-Id: I5a32dc564b3b4a4d772d502dcdb9ebcb6211e2e8
Bug: 177182283
diff --git a/Android.bp b/Android.bp
index 142e9b7..013e5f8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -4098,6 +4098,7 @@
     "protos/perfetto/trace/ftrace/irq.proto",
     "protos/perfetto/trace/ftrace/kmem.proto",
     "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+    "protos/perfetto/trace/ftrace/mali.proto",
     "protos/perfetto/trace/ftrace/mdss.proto",
     "protos/perfetto/trace/ftrace/mm_event.proto",
     "protos/perfetto/trace/ftrace/oom.proto",
@@ -4147,6 +4148,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/irq.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/kmem.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller.gen.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mali.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdss.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_event.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/oom.gen.cc",
@@ -4196,6 +4198,7 @@
     "protos/perfetto/trace/ftrace/irq.proto",
     "protos/perfetto/trace/ftrace/kmem.proto",
     "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+    "protos/perfetto/trace/ftrace/mali.proto",
     "protos/perfetto/trace/ftrace/mdss.proto",
     "protos/perfetto/trace/ftrace/mm_event.proto",
     "protos/perfetto/trace/ftrace/oom.proto",
@@ -4245,6 +4248,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/irq.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/kmem.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller.gen.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mali.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdss.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_event.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/oom.gen.h",
@@ -4298,6 +4302,7 @@
     "protos/perfetto/trace/ftrace/irq.proto",
     "protos/perfetto/trace/ftrace/kmem.proto",
     "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+    "protos/perfetto/trace/ftrace/mali.proto",
     "protos/perfetto/trace/ftrace/mdss.proto",
     "protos/perfetto/trace/ftrace/mm_event.proto",
     "protos/perfetto/trace/ftrace/oom.proto",
@@ -4346,6 +4351,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/irq.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/kmem.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mali.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdss.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_event.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/oom.pb.cc",
@@ -4395,6 +4401,7 @@
     "protos/perfetto/trace/ftrace/irq.proto",
     "protos/perfetto/trace/ftrace/kmem.proto",
     "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+    "protos/perfetto/trace/ftrace/mali.proto",
     "protos/perfetto/trace/ftrace/mdss.proto",
     "protos/perfetto/trace/ftrace/mm_event.proto",
     "protos/perfetto/trace/ftrace/oom.proto",
@@ -4443,6 +4450,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/irq.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/kmem.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mali.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdss.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_event.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/oom.pb.h",
@@ -4496,6 +4504,7 @@
     "protos/perfetto/trace/ftrace/irq.proto",
     "protos/perfetto/trace/ftrace/kmem.proto",
     "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+    "protos/perfetto/trace/ftrace/mali.proto",
     "protos/perfetto/trace/ftrace/mdss.proto",
     "protos/perfetto/trace/ftrace/mm_event.proto",
     "protos/perfetto/trace/ftrace/oom.proto",
@@ -4545,6 +4554,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/irq.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/kmem.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mali.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdss.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_event.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/oom.pbzero.cc",
@@ -4594,6 +4604,7 @@
     "protos/perfetto/trace/ftrace/irq.proto",
     "protos/perfetto/trace/ftrace/kmem.proto",
     "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+    "protos/perfetto/trace/ftrace/mali.proto",
     "protos/perfetto/trace/ftrace/mdss.proto",
     "protos/perfetto/trace/ftrace/mm_event.proto",
     "protos/perfetto/trace/ftrace/oom.proto",
@@ -4643,6 +4654,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/irq.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/kmem.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mali.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdss.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_event.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/oom.pbzero.h",
diff --git a/BUILD b/BUILD
index b1cf949..869b4a0 100644
--- a/BUILD
+++ b/BUILD
@@ -2532,6 +2532,7 @@
         "protos/perfetto/trace/ftrace/irq.proto",
         "protos/perfetto/trace/ftrace/kmem.proto",
         "protos/perfetto/trace/ftrace/lowmemorykiller.proto",
+        "protos/perfetto/trace/ftrace/mali.proto",
         "protos/perfetto/trace/ftrace/mdss.proto",
         "protos/perfetto/trace/ftrace/mm_event.proto",
         "protos/perfetto/trace/ftrace/oom.proto",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 6ae204f..b65e892 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -41,6 +41,7 @@
   "irq.proto",
   "kmem.proto",
   "lowmemorykiller.proto",
+  "mali.proto",
   "mdss.proto",
   "mm_event.proto",
   "oom.proto",
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 0a49ae2..46b419c 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -41,6 +41,7 @@
 import "protos/perfetto/trace/ftrace/irq.proto";
 import "protos/perfetto/trace/ftrace/kmem.proto";
 import "protos/perfetto/trace/ftrace/lowmemorykiller.proto";
+import "protos/perfetto/trace/ftrace/mali.proto";
 import "protos/perfetto/trace/ftrace/mdss.proto";
 import "protos/perfetto/trace/ftrace/mm_event.proto";
 import "protos/perfetto/trace/ftrace/oom.proto";
@@ -436,5 +437,6 @@
     FastrpcDmaStatFtraceEvent fastrpc_dma_stat = 347;
     DpuTracingMarkWriteFtraceEvent dpu_tracing_mark_write = 348;
     G2dTracingMarkWriteFtraceEvent g2d_tracing_mark_write = 349;
+    MaliTracingMarkWriteFtraceEvent mali_tracing_mark_write = 350;
   }
 }
diff --git a/protos/perfetto/trace/ftrace/mali.proto b/protos/perfetto/trace/ftrace/mali.proto
new file mode 100644
index 0000000..54f2ad1
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mali.proto
@@ -0,0 +1,13 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+package perfetto.protos;
+
+message MaliTracingMarkWriteFtraceEvent {
+  optional string name = 1;
+  optional int32 pid = 2;
+  optional uint32 type = 3;
+  optional int32 value = 4;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 8bb76bf..ccf777d 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -4448,6 +4448,17 @@
 
 // End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
 
+// Begin of protos/perfetto/trace/ftrace/mali.proto
+
+message MaliTracingMarkWriteFtraceEvent {
+  optional string name = 1;
+  optional int32 pid = 2;
+  optional uint32 type = 3;
+  optional int32 value = 4;
+}
+
+// End of protos/perfetto/trace/ftrace/mali.proto
+
 // Begin of protos/perfetto/trace/ftrace/mdss.proto
 
 message MdpCmdKickoffFtraceEvent {
@@ -5304,6 +5315,7 @@
     FastrpcDmaStatFtraceEvent fastrpc_dma_stat = 347;
     DpuTracingMarkWriteFtraceEvent dpu_tracing_mark_write = 348;
     G2dTracingMarkWriteFtraceEvent g2d_tracing_mark_write = 349;
+    MaliTracingMarkWriteFtraceEvent mali_tracing_mark_write = 350;
   }
 }
 
diff --git a/src/trace_processor/importers/ftrace/ftrace_descriptors.cc b/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
index 413f90e..d493173 100644
--- a/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
@@ -24,7 +24,7 @@
 namespace trace_processor {
 namespace {
 
-std::array<MessageDescriptor, 350> descriptors{{
+std::array<MessageDescriptor, 351> descriptors{{
     {nullptr, 0, {}},
     {nullptr, 0, {}},
     {nullptr, 0, {}},
@@ -3723,13 +3723,24 @@
         {
             {},
             {"pid", ProtoSchemaType::kInt32},
-            {"trace_name", ProtoSchemaType::kString},
-            {"trace_begin", ProtoSchemaType::kUint32},
+            {},
+            {},
             {"name", ProtoSchemaType::kString},
             {"type", ProtoSchemaType::kUint32},
             {"value", ProtoSchemaType::kInt32},
         },
     },
+    {
+        "mali_tracing_mark_write",
+        4,
+        {
+            {},
+            {"name", ProtoSchemaType::kString},
+            {"pid", ProtoSchemaType::kInt32},
+            {"type", ProtoSchemaType::kUint32},
+            {"value", ProtoSchemaType::kInt32},
+        },
+    },
 }};
 
 }  // namespace
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index b49ac87..e3195ae 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -4077,12 +4077,6 @@
             "pid", 1, ProtoSchemaType::kInt32,
             TranslationStrategy::kInvalidTranslationStrategy},
            {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
-            "trace_name", 2, ProtoSchemaType::kString,
-            TranslationStrategy::kInvalidTranslationStrategy},
-           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
-            "trace_begin", 3, ProtoSchemaType::kUint32,
-            TranslationStrategy::kInvalidTranslationStrategy},
-           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
             "name", 4, ProtoSchemaType::kString,
             TranslationStrategy::kInvalidTranslationStrategy},
            {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
@@ -5175,6 +5169,25 @@
        kUnsetFtraceId,
        35,
        kUnsetSize},
+      {"tracing_mark_write",
+       "mali",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "name", 1, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "pid", 2, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "type", 3, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "value", 4, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       350,
+       kUnsetSize},
       {"mdp_cmd_kickoff",
        "mdss",
        {
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/mali/tracing_mark_write/format b/src/traced/probes/ftrace/test/data/synthetic/events/mali/tracing_mark_write/format
new file mode 100644
index 0000000..4be4037
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/mali/tracing_mark_write/format
@@ -0,0 +1,14 @@
+name: tracing_mark_write
+ID: 1409
+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:char type;        offset:8;       size:1; signed:0;
+        field:int pid;  offset:12;      size:4; signed:1;
+        field:__data_loc char[] name;   offset:16;      size:4; signed:0;
+        field:int value;        offset:20;      size:4; signed:1;
+
+print fmt: "%c|%d|%s|%d", REC->type, REC->pid, __get_str(name), REC->value
\ No newline at end of file
diff --git a/tools/ftrace_proto_gen/event_list b/tools/ftrace_proto_gen/event_list
index 7c198f8..b0cbcf5 100644
--- a/tools/ftrace_proto_gen/event_list
+++ b/tools/ftrace_proto_gen/event_list
@@ -344,3 +344,4 @@
 fastrpc/fastrpc_dma_stat
 dpu/tracing_mark_write
 g2d/tracing_mark_write
+mali/tracing_mark_write
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen.cc b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
index 87c6f0c..b372ee5 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
@@ -58,7 +58,7 @@
   std::string event_name = (name == "0") ? "zero" : name;
   // These groups have events where the name alone conflicts with an existing
   // proto:
-  if (group == "sde" || group == "g2d" || group == "dpu") {
+  if (group == "sde" || group == "g2d" || group == "dpu" || group == "mali") {
     event_name = group + "_" + event_name;
   }
   return event_name;