diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index e8af7b774588..a45022e569e2 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -416,3 +416,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_hibernated_do_mem_alloc); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_hibernate_save_cmp_len); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_read_lazy_flag); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_tsk_need_resched_lazy); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_read_fault); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 81ce1268c4fd..e13159239923 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -25,6 +25,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags, DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask, TP_PROTO(unsigned int *flags), /* gfp_t *flags */ TP_ARGS(flags), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_do_read_fault, + TP_PROTO(struct file *file, pgoff_t pgoff, + unsigned long *fault_around_bytes), + TP_ARGS(file, pgoff, fault_around_bytes), 1); DECLARE_HOOK(android_vh_dm_bufio_shrink_scan_bypass, TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass), TP_ARGS(dm_bufio_current_allocated, bypass)); diff --git a/mm/memory.c b/mm/memory.c index ffbf374a787d..68634e96c175 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4647,6 +4647,8 @@ static vm_fault_t do_read_fault(struct vm_fault *vmf) vm_fault_t ret = 0; trace_android_vh_tune_fault_around_bytes(&fault_around_bytes); + trace_android_rvh_do_read_fault(vmf->vma->vm_file, vmf->pgoff, + &fault_around_bytes); /* * Let's call ->map_pages() first and use ->fault() as fallback