ANDROID: mm: cma: add vendor hoook in cma_alloc()
Add vendor hook for cma_alloc latency measuring. Bug: 177231781 Signed-off-by: Minchan Kim <minchan@google.com> Change-Id: Ia2dbb26454bd8f03489389b29b9a6c939d3c2bbb
This commit is contained in:
@@ -166,6 +166,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sp_pc_abort);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pick_next_entity);
|
||||
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_rmqueue);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_pagecache_get_page);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check);
|
||||
|
@@ -22,6 +22,13 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags,
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask,
|
||||
TP_PROTO(gfp_t *flags),
|
||||
TP_ARGS(flags), 1);
|
||||
DECLARE_HOOK(android_vh_cma_alloc_start,
|
||||
TP_PROTO(s64 *ts),
|
||||
TP_ARGS(ts));
|
||||
DECLARE_HOOK(android_vh_cma_alloc_finish,
|
||||
TP_PROTO(struct cma *cma, struct page *page, unsigned long count,
|
||||
unsigned int align, gfp_t gfp_mask, s64 ts),
|
||||
TP_ARGS(cma, page, count, align, gfp_mask, ts));
|
||||
DECLARE_HOOK(android_vh_rmqueue,
|
||||
TP_PROTO(struct zone *preferred_zone, struct zone *zone,
|
||||
unsigned int order, gfp_t gfp_flags,
|
||||
|
7
mm/cma.c
7
mm/cma.c
@@ -37,6 +37,9 @@
|
||||
#include <linux/jiffies.h>
|
||||
#include <trace/events/cma.h>
|
||||
|
||||
#undef CREATE_TRACE_POINTS
|
||||
#include <trace/hooks/mm.h>
|
||||
|
||||
#include "cma.h"
|
||||
|
||||
struct cma cma_areas[MAX_CMA_AREAS];
|
||||
@@ -439,6 +442,9 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align,
|
||||
int ret = -ENOMEM;
|
||||
int num_attempts = 0;
|
||||
int max_retries = 5;
|
||||
s64 ts;
|
||||
|
||||
trace_android_vh_cma_alloc_start(&ts);
|
||||
|
||||
if (!cma || !cma->count || !cma->bitmap)
|
||||
goto out;
|
||||
@@ -531,6 +537,7 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align,
|
||||
|
||||
pr_debug("%s(): returned %p\n", __func__, page);
|
||||
out:
|
||||
trace_android_vh_cma_alloc_finish(cma, page, count, align, gfp_mask, ts);
|
||||
if (page) {
|
||||
count_vm_event(CMA_ALLOC_SUCCESS);
|
||||
cma_sysfs_account_success_pages(cma, count);
|
||||
|
Reference in New Issue
Block a user