Loading drivers/gpu/msm/kgsl.c +41 −0 Original line number Diff line number Diff line Loading @@ -2507,6 +2507,8 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device, meta->dmabuf = dmabuf; meta->attach = attach; attach->priv = entry; entry->priv_data = meta; entry->memdesc.pagetable = pagetable; entry->memdesc.size = 0; Loading Loading @@ -2557,6 +2559,45 @@ out: } #endif #ifdef CONFIG_DMA_SHARED_BUFFER void kgsl_get_egl_counts(struct kgsl_mem_entry *entry, int *egl_surface_count, int *egl_image_count) { struct kgsl_dma_buf_meta *meta = entry->priv_data; struct dma_buf *dmabuf = meta->dmabuf; struct dma_buf_attachment *mem_entry_buf_attachment = meta->attach; struct device *buf_attachment_dev = mem_entry_buf_attachment->dev; struct dma_buf_attachment *attachment = NULL; mutex_lock(&dmabuf->lock); list_for_each_entry(attachment, &dmabuf->attachments, node) { struct kgsl_mem_entry *scan_mem_entry = NULL; if (attachment->dev != buf_attachment_dev) continue; scan_mem_entry = attachment->priv; if (!scan_mem_entry) continue; switch (kgsl_memdesc_get_memtype(&scan_mem_entry->memdesc)) { case KGSL_MEMTYPE_EGL_SURFACE: (*egl_surface_count)++; break; case KGSL_MEMTYPE_EGL_IMAGE: (*egl_image_count)++; break; } } mutex_unlock(&dmabuf->lock); } #else void kgsl_get_egl_counts(struct kgsl_mem_entry *entry, int *egl_surface_count, int *egl_image_count) { } #endif long kgsl_ioctl_map_user_mem(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { Loading drivers/gpu/msm/kgsl.h +3 −0 Original line number Diff line number Diff line Loading @@ -435,6 +435,9 @@ long kgsl_ioctl_sparse_unbind(struct kgsl_device_private *dev_priv, 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); struct kgsl_mem_entry * __must_check kgsl_sharedmem_find(struct kgsl_process_private *private, uint64_t gpuaddr); Loading drivers/gpu/msm/kgsl_debugfs.c +13 −6 Original line number Diff line number Diff line Loading @@ -132,6 +132,8 @@ static int print_mem_entry(void *data, void *ptr) char flags[10]; char usage[16]; struct kgsl_memdesc *m = &entry->memdesc; unsigned int usermem_type = kgsl_memdesc_usermem_type(m); int egl_surface_count = 0, egl_image_count = 0; if (m->flags & KGSL_MEMFLAGS_SPARSE_VIRT) return 0; Loading @@ -149,12 +151,17 @@ static int print_mem_entry(void *data, void *ptr) kgsl_get_memory_usage(usage, sizeof(usage), m->flags); seq_printf(s, "%pK %pK %16llu %5d %9s %10s %16s %5d %16llu", if (usermem_type == KGSL_MEM_ENTRY_ION) kgsl_get_egl_counts(entry, &egl_surface_count, &egl_image_count); seq_printf(s, "%pK %pK %16llu %5d %9s %10s %16s %5d %16llu %6d %6d", (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 ? m->sgt->nents : 0), m->mapsize); memtype_str(usermem_type), usage, (m->sgt ? m->sgt->nents : 0), m->mapsize, egl_surface_count, egl_image_count); if (entry->metadata[0] != 0) seq_printf(s, " %s", entry->metadata); Loading Loading @@ -221,9 +228,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\n", "gpuaddr", "useraddr", "size", "id", "flags", "type", "usage", "sglen", "mapsize"); seq_printf(s, "%16s %16s %16s %5s %9s %10s %16s %5s %16s %6s %6s\n", "gpuaddr", "useraddr", "size", "id", "flags", "type", "usage", "sglen", "mapsize", "eglsrf", "eglimg"); return 0; } else return print_mem_entry(s, ptr); Loading Loading
drivers/gpu/msm/kgsl.c +41 −0 Original line number Diff line number Diff line Loading @@ -2507,6 +2507,8 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device, meta->dmabuf = dmabuf; meta->attach = attach; attach->priv = entry; entry->priv_data = meta; entry->memdesc.pagetable = pagetable; entry->memdesc.size = 0; Loading Loading @@ -2557,6 +2559,45 @@ out: } #endif #ifdef CONFIG_DMA_SHARED_BUFFER void kgsl_get_egl_counts(struct kgsl_mem_entry *entry, int *egl_surface_count, int *egl_image_count) { struct kgsl_dma_buf_meta *meta = entry->priv_data; struct dma_buf *dmabuf = meta->dmabuf; struct dma_buf_attachment *mem_entry_buf_attachment = meta->attach; struct device *buf_attachment_dev = mem_entry_buf_attachment->dev; struct dma_buf_attachment *attachment = NULL; mutex_lock(&dmabuf->lock); list_for_each_entry(attachment, &dmabuf->attachments, node) { struct kgsl_mem_entry *scan_mem_entry = NULL; if (attachment->dev != buf_attachment_dev) continue; scan_mem_entry = attachment->priv; if (!scan_mem_entry) continue; switch (kgsl_memdesc_get_memtype(&scan_mem_entry->memdesc)) { case KGSL_MEMTYPE_EGL_SURFACE: (*egl_surface_count)++; break; case KGSL_MEMTYPE_EGL_IMAGE: (*egl_image_count)++; break; } } mutex_unlock(&dmabuf->lock); } #else void kgsl_get_egl_counts(struct kgsl_mem_entry *entry, int *egl_surface_count, int *egl_image_count) { } #endif long kgsl_ioctl_map_user_mem(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { Loading
drivers/gpu/msm/kgsl.h +3 −0 Original line number Diff line number Diff line Loading @@ -435,6 +435,9 @@ long kgsl_ioctl_sparse_unbind(struct kgsl_device_private *dev_priv, 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); struct kgsl_mem_entry * __must_check kgsl_sharedmem_find(struct kgsl_process_private *private, uint64_t gpuaddr); Loading
drivers/gpu/msm/kgsl_debugfs.c +13 −6 Original line number Diff line number Diff line Loading @@ -132,6 +132,8 @@ static int print_mem_entry(void *data, void *ptr) char flags[10]; char usage[16]; struct kgsl_memdesc *m = &entry->memdesc; unsigned int usermem_type = kgsl_memdesc_usermem_type(m); int egl_surface_count = 0, egl_image_count = 0; if (m->flags & KGSL_MEMFLAGS_SPARSE_VIRT) return 0; Loading @@ -149,12 +151,17 @@ static int print_mem_entry(void *data, void *ptr) kgsl_get_memory_usage(usage, sizeof(usage), m->flags); seq_printf(s, "%pK %pK %16llu %5d %9s %10s %16s %5d %16llu", if (usermem_type == KGSL_MEM_ENTRY_ION) kgsl_get_egl_counts(entry, &egl_surface_count, &egl_image_count); seq_printf(s, "%pK %pK %16llu %5d %9s %10s %16s %5d %16llu %6d %6d", (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 ? m->sgt->nents : 0), m->mapsize); memtype_str(usermem_type), usage, (m->sgt ? m->sgt->nents : 0), m->mapsize, egl_surface_count, egl_image_count); if (entry->metadata[0] != 0) seq_printf(s, " %s", entry->metadata); Loading Loading @@ -221,9 +228,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\n", "gpuaddr", "useraddr", "size", "id", "flags", "type", "usage", "sglen", "mapsize"); seq_printf(s, "%16s %16s %16s %5s %9s %10s %16s %5s %16s %6s %6s\n", "gpuaddr", "useraddr", "size", "id", "flags", "type", "usage", "sglen", "mapsize", "eglsrf", "eglimg"); return 0; } else return print_mem_entry(s, ptr); Loading