ANDROID: vendor_hooks: Add hooks to for alloc_contig_range
Provide a vendor hook to allow drain_all_pages to be skipped during alloc_contig_range in some cases to avoid delays caused by it in cases when the benefits of draining pcp lists are known to be small. Bug: 224732340 Signed-off-by: Peifeng Li <lipeifeng@oppo.com> Change-Id: I0a82f668cf985ad5344d666c0c6372a7e61c3798
This commit is contained in:

committed by
Suren Baghdasaryan

parent
bc159fee3d
commit
a2485b8abd
@@ -293,6 +293,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_swappiness);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_referenced_check_bypass);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_referenced_check_bypass);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_drain_all_pages_bypass);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_drain_all_pages_bypass);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_drain_all_pages_bypass);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
|
||||||
|
@@ -122,6 +122,9 @@ DECLARE_HOOK(android_vh_drain_all_pages_bypass,
|
|||||||
int migratetype, unsigned long did_some_progress,
|
int migratetype, unsigned long did_some_progress,
|
||||||
bool *bypass),
|
bool *bypass),
|
||||||
TP_ARGS(gfp_mask, order, alloc_flags, migratetype, did_some_progress, bypass));
|
TP_ARGS(gfp_mask, order, alloc_flags, migratetype, did_some_progress, bypass));
|
||||||
|
DECLARE_HOOK(android_vh_cma_drain_all_pages_bypass,
|
||||||
|
TP_PROTO(unsigned int migratetype, bool *bypass),
|
||||||
|
TP_ARGS(migratetype, bypass));
|
||||||
struct device;
|
struct device;
|
||||||
DECLARE_HOOK(android_vh_subpage_dma_contig_alloc,
|
DECLARE_HOOK(android_vh_subpage_dma_contig_alloc,
|
||||||
TP_PROTO(bool *allow_subpage_alloc, struct device *dev, size_t *size),
|
TP_PROTO(bool *allow_subpage_alloc, struct device *dev, size_t *size),
|
||||||
|
@@ -8720,6 +8720,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,
|
|||||||
unsigned long outer_start, outer_end;
|
unsigned long outer_start, outer_end;
|
||||||
unsigned int order;
|
unsigned int order;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
bool skip_drain_all_pages = false;
|
||||||
|
|
||||||
struct compact_control cc = {
|
struct compact_control cc = {
|
||||||
.nr_migratepages = 0,
|
.nr_migratepages = 0,
|
||||||
@@ -8765,6 +8766,9 @@ int alloc_contig_range(unsigned long start, unsigned long end,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trace_android_vh_cma_drain_all_pages_bypass(migratetype,
|
||||||
|
&skip_drain_all_pages);
|
||||||
|
if (skip_drain_all_pages)
|
||||||
drain_all_pages(cc.zone);
|
drain_all_pages(cc.zone);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user