msm: kgsl: add ftrace for cache operations

Add the event kgsl_mem_sync_cache. This event is
emitted when only a cache operation is actually
performed. Attempts to flush uncached memory,
which do nothing, do not cause this event.

Change-Id: Id4a940a6b50e08b54fbef0025c4b8aaa71641462
Signed-off-by: Jeremy Gebben <jgebben@codeaurora.org>
This commit is contained in:
Jeremy Gebben
2013-02-14 10:48:54 -08:00
committed by Jay Chokshi
parent 2761b2e20a
commit 2e86a5617d
2 changed files with 37 additions and 1 deletions
+3 -1
View File
@@ -1948,8 +1948,10 @@ static int _kgsl_gpumem_sync_cache(struct kgsl_mem_entry *entry, int op)
mode = kgsl_memdesc_get_cachemode(&entry->memdesc);
if (mode != KGSL_CACHEMODE_UNCACHED
&& mode != KGSL_CACHEMODE_WRITECOMBINE)
&& mode != KGSL_CACHEMODE_WRITECOMBINE) {
trace_kgsl_mem_sync_cache(entry, op);
kgsl_cache_range_op(&entry->memdesc, cacheop);
}
done:
return ret;
+34
View File
@@ -494,6 +494,40 @@ TRACE_EVENT(kgsl_mem_free,
)
);
TRACE_EVENT(kgsl_mem_sync_cache,
TP_PROTO(struct kgsl_mem_entry *mem_entry, unsigned int op),
TP_ARGS(mem_entry, op),
TP_STRUCT__entry(
__field(unsigned int, gpuaddr)
__field(unsigned int, size)
__array(char, usage, 16)
__field(unsigned int, tgid)
__field(unsigned int, id)
__field(unsigned int, op)
),
TP_fast_assign(
__entry->gpuaddr = mem_entry->memdesc.gpuaddr;
__entry->size = mem_entry->memdesc.size;
__entry->tgid = mem_entry->priv->pid;
__entry->id = mem_entry->id;
kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
mem_entry->memdesc.flags);
__entry->op = op;
),
TP_printk(
"gpuaddr=0x%08x size=%d tgid=%d usage=%s id=%d op=%c%c",
__entry->gpuaddr, __entry->size, __entry->tgid, __entry->usage,
__entry->id,
(__entry->op & KGSL_GPUMEM_CACHE_CLEAN) ? 'c' : '.',
(__entry->op & KGSL_GPUMEM_CACHE_INV) ? 'i' : '.'
)
);
DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
TP_PROTO(struct kgsl_device *device, struct kgsl_mem_entry *mem_entry,