diff options
-rw-r--r-- | drivers/gpu/msm/kgsl.h | 4 | ||||
-rw-r--r-- | drivers/gpu/msm/kgsl_debugfs.c | 10 | ||||
-rw-r--r-- | drivers/gpu/msm/kgsl_sharedmem.c | 6 |
3 files changed, 13 insertions, 7 deletions
diff --git a/drivers/gpu/msm/kgsl.h b/drivers/gpu/msm/kgsl.h index f675c4446081..dfe83be799b3 100644 --- a/drivers/gpu/msm/kgsl.h +++ b/drivers/gpu/msm/kgsl.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2008-2015, The Linux Foundation. All rights reserved. +/* Copyright (c) 2008-2016, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -147,6 +147,7 @@ struct kgsl_memdesc_ops { * @gpuaddr: GPU virtual address * @physaddr: Physical address of the memory object * @size: Size of the memory object + * @mapsize: Size of memory mapped in userspace * @priv: Internal flags and settings * @sgt: Scatter gather table for allocated pages * @ops: Function hooks for the memdesc memory type @@ -163,6 +164,7 @@ struct kgsl_memdesc { uint64_t gpuaddr; phys_addr_t physaddr; uint64_t size; + uint64_t mapsize; unsigned int priv; struct sg_table *sgt; struct kgsl_memdesc_ops *ops; diff --git a/drivers/gpu/msm/kgsl_debugfs.c b/drivers/gpu/msm/kgsl_debugfs.c index 11095f38bad7..fa523ac9516c 100644 --- a/drivers/gpu/msm/kgsl_debugfs.c +++ b/drivers/gpu/msm/kgsl_debugfs.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2002,2008-2015, The Linux Foundation. All rights reserved. +/* Copyright (c) 2002,2008-2016, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -144,12 +144,12 @@ static int print_mem_entry(int id, void *ptr, void *data) kgsl_get_memory_usage(usage, sizeof(usage), m->flags); - seq_printf(s, "%pK %pK %16llu %5d %8s %10s %16s %5d", + seq_printf(s, "%pK %pK %16llu %5d %8s %10s %16s %5d %16llu", (uint64_t *)(uintptr_t) m->gpuaddr, (unsigned long *) m->useraddr, m->size, entry->id, flags, memtype_str(kgsl_memdesc_usermem_type(m)), - usage, m->sgt->nents); + usage, m->sgt->nents, m->mapsize); if (entry->metadata[0] != 0) seq_printf(s, " %s", entry->metadata); @@ -163,9 +163,9 @@ static int process_mem_print(struct seq_file *s, void *unused) { struct kgsl_process_private *private = s->private; - seq_printf(s, "%8s %8s %8s %5s %8s %10s %16s %5s\n", + seq_printf(s, "%16s %16s %16s %5s %8s %10s %16s %5s %16s\n", "gpuaddr", "useraddr", "size", "id", "flags", "type", - "usage", "sglen"); + "usage", "sglen", "mapsize"); spin_lock(&private->mem_lock); idr_for_each(&private->mem_idr, print_mem_entry, s); diff --git a/drivers/gpu/msm/kgsl_sharedmem.c b/drivers/gpu/msm/kgsl_sharedmem.c index 8bf0a243066e..bc955ae66285 100644 --- a/drivers/gpu/msm/kgsl_sharedmem.c +++ b/drivers/gpu/msm/kgsl_sharedmem.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2002,2007-2015, The Linux Foundation. All rights reserved. +/* Copyright (c) 2002,2007-2016, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -385,6 +385,8 @@ static int kgsl_page_alloc_vmfault(struct kgsl_memdesc *memdesc, get_page(page); vmf->page = page; + memdesc->mapsize += PAGE_SIZE; + return 0; } @@ -550,6 +552,8 @@ static int kgsl_contiguous_vmfault(struct kgsl_memdesc *memdesc, else if (ret == -EFAULT) return VM_FAULT_SIGBUS; + memdesc->mapsize += PAGE_SIZE; + return VM_FAULT_NOPAGE; } |