msm: kgsl: add userspace memory type to ftrace events

Add a "usage" field to memory allocation, mapping and
free ftrace events.

Change-Id: I673a9593650d5285b0abc8c94de8f9f80d3d449e
Signed-off-by: Jeremy Gebben <jgebben@codeaurora.org>
This commit is contained in:
Jeremy Gebben
2012-10-08 08:56:59 -06:00
parent b3f2513350
commit d0f6ee3379
3 changed files with 63 additions and 7 deletions
+2
View File
@@ -182,6 +182,8 @@ struct kgsl_mem_entry *kgsl_sharedmem_find_region(
struct kgsl_process_private *private, unsigned int gpuaddr,
size_t size);
void kgsl_get_memory_usage(char *str, size_t len, unsigned int memflags);
int kgsl_add_event(struct kgsl_device *device, u32 id, u32 ts,
void (*cb)(struct kgsl_device *, void *, u32, u32), void *priv,
void *owner);
+39
View File
@@ -919,3 +919,42 @@ kgsl_sharedmem_map_vma(struct vm_area_struct *vma,
return 0;
}
EXPORT_SYMBOL(kgsl_sharedmem_map_vma);
static const char * const memtype_str[] = {
[KGSL_MEMTYPE_OBJECTANY] = "any(0)",
[KGSL_MEMTYPE_FRAMEBUFFER] = "framebuffer",
[KGSL_MEMTYPE_RENDERBUFFER] = "renderbuffer",
[KGSL_MEMTYPE_ARRAYBUFFER] = "arraybuffer",
[KGSL_MEMTYPE_ELEMENTARRAYBUFFER] = "elementarraybuffer",
[KGSL_MEMTYPE_VERTEXARRAYBUFFER] = "vertexarraybuffer",
[KGSL_MEMTYPE_TEXTURE] = "texture",
[KGSL_MEMTYPE_SURFACE] = "surface",
[KGSL_MEMTYPE_EGL_SURFACE] = "egl_surface",
[KGSL_MEMTYPE_GL] = "gl",
[KGSL_MEMTYPE_CL] = "cl",
[KGSL_MEMTYPE_CL_BUFFER_MAP] = "cl_buffer_map",
[KGSL_MEMTYPE_CL_BUFFER_NOMAP] = "cl_buffer_nomap",
[KGSL_MEMTYPE_CL_IMAGE_MAP] = "cl_image_map",
[KGSL_MEMTYPE_CL_IMAGE_NOMAP] = "cl_image_nomap",
[KGSL_MEMTYPE_CL_KERNEL_STACK] = "cl_kernel_stack",
[KGSL_MEMTYPE_COMMAND] = "command",
[KGSL_MEMTYPE_2D] = "2d",
[KGSL_MEMTYPE_EGL_IMAGE] = "egl_image",
[KGSL_MEMTYPE_EGL_SHADOW] = "egl_shadow",
[KGSL_MEMTYPE_MULTISAMPLE] = "egl_multisample",
/* KGSL_MEMTYPE_KERNEL handled below, to avoid huge array */
};
void kgsl_get_memory_usage(char *name, size_t name_size, unsigned int memflags)
{
unsigned char type;
type = (memflags & KGSL_MEMTYPE_MASK) >> KGSL_MEMTYPE_SHIFT;
if (type == KGSL_MEMTYPE_KERNEL)
strlcpy(name, "kernel", name_size);
else if (type < ARRAY_SIZE(memtype_str) && memtype_str[type] != NULL)
strlcpy(name, memtype_str[type], name_size);
else
snprintf(name, name_size, "unknown(%3d)", type);
}
EXPORT_SYMBOL(kgsl_get_memory_usage);
+22 -7
View File
@@ -316,17 +316,21 @@ TRACE_EVENT(kgsl_mem_alloc,
__field(unsigned int, gpuaddr)
__field(unsigned int, size)
__field(unsigned int, tgid)
__array(char, usage, 16)
),
TP_fast_assign(
__entry->gpuaddr = mem_entry->memdesc.gpuaddr;
__entry->size = mem_entry->memdesc.size;
__entry->tgid = mem_entry->priv->pid;
kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
mem_entry->memdesc.priv);
),
TP_printk(
"gpuaddr=0x%08x size=%d tgid=%d",
__entry->gpuaddr, __entry->size, __entry->tgid
"gpuaddr=0x%08x size=%d tgid=%d usage=%s",
__entry->gpuaddr, __entry->size, __entry->tgid,
__entry->usage
)
);
@@ -342,6 +346,7 @@ TRACE_EVENT(kgsl_mem_map,
__field(int, fd)
__field(int, type)
__field(unsigned int, tgid)
__array(char, usage, 16)
),
TP_fast_assign(
@@ -350,12 +355,15 @@ TRACE_EVENT(kgsl_mem_map,
__entry->fd = fd;
__entry->type = mem_entry->memtype;
__entry->tgid = mem_entry->priv->pid;
kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
mem_entry->memdesc.priv);
),
TP_printk(
"gpuaddr=0x%08x size=%d type=%d fd=%d tgid=%d",
"gpuaddr=0x%08x size=%d type=%d fd=%d tgid=%d usage %s",
__entry->gpuaddr, __entry->size,
__entry->type, __entry->fd, __entry->tgid
__entry->type, __entry->fd, __entry->tgid,
__entry->usage
)
);
@@ -371,6 +379,7 @@ TRACE_EVENT(kgsl_mem_free,
__field(int, type)
__field(int, fd)
__field(unsigned int, tgid)
__array(char, usage, 16)
),
TP_fast_assign(
@@ -378,12 +387,14 @@ TRACE_EVENT(kgsl_mem_free,
__entry->size = mem_entry->memdesc.size;
__entry->type = mem_entry->memtype;
__entry->tgid = mem_entry->priv->pid;
kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
mem_entry->memdesc.priv);
),
TP_printk(
"gpuaddr=0x%08x size=%d type=%d tgid=%d",
"gpuaddr=0x%08x size=%d type=%d tgid=%d usage=%s",
__entry->gpuaddr, __entry->size, __entry->type,
__entry->tgid
__entry->tgid, __entry->usage
)
);
@@ -399,6 +410,7 @@ DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
__field(unsigned int, gpuaddr)
__field(unsigned int, size)
__field(int, type)
__array(char, usage, 16)
__field(unsigned int, drawctxt_id)
__field(unsigned int, curr_ts)
__field(unsigned int, free_ts)
@@ -408,6 +420,8 @@ DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
__assign_str(device_name, device->name);
__entry->gpuaddr = mem_entry->memdesc.gpuaddr;
__entry->size = mem_entry->memdesc.size;
kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
mem_entry->memdesc.priv);
__entry->drawctxt_id = id;
__entry->type = mem_entry->memtype;
__entry->curr_ts = curr_ts;
@@ -415,12 +429,13 @@ DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
),
TP_printk(
"d_name=%s gpuaddr=0x%08x size=%d type=%d ctx=%u"
"d_name=%s gpuaddr=0x%08x size=%d type=%d usage=%s ctx=%u"
" curr_ts=0x%x free_ts=0x%x",
__get_str(device_name),
__entry->gpuaddr,
__entry->size,
__entry->type,
__entry->usage,
__entry->drawctxt_id,
__entry->curr_ts,
__entry->free_ts