diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index eaea41831d1f..d3f7ff4fde56 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -463,6 +463,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_reclaim_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_failure_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_adjust_wmark); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_reset_wmark); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_alloc_pages_adjust_wmark); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_alloc_pages_reset_wmark); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_watermark_fast_ok); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_fiq_dump); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swapmem_gather_init); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 00df4c5ea263..65eb40c00944 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -156,6 +156,15 @@ DECLARE_HOOK(android_vh_alloc_pages_reset_wmark, unsigned long direct_reclaim_retries), TP_ARGS(gfp_mask, order, alloc_flags, did_some_progress, no_progress_loops, direct_reclaim_retries)); +DECLARE_RESTRICTED_HOOK(android_rvh_alloc_pages_adjust_wmark, + TP_PROTO(gfp_t gfp_mask, int order, int *alloc_flags), + TP_ARGS(gfp_mask, order, alloc_flags), 3); +DECLARE_RESTRICTED_HOOK(android_rvh_alloc_pages_reset_wmark, + TP_PROTO(gfp_t gfp_mask, int order, int *alloc_flags, + unsigned long *did_some_progress, int *no_progress_loops, + unsigned long direct_reclaim_retries), + TP_ARGS(gfp_mask, order, alloc_flags, did_some_progress, + no_progress_loops, direct_reclaim_retries), 6); DECLARE_HOOK(android_vh_unreserve_highatomic_bypass, TP_PROTO(bool force, struct zone *zone, bool *skip_unreserve_highatomic), TP_ARGS(force, zone, skip_unreserve_highatomic)); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index b42afcd0d3c3..152b0424fcbf 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4438,8 +4438,15 @@ restart: if (alloc_flags & ALLOC_KSWAPD) wake_all_kswapds(order, gfp_mask, ac); - if (can_direct_reclaim && !direct_reclaim_retries && !(current->flags & PF_MEMALLOC)) + if (can_direct_reclaim && !direct_reclaim_retries && !(current->flags & PF_MEMALLOC)) { + /* + * The trace_android_vh_alloc_pages_adjust_wmark() has been deprecated + * because it cannot be used in a CPU offline or non-atomic context, + * please use trace_android_rvh_alloc_pages_adjust_wmark(). + */ trace_android_vh_alloc_pages_adjust_wmark(gfp_mask, order, &alloc_flags); + trace_android_rvh_alloc_pages_adjust_wmark(gfp_mask, order, &alloc_flags); + } /* * The adjusted alloc_flags might result in immediate success, so try @@ -4587,8 +4594,15 @@ retry: !(gfp_mask & __GFP_RETRY_MAYFAIL))) goto nopage; + /* + * The trace_android_vh_alloc_pages_reset_wmark() has been deprecated + * because it cannot be used in a CPU offline or non-atomic context, + * please use trace_android_rvh_alloc_pages_reset_wmark(). + */ trace_android_vh_alloc_pages_reset_wmark(gfp_mask, order, &alloc_flags, &did_some_progress, &no_progress_loops, direct_reclaim_retries); + trace_android_rvh_alloc_pages_reset_wmark(gfp_mask, order, + &alloc_flags, &did_some_progress, &no_progress_loops, direct_reclaim_retries); if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags, did_some_progress > 0, &no_progress_loops))