diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 2335b17e59b1..172a21ee008c 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -513,6 +513,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_compl_rsp_check_done); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_err_handler); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_err_check_ctrl); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_err_print_ctrl); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmscan_kswapd_done); /* * For type visibility */ diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 4bdb18c36ac6..90b9400db984 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -53,6 +53,10 @@ DECLARE_HOOK(android_vh_snapshot_refaults, DECLARE_HOOK(android_vh_check_page_look_around_ref, TP_PROTO(struct page *page, int *skip), TP_ARGS(page, skip)); +DECLARE_HOOK(android_vh_vmscan_kswapd_done, + TP_PROTO(int node_id, unsigned int highest_zoneidx, unsigned int alloc_order, + unsigned int reclaim_order), + TP_ARGS(node_id, highest_zoneidx, alloc_order, reclaim_order)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/mm/vmscan.c b/mm/vmscan.c index f94f52e98868..d3617e6c25f2 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -68,6 +68,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(mm_vmscan_direct_reclaim_begin); EXPORT_TRACEPOINT_SYMBOL_GPL(mm_vmscan_direct_reclaim_end); +EXPORT_TRACEPOINT_SYMBOL_GPL(mm_vmscan_kswapd_wake); struct scan_control { /* How many pages shrink_list() should reclaim */ @@ -4038,6 +4039,8 @@ kswapd_try_sleep: alloc_order); reclaim_order = balance_pgdat(pgdat, alloc_order, highest_zoneidx); + trace_android_vh_vmscan_kswapd_done(pgdat->node_id, highest_zoneidx, + alloc_order, reclaim_order); if (reclaim_order < alloc_order) goto kswapd_try_sleep; }