ftrace: Add kmem trace events

This CL adds new rss/ion trace events and whitelists
all known kmem events.

Bug: 117460566
Change-Id: I397c2a9c4336ea5f427b590b6d9db268d73e2986
diff --git a/Android.bp b/Android.bp
index 666c22d..e395ed5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -818,6 +818,12 @@
 genrule {
   name: "perfetto_protos_perfetto_trace_ftrace_lite_gen",
   srcs: [
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_start.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_start.proto",
     "protos/perfetto/trace/ftrace/binder_lock.proto",
     "protos/perfetto/trace/ftrace/binder_locked.proto",
     "protos/perfetto/trace/ftrace/binder_set_priority.proto",
@@ -864,6 +870,7 @@
     "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/dma_alloc_contiguous_retry.proto",
     "protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_inode.proto",
@@ -997,11 +1004,36 @@
     "protos/perfetto/trace/ftrace/i2c_reply.proto",
     "protos/perfetto/trace/ftrace/i2c_result.proto",
     "protos/perfetto/trace/ftrace/i2c_write.proto",
+    "protos/perfetto/trace/ftrace/iommu_map_range.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_alloc_retry.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_grow.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_shrink.proto",
+    "protos/perfetto/trace/ftrace/ion_prefetching.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.proto",
     "protos/perfetto/trace/ftrace/ipi_entry.proto",
     "protos/perfetto/trace/ftrace/ipi_exit.proto",
     "protos/perfetto/trace/ftrace/ipi_raise.proto",
     "protos/perfetto/trace/ftrace/irq_handler_entry.proto",
     "protos/perfetto/trace/ftrace/irq_handler_exit.proto",
+    "protos/perfetto/trace/ftrace/kfree.proto",
+    "protos/perfetto/trace/ftrace/kmalloc.proto",
+    "protos/perfetto/trace/ftrace/kmalloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_free.proto",
     "protos/perfetto/trace/ftrace/lowmemory_kill.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_kickoff.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.proto",
@@ -1022,6 +1054,9 @@
     "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/migrate_pages_end.proto",
+    "protos/perfetto/trace/ftrace/migrate_pages_start.proto",
+    "protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -1038,6 +1073,12 @@
     "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_page_alloc.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free_batched.proto",
+    "protos/perfetto/trace/ftrace/mm_page_pcpu_drain.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",
@@ -1051,6 +1092,7 @@
     "protos/perfetto/trace/ftrace/regulator_set_voltage.proto",
     "protos/perfetto/trace/ftrace/regulator_set_voltage_complete.proto",
     "protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.proto",
+    "protos/perfetto/trace/ftrace/rss_stat.proto",
     "protos/perfetto/trace/ftrace/sched_blocked_reason.proto",
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_process_exec.proto",
@@ -1088,6 +1130,12 @@
   ],
   cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
   out: [
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_start.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_fail.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_start.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_lock.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_locked.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_set_priority.pb.cc",
@@ -1134,6 +1182,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_setspeed.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_target.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_unboost.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/dma_alloc_contiguous_retry.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_blocks.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_inode.pb.cc",
@@ -1267,11 +1316,36 @@
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_reply.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_result.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_write.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_map_range.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_start.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_alloc_retry.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_grow.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_shrink.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_prefetching.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_entry.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_exit.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_raise.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_entry.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_exit.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kfree.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc_node.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc_node.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_free.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemory_kill.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_kickoff.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.pb.cc",
@@ -1292,6 +1366,9 @@
     "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/migrate_pages_end.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_pages_start.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -1308,6 +1385,12 @@
     "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_page_alloc.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free_batched.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_pcpu_drain.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pb.cc",
@@ -1321,6 +1404,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage_complete.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/rss_stat.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_blocked_reason.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_process_exec.pb.cc",
@@ -1359,6 +1443,12 @@
 genrule {
   name: "perfetto_protos_perfetto_trace_ftrace_lite_gen_headers",
   srcs: [
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_start.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_start.proto",
     "protos/perfetto/trace/ftrace/binder_lock.proto",
     "protos/perfetto/trace/ftrace/binder_locked.proto",
     "protos/perfetto/trace/ftrace/binder_set_priority.proto",
@@ -1405,6 +1495,7 @@
     "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/dma_alloc_contiguous_retry.proto",
     "protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_inode.proto",
@@ -1538,11 +1629,36 @@
     "protos/perfetto/trace/ftrace/i2c_reply.proto",
     "protos/perfetto/trace/ftrace/i2c_result.proto",
     "protos/perfetto/trace/ftrace/i2c_write.proto",
+    "protos/perfetto/trace/ftrace/iommu_map_range.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_alloc_retry.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_grow.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_shrink.proto",
+    "protos/perfetto/trace/ftrace/ion_prefetching.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.proto",
     "protos/perfetto/trace/ftrace/ipi_entry.proto",
     "protos/perfetto/trace/ftrace/ipi_exit.proto",
     "protos/perfetto/trace/ftrace/ipi_raise.proto",
     "protos/perfetto/trace/ftrace/irq_handler_entry.proto",
     "protos/perfetto/trace/ftrace/irq_handler_exit.proto",
+    "protos/perfetto/trace/ftrace/kfree.proto",
+    "protos/perfetto/trace/ftrace/kmalloc.proto",
+    "protos/perfetto/trace/ftrace/kmalloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_free.proto",
     "protos/perfetto/trace/ftrace/lowmemory_kill.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_kickoff.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.proto",
@@ -1563,6 +1679,9 @@
     "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/migrate_pages_end.proto",
+    "protos/perfetto/trace/ftrace/migrate_pages_start.proto",
+    "protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -1579,6 +1698,12 @@
     "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_page_alloc.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free_batched.proto",
+    "protos/perfetto/trace/ftrace/mm_page_pcpu_drain.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",
@@ -1592,6 +1717,7 @@
     "protos/perfetto/trace/ftrace/regulator_set_voltage.proto",
     "protos/perfetto/trace/ftrace/regulator_set_voltage_complete.proto",
     "protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.proto",
+    "protos/perfetto/trace/ftrace/rss_stat.proto",
     "protos/perfetto/trace/ftrace/sched_blocked_reason.proto",
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_process_exec.proto",
@@ -1629,6 +1755,12 @@
   ],
   cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos $(in)",
   out: [
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_start.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_fail.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_start.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_lock.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_locked.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_set_priority.pb.h",
@@ -1675,6 +1807,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_setspeed.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_target.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_unboost.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/dma_alloc_contiguous_retry.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_blocks.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_inode.pb.h",
@@ -1808,11 +1941,36 @@
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_reply.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_result.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_write.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_map_range.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_start.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_alloc_retry.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_grow.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_shrink.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_prefetching.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_entry.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_exit.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_raise.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_entry.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_exit.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kfree.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc_node.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc_node.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_free.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemory_kill.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_kickoff.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.pb.h",
@@ -1833,6 +1991,9 @@
     "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/migrate_pages_end.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_pages_start.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -1849,6 +2010,12 @@
     "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_page_alloc.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free_batched.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_pcpu_drain.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pb.h",
@@ -1862,6 +2029,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage_complete.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/rss_stat.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_blocked_reason.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_process_exec.pb.h",
@@ -1903,6 +2071,12 @@
 genrule {
   name: "perfetto_protos_perfetto_trace_ftrace_zero_gen",
   srcs: [
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_start.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_start.proto",
     "protos/perfetto/trace/ftrace/binder_lock.proto",
     "protos/perfetto/trace/ftrace/binder_locked.proto",
     "protos/perfetto/trace/ftrace/binder_set_priority.proto",
@@ -1949,6 +2123,7 @@
     "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/dma_alloc_contiguous_retry.proto",
     "protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_inode.proto",
@@ -2082,11 +2257,36 @@
     "protos/perfetto/trace/ftrace/i2c_reply.proto",
     "protos/perfetto/trace/ftrace/i2c_result.proto",
     "protos/perfetto/trace/ftrace/i2c_write.proto",
+    "protos/perfetto/trace/ftrace/iommu_map_range.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_alloc_retry.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_grow.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_shrink.proto",
+    "protos/perfetto/trace/ftrace/ion_prefetching.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.proto",
     "protos/perfetto/trace/ftrace/ipi_entry.proto",
     "protos/perfetto/trace/ftrace/ipi_exit.proto",
     "protos/perfetto/trace/ftrace/ipi_raise.proto",
     "protos/perfetto/trace/ftrace/irq_handler_entry.proto",
     "protos/perfetto/trace/ftrace/irq_handler_exit.proto",
+    "protos/perfetto/trace/ftrace/kfree.proto",
+    "protos/perfetto/trace/ftrace/kmalloc.proto",
+    "protos/perfetto/trace/ftrace/kmalloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_free.proto",
     "protos/perfetto/trace/ftrace/lowmemory_kill.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_kickoff.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.proto",
@@ -2107,6 +2307,9 @@
     "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/migrate_pages_end.proto",
+    "protos/perfetto/trace/ftrace/migrate_pages_start.proto",
+    "protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -2123,6 +2326,12 @@
     "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_page_alloc.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free_batched.proto",
+    "protos/perfetto/trace/ftrace/mm_page_pcpu_drain.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",
@@ -2136,6 +2345,7 @@
     "protos/perfetto/trace/ftrace/regulator_set_voltage.proto",
     "protos/perfetto/trace/ftrace/regulator_set_voltage_complete.proto",
     "protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.proto",
+    "protos/perfetto/trace/ftrace/rss_stat.proto",
     "protos/perfetto/trace/ftrace/sched_blocked_reason.proto",
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_process_exec.proto",
@@ -2174,6 +2384,12 @@
   ],
   cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/protos $(in)",
   out: [
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_start.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_fail.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_start.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_lock.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_locked.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_set_priority.pbzero.cc",
@@ -2220,6 +2436,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_setspeed.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_target.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_unboost.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/dma_alloc_contiguous_retry.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_blocks.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_inode.pbzero.cc",
@@ -2353,11 +2570,36 @@
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_reply.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_result.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_write.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_map_range.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_start.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_alloc_retry.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_grow.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_shrink.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_prefetching.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_entry.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_exit.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_raise.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_entry.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_exit.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kfree.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc_node.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc_node.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_free.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemory_kill.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_kickoff.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.pbzero.cc",
@@ -2378,6 +2620,9 @@
     "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/migrate_pages_end.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_pages_start.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -2394,6 +2639,12 @@
     "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_page_alloc.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free_batched.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_pcpu_drain.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pbzero.cc",
@@ -2407,6 +2658,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage_complete.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/rss_stat.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_blocked_reason.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_process_exec.pbzero.cc",
@@ -2445,6 +2697,12 @@
 genrule {
   name: "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
   srcs: [
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_iommu_start.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_end.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_fail.proto",
+    "protos/perfetto/trace/ftrace/alloc_pages_sys_start.proto",
     "protos/perfetto/trace/ftrace/binder_lock.proto",
     "protos/perfetto/trace/ftrace/binder_locked.proto",
     "protos/perfetto/trace/ftrace/binder_set_priority.proto",
@@ -2491,6 +2749,7 @@
     "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/dma_alloc_contiguous_retry.proto",
     "protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto",
     "protos/perfetto/trace/ftrace/ext4_allocate_inode.proto",
@@ -2624,11 +2883,36 @@
     "protos/perfetto/trace/ftrace/i2c_reply.proto",
     "protos/perfetto/trace/ftrace/i2c_result.proto",
     "protos/perfetto/trace/ftrace/i2c_write.proto",
+    "protos/perfetto/trace/ftrace/iommu_map_range.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto",
+    "protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto",
+    "protos/perfetto/trace/ftrace/ion_alloc_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_alloc_retry.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.proto",
+    "protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_grow.proto",
+    "protos/perfetto/trace/ftrace/ion_heap_shrink.proto",
+    "protos/perfetto/trace/ftrace/ion_prefetching.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.proto",
+    "protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.proto",
     "protos/perfetto/trace/ftrace/ipi_entry.proto",
     "protos/perfetto/trace/ftrace/ipi_exit.proto",
     "protos/perfetto/trace/ftrace/ipi_raise.proto",
     "protos/perfetto/trace/ftrace/irq_handler_entry.proto",
     "protos/perfetto/trace/ftrace/irq_handler_exit.proto",
+    "protos/perfetto/trace/ftrace/kfree.proto",
+    "protos/perfetto/trace/ftrace/kmalloc.proto",
+    "protos/perfetto/trace/ftrace/kmalloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_alloc_node.proto",
+    "protos/perfetto/trace/ftrace/kmem_cache_free.proto",
     "protos/perfetto/trace/ftrace/lowmemory_kill.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_kickoff.proto",
     "protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.proto",
@@ -2649,6 +2933,9 @@
     "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/migrate_pages_end.proto",
+    "protos/perfetto/trace/ftrace/migrate_pages_start.proto",
+    "protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -2665,6 +2952,12 @@
     "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_page_alloc.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.proto",
+    "protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free.proto",
+    "protos/perfetto/trace/ftrace/mm_page_free_batched.proto",
+    "protos/perfetto/trace/ftrace/mm_page_pcpu_drain.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",
@@ -2678,6 +2971,7 @@
     "protos/perfetto/trace/ftrace/regulator_set_voltage.proto",
     "protos/perfetto/trace/ftrace/regulator_set_voltage_complete.proto",
     "protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.proto",
+    "protos/perfetto/trace/ftrace/rss_stat.proto",
     "protos/perfetto/trace/ftrace/sched_blocked_reason.proto",
     "protos/perfetto/trace/ftrace/sched_cpu_hotplug.proto",
     "protos/perfetto/trace/ftrace/sched_process_exec.proto",
@@ -2716,6 +3010,12 @@
   ],
   cmd: "mkdir -p $(genDir)/external/perfetto/protos && $(location aprotoc) --cpp_out=$(genDir)/external/perfetto/protos --proto_path=external/perfetto/protos --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_protoc_plugin___gn_standalone_toolchain_gcc_like_host_) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/protos $(in)",
   out: [
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_iommu_start.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_fail.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/alloc_pages_sys_start.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_lock.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_locked.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/binder_set_priority.pbzero.h",
@@ -2762,6 +3062,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_setspeed.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_target.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/cpufreq_interactive_unboost.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/dma_alloc_contiguous_retry.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_blocks.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4_allocate_inode.pbzero.h",
@@ -2895,11 +3196,36 @@
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_reply.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_result.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/i2c_write.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_map_range.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_alloc_buffer_start.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_alloc_retry.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_grow.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_heap_shrink.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_prefetching.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_entry.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_exit.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ipi_raise.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_entry.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/irq_handler_exit.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kfree.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmalloc_node.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_alloc_node.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/kmem_cache_free.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/lowmemory_kill.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_kickoff.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mdp_cmd_pingpong_done.pbzero.h",
@@ -2920,6 +3246,9 @@
     "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/migrate_pages_end.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_pages_start.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/migrate_retry.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",
@@ -2936,6 +3265,12 @@
     "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_page_alloc.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_free_batched.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/mm_page_pcpu_drain.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_begin.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pbzero.h",
@@ -2949,6 +3284,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/regulator_set_voltage_complete.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/rotator_bw_ao_as_context.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/rss_stat.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_blocked_reason.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_cpu_hotplug.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/sched_process_exec.pbzero.h",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 4ba9466..dc914a1 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -279,4 +279,46 @@
   "f2fs_write_begin.proto",
   "f2fs_write_checkpoint.proto",
   "f2fs_write_end.proto",
+  "alloc_pages_iommu_end.proto",
+  "alloc_pages_iommu_fail.proto",
+  "alloc_pages_iommu_start.proto",
+  "alloc_pages_sys_end.proto",
+  "alloc_pages_sys_fail.proto",
+  "alloc_pages_sys_start.proto",
+  "dma_alloc_contiguous_retry.proto",
+  "iommu_map_range.proto",
+  "iommu_sec_ptbl_map_range_end.proto",
+  "iommu_sec_ptbl_map_range_start.proto",
+  "ion_alloc_buffer_end.proto",
+  "ion_alloc_buffer_fail.proto",
+  "ion_alloc_buffer_fallback.proto",
+  "ion_alloc_buffer_start.proto",
+  "ion_cp_alloc_retry.proto",
+  "ion_cp_secure_buffer_end.proto",
+  "ion_cp_secure_buffer_start.proto",
+  "ion_prefetching.proto",
+  "ion_secure_cma_add_to_pool_end.proto",
+  "ion_secure_cma_add_to_pool_start.proto",
+  "ion_secure_cma_allocate_end.proto",
+  "ion_secure_cma_allocate_start.proto",
+  "ion_secure_cma_shrink_pool_end.proto",
+  "ion_secure_cma_shrink_pool_start.proto",
+  "kfree.proto",
+  "kmalloc.proto",
+  "kmalloc_node.proto",
+  "kmem_cache_alloc.proto",
+  "kmem_cache_alloc_node.proto",
+  "kmem_cache_free.proto",
+  "migrate_pages_end.proto",
+  "migrate_pages_start.proto",
+  "migrate_retry.proto",
+  "mm_page_alloc.proto",
+  "mm_page_alloc_extfrag.proto",
+  "mm_page_alloc_zone_locked.proto",
+  "mm_page_free.proto",
+  "mm_page_free_batched.proto",
+  "mm_page_pcpu_drain.proto",
+  "rss_stat.proto",
+  "ion_heap_shrink.proto",
+  "ion_heap_grow.proto",
 ]
diff --git a/protos/perfetto/trace/ftrace/alloc_pages_iommu_end.proto b/protos/perfetto/trace/ftrace/alloc_pages_iommu_end.proto
new file mode 100644
index 0000000..c40ce37
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/alloc_pages_iommu_end.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 AllocPagesIommuEndFtraceEvent {
+  optional uint32 gfp_flags = 1;
+  optional uint32 order = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.proto b/protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.proto
new file mode 100644
index 0000000..1402ac8
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/alloc_pages_iommu_fail.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 AllocPagesIommuFailFtraceEvent {
+  optional uint32 gfp_flags = 1;
+  optional uint32 order = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/alloc_pages_iommu_start.proto b/protos/perfetto/trace/ftrace/alloc_pages_iommu_start.proto
new file mode 100644
index 0000000..f00df2f
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/alloc_pages_iommu_start.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 AllocPagesIommuStartFtraceEvent {
+  optional uint32 gfp_flags = 1;
+  optional uint32 order = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/alloc_pages_sys_end.proto b/protos/perfetto/trace/ftrace/alloc_pages_sys_end.proto
new file mode 100644
index 0000000..5f67fd0
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/alloc_pages_sys_end.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 AllocPagesSysEndFtraceEvent {
+  optional uint32 gfp_flags = 1;
+  optional uint32 order = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/alloc_pages_sys_fail.proto b/protos/perfetto/trace/ftrace/alloc_pages_sys_fail.proto
new file mode 100644
index 0000000..5aba733
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/alloc_pages_sys_fail.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 AllocPagesSysFailFtraceEvent {
+  optional uint32 gfp_flags = 1;
+  optional uint32 order = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/alloc_pages_sys_start.proto b/protos/perfetto/trace/ftrace/alloc_pages_sys_start.proto
new file mode 100644
index 0000000..be4bbe5
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/alloc_pages_sys_start.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 AllocPagesSysStartFtraceEvent {
+  optional uint32 gfp_flags = 1;
+  optional uint32 order = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/dma_alloc_contiguous_retry.proto b/protos/perfetto/trace/ftrace/dma_alloc_contiguous_retry.proto
new file mode 100644
index 0000000..6b2a446
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/dma_alloc_contiguous_retry.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 DmaAllocContiguousRetryFtraceEvent {
+  optional int32 tries = 1;
+}
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 52b8f98..876887b 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -265,6 +265,48 @@
 import "perfetto/trace/ftrace/f2fs_write_begin.proto";
 import "perfetto/trace/ftrace/f2fs_write_checkpoint.proto";
 import "perfetto/trace/ftrace/f2fs_write_end.proto";
+import "perfetto/trace/ftrace/alloc_pages_iommu_end.proto";
+import "perfetto/trace/ftrace/alloc_pages_iommu_fail.proto";
+import "perfetto/trace/ftrace/alloc_pages_iommu_start.proto";
+import "perfetto/trace/ftrace/alloc_pages_sys_end.proto";
+import "perfetto/trace/ftrace/alloc_pages_sys_fail.proto";
+import "perfetto/trace/ftrace/alloc_pages_sys_start.proto";
+import "perfetto/trace/ftrace/dma_alloc_contiguous_retry.proto";
+import "perfetto/trace/ftrace/iommu_map_range.proto";
+import "perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto";
+import "perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto";
+import "perfetto/trace/ftrace/ion_alloc_buffer_end.proto";
+import "perfetto/trace/ftrace/ion_alloc_buffer_fail.proto";
+import "perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto";
+import "perfetto/trace/ftrace/ion_alloc_buffer_start.proto";
+import "perfetto/trace/ftrace/ion_cp_alloc_retry.proto";
+import "perfetto/trace/ftrace/ion_cp_secure_buffer_end.proto";
+import "perfetto/trace/ftrace/ion_cp_secure_buffer_start.proto";
+import "perfetto/trace/ftrace/ion_prefetching.proto";
+import "perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.proto";
+import "perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.proto";
+import "perfetto/trace/ftrace/ion_secure_cma_allocate_end.proto";
+import "perfetto/trace/ftrace/ion_secure_cma_allocate_start.proto";
+import "perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.proto";
+import "perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.proto";
+import "perfetto/trace/ftrace/kfree.proto";
+import "perfetto/trace/ftrace/kmalloc.proto";
+import "perfetto/trace/ftrace/kmalloc_node.proto";
+import "perfetto/trace/ftrace/kmem_cache_alloc.proto";
+import "perfetto/trace/ftrace/kmem_cache_alloc_node.proto";
+import "perfetto/trace/ftrace/kmem_cache_free.proto";
+import "perfetto/trace/ftrace/migrate_pages_end.proto";
+import "perfetto/trace/ftrace/migrate_pages_start.proto";
+import "perfetto/trace/ftrace/migrate_retry.proto";
+import "perfetto/trace/ftrace/mm_page_alloc.proto";
+import "perfetto/trace/ftrace/mm_page_alloc_extfrag.proto";
+import "perfetto/trace/ftrace/mm_page_alloc_zone_locked.proto";
+import "perfetto/trace/ftrace/mm_page_free.proto";
+import "perfetto/trace/ftrace/mm_page_free_batched.proto";
+import "perfetto/trace/ftrace/mm_page_pcpu_drain.proto";
+import "perfetto/trace/ftrace/rss_stat.proto";
+import "perfetto/trace/ftrace/ion_heap_shrink.proto";
+import "perfetto/trace/ftrace/ion_heap_grow.proto";
 
 package perfetto.protos;
 
@@ -564,5 +606,49 @@
     F2fsWriteBeginFtraceEvent f2fs_write_begin = 271;
     F2fsWriteCheckpointFtraceEvent f2fs_write_checkpoint = 272;
     F2fsWriteEndFtraceEvent f2fs_write_end = 273;
+    AllocPagesIommuEndFtraceEvent alloc_pages_iommu_end = 274;
+    AllocPagesIommuFailFtraceEvent alloc_pages_iommu_fail = 275;
+    AllocPagesIommuStartFtraceEvent alloc_pages_iommu_start = 276;
+    AllocPagesSysEndFtraceEvent alloc_pages_sys_end = 277;
+    AllocPagesSysFailFtraceEvent alloc_pages_sys_fail = 278;
+    AllocPagesSysStartFtraceEvent alloc_pages_sys_start = 279;
+    DmaAllocContiguousRetryFtraceEvent dma_alloc_contiguous_retry = 280;
+    IommuMapRangeFtraceEvent iommu_map_range = 281;
+    IommuSecPtblMapRangeEndFtraceEvent iommu_sec_ptbl_map_range_end = 282;
+    IommuSecPtblMapRangeStartFtraceEvent iommu_sec_ptbl_map_range_start = 283;
+    IonAllocBufferEndFtraceEvent ion_alloc_buffer_end = 284;
+    IonAllocBufferFailFtraceEvent ion_alloc_buffer_fail = 285;
+    IonAllocBufferFallbackFtraceEvent ion_alloc_buffer_fallback = 286;
+    IonAllocBufferStartFtraceEvent ion_alloc_buffer_start = 287;
+    IonCpAllocRetryFtraceEvent ion_cp_alloc_retry = 288;
+    IonCpSecureBufferEndFtraceEvent ion_cp_secure_buffer_end = 289;
+    IonCpSecureBufferStartFtraceEvent ion_cp_secure_buffer_start = 290;
+    IonPrefetchingFtraceEvent ion_prefetching = 291;
+    IonSecureCmaAddToPoolEndFtraceEvent ion_secure_cma_add_to_pool_end = 292;
+    IonSecureCmaAddToPoolStartFtraceEvent ion_secure_cma_add_to_pool_start =
+        293;
+    IonSecureCmaAllocateEndFtraceEvent ion_secure_cma_allocate_end = 294;
+    IonSecureCmaAllocateStartFtraceEvent ion_secure_cma_allocate_start = 295;
+    IonSecureCmaShrinkPoolEndFtraceEvent ion_secure_cma_shrink_pool_end = 296;
+    IonSecureCmaShrinkPoolStartFtraceEvent ion_secure_cma_shrink_pool_start =
+        297;
+    KfreeFtraceEvent kfree = 298;
+    KmallocFtraceEvent kmalloc = 299;
+    KmallocNodeFtraceEvent kmalloc_node = 300;
+    KmemCacheAllocFtraceEvent kmem_cache_alloc = 301;
+    KmemCacheAllocNodeFtraceEvent kmem_cache_alloc_node = 302;
+    KmemCacheFreeFtraceEvent kmem_cache_free = 303;
+    MigratePagesEndFtraceEvent migrate_pages_end = 304;
+    MigratePagesStartFtraceEvent migrate_pages_start = 305;
+    MigrateRetryFtraceEvent migrate_retry = 306;
+    MmPageAllocFtraceEvent mm_page_alloc = 307;
+    MmPageAllocExtfragFtraceEvent mm_page_alloc_extfrag = 308;
+    MmPageAllocZoneLockedFtraceEvent mm_page_alloc_zone_locked = 309;
+    MmPageFreeFtraceEvent mm_page_free = 310;
+    MmPageFreeBatchedFtraceEvent mm_page_free_batched = 311;
+    MmPagePcpuDrainFtraceEvent mm_page_pcpu_drain = 312;
+    RssStatFtraceEvent rss_stat = 313;
+    IonHeapShrinkFtraceEvent ion_heap_shrink = 314;
+    IonHeapGrowFtraceEvent ion_heap_grow = 315;
   }
 }
diff --git a/protos/perfetto/trace/ftrace/iommu_map_range.proto b/protos/perfetto/trace/ftrace/iommu_map_range.proto
new file mode 100644
index 0000000..6fcfb16
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/iommu_map_range.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 IommuMapRangeFtraceEvent {
+  optional uint64 chunk_size = 1;
+  optional uint64 len = 2;
+  optional uint64 pa = 3;
+  optional uint64 va = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto b/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto
new file mode 100644
index 0000000..99ab7ca
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_end.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message IommuSecPtblMapRangeEndFtraceEvent {
+  optional uint64 len = 1;
+  optional int32 num = 2;
+  optional uint32 pa = 3;
+  optional int32 sec_id = 4;
+  optional uint64 va = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto b/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto
new file mode 100644
index 0000000..3294700
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/iommu_sec_ptbl_map_range_start.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message IommuSecPtblMapRangeStartFtraceEvent {
+  optional uint64 len = 1;
+  optional int32 num = 2;
+  optional uint32 pa = 3;
+  optional int32 sec_id = 4;
+  optional uint64 va = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_alloc_buffer_end.proto b/protos/perfetto/trace/ftrace/ion_alloc_buffer_end.proto
new file mode 100644
index 0000000..f863628
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_alloc_buffer_end.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message IonAllocBufferEndFtraceEvent {
+  optional string client_name = 1;
+  optional uint32 flags = 2;
+  optional string heap_name = 3;
+  optional uint64 len = 4;
+  optional uint32 mask = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.proto b/protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.proto
new file mode 100644
index 0000000..d947c8f
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_alloc_buffer_fail.proto
@@ -0,0 +1,16 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message IonAllocBufferFailFtraceEvent {
+  optional string client_name = 1;
+  optional int64 error = 2;
+  optional uint32 flags = 3;
+  optional string heap_name = 4;
+  optional uint64 len = 5;
+  optional uint32 mask = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto b/protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto
new file mode 100644
index 0000000..aae6dc4
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_alloc_buffer_fallback.proto
@@ -0,0 +1,16 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message IonAllocBufferFallbackFtraceEvent {
+  optional string client_name = 1;
+  optional int64 error = 2;
+  optional uint32 flags = 3;
+  optional string heap_name = 4;
+  optional uint64 len = 5;
+  optional uint32 mask = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_alloc_buffer_start.proto b/protos/perfetto/trace/ftrace/ion_alloc_buffer_start.proto
new file mode 100644
index 0000000..275f048
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_alloc_buffer_start.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message IonAllocBufferStartFtraceEvent {
+  optional string client_name = 1;
+  optional uint32 flags = 2;
+  optional string heap_name = 3;
+  optional uint64 len = 4;
+  optional uint32 mask = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_cp_alloc_retry.proto b/protos/perfetto/trace/ftrace/ion_cp_alloc_retry.proto
new file mode 100644
index 0000000..9f74112
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_cp_alloc_retry.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 IonCpAllocRetryFtraceEvent {
+  optional int32 tries = 1;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.proto b/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_end.proto
new file mode 100644
index 0000000..ecc4c56
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_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 IonCpSecureBufferEndFtraceEvent {
+  optional uint64 align = 1;
+  optional uint64 flags = 2;
+  optional string heap_name = 3;
+  optional uint64 len = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.proto b/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.proto
new file mode 100644
index 0000000..4169e23
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_cp_secure_buffer_start.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 IonCpSecureBufferStartFtraceEvent {
+  optional uint64 align = 1;
+  optional uint64 flags = 2;
+  optional string heap_name = 3;
+  optional uint64 len = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_heap_grow.proto b/protos/perfetto/trace/ftrace/ion_heap_grow.proto
new file mode 100644
index 0000000..9dc93d4
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_heap_grow.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 IonHeapGrowFtraceEvent {
+  optional string heap_name = 1;
+  optional uint64 len = 2;
+  optional int64 total_allocated = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_heap_shrink.proto b/protos/perfetto/trace/ftrace/ion_heap_shrink.proto
new file mode 100644
index 0000000..ba381f2
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_heap_shrink.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 IonHeapShrinkFtraceEvent {
+  optional string heap_name = 1;
+  optional uint64 len = 2;
+  optional int64 total_allocated = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_prefetching.proto b/protos/perfetto/trace/ftrace/ion_prefetching.proto
new file mode 100644
index 0000000..b65651e
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_prefetching.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 IonPrefetchingFtraceEvent {
+  optional uint64 len = 1;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.proto b/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.proto
new file mode 100644
index 0000000..bab06b9
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_end.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 IonSecureCmaAddToPoolEndFtraceEvent {
+  optional uint32 is_prefetch = 1;
+  optional uint64 len = 2;
+  optional int32 pool_total = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.proto b/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.proto
new file mode 100644
index 0000000..644f945
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_secure_cma_add_to_pool_start.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 IonSecureCmaAddToPoolStartFtraceEvent {
+  optional uint32 is_prefetch = 1;
+  optional uint64 len = 2;
+  optional int32 pool_total = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.proto b/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_end.proto
new file mode 100644
index 0000000..da89cda
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_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 IonSecureCmaAllocateEndFtraceEvent {
+  optional uint64 align = 1;
+  optional uint64 flags = 2;
+  optional string heap_name = 3;
+  optional uint64 len = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.proto b/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.proto
new file mode 100644
index 0000000..17aa8b9
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_secure_cma_allocate_start.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 IonSecureCmaAllocateStartFtraceEvent {
+  optional uint64 align = 1;
+  optional uint64 flags = 2;
+  optional string heap_name = 3;
+  optional uint64 len = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.proto b/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.proto
new file mode 100644
index 0000000..7323fce
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_end.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 IonSecureCmaShrinkPoolEndFtraceEvent {
+  optional uint64 drained_size = 1;
+  optional uint64 skipped_size = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.proto b/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.proto
new file mode 100644
index 0000000..e8ec021
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/ion_secure_cma_shrink_pool_start.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 IonSecureCmaShrinkPoolStartFtraceEvent {
+  optional uint64 drained_size = 1;
+  optional uint64 skipped_size = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/kfree.proto b/protos/perfetto/trace/ftrace/kfree.proto
new file mode 100644
index 0000000..2597408
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/kfree.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 KfreeFtraceEvent {
+  optional uint64 call_site = 1;
+  optional uint64 ptr = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/kmalloc.proto b/protos/perfetto/trace/ftrace/kmalloc.proto
new file mode 100644
index 0000000..d4b4f91
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/kmalloc.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message KmallocFtraceEvent {
+  optional uint64 bytes_alloc = 1;
+  optional uint64 bytes_req = 2;
+  optional uint64 call_site = 3;
+  optional uint32 gfp_flags = 4;
+  optional uint64 ptr = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/kmalloc_node.proto b/protos/perfetto/trace/ftrace/kmalloc_node.proto
new file mode 100644
index 0000000..9dd5abe
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/kmalloc_node.proto
@@ -0,0 +1,16 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message KmallocNodeFtraceEvent {
+  optional uint64 bytes_alloc = 1;
+  optional uint64 bytes_req = 2;
+  optional uint64 call_site = 3;
+  optional uint32 gfp_flags = 4;
+  optional int32 node = 5;
+  optional uint64 ptr = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/kmem_cache_alloc.proto b/protos/perfetto/trace/ftrace/kmem_cache_alloc.proto
new file mode 100644
index 0000000..6f541b9
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/kmem_cache_alloc.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message KmemCacheAllocFtraceEvent {
+  optional uint64 bytes_alloc = 1;
+  optional uint64 bytes_req = 2;
+  optional uint64 call_site = 3;
+  optional uint32 gfp_flags = 4;
+  optional uint64 ptr = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/kmem_cache_alloc_node.proto b/protos/perfetto/trace/ftrace/kmem_cache_alloc_node.proto
new file mode 100644
index 0000000..50eee66
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/kmem_cache_alloc_node.proto
@@ -0,0 +1,16 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message KmemCacheAllocNodeFtraceEvent {
+  optional uint64 bytes_alloc = 1;
+  optional uint64 bytes_req = 2;
+  optional uint64 call_site = 3;
+  optional uint32 gfp_flags = 4;
+  optional int32 node = 5;
+  optional uint64 ptr = 6;
+}
diff --git a/protos/perfetto/trace/ftrace/kmem_cache_free.proto b/protos/perfetto/trace/ftrace/kmem_cache_free.proto
new file mode 100644
index 0000000..b079406
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/kmem_cache_free.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 KmemCacheFreeFtraceEvent {
+  optional uint64 call_site = 1;
+  optional uint64 ptr = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/migrate_pages_end.proto b/protos/perfetto/trace/ftrace/migrate_pages_end.proto
new file mode 100644
index 0000000..a662b2b
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/migrate_pages_end.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 MigratePagesEndFtraceEvent {
+  optional int32 mode = 1;
+}
diff --git a/protos/perfetto/trace/ftrace/migrate_pages_start.proto b/protos/perfetto/trace/ftrace/migrate_pages_start.proto
new file mode 100644
index 0000000..29b7f69
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/migrate_pages_start.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 MigratePagesStartFtraceEvent {
+  optional int32 mode = 1;
+}
diff --git a/protos/perfetto/trace/ftrace/migrate_retry.proto b/protos/perfetto/trace/ftrace/migrate_retry.proto
new file mode 100644
index 0000000..8c25190
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/migrate_retry.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 MigrateRetryFtraceEvent {
+  optional int32 tries = 1;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_page_alloc.proto b/protos/perfetto/trace/ftrace/mm_page_alloc.proto
new file mode 100644
index 0000000..ca07943
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_page_alloc.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmPageAllocFtraceEvent {
+  optional uint32 gfp_flags = 1;
+  optional int32 migratetype = 2;
+  optional uint32 order = 3;
+  optional uint64 page = 4;
+  optional uint64 pfn = 5;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.proto b/protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.proto
new file mode 100644
index 0000000..9fb73f8c
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_page_alloc_extfrag.proto
@@ -0,0 +1,17 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message MmPageAllocExtfragFtraceEvent {
+  optional int32 alloc_migratetype = 1;
+  optional int32 alloc_order = 2;
+  optional int32 fallback_migratetype = 3;
+  optional int32 fallback_order = 4;
+  optional uint64 page = 5;
+  optional int32 change_ownership = 6;
+  optional uint64 pfn = 7;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.proto b/protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.proto
new file mode 100644
index 0000000..9562231
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_page_alloc_zone_locked.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 MmPageAllocZoneLockedFtraceEvent {
+  optional int32 migratetype = 1;
+  optional uint32 order = 2;
+  optional uint64 page = 3;
+  optional uint64 pfn = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_page_free.proto b/protos/perfetto/trace/ftrace/mm_page_free.proto
new file mode 100644
index 0000000..0c3083f
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_page_free.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 MmPageFreeFtraceEvent {
+  optional uint32 order = 1;
+  optional uint64 page = 2;
+  optional uint64 pfn = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_page_free_batched.proto b/protos/perfetto/trace/ftrace/mm_page_free_batched.proto
new file mode 100644
index 0000000..65cabd6
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_page_free_batched.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 MmPageFreeBatchedFtraceEvent {
+  optional int32 cold = 1;
+  optional uint64 page = 2;
+  optional uint64 pfn = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/mm_page_pcpu_drain.proto b/protos/perfetto/trace/ftrace/mm_page_pcpu_drain.proto
new file mode 100644
index 0000000..a10dfcb
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/mm_page_pcpu_drain.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 MmPagePcpuDrainFtraceEvent {
+  optional int32 migratetype = 1;
+  optional uint32 order = 2;
+  optional uint64 page = 3;
+  optional uint64 pfn = 4;
+}
diff --git a/protos/perfetto/trace/ftrace/rss_stat.proto b/protos/perfetto/trace/ftrace/rss_stat.proto
new file mode 100644
index 0000000..c3470d5
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/rss_stat.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 RssStatFtraceEvent {
+  optional int32 member = 1;
+  optional int64 size = 2;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 19dbd0c..23003fe 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -506,6 +506,48 @@
     F2fsWriteBeginFtraceEvent f2fs_write_begin = 271;
     // removed field with id 272
     F2fsWriteEndFtraceEvent f2fs_write_end = 273;
+    // removed field with id 274
+    // removed field with id 275
+    // removed field with id 276
+    // removed field with id 277
+    // removed field with id 278
+    // removed field with id 279
+    // removed field with id 280
+    // removed field with id 281
+    // removed field with id 282
+    // removed field with id 283
+    // removed field with id 284
+    // removed field with id 285
+    // removed field with id 286
+    // removed field with id 287
+    // removed field with id 288
+    // removed field with id 289
+    // removed field with id 290
+    // removed field with id 291
+    // removed field with id 292
+    // removed field with id 293
+    // removed field with id 294
+    // removed field with id 295
+    // removed field with id 296
+    // removed field with id 297
+    // removed field with id 298
+    // removed field with id 299
+    // removed field with id 300
+    // removed field with id 301
+    // removed field with id 302
+    // removed field with id 303
+    // removed field with id 304
+    // removed field with id 305
+    // removed field with id 306
+    // removed field with id 307
+    // removed field with id 308
+    // removed field with id 309
+    // removed field with id 310
+    // removed field with id 311
+    // removed field with id 312
+    // removed field with id 313
+    // removed field with id 314
+    // removed field with id 315
   }
 }
 
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index b8c1896..fcc910a 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -3236,6 +3236,482 @@
     event->fields.push_back(MakeField("copied", 5, kProtoUint32));
   }
 
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "alloc_pages_iommu_end";
+    event->group = "kmem";
+    event->proto_field_id = 274;
+    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "alloc_pages_iommu_fail";
+    event->group = "kmem";
+    event->proto_field_id = 275;
+    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "alloc_pages_iommu_start";
+    event->group = "kmem";
+    event->proto_field_id = 276;
+    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "alloc_pages_sys_end";
+    event->group = "kmem";
+    event->proto_field_id = 277;
+    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "alloc_pages_sys_fail";
+    event->group = "kmem";
+    event->proto_field_id = 278;
+    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "alloc_pages_sys_start";
+    event->group = "kmem";
+    event->proto_field_id = 279;
+    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "dma_alloc_contiguous_retry";
+    event->group = "kmem";
+    event->proto_field_id = 280;
+    event->fields.push_back(MakeField("tries", 1, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "iommu_map_range";
+    event->group = "kmem";
+    event->proto_field_id = 281;
+    event->fields.push_back(MakeField("chunk_size", 1, kProtoUint64));
+    event->fields.push_back(MakeField("len", 2, kProtoUint64));
+    event->fields.push_back(MakeField("pa", 3, kProtoUint64));
+    event->fields.push_back(MakeField("va", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "iommu_sec_ptbl_map_range_end";
+    event->group = "kmem";
+    event->proto_field_id = 282;
+    event->fields.push_back(MakeField("len", 1, kProtoUint64));
+    event->fields.push_back(MakeField("num", 2, kProtoInt32));
+    event->fields.push_back(MakeField("pa", 3, kProtoUint32));
+    event->fields.push_back(MakeField("sec_id", 4, kProtoInt32));
+    event->fields.push_back(MakeField("va", 5, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "iommu_sec_ptbl_map_range_start";
+    event->group = "kmem";
+    event->proto_field_id = 283;
+    event->fields.push_back(MakeField("len", 1, kProtoUint64));
+    event->fields.push_back(MakeField("num", 2, kProtoInt32));
+    event->fields.push_back(MakeField("pa", 3, kProtoUint32));
+    event->fields.push_back(MakeField("sec_id", 4, kProtoInt32));
+    event->fields.push_back(MakeField("va", 5, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_alloc_buffer_end";
+    event->group = "kmem";
+    event->proto_field_id = 284;
+    event->fields.push_back(MakeField("client_name", 1, kProtoString));
+    event->fields.push_back(MakeField("flags", 2, kProtoUint32));
+    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
+    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+    event->fields.push_back(MakeField("mask", 5, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_alloc_buffer_fail";
+    event->group = "kmem";
+    event->proto_field_id = 285;
+    event->fields.push_back(MakeField("client_name", 1, kProtoString));
+    event->fields.push_back(MakeField("error", 2, kProtoInt64));
+    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
+    event->fields.push_back(MakeField("heap_name", 4, kProtoString));
+    event->fields.push_back(MakeField("len", 5, kProtoUint64));
+    event->fields.push_back(MakeField("mask", 6, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_alloc_buffer_fallback";
+    event->group = "kmem";
+    event->proto_field_id = 286;
+    event->fields.push_back(MakeField("client_name", 1, kProtoString));
+    event->fields.push_back(MakeField("error", 2, kProtoInt64));
+    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
+    event->fields.push_back(MakeField("heap_name", 4, kProtoString));
+    event->fields.push_back(MakeField("len", 5, kProtoUint64));
+    event->fields.push_back(MakeField("mask", 6, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_alloc_buffer_start";
+    event->group = "kmem";
+    event->proto_field_id = 287;
+    event->fields.push_back(MakeField("client_name", 1, kProtoString));
+    event->fields.push_back(MakeField("flags", 2, kProtoUint32));
+    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
+    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+    event->fields.push_back(MakeField("mask", 5, kProtoUint32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_cp_alloc_retry";
+    event->group = "kmem";
+    event->proto_field_id = 288;
+    event->fields.push_back(MakeField("tries", 1, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_cp_secure_buffer_end";
+    event->group = "kmem";
+    event->proto_field_id = 289;
+    event->fields.push_back(MakeField("align", 1, kProtoUint64));
+    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
+    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
+    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_cp_secure_buffer_start";
+    event->group = "kmem";
+    event->proto_field_id = 290;
+    event->fields.push_back(MakeField("align", 1, kProtoUint64));
+    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
+    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
+    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_prefetching";
+    event->group = "kmem";
+    event->proto_field_id = 291;
+    event->fields.push_back(MakeField("len", 1, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_secure_cma_add_to_pool_end";
+    event->group = "kmem";
+    event->proto_field_id = 292;
+    event->fields.push_back(MakeField("is_prefetch", 1, kProtoUint32));
+    event->fields.push_back(MakeField("len", 2, kProtoUint64));
+    event->fields.push_back(MakeField("pool_total", 3, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_secure_cma_add_to_pool_start";
+    event->group = "kmem";
+    event->proto_field_id = 293;
+    event->fields.push_back(MakeField("is_prefetch", 1, kProtoUint32));
+    event->fields.push_back(MakeField("len", 2, kProtoUint64));
+    event->fields.push_back(MakeField("pool_total", 3, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_secure_cma_allocate_end";
+    event->group = "kmem";
+    event->proto_field_id = 294;
+    event->fields.push_back(MakeField("align", 1, kProtoUint64));
+    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
+    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
+    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_secure_cma_allocate_start";
+    event->group = "kmem";
+    event->proto_field_id = 295;
+    event->fields.push_back(MakeField("align", 1, kProtoUint64));
+    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
+    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
+    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_secure_cma_shrink_pool_end";
+    event->group = "kmem";
+    event->proto_field_id = 296;
+    event->fields.push_back(MakeField("drained_size", 1, kProtoUint64));
+    event->fields.push_back(MakeField("skipped_size", 2, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_secure_cma_shrink_pool_start";
+    event->group = "kmem";
+    event->proto_field_id = 297;
+    event->fields.push_back(MakeField("drained_size", 1, kProtoUint64));
+    event->fields.push_back(MakeField("skipped_size", 2, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "kfree";
+    event->group = "kmem";
+    event->proto_field_id = 298;
+    event->fields.push_back(MakeField("call_site", 1, kProtoUint64));
+    event->fields.push_back(MakeField("ptr", 2, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "kmalloc";
+    event->group = "kmem";
+    event->proto_field_id = 299;
+    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
+    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
+    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
+    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
+    event->fields.push_back(MakeField("ptr", 5, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "kmalloc_node";
+    event->group = "kmem";
+    event->proto_field_id = 300;
+    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
+    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
+    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
+    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
+    event->fields.push_back(MakeField("node", 5, kProtoInt32));
+    event->fields.push_back(MakeField("ptr", 6, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "kmem_cache_alloc";
+    event->group = "kmem";
+    event->proto_field_id = 301;
+    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
+    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
+    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
+    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
+    event->fields.push_back(MakeField("ptr", 5, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "kmem_cache_alloc_node";
+    event->group = "kmem";
+    event->proto_field_id = 302;
+    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
+    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
+    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
+    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
+    event->fields.push_back(MakeField("node", 5, kProtoInt32));
+    event->fields.push_back(MakeField("ptr", 6, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "kmem_cache_free";
+    event->group = "kmem";
+    event->proto_field_id = 303;
+    event->fields.push_back(MakeField("call_site", 1, kProtoUint64));
+    event->fields.push_back(MakeField("ptr", 2, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "migrate_pages_end";
+    event->group = "kmem";
+    event->proto_field_id = 304;
+    event->fields.push_back(MakeField("mode", 1, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "migrate_pages_start";
+    event->group = "kmem";
+    event->proto_field_id = 305;
+    event->fields.push_back(MakeField("mode", 1, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "migrate_retry";
+    event->group = "kmem";
+    event->proto_field_id = 306;
+    event->fields.push_back(MakeField("tries", 1, kProtoInt32));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_page_alloc";
+    event->group = "kmem";
+    event->proto_field_id = 307;
+    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
+    event->fields.push_back(MakeField("migratetype", 2, kProtoInt32));
+    event->fields.push_back(MakeField("order", 3, kProtoUint32));
+    event->fields.push_back(MakeField("page", 4, kProtoUint64));
+    event->fields.push_back(MakeField("pfn", 5, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_page_alloc_extfrag";
+    event->group = "kmem";
+    event->proto_field_id = 308;
+    event->fields.push_back(MakeField("alloc_migratetype", 1, kProtoInt32));
+    event->fields.push_back(MakeField("alloc_order", 2, kProtoInt32));
+    event->fields.push_back(MakeField("fallback_migratetype", 3, kProtoInt32));
+    event->fields.push_back(MakeField("fallback_order", 4, kProtoInt32));
+    event->fields.push_back(MakeField("page", 5, kProtoUint64));
+    event->fields.push_back(MakeField("change_ownership", 6, kProtoInt32));
+    event->fields.push_back(MakeField("pfn", 7, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_page_alloc_zone_locked";
+    event->group = "kmem";
+    event->proto_field_id = 309;
+    event->fields.push_back(MakeField("migratetype", 1, kProtoInt32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(MakeField("page", 3, kProtoUint64));
+    event->fields.push_back(MakeField("pfn", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_page_free";
+    event->group = "kmem";
+    event->proto_field_id = 310;
+    event->fields.push_back(MakeField("order", 1, kProtoUint32));
+    event->fields.push_back(MakeField("page", 2, kProtoUint64));
+    event->fields.push_back(MakeField("pfn", 3, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_page_free_batched";
+    event->group = "kmem";
+    event->proto_field_id = 311;
+    event->fields.push_back(MakeField("cold", 1, kProtoInt32));
+    event->fields.push_back(MakeField("page", 2, kProtoUint64));
+    event->fields.push_back(MakeField("pfn", 3, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "mm_page_pcpu_drain";
+    event->group = "kmem";
+    event->proto_field_id = 312;
+    event->fields.push_back(MakeField("migratetype", 1, kProtoInt32));
+    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(MakeField("page", 3, kProtoUint64));
+    event->fields.push_back(MakeField("pfn", 4, kProtoUint64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "rss_stat";
+    event->group = "kmem";
+    event->proto_field_id = 313;
+    event->fields.push_back(MakeField("member", 1, kProtoInt32));
+    event->fields.push_back(MakeField("size", 2, kProtoInt64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_heap_shrink";
+    event->group = "kmem";
+    event->proto_field_id = 314;
+    event->fields.push_back(MakeField("heap_name", 1, kProtoString));
+    event->fields.push_back(MakeField("len", 2, kProtoUint64));
+    event->fields.push_back(MakeField("total_allocated", 3, kProtoInt64));
+  }
+
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "ion_heap_grow";
+    event->group = "kmem";
+    event->proto_field_id = 315;
+    event->fields.push_back(MakeField("heap_name", 1, kProtoString));
+    event->fields.push_back(MakeField("len", 2, kProtoUint64));
+    event->fields.push_back(MakeField("total_allocated", 3, kProtoInt64));
+  }
+
   return events;
 }
 
diff --git a/src/traced/probes/ftrace/test/data/synthetic/available_events b/src/traced/probes/ftrace/test/data/synthetic/available_events
index 277a792..368906d 100644
--- a/src/traced/probes/ftrace/test/data/synthetic/available_events
+++ b/src/traced/probes/ftrace/test/data/synthetic/available_events
@@ -1,2 +1,4 @@
 sched:sched_switch
-
+kmem:ion_heap_grow
+kmem:ion_heap_shrink
+kmem:rss_stat
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/kmem/ion_heap_grow/format b/src/traced/probes/ftrace/test/data/synthetic/events/kmem/ion_heap_grow/format
new file mode 100644
index 0000000..a11f84f
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/kmem/ion_heap_grow/format
@@ -0,0 +1,13 @@
+name: ion_heap_grow
+ID: 219
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:const char * heap_name;	offset:8;	size:8;	signed:0;
+	field:size_t len;	offset:16;	size:8;	signed:0;
+	field:long total_allocated;	offset:24;	size:8;	signed:1;
+
+print fmt: "heap_name=%s, len=%zu, total_allocated=%ld", REC->heap_name, REC->len, REC->total_allocated
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/kmem/ion_heap_shrink/format b/src/traced/probes/ftrace/test/data/synthetic/events/kmem/ion_heap_shrink/format
new file mode 100644
index 0000000..c04eb4c
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/kmem/ion_heap_shrink/format
@@ -0,0 +1,13 @@
+name: ion_heap_shrink
+ID: 220
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:const char * heap_name;	offset:8;	size:8;	signed:0;
+	field:size_t len;	offset:16;	size:8;	signed:0;
+	field:long total_allocated;	offset:24;	size:8;	signed:1;
+
+print fmt: "heap_name=%s, len=%zu, total_allocated=%ld", REC->heap_name, REC->len, REC->total_allocated
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/kmem/rss_stat/format b/src/traced/probes/ftrace/test/data/synthetic/events/kmem/rss_stat/format
new file mode 100644
index 0000000..69d1c9c
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/kmem/rss_stat/format
@@ -0,0 +1,12 @@
+name: rss_stat
+ID: 243
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:int member;	offset:8;	size:4;	signed:1;
+	field:long size;	offset:16;	size:8;	signed:1;
+
+print fmt: "member=%d size=%ldKB", REC->member, REC->size
diff --git a/tools/ftrace_proto_gen/event_whitelist b/tools/ftrace_proto_gen/event_whitelist
index cfa1e15..93b5784 100644
--- a/tools/ftrace_proto_gen/event_whitelist
+++ b/tools/ftrace_proto_gen/event_whitelist
@@ -269,3 +269,45 @@
 f2fs/f2fs_write_begin
 f2fs/f2fs_write_checkpoint
 f2fs/f2fs_write_end
+kmem/alloc_pages_iommu_end
+kmem/alloc_pages_iommu_fail
+kmem/alloc_pages_iommu_start
+kmem/alloc_pages_sys_end
+kmem/alloc_pages_sys_fail
+kmem/alloc_pages_sys_start
+kmem/dma_alloc_contiguous_retry
+kmem/iommu_map_range
+kmem/iommu_sec_ptbl_map_range_end
+kmem/iommu_sec_ptbl_map_range_start
+kmem/ion_alloc_buffer_end
+kmem/ion_alloc_buffer_fail
+kmem/ion_alloc_buffer_fallback
+kmem/ion_alloc_buffer_start
+kmem/ion_cp_alloc_retry
+kmem/ion_cp_secure_buffer_end
+kmem/ion_cp_secure_buffer_start
+kmem/ion_prefetching
+kmem/ion_secure_cma_add_to_pool_end
+kmem/ion_secure_cma_add_to_pool_start
+kmem/ion_secure_cma_allocate_end
+kmem/ion_secure_cma_allocate_start
+kmem/ion_secure_cma_shrink_pool_end
+kmem/ion_secure_cma_shrink_pool_start
+kmem/kfree
+kmem/kmalloc
+kmem/kmalloc_node
+kmem/kmem_cache_alloc
+kmem/kmem_cache_alloc_node
+kmem/kmem_cache_free
+kmem/migrate_pages_end
+kmem/migrate_pages_start
+kmem/migrate_retry
+kmem/mm_page_alloc
+kmem/mm_page_alloc_extfrag
+kmem/mm_page_alloc_zone_locked
+kmem/mm_page_free
+kmem/mm_page_free_batched
+kmem/mm_page_pcpu_drain
+kmem/rss_stat
+kmem/ion_heap_shrink
+kmem/ion_heap_grow
\ No newline at end of file