Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b9483c7 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Add inode info in kgsl mem dump"

parents ebd7f8e1 8c02dc9b
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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,
+2 −0
Original line number Diff line number Diff line
@@ -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);

+9 −6
Original line number Diff line number Diff line
// 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);