diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index c73fb1679f93..bb305ea7fa30 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -297,6 +297,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_read_done); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_charge); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_id_remove); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_offline); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_online); @@ -451,6 +452,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_rwsem_reader_owned); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_clear_rwsem_reader_owned); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_rwsem_writer_owned); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_clear_rwsem_writer_owned); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_add_folio); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pr_set_vma_name_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_folio_trylock); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_folio_trylock_result); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 013b85d2c9a7..5696142eb51a 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -221,6 +221,9 @@ DECLARE_HOOK(android_vh_look_around, DECLARE_HOOK(android_vh_mm_alloc_pages_direct_reclaim_enter, TP_PROTO(unsigned int order), TP_ARGS(order)); +DECLARE_HOOK(android_vh_mem_cgroup_charge, + TP_PROTO(struct folio *folio, struct mem_cgroup **memcg), + TP_ARGS(folio, memcg)); DECLARE_HOOK(android_vh_should_fault_around, TP_PROTO(struct vm_fault *vmf, bool *should_around), TP_ARGS(vmf, should_around)); @@ -282,6 +285,10 @@ DECLARE_HOOK(android_vh_oom_swapmem_gather_init, DECLARE_HOOK(android_vh_oom_swapmem_gather_finish, TP_PROTO(struct mm_struct *mm), TP_ARGS(mm)); +DECLARE_HOOK(android_vh_filemap_add_folio, + TP_PROTO(struct address_space *mapping, struct folio *folio, + pgoff_t index), + TP_ARGS(mapping, folio, index)); DECLARE_HOOK(android_vh_do_read_fault, TP_PROTO(struct vm_fault *vmf, unsigned long fault_around_bytes), TP_ARGS(vmf, fault_around_bytes)); diff --git a/mm/filemap.c b/mm/filemap.c index 2c7ee688aa20..5a04eee34ba8 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -870,6 +870,7 @@ noinline int __filemap_add_folio(struct address_space *mapping, VM_BUG_ON_FOLIO(folio_test_swapbacked(folio), folio); mapping_set_update(&xas, mapping); + trace_android_vh_filemap_add_folio(mapping, folio, index); if (!huge) { int error = mem_cgroup_charge(folio, NULL, gfp); VM_BUG_ON_FOLIO(index & (folio_nr_pages(folio) - 1), folio); diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 904ba1e381b8..ee5e370de64f 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -6978,6 +6978,7 @@ int __mem_cgroup_charge(struct folio *folio, struct mm_struct *mm, gfp_t gfp) int ret; memcg = get_mem_cgroup_from_mm(mm); + trace_android_vh_mem_cgroup_charge(folio, &memcg); ret = charge_memcg(folio, memcg, gfp); css_put(&memcg->css);