msm: kgsl: Add inode info in kgsl mem dump

Add inode info in kgsl mem dump. This correlates egl entries
in kgsl mem dump with dmabuf_dump info.

Change-Id: Iabfbb456fcd7d941095ae1c75d60822af705a90f
Signed-off-by: shufma <shufma@codeaurora.org>
This commit is contained in:
shufma 2021-06-28 10:48:51 +08:00
commit 8c02dc9b1f
3 changed files with 22 additions and 6 deletions

View file

@ -3042,11 +3042,22 @@ void kgsl_get_egl_counts(struct kgsl_mem_entry *entry,
}
spin_unlock(&kgsl_dmabuf_lock);
}
unsigned long kgsl_get_dmabuf_inode_number(struct kgsl_mem_entry *entry)
{
struct kgsl_dma_buf_meta *meta = entry->priv_data;
return meta ? file_inode(meta->dmabuf->file)->i_ino : 0;
}
#else
void kgsl_get_egl_counts(struct kgsl_mem_entry *entry,
int *egl_surface_count, int *egl_image_count)
{
}
unsigned long kgsl_get_dmabuf_inode_number(struct kgsl_mem_entry *entry)
{
}
#endif
long kgsl_ioctl_map_user_mem(struct kgsl_device_private *dev_priv,

View file

@ -453,6 +453,8 @@ void kgsl_mem_entry_destroy(struct kref *kref);
void kgsl_get_egl_counts(struct kgsl_mem_entry *entry,
int *egl_surface_count, int *egl_image_count);
unsigned long kgsl_get_dmabuf_inode_number(struct kgsl_mem_entry *entry);
struct kgsl_mem_entry * __must_check
kgsl_sharedmem_find(struct kgsl_process_private *private, uint64_t gpuaddr);

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2002,2008-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2002,2008-2021, The Linux Foundation. All rights reserved.
*/
#include <linux/debugfs.h>
@ -177,6 +177,7 @@ static int print_mem_entry(void *data, void *ptr)
struct kgsl_memdesc *m = &entry->memdesc;
unsigned int usermem_type = kgsl_memdesc_usermem_type(m);
int egl_surface_count = 0, egl_image_count = 0;
unsigned long inode_number = 0;
flags[0] = kgsl_memdesc_is_global(m) ? 'g' : '-';
flags[1] = '-';
@ -192,11 +193,13 @@ static int print_mem_entry(void *data, void *ptr)
kgsl_get_memory_usage(usage, sizeof(usage), m->flags);
if (usermem_type == KGSL_MEM_ENTRY_ION)
if (usermem_type == KGSL_MEM_ENTRY_ION) {
kgsl_get_egl_counts(entry, &egl_surface_count,
&egl_image_count);
inode_number = kgsl_get_dmabuf_inode_number(entry);
}
seq_printf(s, "%pK %pK %16llu %5d %9s %10s %16s %5d %16llu %6d %6d",
seq_printf(s, "%pK %pK %16llu %5d %9s %10s %16s %5d %16llu %6d %6d %10lu",
(uint64_t *)(uintptr_t) m->gpuaddr,
/*
* Show zero for the useraddr - we can't reliably track
@ -205,7 +208,7 @@ static int print_mem_entry(void *data, void *ptr)
0, m->size, entry->id, flags,
memtype_str(usermem_type),
usage, (m->sgt ? m->sgt->nents : 0), m->size,
egl_surface_count, egl_image_count);
egl_surface_count, egl_image_count, inode_number);
if (entry->metadata[0] != 0)
seq_printf(s, " %s", entry->metadata);
@ -273,9 +276,9 @@ static void *process_mem_seq_next(struct seq_file *s, void *ptr,
static int process_mem_seq_show(struct seq_file *s, void *ptr)
{
if (ptr == SEQ_START_TOKEN) {
seq_printf(s, "%16s %16s %16s %5s %9s %10s %16s %5s %16s %6s %6s\n",
seq_printf(s, "%16s %16s %16s %5s %9s %10s %16s %5s %16s %6s %6s %10s\n",
"gpuaddr", "useraddr", "size", "id", "flags", "type",
"usage", "sglen", "mapsize", "eglsrf", "eglimg");
"usage", "sglen", "mapsize", "eglsrf", "eglimg", "inode");
return 0;
} else
return print_mem_entry(s, ptr);