ANDROID: mm: Add restricted vendor hook in do_read_fault()

This patch add a restricted vendor hook in do_read_fault() for tracking
which file and offsets are faulted.

Bug: 336736235
Change-Id: I425690e58550c4ac44912daa10b5eac0728bfb4e
Signed-off-by: liangjlee <liangjlee@google.com>
This commit is contained in:
liangjlee 2024-05-10 01:39:10 +08:00 committed by Treehugger Robot
parent 51c421385e
commit 29a00abe43
3 changed files with 7 additions and 0 deletions

View File

@ -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_hibernate_save_cmp_len);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_read_lazy_flag); 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_vh_set_tsk_need_resched_lazy);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_read_fault);

View File

@ -25,6 +25,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags,
DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask, DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask,
TP_PROTO(unsigned int *flags), /* gfp_t *flags */ TP_PROTO(unsigned int *flags), /* gfp_t *flags */
TP_ARGS(flags), 1); 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, DECLARE_HOOK(android_vh_dm_bufio_shrink_scan_bypass,
TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass), TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass),
TP_ARGS(dm_bufio_current_allocated, bypass)); TP_ARGS(dm_bufio_current_allocated, bypass));

View File

@ -4647,6 +4647,8 @@ static vm_fault_t do_read_fault(struct vm_fault *vmf)
vm_fault_t ret = 0; vm_fault_t ret = 0;
trace_android_vh_tune_fault_around_bytes(&fault_around_bytes); 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 * Let's call ->map_pages() first and use ->fault() as fallback