From 2fb96ec85c0e99d7947dc7d81191ca7d87174f4a Mon Sep 17 00:00:00 2001 From: Martin Liu Date: Fri, 21 Mar 2025 08:45:17 +0000 Subject: [PATCH] ANDROID: vendor_hook: add vendor hook on calculate_totalreserve_pages This vendor hook enables or disables updating the LMKD zone watermark level. Bug: 396115949 Test: build Change-Id: I0089a0586821120e47c46e08bcfea11a1602d516 Signed-off-by: Martin Liu --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 3 +++ mm/page_alloc.c | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 663121911094..7ceecabcaa38 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -475,3 +475,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_trigger_vendor_lmk_kill); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_map_pages_range); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vprintk_store); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_folio_referenced_check_bypass); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_calculate_totalreserve_pages); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 74b76878fe9d..013b85d2c9a7 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -302,6 +302,9 @@ DECLARE_HOOK(android_vh_filemap_map_pages_range, TP_PROTO(struct file *file, pgoff_t orig_start_pgoff, pgoff_t last_pgoff, vm_fault_t ret), TP_ARGS(file, orig_start_pgoff, last_pgoff, ret)); +DECLARE_HOOK(android_vh_calculate_totalreserve_pages, + TP_PROTO(bool *skip), + TP_ARGS(skip)); #endif /* _TRACE_HOOK_MM_H */ /* This part must be outside protection */ diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 15087a0d7d71..d352b85fef7b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -8950,6 +8950,7 @@ static void calculate_totalreserve_pages(void) struct pglist_data *pgdat; unsigned long reserve_pages = 0; enum zone_type i, j; + bool skip = false; for_each_online_pgdat(pgdat) { @@ -8978,6 +8979,9 @@ static void calculate_totalreserve_pages(void) } } totalreserve_pages = reserve_pages; + trace_android_vh_calculate_totalreserve_pages(&skip); + if (skip) + return; trace_mm_calculate_totalreserve_pages(totalreserve_pages); }