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;