diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index d018bb824d0f..f60b2ac469d9 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -64,6 +64,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -106,6 +107,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shmem_alloc_page); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set); diff --git a/include/trace/hooks/shmem_fs.h b/include/trace/hooks/shmem_fs.h new file mode 100644 index 000000000000..08e63033070e --- /dev/null +++ b/include/trace/hooks/shmem_fs.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM shmem_fs +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH trace/hooks +#if !defined(_TRACE_HOOK_SHMEM_FS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_SHMEM_FS_H +#include +#include + +struct page; +DECLARE_HOOK(android_vh_shmem_alloc_page, + TP_PROTO(struct page **page), + TP_ARGS(page)); +#endif /* _TRACE_HOOK_SHMEM_FS_H */ +/* This part must be outside protection */ +#include diff --git a/mm/shmem.c b/mm/shmem.c index d915b0ab010d..0c434d55aab5 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -42,6 +42,9 @@ #include /* for arch/microblaze update_mmu_cache() */ +#undef CREATE_TRACE_POINTS +#include + static struct vfsmount *shm_mnt; #ifdef CONFIG_SHMEM @@ -1560,7 +1563,11 @@ static struct page *shmem_alloc_page(gfp_t gfp, struct shmem_inode_info *info, pgoff_t index) { struct vm_area_struct pvma; - struct page *page; + struct page *page = NULL; + + trace_android_vh_shmem_alloc_page(&page); + if (page) + return page; shmem_pseudo_vma_init(&pvma, info, index); page = alloc_page_vma(gfp, &pvma, 0);