From db158b4ae0543446d38313c3da942afee9947267 Mon Sep 17 00:00:00 2001 From: Chiawei Wang Date: Thu, 18 Feb 2021 10:47:37 +0800 Subject: [PATCH] ANDROID: mm: Add vendor hook in pagecache_get_page() Add a vendor hook for pagecache hit/miss and other vendor specific functions. Bug: 174088128 Bug: 172987241 Signed-off-by: Chiawei Wang Change-Id: Ie9f14a69a86b8ed81de766e44e30f2eba1d9bd84 --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 5 ++++- mm/filemap.c | 6 ++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 6c86aa44abf4..19b1a3675981 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -155,3 +155,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pick_next_entity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_pagecache_get_page); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index bedda7a611e4..d0639cfdebd2 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -28,7 +28,10 @@ DECLARE_HOOK(android_vh_rmqueue, unsigned int alloc_flags, int migratetype), TP_ARGS(preferred_zone, zone, order, gfp_flags, alloc_flags, migratetype)); - +DECLARE_HOOK(android_vh_pagecache_get_page, + TP_PROTO(struct address_space *mapping, pgoff_t index, + int fgp_flags, gfp_t gfp_mask, struct page *page), + TP_ARGS(mapping, index, fgp_flags, gfp_mask, page)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_MM_H */ diff --git a/mm/filemap.c b/mm/filemap.c index b9d6ebac649d..91cc37ae2d8c 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -49,6 +49,9 @@ #define CREATE_TRACE_POINTS #include +#undef CREATE_TRACE_POINTS +#include + /* * FIXME: remove all knowledge of the buffer layer from the core VM */ @@ -1799,6 +1802,9 @@ struct page *pagecache_get_page(struct address_space *mapping, pgoff_t index, page = find_get_entry(mapping, index); if (xa_is_value(page)) page = NULL; + + trace_android_vh_pagecache_get_page(mapping, index, fgp_flags, + gfp_mask, page); if (!page) goto no_page;