ANDROID: vendor_hooks: vendor hook for MM
2 Vendor hooks add:
trace_android_vh_free_one_page_bypass
trace_android_vh_rmqueue_smallest_bypass
Add vendor hook points in __free_one_page and __rmqueue to
manager some customized pages instead of freeing/allocating.
Bug: 391128435
Bug: 286350069
Change-Id: If63e164c02a279f4f14ebd8603f49c58ba0fbc8a
Signed-off-by: chenzhiwei <chenzhiwei@xiaomi.corp-partner.google.com>
This commit is contained in:
committed by
Treehugger Robot
parent
c9bbf5834a
commit
7207203cc3
@@ -174,6 +174,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_alloc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_isolate_freepages);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_oom_check_panic);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_smallest_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_one_page_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_adjust_alloc_flags);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_wait_for_work);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_oem_binder_struct);
|
||||
|
||||
@@ -57,6 +57,14 @@ DECLARE_HOOK(android_vh_oom_check_panic,
|
||||
TP_PROTO(struct oom_control *oc, int *ret),
|
||||
TP_ARGS(oc, ret));
|
||||
|
||||
DECLARE_HOOK(android_vh_rmqueue_smallest_bypass,
|
||||
TP_PROTO(struct page **page, struct zone *zone, int order, int migratetype),
|
||||
TP_ARGS(page, zone, order, migratetype));
|
||||
DECLARE_HOOK(android_vh_free_one_page_bypass,
|
||||
TP_PROTO(struct page *page, struct zone *zone, int order, int migratetype,
|
||||
int fpi_flags, bool *bypass),
|
||||
TP_ARGS(page, zone, order, migratetype, fpi_flags, bypass));
|
||||
|
||||
struct page_vma_mapped_walk;
|
||||
DECLARE_HOOK(android_vh_slab_alloc_node,
|
||||
TP_PROTO(void *object, unsigned long addr, struct kmem_cache *s),
|
||||
|
||||
+12
-1
@@ -784,6 +784,13 @@ static inline void __free_one_page(struct page *page,
|
||||
unsigned long combined_pfn;
|
||||
struct page *buddy;
|
||||
bool to_tail;
|
||||
bool bypass = false;
|
||||
|
||||
trace_android_vh_free_one_page_bypass(page, zone, order,
|
||||
migratetype, (int)fpi_flags, &bypass);
|
||||
|
||||
if (bypass)
|
||||
return;
|
||||
|
||||
VM_BUG_ON(!zone_is_initialized(zone));
|
||||
VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page);
|
||||
@@ -2272,7 +2279,11 @@ static __always_inline struct page *
|
||||
__rmqueue(struct zone *zone, unsigned int order, int migratetype,
|
||||
unsigned int alloc_flags)
|
||||
{
|
||||
struct page *page;
|
||||
struct page *page = NULL;
|
||||
|
||||
trace_android_vh_rmqueue_smallest_bypass(&page, zone, order, migratetype);
|
||||
if (page)
|
||||
return page;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CMA)) {
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user