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

Commit 097e7aba authored by Kamal Agrawal's avatar Kamal Agrawal Committed by Gerrit - the friendly Code Review server
Browse files

msm: kgsl: Print map count instead of map size



/sys/kernel/debug/kgsl/proc/<pid>/mem prints incorrect map size
in some cases. Currently, memdesc size is printed as map size.
Because of this, map size shows non-zero value even for unmapped
buffers. Since kgsl buffers can be mapped multiple times, update
the print to map count instead of map size.

Change-Id: I7970580bc3b1c9a30ca0d72d9caf89af1ce09740
Signed-off-by: default avatarKamal Agrawal <kamaagra@codeaurora.org>
parent 52838777
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ static int print_mem_entry(void *data, void *ptr)
	unsigned int usermem_type = kgsl_memdesc_usermem_type(m);
	int egl_surface_count = 0, egl_image_count = 0;
	unsigned long inode_number = 0;
	u32 map_count = atomic_read(&entry->map_count);

	flags[0] = kgsl_memdesc_is_global(m) ?  'g' : '-';
	flags[1] = '-';
@@ -186,7 +187,7 @@ static int print_mem_entry(void *data, void *ptr)
	flags[4] = get_cacheflag(m);
	flags[5] = kgsl_memdesc_use_cpu_map(m) ? 'p' : '-';
	/* Show Y if at least one vma has this entry mapped (could be multiple) */
	flags[6] = atomic_read(&entry->map_count) ? 'Y' : 'N';
	flags[6] = map_count ? 'Y' : 'N';
	flags[7] = kgsl_memdesc_is_secured(m) ?  's' : '-';
	flags[8] = '-';
	flags[9] = '\0';
@@ -199,7 +200,7 @@ static int print_mem_entry(void *data, void *ptr)
		inode_number = kgsl_get_dmabuf_inode_number(entry);
	}

	seq_printf(s, "%pK %pK %16llu %5d %9s %10s %16s %5d %16llu %6d %6d %10lu",
	seq_printf(s, "%pK %pK %16llu %5d %10s %10s %16s %5d %10d %6d %6d %10lu",
			(uint64_t *)(uintptr_t) m->gpuaddr,
			/*
			 * Show zero for the useraddr - we can't reliably track
@@ -207,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,
			usage, (m->sgt ? m->sgt->nents : 0), map_count,
			egl_surface_count, egl_image_count, inode_number);

	if (entry->metadata[0] != 0)
@@ -276,9 +277,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 %10s\n",
		seq_printf(s, "%16s %16s %16s %5s %10s %10s %16s %5s %10s %6s %6s %10s\n",
			"gpuaddr", "useraddr", "size", "id", "flags", "type",
			"usage", "sglen", "mapsize", "eglsrf", "eglimg", "inode");
			"usage", "sglen", "mapcnt", "eglsrf", "eglimg", "inode");
		return 0;
	} else
		return print_mem_entry(s, ptr);