ANDROID: vendor_hook: Add hook in __migration_entry_wait()
android_vh_waiting_for_page_migration: provide a vendor hook to force not to reclaim the page under migration to a specified swap location, until the migration is finished. Bug: 234214858 Signed-off-by: Bing Han <bing.han@transsion.com> Change-Id: Iceeae91cbd912d9c44d7eac25f1299bbff547388
This commit is contained in:

committed by
Treehugger Robot

parent
f7c932399e
commit
89a247a638
@@ -410,6 +410,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_memcg_scan_type);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_handle_pte_fault_end);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_handle_pte_fault_end);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cow_user_page);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cow_user_page);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swapin_add_anon_rmap);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swapin_add_anon_rmap);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_waiting_for_page_migration);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_isolated_for_reclaim);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_isolated_for_reclaim);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_inactive_is_low);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_inactive_is_low);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snapshot_refaults);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snapshot_refaults);
|
||||||
|
@@ -158,6 +158,9 @@ DECLARE_HOOK(android_vh_cow_user_page,
|
|||||||
DECLARE_HOOK(android_vh_swapin_add_anon_rmap,
|
DECLARE_HOOK(android_vh_swapin_add_anon_rmap,
|
||||||
TP_PROTO(struct vm_fault *vmf, struct page *page),
|
TP_PROTO(struct vm_fault *vmf, struct page *page),
|
||||||
TP_ARGS(vmf, page));
|
TP_ARGS(vmf, page));
|
||||||
|
DECLARE_HOOK(android_vh_waiting_for_page_migration,
|
||||||
|
TP_PROTO(struct page *page),
|
||||||
|
TP_ARGS(page));
|
||||||
DECLARE_HOOK(android_vh_page_isolated_for_reclaim,
|
DECLARE_HOOK(android_vh_page_isolated_for_reclaim,
|
||||||
TP_PROTO(struct mm_struct *mm, struct page *page),
|
TP_PROTO(struct mm_struct *mm, struct page *page),
|
||||||
TP_ARGS(mm, page));
|
TP_ARGS(mm, page));
|
||||||
|
@@ -54,6 +54,8 @@
|
|||||||
|
|
||||||
#define CREATE_TRACE_POINTS
|
#define CREATE_TRACE_POINTS
|
||||||
#include <trace/events/migrate.h>
|
#include <trace/events/migrate.h>
|
||||||
|
#undef CREATE_TRACE_POINTS
|
||||||
|
#include <trace/hooks/mm.h>
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
@@ -311,6 +313,7 @@ void __migration_entry_wait(struct mm_struct *mm, pte_t *ptep,
|
|||||||
if (!get_page_unless_zero(page))
|
if (!get_page_unless_zero(page))
|
||||||
goto out;
|
goto out;
|
||||||
pte_unmap_unlock(ptep, ptl);
|
pte_unmap_unlock(ptep, ptl);
|
||||||
|
trace_android_vh_waiting_for_page_migration(page);
|
||||||
put_and_wait_on_page_locked(page);
|
put_and_wait_on_page_locked(page);
|
||||||
return;
|
return;
|
||||||
out:
|
out:
|
||||||
|
Reference in New Issue
Block a user