diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index c0855cc0692e..c581527d0397 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -410,6 +410,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_memcg_scan_type); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_handle_pte_fault_end); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cow_user_page); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swapin_add_anon_rmap); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_waiting_for_page_migration); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_isolated_for_reclaim); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_inactive_is_low); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snapshot_refaults); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 3d4bcd79cd34..9433497b3c7c 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -158,6 +158,9 @@ DECLARE_HOOK(android_vh_cow_user_page, DECLARE_HOOK(android_vh_swapin_add_anon_rmap, TP_PROTO(struct vm_fault *vmf, struct page *page), TP_ARGS(vmf, page)); +DECLARE_HOOK(android_vh_waiting_for_page_migration, + TP_PROTO(struct page *page), + TP_ARGS(page)); DECLARE_HOOK(android_vh_page_isolated_for_reclaim, TP_PROTO(struct mm_struct *mm, struct page *page), TP_ARGS(mm, page)); diff --git a/mm/migrate.c b/mm/migrate.c index 26f8595de076..a3cf3d624694 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -54,6 +54,8 @@ #define CREATE_TRACE_POINTS #include +#undef CREATE_TRACE_POINTS +#include #include "internal.h" @@ -311,6 +313,7 @@ void __migration_entry_wait(struct mm_struct *mm, pte_t *ptep, if (!get_page_unless_zero(page)) goto out; pte_unmap_unlock(ptep, ptl); + trace_android_vh_waiting_for_page_migration(page); put_and_wait_on_page_locked(page); return; out: