diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 9bae0bfdcfc1..a0d30545f9bc 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -311,3 +311,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_contig_range_not_isolated); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_warn_alloc_tune_ratelimit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_warn_alloc_show_mem_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_use_vm_swappiness); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_scan_control); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 0b232178f6a5..733648c28a56 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -46,6 +46,9 @@ DECLARE_HOOK(android_vh_rebalance_anon_lru_bypass, DECLARE_HOOK(android_vh_use_vm_swappiness, TP_PROTO(bool *use_vm_swappiness), TP_ARGS(use_vm_swappiness)); +DECLARE_HOOK(android_vh_tune_scan_control, + TP_PROTO(bool *skip_swap), + TP_ARGS(skip_swap)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/mm/vmscan.c b/mm/vmscan.c index 329b7fc40906..d2aabf05db50 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -6558,6 +6558,7 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order, .may_unmap = 1, .may_swap = 1, }; + bool skip_swap = false; /* * scan_control uses s8 fields for order, priority, and reclaim_idx. @@ -6575,6 +6576,9 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order, if (throttle_direct_reclaim(sc.gfp_mask, zonelist, nodemask)) return 1; + trace_android_vh_tune_scan_control(&skip_swap); + if (skip_swap) + sc.may_swap = 0; set_task_reclaim_state(current, &sc.reclaim_state); trace_mm_vmscan_direct_reclaim_begin(order, sc.gfp_mask);