ANDROID: vendor_hooks: add vendor hoook in current_alloc_flags()

By this vh, you can made your policy of ALLOC_CMA.
ex: skip __GFP_CMA to allow file-backed memory on CMA area

Bug: 234498088
Signed-off-by: Edward Wu <edwardwu@realtek.com>
Change-Id: Ief8de1f82885abeddbb6c0b625f7deca9fd74f6b
This commit is contained in:
Edward Wu
2022-06-21 09:19:29 +08:00
parent 45cb58e134
commit fca6ddffc8
3 changed files with 10 additions and 0 deletions

View File

@@ -215,6 +215,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_start);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_busy_info);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_calc_alloc_flags);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_begin);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_end);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue);

View File

@@ -36,6 +36,10 @@ DECLARE_HOOK(android_vh_cma_alloc_finish,
DECLARE_HOOK(android_vh_cma_alloc_busy_info,
TP_PROTO(struct acr_info *info),
TP_ARGS(info));
DECLARE_HOOK(android_vh_calc_alloc_flags,
TP_PROTO(unsigned int pflags, gfp_t gfp_mask, unsigned int *alloc_flags,
bool *bypass),
TP_ARGS(pflags, gfp_mask, alloc_flags, bypass));
DECLARE_HOOK(android_vh_mm_compaction_begin,
TP_PROTO(struct compact_control *cc, long *vendor_ret),
TP_ARGS(cc, vendor_ret));

View File

@@ -4112,6 +4112,11 @@ static inline unsigned int current_alloc_flags(gfp_t gfp_mask,
{
#ifdef CONFIG_CMA
unsigned int pflags = current->flags;
bool bypass = false;
trace_android_vh_calc_alloc_flags(pflags, gfp_mask, &alloc_flags, &bypass);
if (bypass)
return alloc_flags;
if (!(pflags & PF_MEMALLOC_NOCMA) &&
gfp_migratetype(gfp_mask) == MIGRATE_MOVABLE &&