diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 8e763cefbbce..b2d3b6f42e47 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -287,6 +287,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_oem_binder_struct); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_special_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_buffer_release); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mglru_should_abort_scan); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mglru_should_abort_scan_ex); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_page_wmark); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_add_new_anon_rmap); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index e95911530f16..e95564246c12 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -60,6 +60,9 @@ DECLARE_HOOK(android_vh_mglru_should_abort_scan, TP_PROTO(unsigned long nr_reclaimed, unsigned long nr_to_reclaim, unsigned int order, bool *bypass), TP_ARGS(nr_to_reclaim, nr_reclaimed, order, bypass)); +DECLARE_HOOK(android_vh_mglru_should_abort_scan_ex, + TP_PROTO(u64 *ext, bool *bypass), + TP_ARGS(ext, bypass)); DECLARE_HOOK(android_vh_mglru_aging_bypass, TP_PROTO(struct lruvec *lruvec, unsigned long max_seq, int swappiness, bool *bypass, bool *young), diff --git a/mm/vmscan.c b/mm/vmscan.c index 4762fbe86d0c..5a3fe601bb95 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4912,6 +4912,10 @@ static bool should_abort_scan(struct lruvec *lruvec, struct scan_control *sc) trace_android_vh_mglru_should_abort_scan(sc->nr_reclaimed, sc->nr_to_reclaim, sc->order, &bypass); +#ifdef CONFIG_ANDROID_VENDOR_OEM_DATA + trace_android_vh_mglru_should_abort_scan_ex(&sc->android_vendor_data1, + &bypass); +#endif /* don't abort memcg reclaim to ensure fairness */ if (!root_reclaim(sc) && !bypass) return false;