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:
chenzhiwei
2023-06-22 14:39:09 +08:00
committed by Treehugger Robot
parent c9bbf5834a
commit 7207203cc3
3 changed files with 22 additions and 1 deletions
+2
View File
@@ -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);
+8
View File
@@ -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
View File
@@ -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)) {
/*