From bc4c73c1820570e4b131a2adb8d2b4ebc84fdeec Mon Sep 17 00:00:00 2001 From: Bing Han Date: Fri, 10 Jun 2022 18:53:44 +0800 Subject: [PATCH] ANDROID: vendor_hook: Add hooks in unuse_pte_range() and try_to_unuse() When the page is unused, a vendor hook android_vh_unuse_swap_page should be called to specify that the page should not be swapped to the specified swap location any more. Bug: 234214858 Signed-off-by: Bing Han Change-Id: I3fc3675020517f7cc69c76a06150dfb2380dae21 --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 3 +++ mm/swapfile.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index ade852aa0f9c..f897daea3aea 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -421,3 +421,4 @@ 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); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_account_swap_pages); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_unuse_swap_page); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index a33a701e8ee4..6f385db5813b 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -185,6 +185,9 @@ DECLARE_HOOK(android_vh_page_isolated_for_reclaim, DECLARE_HOOK(android_vh_account_swap_pages, TP_PROTO(struct swap_info_struct *si, bool *skip), TP_ARGS(si, skip)); +DECLARE_HOOK(android_vh_unuse_swap_page, + TP_PROTO(struct swap_info_struct *si, struct page *page), + TP_ARGS(si, page)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_MM_H */ diff --git a/mm/swapfile.c b/mm/swapfile.c index d04aca85d426..7d7e9096fec8 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2014,6 +2014,7 @@ static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd, } try_to_free_swap(page); + trace_android_vh_unuse_swap_page(si, page); unlock_page(page); put_page(page); @@ -2252,6 +2253,7 @@ int try_to_unuse(unsigned int type, bool frontswap, lock_page(page); wait_on_page_writeback(page); try_to_free_swap(page); + trace_android_vh_unuse_swap_page(si, page); unlock_page(page); put_page(page);