Adding ftrace_events for events useful for long running traces

Bug: 72931698
Change-Id: I01f5005de61d2d9df1eb1d4c2fd8667d61e62dde
diff --git a/Android.bp b/Android.bp
index 6b350eb..ad0d4d1 100644
--- a/Android.bp
+++ b/Android.bp
@@ -408,6 +408,20 @@
     "protos/perfetto/trace/ftrace/mdp_sspp_set.proto",
     "protos/perfetto/trace/ftrace/mdp_trace_counter.proto",
     "protos/perfetto/trace/ftrace/mdp_video_underrun_done.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_begin.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_reset.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_deferred.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_end.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_finished.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_suitable.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.proto",
@@ -427,6 +441,7 @@
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_switch.proto",
     "protos/perfetto/trace/ftrace/sched_wakeup.proto",
+    "protos/perfetto/trace/ftrace/sched_wakeup_new.proto",
     "protos/perfetto/trace/ftrace/sched_waking.proto",
     "protos/perfetto/trace/ftrace/smbus_read.proto",
     "protos/perfetto/trace/ftrace/smbus_reply.proto",
@@ -435,6 +450,7 @@
     "protos/perfetto/trace/ftrace/softirq_entry.proto",
     "protos/perfetto/trace/ftrace/softirq_exit.proto",
     "protos/perfetto/trace/ftrace/softirq_raise.proto",
+    "protos/perfetto/trace/ftrace/suspend_resume.proto",
     "protos/perfetto/trace/ftrace/sync_pt.proto",
     "protos/perfetto/trace/ftrace/sync_timeline.proto",
     "protos/perfetto/trace/ftrace/sync_wait.proto",
@@ -513,6 +529,20 @@
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_sspp_set.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_trace_counter.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_video_underrun_done.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_begin.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_reset.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_deferred.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_finished.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_migratepages.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_suitable.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pb.cc",
@@ -532,6 +562,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup_new.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_waking.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_read.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_reply.pb.cc",
@@ -540,6 +571,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_entry.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_exit.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_raise.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/suspend_resume.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_pt.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_timeline.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_wait.pb.cc",
@@ -619,6 +651,20 @@
     "protos/perfetto/trace/ftrace/mdp_sspp_set.proto",
     "protos/perfetto/trace/ftrace/mdp_trace_counter.proto",
     "protos/perfetto/trace/ftrace/mdp_video_underrun_done.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_begin.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_reset.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_deferred.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_end.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_finished.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_suitable.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.proto",
@@ -638,6 +684,7 @@
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_switch.proto",
     "protos/perfetto/trace/ftrace/sched_wakeup.proto",
+    "protos/perfetto/trace/ftrace/sched_wakeup_new.proto",
     "protos/perfetto/trace/ftrace/sched_waking.proto",
     "protos/perfetto/trace/ftrace/smbus_read.proto",
     "protos/perfetto/trace/ftrace/smbus_reply.proto",
@@ -646,6 +693,7 @@
     "protos/perfetto/trace/ftrace/softirq_entry.proto",
     "protos/perfetto/trace/ftrace/softirq_exit.proto",
     "protos/perfetto/trace/ftrace/softirq_raise.proto",
+    "protos/perfetto/trace/ftrace/suspend_resume.proto",
     "protos/perfetto/trace/ftrace/sync_pt.proto",
     "protos/perfetto/trace/ftrace/sync_timeline.proto",
     "protos/perfetto/trace/ftrace/sync_wait.proto",
@@ -724,6 +772,20 @@
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_sspp_set.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_trace_counter.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_video_underrun_done.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_begin.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_reset.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_deferred.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_finished.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_migratepages.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_suitable.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pb.h",
@@ -743,6 +805,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup_new.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_waking.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_read.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_reply.pb.h",
@@ -751,6 +814,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_entry.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_exit.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_raise.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/suspend_resume.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_pt.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_timeline.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_wait.pb.h",
@@ -833,6 +897,20 @@
     "protos/perfetto/trace/ftrace/mdp_sspp_set.proto",
     "protos/perfetto/trace/ftrace/mdp_trace_counter.proto",
     "protos/perfetto/trace/ftrace/mdp_video_underrun_done.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_begin.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_reset.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_deferred.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_end.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_finished.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_suitable.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.proto",
@@ -852,6 +930,7 @@
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_switch.proto",
     "protos/perfetto/trace/ftrace/sched_wakeup.proto",
+    "protos/perfetto/trace/ftrace/sched_wakeup_new.proto",
     "protos/perfetto/trace/ftrace/sched_waking.proto",
     "protos/perfetto/trace/ftrace/smbus_read.proto",
     "protos/perfetto/trace/ftrace/smbus_reply.proto",
@@ -860,6 +939,7 @@
     "protos/perfetto/trace/ftrace/softirq_entry.proto",
     "protos/perfetto/trace/ftrace/softirq_exit.proto",
     "protos/perfetto/trace/ftrace/softirq_raise.proto",
+    "protos/perfetto/trace/ftrace/suspend_resume.proto",
     "protos/perfetto/trace/ftrace/sync_pt.proto",
     "protos/perfetto/trace/ftrace/sync_timeline.proto",
     "protos/perfetto/trace/ftrace/sync_wait.proto",
@@ -939,6 +1019,20 @@
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_sspp_set.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_trace_counter.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_video_underrun_done.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_begin.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_reset.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_deferred.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_finished.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_migratepages.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_suitable.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pbzero.cc",
@@ -958,6 +1052,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup_new.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_waking.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_read.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_reply.pbzero.cc",
@@ -966,6 +1061,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_entry.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_exit.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_raise.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/suspend_resume.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_pt.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_timeline.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_wait.pbzero.cc",
@@ -1045,6 +1141,20 @@
     "protos/perfetto/trace/ftrace/mdp_sspp_set.proto",
     "protos/perfetto/trace/ftrace/mdp_trace_counter.proto",
     "protos/perfetto/trace/ftrace/mdp_video_underrun_done.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_begin.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_defer_reset.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_deferred.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_end.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_finished.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_migratepages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_suitable.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto",
+    "protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto",
     "protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.proto",
@@ -1064,6 +1174,7 @@
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_switch.proto",
     "protos/perfetto/trace/ftrace/sched_wakeup.proto",
+    "protos/perfetto/trace/ftrace/sched_wakeup_new.proto",
     "protos/perfetto/trace/ftrace/sched_waking.proto",
     "protos/perfetto/trace/ftrace/smbus_read.proto",
     "protos/perfetto/trace/ftrace/smbus_reply.proto",
@@ -1072,6 +1183,7 @@
     "protos/perfetto/trace/ftrace/softirq_entry.proto",
     "protos/perfetto/trace/ftrace/softirq_exit.proto",
     "protos/perfetto/trace/ftrace/softirq_raise.proto",
+    "protos/perfetto/trace/ftrace/suspend_resume.proto",
     "protos/perfetto/trace/ftrace/sync_pt.proto",
     "protos/perfetto/trace/ftrace/sync_timeline.proto",
     "protos/perfetto/trace/ftrace/sync_wait.proto",
@@ -1151,6 +1263,20 @@
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_sspp_set.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_trace_counter.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_video_underrun_done.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_begin.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_defer_reset.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_deferred.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_finished.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_migratepages.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_suitable.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pbzero.h",
@@ -1170,6 +1296,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_switch.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/sched_wakeup_new.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_waking.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_read.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/smbus_reply.pbzero.h",
@@ -1178,6 +1305,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_entry.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_exit.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/softirq_raise.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/suspend_resume.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_pt.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_timeline.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sync_wait.pbzero.h",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 2f2eaae..ae406db 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -76,6 +76,20 @@
   "mdp_sspp_set.proto",
   "mdp_trace_counter.proto",
   "mdp_video_underrun_done.proto",
+  "mm_compaction_begin.proto",
+  "mm_compaction_defer_compaction.proto",
+  "mm_compaction_defer_reset.proto",
+  "mm_compaction_deferred.proto",
+  "mm_compaction_end.proto",
+  "mm_compaction_finished.proto",
+  "mm_compaction_isolate_freepages.proto",
+  "mm_compaction_isolate_migratepages.proto",
+  "mm_compaction_kcompactd_sleep.proto",
+  "mm_compaction_kcompactd_wake.proto",
+  "mm_compaction_migratepages.proto",
+  "mm_compaction_suitable.proto",
+  "mm_compaction_try_to_compact_pages.proto",
+  "mm_compaction_wakeup_kcompactd.proto",
   "mm_filemap_add_to_page_cache.proto",
   "mm_filemap_delete_from_page_cache.proto",
   "mm_vmscan_direct_reclaim_begin.proto",
@@ -95,6 +109,7 @@
   "sched_cpu_hotplug.proto",
   "sched_switch.proto",
   "sched_wakeup.proto",
+  "sched_wakeup_new.proto",
   "sched_waking.proto",
   "smbus_read.proto",
   "smbus_reply.proto",
@@ -103,6 +118,7 @@
   "softirq_entry.proto",
   "softirq_exit.proto",
   "softirq_raise.proto",
+  "suspend_resume.proto",
   "sync_pt.proto",
   "sync_timeline.proto",
   "sync_wait.proto",
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 3b6d4a1..b11748a 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -113,6 +113,22 @@
 import "perfetto/trace/ftrace/rotator_bw_ao_as_context.proto";
 import "perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto";
 import "perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto";
+import "perfetto/trace/ftrace/mm_compaction_begin.proto";
+import "perfetto/trace/ftrace/mm_compaction_defer_compaction.proto";
+import "perfetto/trace/ftrace/mm_compaction_defer_reset.proto";
+import "perfetto/trace/ftrace/mm_compaction_deferred.proto";
+import "perfetto/trace/ftrace/mm_compaction_end.proto";
+import "perfetto/trace/ftrace/mm_compaction_finished.proto";
+import "perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto";
+import "perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto";
+import "perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto";
+import "perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto";
+import "perfetto/trace/ftrace/mm_compaction_migratepages.proto";
+import "perfetto/trace/ftrace/mm_compaction_suitable.proto";
+import "perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto";
+import "perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto";
+import "perfetto/trace/ftrace/suspend_resume.proto";
+import "perfetto/trace/ftrace/sched_wakeup_new.proto";
 
 package perfetto.protos;
 
@@ -223,5 +239,24 @@
     MmFilemapAddToPageCacheFtraceEvent mm_filemap_add_to_page_cache = 97;
     MmFilemapDeleteFromPageCacheFtraceEvent mm_filemap_delete_from_page_cache =
         98;
+    MmCompactionBeginFtraceEvent mm_compaction_begin = 99;
+    MmCompactionDeferCompactionFtraceEvent mm_compaction_defer_compaction = 100;
+    MmCompactionDeferredFtraceEvent mm_compaction_deferred = 101;
+    MmCompactionDeferResetFtraceEvent mm_compaction_defer_reset = 102;
+    MmCompactionEndFtraceEvent mm_compaction_end = 103;
+    MmCompactionFinishedFtraceEvent mm_compaction_finished = 104;
+    MmCompactionIsolateFreepagesFtraceEvent mm_compaction_isolate_freepages =
+        105;
+    MmCompactionIsolateMigratepagesFtraceEvent
+        mm_compaction_isolate_migratepages = 106;
+    MmCompactionKcompactdSleepFtraceEvent mm_compaction_kcompactd_sleep = 107;
+    MmCompactionKcompactdWakeFtraceEvent mm_compaction_kcompactd_wake = 108;
+    MmCompactionMigratepagesFtraceEvent mm_compaction_migratepages = 109;
+    MmCompactionSuitableFtraceEvent mm_compaction_suitable = 110;
+    MmCompactionTryToCompactPagesFtraceEvent
+        mm_compaction_try_to_compact_pages = 111;
+    MmCompactionWakeupKcompactdFtraceEvent mm_compaction_wakeup_kcompactd = 112;
+    SuspendResumeFtraceEvent suspend_resume = 113;
+    SchedWakeupNewFtraceEvent sched_wakeup_new = 114;
   }
 }
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_begin.proto b/protos/perfetto/trace/ftrace/mm_compaction_begin.proto
new file mode 100644
index 0000000..d59150b
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_begin.proto
@@ -0,0 +1,13 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionBeginFtraceEvent {
+  optional uint64 zone_start = 1;
+  optional uint64 migrate_pfn = 2;
+  optional uint64 free_pfn = 3;
+  optional uint64 zone_end = 4;
+  optional uint32 sync = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.proto b/protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.proto
new file mode 100644
index 0000000..66a4982
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_defer_compaction.proto
@@ -0,0 +1,14 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionDeferCompactionFtraceEvent {
+  optional int32 nid = 1;
+  optional uint32 idx = 2;
+  optional int32 order = 3;
+  optional uint32 considered = 4;
+  optional uint32 defer_shift = 5;
+  optional int32 order_failed = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_defer_reset.proto b/protos/perfetto/trace/ftrace/mm_compaction_defer_reset.proto
new file mode 100644
index 0000000..e55edbe
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_defer_reset.proto
@@ -0,0 +1,14 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionDeferResetFtraceEvent {
+  optional int32 nid = 1;
+  optional uint32 idx = 2;
+  optional int32 order = 3;
+  optional uint32 considered = 4;
+  optional uint32 defer_shift = 5;
+  optional int32 order_failed = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_deferred.proto b/protos/perfetto/trace/ftrace/mm_compaction_deferred.proto
new file mode 100644
index 0000000..1e54d9f
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_deferred.proto
@@ -0,0 +1,14 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionDeferredFtraceEvent {
+  optional int32 nid = 1;
+  optional uint32 idx = 2;
+  optional int32 order = 3;
+  optional uint32 considered = 4;
+  optional uint32 defer_shift = 5;
+  optional int32 order_failed = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_end.proto b/protos/perfetto/trace/ftrace/mm_compaction_end.proto
new file mode 100644
index 0000000..1d76385
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_end.proto
@@ -0,0 +1,14 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionEndFtraceEvent {
+  optional uint64 zone_start = 1;
+  optional uint64 migrate_pfn = 2;
+  optional uint64 free_pfn = 3;
+  optional uint64 zone_end = 4;
+  optional uint32 sync = 5;
+  optional int32 status = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_finished.proto b/protos/perfetto/trace/ftrace/mm_compaction_finished.proto
new file mode 100644
index 0000000..56bae34
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_finished.proto
@@ -0,0 +1,12 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionFinishedFtraceEvent {
+  optional int32 nid = 1;
+  optional uint32 idx = 2;
+  optional int32 order = 3;
+  optional int32 ret = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto b/protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto
new file mode 100644
index 0000000..21dfe7b
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_isolate_freepages.proto
@@ -0,0 +1,12 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionIsolateFreepagesFtraceEvent {
+  optional uint64 start_pfn = 1;
+  optional uint64 end_pfn = 2;
+  optional uint64 nr_scanned = 3;
+  optional uint64 nr_taken = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto b/protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto
new file mode 100644
index 0000000..7b5a30a
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_isolate_migratepages.proto
@@ -0,0 +1,12 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionIsolateMigratepagesFtraceEvent {
+  optional uint64 start_pfn = 1;
+  optional uint64 end_pfn = 2;
+  optional uint64 nr_scanned = 3;
+  optional uint64 nr_taken = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto b/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto
new file mode 100644
index 0000000..a4dc14c
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_sleep.proto
@@ -0,0 +1,9 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionKcompactdSleepFtraceEvent {
+  optional int32 nid = 1;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto b/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto
new file mode 100644
index 0000000..f93e5a4
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_kcompactd_wake.proto
@@ -0,0 +1,11 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionKcompactdWakeFtraceEvent {
+  optional int32 nid = 1;
+  optional int32 order = 2;
+  optional uint32 classzone_idx = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_migratepages.proto b/protos/perfetto/trace/ftrace/mm_compaction_migratepages.proto
new file mode 100644
index 0000000..ed54e45
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_migratepages.proto
@@ -0,0 +1,10 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionMigratepagesFtraceEvent {
+  optional uint64 nr_migrated = 1;
+  optional uint64 nr_failed = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_suitable.proto b/protos/perfetto/trace/ftrace/mm_compaction_suitable.proto
new file mode 100644
index 0000000..e09cba6
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_suitable.proto
@@ -0,0 +1,12 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionSuitableFtraceEvent {
+  optional int32 nid = 1;
+  optional uint32 idx = 2;
+  optional int32 order = 3;
+  optional int32 ret = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto b/protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto
new file mode 100644
index 0000000..48a26d3
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_try_to_compact_pages.proto
@@ -0,0 +1,11 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionTryToCompactPagesFtraceEvent {
+  optional int32 order = 1;
+  optional uint32 gfp_mask = 2;
+  optional uint32 mode = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto b/protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto
new file mode 100644
index 0000000..da92386
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_compaction_wakeup_kcompactd.proto
@@ -0,0 +1,11 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmCompactionWakeupKcompactdFtraceEvent {
+  optional int32 nid = 1;
+  optional int32 order = 2;
+  optional uint32 classzone_idx = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/sched_wakeup_new.proto b/protos/perfetto/trace/ftrace/sched_wakeup_new.proto
new file mode 100644
index 0000000..d835656
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/sched_wakeup_new.proto
@@ -0,0 +1,13 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message SchedWakeupNewFtraceEvent {
+  optional string comm = 1;
+  optional int32 pid = 2;
+  optional int32 prio = 3;
+  optional int32 success = 4;
+  optional int32 target_cpu = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/suspend_resume.proto b/protos/perfetto/trace/ftrace/suspend_resume.proto
new file mode 100644
index 0000000..1277223
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/suspend_resume.proto
@@ -0,0 +1,11 @@
+// Autogenerated by ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc do not
+// edit.
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message SuspendResumeFtraceEvent {
+  optional string action = 1;
+  optional int32 val = 2;
+  optional uint32 start = 3;
+}
diff --git a/src/ftrace_reader/event_info.cc b/src/ftrace_reader/event_info.cc
index 3b66233..a5c90b3 100644
--- a/src/ftrace_reader/event_info.cc
+++ b/src/ftrace_reader/event_info.cc
@@ -194,6 +194,186 @@
   {
     events.emplace_back(Event{});
     Event* event = &events.back();
+    event->name = "mm_compaction_begin";
+    event->group = "compaction";
+    event->proto_field_id = 99;
+    event->fields.push_back(FieldFromNameIdType("zone_start", 1, kProtoUint64));
+    event->fields.push_back(
+        FieldFromNameIdType("migrate_pfn", 2, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("free_pfn", 3, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("zone_end", 4, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("sync", 5, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_defer_compaction";
+    event->group = "compaction";
+    event->proto_field_id = 100;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("idx", 2, kProtoUint32));
+    event->fields.push_back(FieldFromNameIdType("order", 3, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("considered", 4, kProtoUint32));
+    event->fields.push_back(
+        FieldFromNameIdType("defer_shift", 5, kProtoUint32));
+    event->fields.push_back(
+        FieldFromNameIdType("order_failed", 6, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_defer_reset";
+    event->group = "compaction";
+    event->proto_field_id = 102;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("idx", 2, kProtoUint32));
+    event->fields.push_back(FieldFromNameIdType("order", 3, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("considered", 4, kProtoUint32));
+    event->fields.push_back(
+        FieldFromNameIdType("defer_shift", 5, kProtoUint32));
+    event->fields.push_back(
+        FieldFromNameIdType("order_failed", 6, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_deferred";
+    event->group = "compaction";
+    event->proto_field_id = 101;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("idx", 2, kProtoUint32));
+    event->fields.push_back(FieldFromNameIdType("order", 3, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("considered", 4, kProtoUint32));
+    event->fields.push_back(
+        FieldFromNameIdType("defer_shift", 5, kProtoUint32));
+    event->fields.push_back(
+        FieldFromNameIdType("order_failed", 6, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_end";
+    event->group = "compaction";
+    event->proto_field_id = 103;
+    event->fields.push_back(FieldFromNameIdType("zone_start", 1, kProtoUint64));
+    event->fields.push_back(
+        FieldFromNameIdType("migrate_pfn", 2, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("free_pfn", 3, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("zone_end", 4, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("sync", 5, kProtoUint32));
+    event->fields.push_back(FieldFromNameIdType("status", 6, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_finished";
+    event->group = "compaction";
+    event->proto_field_id = 104;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("idx", 2, kProtoUint32));
+    event->fields.push_back(FieldFromNameIdType("order", 3, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("ret", 4, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_isolate_freepages";
+    event->group = "compaction";
+    event->proto_field_id = 105;
+    event->fields.push_back(FieldFromNameIdType("start_pfn", 1, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("end_pfn", 2, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("nr_scanned", 3, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("nr_taken", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_isolate_migratepages";
+    event->group = "compaction";
+    event->proto_field_id = 106;
+    event->fields.push_back(FieldFromNameIdType("start_pfn", 1, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("end_pfn", 2, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("nr_scanned", 3, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("nr_taken", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_kcompactd_sleep";
+    event->group = "compaction";
+    event->proto_field_id = 107;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_kcompactd_wake";
+    event->group = "compaction";
+    event->proto_field_id = 108;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("order", 2, kProtoInt32));
+    event->fields.push_back(
+        FieldFromNameIdType("classzone_idx", 3, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_migratepages";
+    event->group = "compaction";
+    event->proto_field_id = 109;
+    event->fields.push_back(
+        FieldFromNameIdType("nr_migrated", 1, kProtoUint64));
+    event->fields.push_back(FieldFromNameIdType("nr_failed", 2, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_suitable";
+    event->group = "compaction";
+    event->proto_field_id = 110;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("idx", 2, kProtoUint32));
+    event->fields.push_back(FieldFromNameIdType("order", 3, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("ret", 4, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_try_to_compact_pages";
+    event->group = "compaction";
+    event->proto_field_id = 111;
+    event->fields.push_back(FieldFromNameIdType("order", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("gfp_mask", 2, kProtoUint32));
+    event->fields.push_back(FieldFromNameIdType("mode", 3, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_compaction_wakeup_kcompactd";
+    event->group = "compaction";
+    event->proto_field_id = 112;
+    event->fields.push_back(FieldFromNameIdType("nid", 1, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("order", 2, kProtoInt32));
+    event->fields.push_back(
+        FieldFromNameIdType("classzone_idx", 3, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
     event->name = "cpufreq_interactive_already";
     event->group = "cpufreq_interactive";
     event->proto_field_id = 5;
@@ -888,6 +1068,17 @@
   {
     events.emplace_back(Event{});
     Event* event = &events.back();
+    event->name = "suspend_resume";
+    event->group = "power";
+    event->proto_field_id = 113;
+    event->fields.push_back(FieldFromNameIdType("action", 1, kProtoString));
+    event->fields.push_back(FieldFromNameIdType("val", 2, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("start", 3, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
     event->name = "regulator_disable";
     event->group = "regulator";
     event->proto_field_id = 60;
@@ -1005,6 +1196,19 @@
   {
     events.emplace_back(Event{});
     Event* event = &events.back();
+    event->name = "sched_wakeup_new";
+    event->group = "sched";
+    event->proto_field_id = 114;
+    event->fields.push_back(FieldFromNameIdType("comm", 1, kProtoString));
+    event->fields.push_back(FieldFromNameIdType("pid", 2, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("prio", 3, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("success", 4, kProtoInt32));
+    event->fields.push_back(FieldFromNameIdType("target_cpu", 5, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
     event->name = "sched_waking";
     event->group = "sched";
     event->proto_field_id = 20;
diff --git a/test/configs/ftrace.cfg b/test/configs/ftrace.cfg
index df3082e..749eb93 100644
--- a/test/configs/ftrace.cfg
+++ b/test/configs/ftrace.cfg
@@ -106,6 +106,22 @@
       event_names: "rotator_bw_ao_as_context"
       event_names: "mm_filemap_add_to_page_cache"
       event_names: "mm_filemap_delete_from_page_cache"
+      event_names: "mm_compaction_begin"
+      event_names: "mm_compaction_defer_compaction"
+      event_names: "mm_compaction_deferred"
+      event_names: "mm_compaction_defer_reset"
+      event_names: "mm_compaction_end"
+      event_names: "mm_compaction_finished"
+      event_names: "mm_compaction_isolate_freepages"
+      event_names: "mm_compaction_isolate_migratepages"
+      event_names: "mm_compaction_kcompactd_sleep"
+      event_names: "mm_compaction_kcompactd_wake"
+      event_names: "mm_compaction_migratepages"
+      event_names: "mm_compaction_suitable"
+      event_names: "mm_compaction_try_to_compact_pages"
+      event_names: "mm_compaction_wakeup_kcompactd"
+      event_names: "suspend_resume"
+      event_names: "sched_wakeup_new"
     }
   }
 }
diff --git a/tools/ftrace_proto_gen/event_whitelist b/tools/ftrace_proto_gen/event_whitelist
index a5cdde3..0735e00 100644
--- a/tools/ftrace_proto_gen/event_whitelist
+++ b/tools/ftrace_proto_gen/event_whitelist
@@ -94,3 +94,19 @@
 mdss/rotator_bw_ao_as_context
 filemap/mm_filemap_add_to_page_cache
 filemap/mm_filemap_delete_from_page_cache
+compaction/mm_compaction_begin
+compaction/mm_compaction_defer_compaction
+compaction/mm_compaction_deferred
+compaction/mm_compaction_defer_reset
+compaction/mm_compaction_end
+compaction/mm_compaction_finished
+compaction/mm_compaction_isolate_freepages
+compaction/mm_compaction_isolate_migratepages
+compaction/mm_compaction_kcompactd_sleep
+compaction/mm_compaction_kcompactd_wake
+compaction/mm_compaction_migratepages
+compaction/mm_compaction_suitable
+compaction/mm_compaction_try_to_compact_pages
+compaction/mm_compaction_wakeup_kcompactd
+power/suspend_resume
+sched/sched_wakeup_new
diff --git a/tools/trace_to_text/main.cc b/tools/trace_to_text/main.cc
index 147ba4a..084038c 100644
--- a/tools/trace_to_text/main.cc
+++ b/tools/trace_to_text/main.cc
@@ -166,6 +166,22 @@
 using protos::WorkqueueExecuteStartFtraceEvent;
 using protos::WorkqueueActivateWorkFtraceEvent;
 using protos::WorkqueueQueueWorkFtraceEvent;
+using protos::MmCompactionBeginFtraceEvent;
+using protos::MmCompactionDeferCompactionFtraceEvent;
+using protos::MmCompactionDeferredFtraceEvent;
+using protos::MmCompactionDeferResetFtraceEvent;
+using protos::MmCompactionEndFtraceEvent;
+using protos::MmCompactionFinishedFtraceEvent;
+using protos::MmCompactionIsolateFreepagesFtraceEvent;
+using protos::MmCompactionIsolateMigratepagesFtraceEvent;
+using protos::MmCompactionKcompactdSleepFtraceEvent;
+using protos::MmCompactionKcompactdWakeFtraceEvent;
+using protos::MmCompactionMigratepagesFtraceEvent;
+using protos::MmCompactionSuitableFtraceEvent;
+using protos::MmCompactionTryToCompactPagesFtraceEvent;
+using protos::MmCompactionWakeupKcompactdFtraceEvent;
+using protos::SuspendResumeFtraceEvent;
+using protos::SchedWakeupNewFtraceEvent;
 using protos::Trace;
 using protos::TracePacket;
 
@@ -208,6 +224,16 @@
   return "R";
 }
 
+const char* MmCompactionRetArray[] = {
+    "deferred", "skipped",          "continue",          "partial",
+    "complete", "no_suitable_page", "not_suitable_zone", "contended"};
+
+const char* MmCompactionSuitableArray[] = {"DMA", "Normal", "Movable"};
+
+const char* SoftirqArray[] = {"HI",      "TIMER",        "NET_TX",  "NET_RX",
+                              "BLOCK",   "BLOCK_IOPOLL", "TASKLET", "SCHED",
+                              "HRTIMER", "RCU"};
+
 uint64_t TimestampToSeconds(uint64_t timestamp) {
   return timestamp / 1000000000ul;
 }
@@ -559,27 +585,21 @@
 std::string FormatSoftirqRaise(const SoftirqRaiseFtraceEvent& event) {
   char line[2048];
   sprintf(line, "softirq_raise: vec=%u [action=%s]\\n", event.vec(),
-          "({ 0, 'HI' }, {1, 'TIMER' }, { 2, 'NET_TX' }, { 3, 'NET_RX' }, { 4, "
-          "'BLOCK' }, { 5, 'BLOCK_IOPOLL' }, { 6, 'TASKLET' }, { 7, 'SCHED' }, "
-          "{ 8, 'HRTIMER' }, { 9, 'RCU' })");
+          SoftirqArray[event.vec()]);
   return std::string(line);
 }
 
 std::string FormatSoftirqEntry(const SoftirqEntryFtraceEvent& event) {
   char line[2048];
   sprintf(line, "softirq_entry: vec=%u [action=%s]\\n", event.vec(),
-          "({ 0, 'HI' }, {1, 'TIMER' }, { 2, 'NET_TX' }, { 3, 'NET_RX' }, { 4, "
-          "'BLOCK' }, { 5, 'BLOCK_IOPOLL' }, { 6, 'TASKLET' }, { 7, 'SCHED' }, "
-          "{ 8, 'HRTIMER' }, { 9, 'RCU' })");
+          SoftirqArray[event.vec()]);
   return std::string(line);
 }
 
 std::string FormatSoftirqExit(const SoftirqExitFtraceEvent& event) {
   char line[2048];
   sprintf(line, "softirq_exit: vec=%u [action=%s]\\n", event.vec(),
-          "({ 0, 'HI' }, {1, 'TIMER' }, { 2, 'NET_TX' }, { 3, 'NET_RX' }, { 4, "
-          "'BLOCK' }, { 5, 'BLOCK_IOPOLL' }, { 6, 'TASKLET' }, { 7, 'SCHED' }, "
-          "{ 8, 'HRTIMER' }, { 9, 'RCU' })");
+          SoftirqArray[event.vec()]);
   return std::string(line);
 }
 
@@ -660,6 +680,162 @@
   return std::string(line);
 }
 
+std::string FormatMmCompactionBegin(const MmCompactionBeginFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_begin: zone_start=0x%llx migrate_pfn=0x%llx "
+          "free_pfn=0x%llx zone_end=0x%llx, mode=%s\\n",
+          event.zone_start(), event.migrate_pfn(), event.free_pfn(),
+          event.zone_end(), event.sync() ? "sync" : "async");
+  return std::string(line);
+}
+
+std::string FormatMmCompactionDeferCompaction(
+    const MmCompactionDeferCompactionFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_defer_compaction: node=%d zone=%-8s order=%d "
+          "order_failed=%d consider=%u limit=%lu\\n",
+          event.nid(), MmCompactionSuitableArray[event.idx()], event.order(),
+          event.order_failed(), event.considered(), 1UL << event.defer_shift());
+  return std::string(line);
+}
+
+std::string FormatMmCompactionDeferred(
+    const MmCompactionDeferredFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_deferred: node=%d zone=%-8s order=%d order_failed=%d "
+          "consider=%u limit=%lu\\n",
+          event.nid(), MmCompactionSuitableArray[event.idx()], event.order(),
+          event.order_failed(), event.considered(), 1UL << event.defer_shift());
+  return std::string(line);
+}
+
+std::string FormatMmCompactionDeferReset(
+    const MmCompactionDeferResetFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_defer_reset: node=%d zone=%-8s order=%d "
+          "order_failed=%d consider=%u limit=%lu\\n",
+          event.nid(), MmCompactionSuitableArray[event.idx()], event.order(),
+          event.order_failed(), event.considered(), 1UL << event.defer_shift());
+  return std::string(line);
+}
+
+std::string FormatMmCompactionEnd(const MmCompactionEndFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_end: zone_start=0x%llx migrate_pfn=0x%llx "
+          "free_pfn=0x%llx zone_end=0x%llx, mode=%s status=%s\\n",
+          event.zone_start(), event.migrate_pfn(), event.free_pfn(),
+          event.zone_end(), event.sync() ? "sync" : "aysnc",
+          MmCompactionRetArray[event.status()]);
+  return std::string(line);
+}
+
+std::string FormatMmCompactionFinished(
+    const MmCompactionFinishedFtraceEvent& event) {
+  char line[2048];
+  sprintf(line, "mm_compaction_finished: node=%d zone=%-8s order=%d ret=%s\\n",
+          event.nid(), MmCompactionSuitableArray[event.idx()], event.order(),
+          MmCompactionRetArray[event.ret()]);
+  return std::string(line);
+}
+
+std::string FormatMmCompactionIsolateFreepages(
+    const MmCompactionIsolateFreepagesFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_isolate_freepages: range=(0x%llx ~ 0x%llx) "
+          "nr_scanned=%llu nr_taken=%llu\\n",
+          event.start_pfn(), event.end_pfn(), event.nr_scanned(),
+          event.nr_taken());
+  return std::string(line);
+}
+
+std::string FormatMmCompactionIsolateMigratepages(
+    const MmCompactionIsolateMigratepagesFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_isolate_migratepages: range=(0x%llx ~ 0x%llx) "
+          "nr_scanned=%llu nr_taken=%llu\\n",
+          event.start_pfn(), event.end_pfn(), event.nr_scanned(),
+          event.nr_taken());
+  return std::string(line);
+}
+
+std::string FormatMmCompactionKcompactdSleep(
+    const MmCompactionKcompactdSleepFtraceEvent& event) {
+  char line[2048];
+  sprintf(line, "mm_compaction_kcompactd_sleep: nid=%d\\n", event.nid());
+  return std::string(line);
+}
+
+std::string FormatMmCompactionKcompactdWake(
+    const MmCompactionKcompactdWakeFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_kcompactd_wake: nid=%d order=%d classzone_idx=%-8s\\n",
+          event.nid(), event.order(),
+          MmCompactionSuitableArray[event.classzone_idx()]);
+  return std::string(line);
+}
+
+std::string FormatMmCompactionMigratepages(
+    const MmCompactionMigratepagesFtraceEvent& event) {
+  char line[2048];
+  sprintf(line,
+          "mm_compaction_migratepages: nr_migrated=%llu nr_failed=%llu\\n",
+          event.nr_migrated(), event.nr_failed());
+  return std::string(line);
+}
+
+std::string FormatMmCompactionSuitable(
+    const MmCompactionSuitableFtraceEvent& event) {
+  char line[2048];
+  sprintf(line, "mm_compaction_suitable: node=%d zone=%-8s order=%d ret=%s\\n",
+          event.nid(), MmCompactionSuitableArray[event.idx()], event.order(),
+          MmCompactionRetArray[event.ret()]);
+  return std::string(line);
+}
+
+std::string FormatMmCompactionTryToCompactPages(
+    const MmCompactionTryToCompactPagesFtraceEvent& event) {
+  char line[2048];
+  sprintf(
+      line,
+      "mm_compaction_try_to_compact_pages: order=%d gfp_mask=0x%x mode=%d\\n",
+      event.order(), event.gfp_mask(),
+      event.mode());  // convert to int?
+  return std::string(line);
+}
+
+std::string FormatMmCompactionWakeupKcompactd(
+    const MmCompactionWakeupKcompactdFtraceEvent& event) {
+  char line[2048];
+  sprintf(
+      line,
+      "mm_compaction_wakeup_kcompactd: nid=%d order=%d classzone_idx=%-8s\\n",
+      event.nid(), event.order(),
+      MmCompactionSuitableArray[event.classzone_idx()]);
+  return std::string(line);
+}
+
+std::string FormatSuspendResume(const SuspendResumeFtraceEvent& event) {
+  char line[2048];
+  sprintf(line, "suspend_resume: %s[%u] %s\\n", event.action().c_str(),
+          event.val(), event.start() ? "begin" : "end");
+  return std::string(line);
+}
+
+std::string FormatSchedWakeupNew(const SchedWakeupNewFtraceEvent& event) {
+  char line[2048];
+  sprintf(line, "sched_wakeup_new: comm=%s pid=%d prio=%d target_cpu=%03d\\n",
+          event.comm().c_str(), event.pid(), event.prio(), event.target_cpu());
+  return std::string(line);
+}
+
 int TraceToSystrace(std::istream* input, std::ostream* output) {
   std::multimap<uint64_t, std::string> sorted;
 
@@ -829,6 +1005,51 @@
       } else if (event.has_workqueue_activate_work()) {
         const auto& inner = event.workqueue_activate_work();
         line = FormatWorkqueueActivateWork(inner);
+      } else if (event.has_mm_compaction_begin()) {
+        const auto& inner = event.mm_compaction_begin();
+        line = FormatMmCompactionBegin(inner);
+      } else if (event.has_mm_compaction_deferred()) {
+        const auto& inner = event.mm_compaction_deferred();
+        line = FormatMmCompactionDeferred(inner);
+      } else if (event.has_mm_compaction_defer_reset()) {
+        const auto& inner = event.mm_compaction_defer_reset();
+        line = FormatMmCompactionDeferReset(inner);
+      } else if (event.has_mm_compaction_end()) {
+        const auto& inner = event.mm_compaction_end();
+        line = FormatMmCompactionEnd(inner);
+      } else if (event.has_mm_compaction_finished()) {
+        const auto& inner = event.mm_compaction_finished();
+        line = FormatMmCompactionFinished(inner);
+      } else if (event.has_mm_compaction_isolate_freepages()) {
+        const auto& inner = event.mm_compaction_isolate_freepages();
+        line = FormatMmCompactionIsolateFreepages(inner);
+      } else if (event.has_mm_compaction_isolate_migratepages()) {
+        const auto& inner = event.mm_compaction_isolate_migratepages();
+        line = FormatMmCompactionIsolateMigratepages(inner);
+      } else if (event.has_mm_compaction_kcompactd_sleep()) {
+        const auto& inner = event.mm_compaction_kcompactd_sleep();
+        line = FormatMmCompactionKcompactdSleep(inner);
+      } else if (event.has_mm_compaction_kcompactd_wake()) {
+        const auto& inner = event.mm_compaction_kcompactd_wake();
+        line = FormatMmCompactionKcompactdWake(inner);
+      } else if (event.has_mm_compaction_migratepages()) {
+        const auto& inner = event.mm_compaction_migratepages();
+        line = FormatMmCompactionMigratepages(inner);
+      } else if (event.has_mm_compaction_suitable()) {
+        const auto& inner = event.mm_compaction_suitable();
+        line = FormatMmCompactionSuitable(inner);
+      } else if (event.has_mm_compaction_try_to_compact_pages()) {
+        const auto& inner = event.mm_compaction_try_to_compact_pages();
+        line = FormatMmCompactionTryToCompactPages(inner);
+      } else if (event.has_mm_compaction_wakeup_kcompactd()) {
+        const auto& inner = event.mm_compaction_wakeup_kcompactd();
+        line = FormatMmCompactionWakeupKcompactd(inner);
+      } else if (event.has_suspend_resume()) {
+        const auto& inner = event.suspend_resume();
+        line = FormatSuspendResume(inner);
+      } else if (event.has_sched_wakeup_new()) {
+        const auto& inner = event.sched_wakeup_new();
+        line = FormatSchedWakeupNew(inner);
       } else {
         continue;
       }