Skip to content
Snippets Groups Projects
Commit 6999122f authored by yipeng xiang's avatar yipeng xiang Committed by Todd Kjos
Browse files

ANDROID: mm: add vendor hook for reserve highatomic page


Customized pages are not allowed to be reserved as highatomic

Bug: 391128435
Bug: 400883621

Change-Id: Id6cf871325ee9f27de45b1f5588737a11651f971
Signed-off-by: default avataryipeng xiang <yipengxiang@honor.corp-partner.google.com>
(cherry picked from commit 2c5ada03)
parent fdae1f4c
No related branches found
Tags android15-6.6-2024-11_r25
No related merge requests found
......@@ -204,6 +204,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kvmalloc_node_use_vmalloc);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_alloc_pages_retry);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_unreserve_highatomic_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_bulk_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_reserve_highatomic_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ra_tuning_max_page);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_mmap_readaround);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_hw_protection_shutdown);
......
......@@ -118,6 +118,9 @@ DECLARE_HOOK(android_vh_rmqueue_bulk_bypass,
TP_PROTO(unsigned int order, struct per_cpu_pages *pcp, int migratetype,
struct list_head *list),
TP_ARGS(order, pcp, migratetype, list));
DECLARE_HOOK(android_vh_reserve_highatomic_bypass,
TP_PROTO(struct page *page, bool *bypass),
TP_ARGS(page, bypass));
DECLARE_HOOK(android_vh_ra_tuning_max_page,
TP_PROTO(struct readahead_control *ractl, unsigned long *max_page),
TP_ARGS(ractl, max_page));
......
......@@ -2019,6 +2019,7 @@ static void reserve_highatomic_pageblock(struct page *page, struct zone *zone)
{
int mt;
unsigned long max_managed, flags;
bool bypass = false;
/*
* The number reserved as: minimum is 1 pageblock, maximum is
......@@ -2031,6 +2032,9 @@ static void reserve_highatomic_pageblock(struct page *page, struct zone *zone)
max_managed = ALIGN((zone_managed_pages(zone) / 100), pageblock_nr_pages);
if (zone->nr_reserved_highatomic >= max_managed)
return;
trace_android_vh_reserve_highatomic_bypass(page, &bypass);
if (bypass)
return;
spin_lock_irqsave(&zone->lock, flags);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment