ANDROID: vendor_hooks: add vendor hook 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
Bug: 295917627
Signed-off-by: Edward Wu <edwardwu@realtek.com>
(cherry picked from commit fca6ddffc8)
Change-Id: Ief8de1f82885abeddbb6c0b625f7deca9fd74f6b
This commit is contained in:
Edward Wu
2022-06-21 09:19:29 +08:00
committed by Todd Kjos
parent ebd14a6c68
commit 441510cfc0
3 changed files with 11 additions and 0 deletions

View File

@@ -313,6 +313,7 @@ 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_adjust);
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_enable_thermal_genl_check);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_begin);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_end);

View File

@@ -44,6 +44,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(gfp_t gfp_mask, unsigned int *alloc_flags,
bool *bypass),
TP_ARGS(gfp_mask, alloc_flags, bypass));
DECLARE_HOOK(android_vh_meminfo_proc_show,
TP_PROTO(struct seq_file *m),
TP_ARGS(m));

View File

@@ -4258,6 +4258,12 @@ static inline unsigned int gfp_to_alloc_flags_cma(gfp_t gfp_mask,
unsigned int alloc_flags)
{
#ifdef CONFIG_CMA
bool bypass = false;
trace_android_vh_calc_alloc_flags(gfp_mask, &alloc_flags, &bypass);
if (bypass)
return alloc_flags;
if (gfp_migratetype(gfp_mask) == MIGRATE_MOVABLE && gfp_mask & __GFP_CMA)
alloc_flags |= ALLOC_CMA;
#endif