ANDROID: mm: add vendor hook to bypass madvise_pageout

Add vendor hook to bypass madvise_pageout on some conditions
such as mmap_lock contention.

Bug: 351175506
Change-Id: Idbdcdf196cb10bbf7f92775fbc539137ca961c54
Signed-off-by: Sooyong Suk <s.suk@samsung.corp-partner.google.com>
This commit is contained in:
Sooyong Suk
2024-07-17 17:20:52 +09:00
committed by Suren Baghdasaryan
parent 4ac77992ba
commit f2b4e4dcc3
3 changed files with 9 additions and 0 deletions
+1
View File
@@ -333,3 +333,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_signal);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_process_madvise_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_pageout_return_error);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_process_madvise_return_error);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_pageout_bypass);
+3
View File
@@ -17,6 +17,9 @@ DECLARE_HOOK(android_vh_madvise_pageout_return_error,
DECLARE_HOOK(android_vh_process_madvise_return_error,
TP_PROTO(int behavior, int ret, bool *return_error),
TP_ARGS(behavior, ret, return_error));
DECLARE_HOOK(android_vh_madvise_pageout_bypass,
TP_PROTO(struct mm_struct *mm, bool pageout, int *ret),
TP_ARGS(mm, pageout, ret));
#endif
+5
View File
@@ -352,10 +352,15 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
bool pageout_anon_only_filter;
unsigned int batch_count = 0;
int nr;
int ret = 0;
if (fatal_signal_pending(current))
return -EINTR;
trace_android_vh_madvise_pageout_bypass(mm, pageout, &ret);
if (ret)
return ret;
pageout_anon_only_filter = pageout && !vma_is_anonymous(vma) &&
!can_do_file_pageout(vma);