forked from rubenslte/android_kernel_samsung_msm8226
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:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user