diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 222d364..ad839c4 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -80,16 +80,16 @@
 
 
 def CheckMergedTraceConfigProto(input_api, output_api):
-    tool = 'tools/gen_merged_trace_config'
+    tool = 'tools/gen_merged_protos'
     build_file_filter = lambda x: input_api.FilterSourceFile(
           x,
-          white_list=('protos/perfetto/config/.*[.]proto$', tool))
+          white_list=('protos/perfetto/.*[.]proto$', tool))
     if not input_api.AffectedSourceFiles(build_file_filter):
         return []
     if subprocess.call([tool, '--check-only']):
         return [
             output_api.PresubmitError(
-                'perfetto_config.proto is out of date. Please run ' +
-                tool + ' to update it.')
+                'perfetto_config.proto or perfetto_trace.proto is out of ' +
+                'date. Please run ' + tool + ' to update it.')
         ]
     return []
diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index 066df14..b3c275a 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -1,7 +1,7 @@
 // AUTOGENERATED - DO NOT EDIT
 // ---------------------------
 // This file has been generated by
-// AOSP://external/perfetto/tools/gen_merged_trace_config
+// AOSP://external/perfetto/tools/gen_merged_protos
 // merging the perfetto config protos.
 // This fused proto is intended to be copied in:
 //  - Android tree, for statsd.
diff --git a/protos/perfetto/trace/BUILD.gn b/protos/perfetto/trace/BUILD.gn
index 814de07..d58e354 100644
--- a/protos/perfetto/trace/BUILD.gn
+++ b/protos/perfetto/trace/BUILD.gn
@@ -70,3 +70,14 @@
   proto_in_dir = "$perfetto_root_path/protos"
   proto_out_dir = "$perfetto_root_path/protos"
 }
+
+# This target is not used in the tree and is built only to guarantee that the
+# autogenerated merged proto has a valid syntax.
+proto_library("merged_trace") {
+  generate_python = false
+  proto_in_dir = "$perfetto_root_path/protos"
+  proto_out_dir = "$perfetto_root_path/protos"
+  sources = [
+    "perfetto_trace.proto",
+  ]
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
new file mode 100644
index 0000000..8ef1530
--- /dev/null
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -0,0 +1,897 @@
+// AUTOGENERATED - DO NOT EDIT
+// ---------------------------
+// This file has been generated by
+// AOSP://external/perfetto/tools/gen_merged_protos
+// merging the perfetto config protos.
+// This fused proto is intended to be copied in:
+//  - Android tree, for statsd.
+//  - Google internal repos.
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Begin of protos/perfetto/trace/trace.proto
+
+message Trace {
+  repeated TracePacket packet = 1;
+
+  // Do NOT add any other field here. This is just a convenience wrapper for
+  // the use case of a trace being saved to a file. There are other cases
+  // (streaming) where TracePacket are directly streamed without being wrapped
+  // in a Trace proto. Nothing should ever rely on the full trace, all the
+  // logic should be based on TracePacket(s).
+}
+
+// End of protos/perfetto/trace/trace.proto
+
+// Begin of protos/perfetto/trace/trace_packet.proto
+
+// The root object emitted by Perfetto. A perfetto trace is just a stream of
+// TracePacket(s).
+//
+// Next id: 7.
+message TracePacket {
+  oneof data {
+    FtraceEventBundle ftrace_events = 1;
+    ProcessTree process_tree = 2;
+    // removed field with id 4
+    // removed field with id 5
+    // removed field with id 6
+
+    // IDs up to 32 are reserved for events that are quite frequent because they
+    // take only one byte to encode their preamble.
+    // removed field with id 33
+
+    // This field is only used for testing.
+    // removed field with id 536870911  // 2^29 - 1, max field id for protos.
+  }
+  // Trusted user id of the producer which generated this packet. Keep in sync
+  // with TrustedPacket.trusted_uid.
+  oneof optional_trusted_uid { int32 trusted_uid = 3; };
+}
+
+// End of protos/perfetto/trace/trace_packet.proto
+
+// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
+
+message FtraceEventBundle {
+  optional uint32 cpu = 1;
+  repeated FtraceEvent event = 2;
+  // Total of all overwrite fields from the headers of all kernel
+  // ftrace pages we parsed into this FtraceEventBundle. Zero if
+  // no overwriting occurred, a number larger than zero if some overwriting
+  // occurred.
+  optional uint32 overwrite_count = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
+
+// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
+
+message FtraceEvent {
+  // Nanoseconds since an epoch.
+  // Epoch is configurable by writing into trace_clock.
+  // By default this timestamp is CPU local.
+  // TODO: Figure out a story for reconciling the various clocks.
+  optional uint64 timestamp = 1;
+
+  optional uint32 pid = 2;
+
+  oneof event {
+    // removed field with id 3
+    SchedSwitchFtraceEvent sched_switch = 4;
+    CpufreqInteractiveAlreadyFtraceEvent cpufreq_interactive_already = 5;
+    CpufreqInteractiveBoostFtraceEvent cpufreq_interactive_boost = 6;
+    CpufreqInteractiveNotyetFtraceEvent cpufreq_interactive_notyet = 7;
+    CpufreqInteractiveSetspeedFtraceEvent cpufreq_interactive_setspeed = 8;
+    CpufreqInteractiveTargetFtraceEvent cpufreq_interactive_target = 9;
+    CpufreqInteractiveUnboostFtraceEvent cpufreq_interactive_unboost = 10;
+    CpuFrequencyFtraceEvent cpu_frequency = 11;
+    CpuFrequencyLimitsFtraceEvent cpu_frequency_limits = 12;
+    CpuIdleFtraceEvent cpu_idle = 13;
+    // removed field with id 14
+    // removed field with id 15
+    ClockSetRateFtraceEvent clock_set_rate = 16;
+    SchedWakeupFtraceEvent sched_wakeup = 17;
+    SchedBlockedReasonFtraceEvent sched_blocked_reason = 18;
+    SchedCpuHotplugFtraceEvent sched_cpu_hotplug = 19;
+    // removed field with id 20
+    // removed field with id 21
+    // removed field with id 22
+    // removed field with id 23
+    // removed field with id 24
+    // removed field with id 25
+    // removed field with id 26
+    // removed field with id 27
+    // removed field with id 28
+    // removed field with id 29
+    // removed field with id 30
+    // removed field with id 31
+    // removed field with id 32
+    // removed field with id 33
+    // removed field with id 34
+    LowmemoryKillFtraceEvent lowmemory_kill = 35;
+    // removed field with id 36
+    // removed field with id 37
+    // removed field with id 38
+    // removed field with id 39
+    // removed field with id 40
+    Ext4DaWriteBeginFtraceEvent ext4_da_write_begin = 41;
+    Ext4DaWriteEndFtraceEvent ext4_da_write_end = 42;
+    Ext4SyncFileEnterFtraceEvent ext4_sync_file_enter = 43;
+    Ext4SyncFileExitFtraceEvent ext4_sync_file_exit = 44;
+    BlockRqIssueFtraceEvent block_rq_issue = 45;
+    MmVmscanDirectReclaimBeginFtraceEvent mm_vmscan_direct_reclaim_begin = 46;
+    MmVmscanDirectReclaimEndFtraceEvent mm_vmscan_direct_reclaim_end = 47;
+    MmVmscanKswapdWakeFtraceEvent mm_vmscan_kswapd_wake = 48;
+    MmVmscanKswapdSleepFtraceEvent mm_vmscan_kswapd_sleep = 49;
+    BinderTransactionFtraceEvent binder_transaction = 50;
+    BinderTransactionReceivedFtraceEvent binder_transaction_received = 51;
+    // removed field with id 52
+    BinderLockFtraceEvent binder_lock = 53;
+    BinderLockedFtraceEvent binder_locked = 54;
+    BinderUnlockFtraceEvent binder_unlock = 55;
+    // removed field with id 56
+    // removed field with id 57
+    // removed field with id 58
+    // removed field with id 59
+    // removed field with id 60
+    // removed field with id 61
+    // removed field with id 62
+    // removed field with id 63
+    // removed field with id 64
+    // removed field with id 65
+    // removed field with id 66
+    CgroupAttachTaskFtraceEvent cgroup_attach_task = 67;
+    CgroupMkdirFtraceEvent cgroup_mkdir = 68;
+    CgroupRemountFtraceEvent cgroup_remount = 69;
+    CgroupRmdirFtraceEvent cgroup_rmdir = 70;
+    CgroupTransferTasksFtraceEvent cgroup_transfer_tasks = 71;
+    CgroupDestroyRootFtraceEvent cgroup_destroy_root = 72;
+    CgroupReleaseFtraceEvent cgroup_release = 73;
+    CgroupRenameFtraceEvent cgroup_rename = 74;
+    CgroupSetupRootFtraceEvent cgroup_setup_root = 75;
+    // removed field with id 76
+    // removed field with id 77
+    // removed field with id 78
+    // removed field with id 79
+    // removed field with id 80
+    // removed field with id 81
+    // removed field with id 82
+    // removed field with id 83
+    // removed field with id 84
+    // removed field with id 85
+    // removed field with id 86
+    // removed field with id 87
+    // removed field with id 88
+    // removed field with id 89
+    // removed field with id 90
+    // removed field with id 91
+    // removed field with id 92
+    // removed field with id 93
+    // removed field with id 94
+    // removed field with id 95
+    // removed field with id 96
+    // removed field with id 97
+    // removed field with id 98
+    // removed field with id 99
+    // removed field with id 100
+    // removed field with id 101
+    // removed field with id 102
+    // removed field with id 103
+    // removed field with id 104
+    // removed field with id 105
+    // removed field with id 106
+    // removed field with id 107
+    // removed field with id 108
+    // removed field with id 109
+    // removed field with id 110
+    // removed field with id 111
+    // removed field with id 112
+    // removed field with id 113
+    // removed field with id 114
+    // removed field with id 115
+    // removed field with id 116
+    // removed field with id 117
+    // removed field with id 118
+    // removed field with id 119
+    // removed field with id 120
+    // removed field with id 121
+    // removed field with id 122
+    // removed field with id 123
+    // removed field with id 124
+    BlockRqCompleteFtraceEvent block_rq_complete = 125;
+    // removed field with id 126
+    // removed field with id 128
+    // removed field with id 129
+    // removed field with id 130
+    // removed field with id 131
+    // removed field with id 132
+    // removed field with id 133
+    // removed field with id 134
+    // removed field with id 135
+    // removed field with id 136
+    // removed field with id 137
+    // removed field with id 138
+    // removed field with id 139
+    // removed field with id 140
+    // removed field with id 141
+    // removed field with id 142
+    // removed field with id 143
+    // removed field with id 144
+    // removed field with id 145
+    // removed field with id 146
+    // removed field with id 147
+    // removed field with id 148
+    // removed field with id 149
+    // removed field with id 150
+    // removed field with id 151
+    // removed field with id 152
+    Ext4EsLookupExtentEnterFtraceEvent ext4_es_lookup_extent_enter = 153;
+    Ext4EsLookupExtentExitFtraceEvent ext4_es_lookup_extent_exit = 154;
+    // removed field with id 155
+    // removed field with id 156
+    // removed field with id 157
+    // removed field with id 158
+    // removed field with id 159
+    // removed field with id 160
+    // removed field with id 161
+    // removed field with id 162
+    // removed field with id 163
+    // removed field with id 164
+    // removed field with id 165
+    // removed field with id 166
+    // removed field with id 167
+    // removed field with id 168
+    // removed field with id 169
+    // removed field with id 170
+    // removed field with id 171
+    // removed field with id 172
+    // removed field with id 173
+    // removed field with id 174
+    // removed field with id 175
+    // removed field with id 176
+    // removed field with id 177
+    // removed field with id 178
+    // removed field with id 179
+    // removed field with id 180
+    // removed field with id 181
+    // removed field with id 182
+    // removed field with id 183
+    // removed field with id 184
+    // removed field with id 185
+    // removed field with id 186
+    // removed field with id 187
+    // removed field with id 188
+    // removed field with id 189
+    Ext4LoadInodeFtraceEvent ext4_load_inode = 190;
+    // removed field with id 191
+    // removed field with id 192
+    // removed field with id 193
+    // removed field with id 194
+    // removed field with id 195
+    // removed field with id 196
+    // removed field with id 197
+    // removed field with id 198
+    // removed field with id 199
+    // removed field with id 200
+    // removed field with id 201
+    // removed field with id 202
+    // removed field with id 203
+    // removed field with id 204
+    // removed field with id 205
+    // removed field with id 206
+    // removed field with id 207
+    // removed field with id 208
+    // removed field with id 209
+    // removed field with id 210
+    // removed field with id 211
+    // removed field with id 212
+    // removed field with id 213
+    // removed field with id 214
+    // removed field with id 215
+    // removed field with id 216
+    // removed field with id 217
+    // removed field with id 218
+    // removed field with id 219
+    // removed field with id 230
+    // removed field with id 231
+    // removed field with id 232
+    // removed field with id 233
+    // removed field with id 234
+    // removed field with id 235
+    // removed field with id 236
+    // removed field with id 237
+    // removed field with id 238
+    // removed field with id 239
+    // removed field with id 240
+    // removed field with id 241
+    // removed field with id 242
+    // removed field with id 243
+    // removed field with id 244
+    // removed field with id 245
+    F2fsGetDataBlockFtraceEvent f2fs_get_data_block = 246;
+    // removed field with id 247
+    F2fsIgetFtraceEvent f2fs_iget = 248;
+    // removed field with id 249
+    // removed field with id 250
+    // removed field with id 251
+    // removed field with id 252
+    // removed field with id 253
+    // removed field with id 254
+    F2fsSyncFileEnterFtraceEvent f2fs_sync_file_enter = 255;
+    F2fsSyncFileExitFtraceEvent f2fs_sync_file_exit = 256;
+    // removed field with id 257
+    // removed field with id 258
+    // removed field with id 259
+    // removed field with id 260
+    // removed field with id 261
+    // removed field with id 262
+    // removed field with id 263
+    // removed field with id 264
+    // removed field with id 265
+    // removed field with id 266
+    // removed field with id 267
+    // removed field with id 268
+    // removed field with id 269
+    // removed field with id 270
+    F2fsWriteBeginFtraceEvent f2fs_write_begin = 271;
+    // removed field with id 272
+    F2fsWriteEndFtraceEvent f2fs_write_end = 273;
+  }
+}
+
+// End of protos/perfetto/trace/ftrace/ftrace_event.proto
+
+// Begin of protos/perfetto/trace/ps/process_tree.proto
+
+message ProcessTree {
+  // Representation of a thread
+  message Thread {
+    // The thread id (as per gettid())
+    optional int32 tid = 1;
+
+    // The name of the thread.
+    optional string name = 2;
+  }
+
+  // Representation of a process.
+  message Process {
+    // The UNIX process ID, aka thread group ID (as per getpid()).
+    optional int32 pid = 1;
+
+    // The parent process ID, as per getppid().
+    optional int32 ppid = 2;
+
+    // The command line for the process, as per /proc/pid/cmdline.
+    // If it is a kernel thread there will only be one cmdline field
+    // and it will contain /proc/pid/comm.
+    repeated string cmdline = 3;
+
+    // The list of all threads in the process.
+    repeated Thread threads = 4;
+  }
+
+  // List of all processes in the client.
+  repeated Process processes = 1;
+}
+
+// End of protos/perfetto/trace/ps/process_tree.proto
+
+// Begin of protos/perfetto/trace/ftrace/binder_locked.proto
+
+message BinderLockedFtraceEvent {
+  optional string tag = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/binder_locked.proto
+
+// Begin of protos/perfetto/trace/ftrace/binder_lock.proto
+
+message BinderLockFtraceEvent {
+  optional string tag = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/binder_lock.proto
+
+// Begin of protos/perfetto/trace/ftrace/binder_transaction.proto
+
+message BinderTransactionFtraceEvent {
+  optional int32 debug_id = 1;
+  optional int32 target_node = 2;
+  optional int32 to_proc = 3;
+  optional int32 to_thread = 4;
+  optional int32 reply = 5;
+  optional uint32 code = 6;
+  optional uint32 flags = 7;
+}
+
+// End of protos/perfetto/trace/ftrace/binder_transaction.proto
+
+// Begin of protos/perfetto/trace/ftrace/binder_transaction_received.proto
+
+message BinderTransactionReceivedFtraceEvent {
+  optional int32 debug_id = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/binder_transaction_received.proto
+
+// Begin of protos/perfetto/trace/ftrace/binder_unlock.proto
+
+message BinderUnlockFtraceEvent {
+  optional string tag = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/binder_unlock.proto
+
+// Begin of protos/perfetto/trace/ftrace/block_rq_complete.proto
+
+message BlockRqCompleteFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 sector = 2;
+  optional uint32 nr_sector = 3;
+  optional int32 errors = 4;
+  optional string rwbs = 5;
+  optional string cmd = 6;
+}
+
+// End of protos/perfetto/trace/ftrace/block_rq_complete.proto
+
+// Begin of protos/perfetto/trace/ftrace/block_rq_issue.proto
+
+message BlockRqIssueFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 sector = 2;
+  optional uint32 nr_sector = 3;
+  optional uint32 bytes = 4;
+  optional string rwbs = 5;
+  optional string comm = 6;
+  optional string cmd = 7;
+}
+
+// End of protos/perfetto/trace/ftrace/block_rq_issue.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_attach_task.proto
+
+message CgroupAttachTaskFtraceEvent {
+  optional int32 dst_root = 1;
+  optional int32 dst_id = 2;
+  optional int32 pid = 3;
+  optional string comm = 4;
+  optional string cname = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_attach_task.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_destroy_root.proto
+
+message CgroupDestroyRootFtraceEvent {
+  optional int32 root = 1;
+  optional uint32 ss_mask = 2;
+  optional string name = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_destroy_root.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_mkdir.proto
+
+message CgroupMkdirFtraceEvent {
+  optional int32 root = 1;
+  optional int32 id = 2;
+  optional string cname = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_mkdir.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_release.proto
+
+message CgroupReleaseFtraceEvent {
+  optional int32 root = 1;
+  optional int32 id = 2;
+  optional string cname = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_release.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_remount.proto
+
+message CgroupRemountFtraceEvent {
+  optional int32 root = 1;
+  optional uint32 ss_mask = 2;
+  optional string name = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_remount.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_rename.proto
+
+message CgroupRenameFtraceEvent {
+  optional int32 root = 1;
+  optional int32 id = 2;
+  optional string cname = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_rename.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_rmdir.proto
+
+message CgroupRmdirFtraceEvent {
+  optional int32 root = 1;
+  optional int32 id = 2;
+  optional string cname = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_rmdir.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_setup_root.proto
+
+message CgroupSetupRootFtraceEvent {
+  optional int32 root = 1;
+  optional uint32 ss_mask = 2;
+  optional string name = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_setup_root.proto
+
+// Begin of protos/perfetto/trace/ftrace/cgroup_transfer_tasks.proto
+
+message CgroupTransferTasksFtraceEvent {
+  optional int32 dst_root = 1;
+  optional int32 dst_id = 2;
+  optional int32 pid = 3;
+  optional string comm = 4;
+  optional string cname = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/cgroup_transfer_tasks.proto
+
+// Begin of protos/perfetto/trace/ftrace/clock_set_rate.proto
+
+message ClockSetRateFtraceEvent {
+  optional string name = 1;
+  optional uint64 state = 2;
+  optional uint64 cpu_id = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/clock_set_rate.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpufreq_interactive_already.proto
+
+message CpufreqInteractiveAlreadyFtraceEvent {
+  optional uint64 cpu_id = 1;
+  optional uint64 load = 2;
+  optional uint64 curtarg = 3;
+  optional uint64 curactual = 4;
+  optional uint64 newtarg = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/cpufreq_interactive_already.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpufreq_interactive_boost.proto
+
+message CpufreqInteractiveBoostFtraceEvent {
+  optional string s = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/cpufreq_interactive_boost.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpufreq_interactive_notyet.proto
+
+message CpufreqInteractiveNotyetFtraceEvent {
+  optional uint64 cpu_id = 1;
+  optional uint64 load = 2;
+  optional uint64 curtarg = 3;
+  optional uint64 curactual = 4;
+  optional uint64 newtarg = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/cpufreq_interactive_notyet.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpufreq_interactive_setspeed.proto
+
+message CpufreqInteractiveSetspeedFtraceEvent {
+  optional uint32 cpu_id = 1;
+  optional uint64 targfreq = 2;
+  optional uint64 actualfreq = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cpufreq_interactive_setspeed.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpufreq_interactive_target.proto
+
+message CpufreqInteractiveTargetFtraceEvent {
+  optional uint64 cpu_id = 1;
+  optional uint64 load = 2;
+  optional uint64 curtarg = 3;
+  optional uint64 curactual = 4;
+  optional uint64 newtarg = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/cpufreq_interactive_target.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpufreq_interactive_unboost.proto
+
+message CpufreqInteractiveUnboostFtraceEvent {
+  optional string s = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/cpufreq_interactive_unboost.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpu_frequency_limits.proto
+
+message CpuFrequencyLimitsFtraceEvent {
+  optional uint32 min_freq = 1;
+  optional uint32 max_freq = 2;
+  optional uint32 cpu_id = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/cpu_frequency_limits.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpu_frequency.proto
+
+message CpuFrequencyFtraceEvent {
+  optional uint32 state = 1;
+  optional uint32 cpu_id = 2;
+}
+
+// End of protos/perfetto/trace/ftrace/cpu_frequency.proto
+
+// Begin of protos/perfetto/trace/ftrace/cpu_idle.proto
+
+message CpuIdleFtraceEvent {
+  optional uint32 state = 1;
+  optional uint32 cpu_id = 2;
+}
+
+// End of protos/perfetto/trace/ftrace/cpu_idle.proto
+
+// Begin of protos/perfetto/trace/ftrace/ext4_da_write_begin.proto
+
+message Ext4DaWriteBeginFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional int64 pos = 3;
+  optional uint32 len = 4;
+  optional uint32 flags = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/ext4_da_write_begin.proto
+
+// Begin of protos/perfetto/trace/ftrace/ext4_da_write_end.proto
+
+message Ext4DaWriteEndFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional int64 pos = 3;
+  optional uint32 len = 4;
+  optional uint32 copied = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/ext4_da_write_end.proto
+
+// Begin of protos/perfetto/trace/ftrace/ext4_es_lookup_extent_enter.proto
+
+message Ext4EsLookupExtentEnterFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional uint32 lblk = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/ext4_es_lookup_extent_enter.proto
+
+// Begin of protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
+
+message Ext4EsLookupExtentExitFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional uint32 lblk = 3;
+  optional uint32 len = 4;
+  optional uint64 pblk = 5;
+  optional uint32 status = 6;
+  optional int32 found = 7;
+}
+
+// End of protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
+
+// Begin of protos/perfetto/trace/ftrace/ext4_load_inode.proto
+
+message Ext4LoadInodeFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+}
+
+// End of protos/perfetto/trace/ftrace/ext4_load_inode.proto
+
+// Begin of protos/perfetto/trace/ftrace/ext4_sync_file_enter.proto
+
+message Ext4SyncFileEnterFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional uint64 parent = 3;
+  optional int32 datasync = 4;
+}
+
+// End of protos/perfetto/trace/ftrace/ext4_sync_file_enter.proto
+
+// Begin of protos/perfetto/trace/ftrace/ext4_sync_file_exit.proto
+
+message Ext4SyncFileExitFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional int32 ret = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/ext4_sync_file_exit.proto
+
+// Begin of protos/perfetto/trace/ftrace/f2fs_get_data_block.proto
+
+message F2fsGetDataBlockFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional uint64 iblock = 3;
+  optional uint64 bh_start = 4;
+  optional uint64 bh_size = 5;
+  optional int32 ret = 6;
+}
+
+// End of protos/perfetto/trace/ftrace/f2fs_get_data_block.proto
+
+// Begin of protos/perfetto/trace/ftrace/f2fs_iget.proto
+
+message F2fsIgetFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional uint64 pino = 3;
+  optional uint32 mode = 4;
+  optional int64 size = 5;
+  optional uint32 nlink = 6;
+  optional uint64 blocks = 7;
+  optional uint32 advise = 8;
+}
+
+// End of protos/perfetto/trace/ftrace/f2fs_iget.proto
+
+// Begin of protos/perfetto/trace/ftrace/f2fs_sync_file_enter.proto
+
+message F2fsSyncFileEnterFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional uint64 pino = 3;
+  optional uint32 mode = 4;
+  optional int64 size = 5;
+  optional uint32 nlink = 6;
+  optional uint64 blocks = 7;
+  optional uint32 advise = 8;
+}
+
+// End of protos/perfetto/trace/ftrace/f2fs_sync_file_enter.proto
+
+// Begin of protos/perfetto/trace/ftrace/f2fs_sync_file_exit.proto
+
+message F2fsSyncFileExitFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional uint32 need_cp = 3;
+  optional int32 datasync = 4;
+  optional int32 ret = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/f2fs_sync_file_exit.proto
+
+// Begin of protos/perfetto/trace/ftrace/f2fs_write_begin.proto
+
+message F2fsWriteBeginFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional int64 pos = 3;
+  optional uint32 len = 4;
+  optional uint32 flags = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/f2fs_write_begin.proto
+
+// Begin of protos/perfetto/trace/ftrace/f2fs_write_end.proto
+
+message F2fsWriteEndFtraceEvent {
+  optional uint64 dev = 1;
+  optional uint64 ino = 2;
+  optional int64 pos = 3;
+  optional uint32 len = 4;
+  optional uint32 copied = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/f2fs_write_end.proto
+
+// Begin of protos/perfetto/trace/ftrace/lowmemory_kill.proto
+
+message LowmemoryKillFtraceEvent {
+  optional string comm = 1;
+  optional int32 pid = 2;
+  optional int64 pagecache_size = 3;
+  optional int64 pagecache_limit = 4;
+  optional int64 free = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/lowmemory_kill.proto
+
+// Begin of protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.proto
+
+message MmVmscanDirectReclaimBeginFtraceEvent {
+  optional int32 order = 1;
+  optional int32 may_writepage = 2;
+  optional uint32 gfp_flags = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.proto
+
+// Begin of protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.proto
+
+message MmVmscanDirectReclaimEndFtraceEvent {
+  optional uint64 nr_reclaimed = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.proto
+
+// Begin of protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.proto
+
+message MmVmscanKswapdSleepFtraceEvent {
+  optional int32 nid = 1;
+}
+
+// End of protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.proto
+
+// Begin of protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.proto
+
+message MmVmscanKswapdWakeFtraceEvent {
+  optional int32 nid = 1;
+  optional int32 order = 2;
+}
+
+// End of protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.proto
+
+// Begin of protos/perfetto/trace/ftrace/sched_blocked_reason.proto
+
+message SchedBlockedReasonFtraceEvent {
+  optional int32 pid = 1;
+  optional uint64 caller = 2;
+  optional uint32 io_wait = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/sched_blocked_reason.proto
+
+// Begin of protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto
+
+message SchedCpuHotplugFtraceEvent {
+  optional int32 affected_cpu = 1;
+  optional int32 error = 2;
+  optional int32 status = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto
+
+// Begin of protos/perfetto/trace/ftrace/sched_switch.proto
+
+message SchedSwitchFtraceEvent {
+  optional string prev_comm = 1;
+  optional int32 prev_pid = 2;
+  optional int32 prev_prio = 3;
+  optional int64 prev_state = 4;
+  optional string next_comm = 5;
+  optional int32 next_pid = 6;
+  optional int32 next_prio = 7;
+}
+
+// End of protos/perfetto/trace/ftrace/sched_switch.proto
+
+// Begin of protos/perfetto/trace/ftrace/sched_wakeup.proto
+
+message SchedWakeupFtraceEvent {
+  optional string comm = 1;
+  optional int32 pid = 2;
+  optional int32 prio = 3;
+  optional int32 success = 4;
+  optional int32 target_cpu = 5;
+}
+
+// End of protos/perfetto/trace/ftrace/sched_wakeup.proto
diff --git a/tools/gen_merged_protos b/tools/gen_merged_protos
new file mode 100755
index 0000000..3588720
--- /dev/null
+++ b/tools/gen_merged_protos
@@ -0,0 +1,178 @@
+#!/usr/bin/env python
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+import os
+import re
+import subprocess
+import sys
+
+CONFIG_PROTOS = (
+  'protos/perfetto/config/chrome/chrome_config.proto',
+  'protos/perfetto/config/inode_file/inode_file_config.proto',
+  'protos/perfetto/config/process_stats/process_stats_config.proto',
+  'protos/perfetto/config/data_source_config.proto',
+  'protos/perfetto/config/ftrace/ftrace_config.proto',
+  'protos/perfetto/config/test_config.proto',
+  'protos/perfetto/config/trace_config.proto',
+)
+
+MERGED_CONFIG_PROTO = 'protos/perfetto/config/perfetto_config.proto'
+
+TRACE_PROTOS = (
+  'protos/perfetto/trace/trace.proto',
+  'protos/perfetto/trace/trace_packet.proto',
+  'protos/perfetto/trace/ftrace/ftrace_event_bundle.proto',
+  'protos/perfetto/trace/ftrace/ftrace_event.proto',
+  'protos/perfetto/trace/ps/process_tree.proto',
+
+  # FTrace events
+  # Generated by tools/protos_from_genfs_contexts.sh.
+  # MISSING cpufreq_interactive_load_change
+  'protos/perfetto/trace/ftrace/binder_locked.proto',
+  'protos/perfetto/trace/ftrace/binder_lock.proto',
+  'protos/perfetto/trace/ftrace/binder_transaction.proto',
+  'protos/perfetto/trace/ftrace/binder_transaction_received.proto',
+  'protos/perfetto/trace/ftrace/binder_unlock.proto',
+  'protos/perfetto/trace/ftrace/block_rq_complete.proto',
+  'protos/perfetto/trace/ftrace/block_rq_issue.proto',
+  'protos/perfetto/trace/ftrace/cgroup_attach_task.proto',
+  'protos/perfetto/trace/ftrace/cgroup_destroy_root.proto',
+  'protos/perfetto/trace/ftrace/cgroup_mkdir.proto',
+  'protos/perfetto/trace/ftrace/cgroup_release.proto',
+  'protos/perfetto/trace/ftrace/cgroup_remount.proto',
+  'protos/perfetto/trace/ftrace/cgroup_rename.proto',
+  'protos/perfetto/trace/ftrace/cgroup_rmdir.proto',
+  'protos/perfetto/trace/ftrace/cgroup_setup_root.proto',
+  'protos/perfetto/trace/ftrace/cgroup_transfer_tasks.proto',
+  'protos/perfetto/trace/ftrace/clock_set_rate.proto',
+  'protos/perfetto/trace/ftrace/cpufreq_interactive_already.proto',
+  'protos/perfetto/trace/ftrace/cpufreq_interactive_boost.proto',
+  'protos/perfetto/trace/ftrace/cpufreq_interactive_notyet.proto',
+  'protos/perfetto/trace/ftrace/cpufreq_interactive_setspeed.proto',
+  'protos/perfetto/trace/ftrace/cpufreq_interactive_target.proto',
+  'protos/perfetto/trace/ftrace/cpufreq_interactive_unboost.proto',
+  'protos/perfetto/trace/ftrace/cpu_frequency_limits.proto',
+  'protos/perfetto/trace/ftrace/cpu_frequency.proto',
+  'protos/perfetto/trace/ftrace/cpu_idle.proto',
+  'protos/perfetto/trace/ftrace/ext4_da_write_begin.proto',
+  'protos/perfetto/trace/ftrace/ext4_da_write_end.proto',
+  'protos/perfetto/trace/ftrace/ext4_es_lookup_extent_enter.proto',
+  'protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto',
+  'protos/perfetto/trace/ftrace/ext4_load_inode.proto',
+  'protos/perfetto/trace/ftrace/ext4_sync_file_enter.proto',
+  'protos/perfetto/trace/ftrace/ext4_sync_file_exit.proto',
+  'protos/perfetto/trace/ftrace/f2fs_get_data_block.proto',
+  'protos/perfetto/trace/ftrace/f2fs_iget.proto',
+  'protos/perfetto/trace/ftrace/f2fs_sync_file_enter.proto',
+  'protos/perfetto/trace/ftrace/f2fs_sync_file_exit.proto',
+  'protos/perfetto/trace/ftrace/f2fs_write_begin.proto',
+  'protos/perfetto/trace/ftrace/f2fs_write_end.proto',
+  'protos/perfetto/trace/ftrace/lowmemory_kill.proto',
+  'protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.proto',
+  'protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.proto',
+  'protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.proto',
+  'protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.proto',
+  'protos/perfetto/trace/ftrace/sched_blocked_reason.proto',
+  'protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto',
+  'protos/perfetto/trace/ftrace/sched_switch.proto',
+  'protos/perfetto/trace/ftrace/sched_wakeup.proto',
+)
+
+MERGED_TRACE_PROTO = 'protos/perfetto/trace/perfetto_trace.proto'
+
+REPLACEMENT_HEADER = '''
+// AUTOGENERATED - DO NOT EDIT
+// ---------------------------
+// This file has been generated by
+// AOSP://external/perfetto/%s
+// merging the perfetto config protos.
+// This fused proto is intended to be copied in:
+//  - Android tree, for statsd.
+//  - Google internal repos.
+
+syntax = "proto2";
+
+package perfetto.protos;
+'''
+
+def merge_protos(proto_paths, output_path):
+  root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
+  merged_content = ''
+  for proto in proto_paths:
+    path = os.path.join(root_dir, proto)
+    with open(path) as f:
+      content = f.read()
+
+    # Remove header
+    header = re.match(r'\/(\*|\/)(?:.|\s)*?package.*;\n', content)
+    header = header.group(0)
+    content = content[len(header):]
+    if merged_content == '':
+      merged_content += REPLACEMENT_HEADER.lstrip() % __file__
+    content = re.sub(r'^import.*?\n', '', content, flags=re.MULTILINE)
+    content = re.sub(r'TODO\([^)]*\):', 'TODO:', content)
+    merged_content += '\n// Begin of %s\n' % proto
+    merged_content += content
+    merged_content += '\n// End of %s\n' % proto
+
+  definitions_re = r'^ *(?:message|enum) ([A-Z][A-Za-z0-9].*) {'
+  definitions = re.finditer(definitions_re, merged_content, re.MULTILINE)
+  types = set((match.group(1) for match in definitions))
+
+  uses_re = r'^( +)(?:repeated)?\s?([A-Z]\w+.*)\s+[a-z]\w+\s*=\s*(\d+);'
+  uses = re.finditer(uses_re, merged_content, re.MULTILINE)
+  substitutions = []
+  for use in uses:
+    everything = use.group(0)
+    indentation = use.group(1)
+    used_type = use.group(2)
+    field_number = use.group(3)
+    if used_type not in types:
+      # replacement = '{}reserved {};'.format(indentation, field_number)
+      replacement = '{}// removed field with id {}'.format(
+          indentation, field_number)
+      substitutions.append((everything, replacement))
+
+  for before, after in substitutions:
+    merged_content = merged_content.replace(before, after)
+
+  out_path = os.path.join(root_dir, output_path)
+
+  prev_content = None
+  if os.path.exists(out_path):
+    with open(out_path, 'rb') as fprev:
+      prev_content = fprev.read()
+
+  if prev_content == merged_content:
+    return True
+
+  if '--check-only' in sys.argv:
+    return False
+
+  print('Updating {}'.format(output_path))
+  with open(out_path, 'wb') as fout:
+    fout.write(merged_content)
+  return True
+
+def main():
+  config_result = merge_protos(CONFIG_PROTOS, MERGED_CONFIG_PROTO)
+  trace_result = merge_protos(TRACE_PROTOS, MERGED_TRACE_PROTO)
+  return 0 if config_result and trace_result else 1
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/tools/gen_merged_trace_config b/tools/gen_merged_trace_config
deleted file mode 100755
index 135fd02..0000000
--- a/tools/gen_merged_trace_config
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import os
-import re
-import subprocess
-import sys
-
-PROTOS = (
-  'protos/perfetto/config/chrome/chrome_config.proto',
-  'protos/perfetto/config/inode_file/inode_file_config.proto',
-  'protos/perfetto/config/process_stats/process_stats_config.proto',
-  'protos/perfetto/config/data_source_config.proto',
-  'protos/perfetto/config/ftrace/ftrace_config.proto',
-  'protos/perfetto/config/test_config.proto',
-  'protos/perfetto/config/trace_config.proto',
-)
-
-MERGED_OUT_PROTO = 'protos/perfetto/config/perfetto_config.proto'
-
-REPLACEMENT_HEADER = '''
-// AUTOGENERATED - DO NOT EDIT
-// ---------------------------
-// This file has been generated by
-// AOSP://external/perfetto/%s
-// merging the perfetto config protos.
-// This fused proto is intended to be copied in:
-//  - Android tree, for statsd.
-//  - Google internal repos.
-
-syntax = "proto2";
-
-package perfetto.protos;
-'''
-
-def main():
-  root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-  merged_content = ''
-  for proto in PROTOS:
-    path = os.path.join(root_dir, proto)
-    with open(path) as f:
-      content = f.read()
-
-    # Remove header
-    header = re.match(r'\/\*(?:.|\s)*?package.*;\n', content)
-    header = header.group(0)
-    content = content[len(header):]
-    if merged_content == '':
-      merged_content += REPLACEMENT_HEADER.lstrip() % __file__
-    content = re.sub(r'^import.*?\n', '', content, flags=re.MULTILINE)
-    content = re.sub(r'TODO\([^)]*\):', 'TODO:', content)
-    merged_content += '\n// Begin of %s\n' % proto
-    merged_content += content
-    merged_content += '\n// End of %s\n' % proto
-
-  out_path = os.path.join(root_dir, MERGED_OUT_PROTO)
-
-  prev_content = None
-  if os.path.exists(out_path):
-    with open(out_path, 'rb') as fprev:
-      prev_content = fprev.read()
-
-  if prev_content == merged_content:
-    return 0
-
-  if '--check-only' in sys.argv:
-    return 1
-
-  print 'Updating %s' % MERGED_OUT_PROTO
-  with open(out_path, 'wb') as fout:
-    fout.write(merged_content)
-  return 0
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/tools/protos_from_genfs_contexts.sh b/tools/protos_from_genfs_contexts.sh
new file mode 100644
index 0000000..e2e00d9
--- /dev/null
+++ b/tools/protos_from_genfs_contexts.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+for f in $(cat $1 | grep u:object_r:debugfs_tracing:s0 | grep tracing/events | awk '{ print $3 }' | xargs -n1 basename);do
+  if [ -f "protos/perfetto/trace/ftrace/$f.proto" ]; then
+    echo "'protos/perfetto/trace/ftrace/$f.proto',";
+  else
+    for x in $(find src/ftrace_reader/test/data/*/events -wholename '*/'"$f"'/format' -or -wholename '*/'"$f"'/*/format'); do
+      event=$(echo $x | awk -F / '{print $(NF - 1)}')
+      n="protos/perfetto/trace/ftrace/$event.proto";
+      if [ -f $n ]; then
+        echo "'$n',"
+      else
+          echo "# MISSING $event"
+      fi
+    done
+  fi
+done | sort
