diff mbox series

[v5] dma-buf: Add DmaBufTotal counter in meminfo

Message ID 20210417163835.25064-1-peter.enderborg@sony.com (mailing list archive)
State New, archived
Headers show
Series [v5] dma-buf: Add DmaBufTotal counter in meminfo | expand

Commit Message

Peter Enderborg April 17, 2021, 4:38 p.m. UTC
This adds a total used dma-buf memory. Details
can be found in debugfs, however it is not for everyone
and not always available. dma-buf are indirect allocated by
userspace. So with this value we can monitor and detect
userspace applications that have problems.

Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
---
 drivers/dma-buf/dma-buf.c | 12 ++++++++++++
 fs/proc/meminfo.c         |  5 ++++-
 include/linux/dma-buf.h   |  1 +
 3 files changed, 17 insertions(+), 1 deletion(-)

Comments

Daniel Vetter April 20, 2021, 8:58 a.m. UTC | #1
On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
> This adds a total used dma-buf memory. Details
> can be found in debugfs, however it is not for everyone
> and not always available. dma-buf are indirect allocated by
> userspace. So with this value we can monitor and detect
> userspace applications that have problems.
> 
> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>

So there have been tons of discussions around how to track dma-buf and
why, and I really need to understand the use-cass here first I think. proc
uapi is as much forever as anything else, and depending what you're doing
this doesn't make any sense at all:

- on most linux systems dma-buf are only instantiated for shared buffer.
  So there this gives you a fairly meaningless number and not anything
  reflecting gpu memory usage at all.

- on Android all buffers are allocated through dma-buf afaik. But there
  we've recently had some discussions about how exactly we should track
  all this, and the conclusion was that most of this should be solved by
  cgroups long term. So if this is for Android, then I don't think adding
  random quick stop-gaps to upstream is a good idea (because it's a pretty
  long list of patches that have come up on this).

So what is this for?
-Daniel

> ---
>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
>  fs/proc/meminfo.c         |  5 ++++-
>  include/linux/dma-buf.h   |  1 +
>  3 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> index f264b70c383e..4dc37cd4293b 100644
> --- a/drivers/dma-buf/dma-buf.c
> +++ b/drivers/dma-buf/dma-buf.c
> @@ -37,6 +37,7 @@ struct dma_buf_list {
>  };
>  
>  static struct dma_buf_list db_list;
> +static atomic_long_t dma_buf_global_allocated;
>  
>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
>  {
> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
>  		dma_resv_fini(dmabuf->resv);
>  
> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
>  	module_put(dmabuf->owner);
>  	kfree(dmabuf->name);
>  	kfree(dmabuf);
> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
>  	mutex_lock(&db_list.lock);
>  	list_add(&dmabuf->list_node, &db_list.head);
>  	mutex_unlock(&db_list.lock);
> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
>  
>  	return dmabuf;
>  
> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
>  }
>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
>  
> +/**
> + * dma_buf_allocated_pages - Return the used nr of pages
> + * allocated for dma-buf
> + */
> +long dma_buf_allocated_pages(void)
> +{
> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
> +}
> +
>  #ifdef CONFIG_DEBUG_FS
>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
>  {
> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
> index 6fa761c9cc78..ccc7c40c8db7 100644
> --- a/fs/proc/meminfo.c
> +++ b/fs/proc/meminfo.c
> @@ -16,6 +16,7 @@
>  #ifdef CONFIG_CMA
>  #include <linux/cma.h>
>  #endif
> +#include <linux/dma-buf.h>
>  #include <asm/page.h>
>  #include "internal.h"
>  
> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
>  	show_val_kb(m, "CmaFree:        ",
>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
>  #endif
> -
> +#ifdef CONFIG_DMA_SHARED_BUFFER
> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
> +#endif
>  	hugetlb_report_meminfo(m);
>  
>  	arch_report_meminfo(m);
> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
> index efdc56b9d95f..5b05816bd2cd 100644
> --- a/include/linux/dma-buf.h
> +++ b/include/linux/dma-buf.h
> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
>  		 unsigned long);
>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
> +long dma_buf_allocated_pages(void);
>  #endif /* __DMA_BUF_H__ */
> -- 
> 2.17.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Peter Enderborg April 20, 2021, 9:26 a.m. UTC | #2
On 4/20/21 10:58 AM, Daniel Vetter wrote:
> On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
>> This adds a total used dma-buf memory. Details
>> can be found in debugfs, however it is not for everyone
>> and not always available. dma-buf are indirect allocated by
>> userspace. So with this value we can monitor and detect
>> userspace applications that have problems.
>>
>> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
> So there have been tons of discussions around how to track dma-buf and
> why, and I really need to understand the use-cass here first I think. proc
> uapi is as much forever as anything else, and depending what you're doing
> this doesn't make any sense at all:
>
> - on most linux systems dma-buf are only instantiated for shared buffer.
>   So there this gives you a fairly meaningless number and not anything
>   reflecting gpu memory usage at all.
>
> - on Android all buffers are allocated through dma-buf afaik. But there
>   we've recently had some discussions about how exactly we should track
>   all this, and the conclusion was that most of this should be solved by
>   cgroups long term. So if this is for Android, then I don't think adding
>   random quick stop-gaps to upstream is a good idea (because it's a pretty
>   long list of patches that have come up on this).
>
> So what is this for?

For the overview. dma-buf today only have debugfs for info. Debugfs
is not allowed by google to use in andoid. So this aggregate the information
so we can get information on what going on on the system. 

And the LKML standard respond to that is "SHOW ME THE CODE".

When the top memgc has a aggregated information on dma-buf it is maybe
a better source to meminfo. But then it also imply that dma-buf requires memcg.

And I dont see any problem to replace this with something better with it is ready.

> -Daniel
>
>> ---
>>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
>>  fs/proc/meminfo.c         |  5 ++++-
>>  include/linux/dma-buf.h   |  1 +
>>  3 files changed, 17 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
>> index f264b70c383e..4dc37cd4293b 100644
>> --- a/drivers/dma-buf/dma-buf.c
>> +++ b/drivers/dma-buf/dma-buf.c
>> @@ -37,6 +37,7 @@ struct dma_buf_list {
>>  };
>>  
>>  static struct dma_buf_list db_list;
>> +static atomic_long_t dma_buf_global_allocated;
>>  
>>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
>>  {
>> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
>>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
>>  		dma_resv_fini(dmabuf->resv);
>>  
>> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
>>  	module_put(dmabuf->owner);
>>  	kfree(dmabuf->name);
>>  	kfree(dmabuf);
>> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
>>  	mutex_lock(&db_list.lock);
>>  	list_add(&dmabuf->list_node, &db_list.head);
>>  	mutex_unlock(&db_list.lock);
>> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
>>  
>>  	return dmabuf;
>>  
>> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
>>  }
>>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
>>  
>> +/**
>> + * dma_buf_allocated_pages - Return the used nr of pages
>> + * allocated for dma-buf
>> + */
>> +long dma_buf_allocated_pages(void)
>> +{
>> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
>> +}
>> +
>>  #ifdef CONFIG_DEBUG_FS
>>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
>>  {
>> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
>> index 6fa761c9cc78..ccc7c40c8db7 100644
>> --- a/fs/proc/meminfo.c
>> +++ b/fs/proc/meminfo.c
>> @@ -16,6 +16,7 @@
>>  #ifdef CONFIG_CMA
>>  #include <linux/cma.h>
>>  #endif
>> +#include <linux/dma-buf.h>
>>  #include <asm/page.h>
>>  #include "internal.h"
>>  
>> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
>>  	show_val_kb(m, "CmaFree:        ",
>>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
>>  #endif
>> -
>> +#ifdef CONFIG_DMA_SHARED_BUFFER
>> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
>> +#endif
>>  	hugetlb_report_meminfo(m);
>>  
>>  	arch_report_meminfo(m);
>> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
>> index efdc56b9d95f..5b05816bd2cd 100644
>> --- a/include/linux/dma-buf.h
>> +++ b/include/linux/dma-buf.h
>> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
>>  		 unsigned long);
>>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>> +long dma_buf_allocated_pages(void);
>>  #endif /* __DMA_BUF_H__ */
>> -- 
>> 2.17.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!qW8kUOZyY4Dkew6OvqgfoM-5unQNVeF_M1biaIAyQQBR0KB7ksRzZjoh382ZdGGQR9k$
Mike Rapoport April 20, 2021, 9:41 a.m. UTC | #3
Hello Peter,

On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
> On 4/20/21 10:58 AM, Daniel Vetter wrote:
> > On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
> >> This adds a total used dma-buf memory. Details
> >> can be found in debugfs, however it is not for everyone
> >> and not always available. dma-buf are indirect allocated by
> >> userspace. So with this value we can monitor and detect
> >> userspace applications that have problems.
> >>
> >> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
> > So there have been tons of discussions around how to track dma-buf and
> > why, and I really need to understand the use-cass here first I think. proc
> > uapi is as much forever as anything else, and depending what you're doing
> > this doesn't make any sense at all:
> >
> > - on most linux systems dma-buf are only instantiated for shared buffer.
> >   So there this gives you a fairly meaningless number and not anything
> >   reflecting gpu memory usage at all.
> >
> > - on Android all buffers are allocated through dma-buf afaik. But there
> >   we've recently had some discussions about how exactly we should track
> >   all this, and the conclusion was that most of this should be solved by
> >   cgroups long term. So if this is for Android, then I don't think adding
> >   random quick stop-gaps to upstream is a good idea (because it's a pretty
> >   long list of patches that have come up on this).
> >
> > So what is this for?
> 
> For the overview. dma-buf today only have debugfs for info. Debugfs
> is not allowed by google to use in andoid. So this aggregate the information
> so we can get information on what going on on the system. 
 
Can you send an example debugfs output to see what data are we talking
about?

> And the LKML standard respond to that is "SHOW ME THE CODE".
> 
> When the top memgc has a aggregated information on dma-buf it is maybe
> a better source to meminfo. But then it also imply that dma-buf requires memcg.
> 
> And I dont see any problem to replace this with something better with it is ready.

Well, the problem with replacing the counter in /proc/meminfo is that it
requires all users of /proc/meminfo to adapt to the changes.

That's why it's way less painful to go an extra mile and define (hopefully)
stable user ABI up front.

Why can't you use fdinfo to show how much memory consumed by a dma-buf?

> > -Daniel
> >
> >> ---
> >>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
> >>  fs/proc/meminfo.c         |  5 ++++-
> >>  include/linux/dma-buf.h   |  1 +
> >>  3 files changed, 17 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> >> index f264b70c383e..4dc37cd4293b 100644
> >> --- a/drivers/dma-buf/dma-buf.c
> >> +++ b/drivers/dma-buf/dma-buf.c
> >> @@ -37,6 +37,7 @@ struct dma_buf_list {
> >>  };
> >>  
> >>  static struct dma_buf_list db_list;
> >> +static atomic_long_t dma_buf_global_allocated;
> >>  
> >>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
> >>  {
> >> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
> >>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
> >>  		dma_resv_fini(dmabuf->resv);
> >>  
> >> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
> >>  	module_put(dmabuf->owner);
> >>  	kfree(dmabuf->name);
> >>  	kfree(dmabuf);
> >> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
> >>  	mutex_lock(&db_list.lock);
> >>  	list_add(&dmabuf->list_node, &db_list.head);
> >>  	mutex_unlock(&db_list.lock);
> >> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
> >>  
> >>  	return dmabuf;
> >>  
> >> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
> >>  }
> >>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
> >>  
> >> +/**
> >> + * dma_buf_allocated_pages - Return the used nr of pages
> >> + * allocated for dma-buf
> >> + */
> >> +long dma_buf_allocated_pages(void)
> >> +{
> >> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
> >> +}
> >> +
> >>  #ifdef CONFIG_DEBUG_FS
> >>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
> >>  {
> >> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
> >> index 6fa761c9cc78..ccc7c40c8db7 100644
> >> --- a/fs/proc/meminfo.c
> >> +++ b/fs/proc/meminfo.c
> >> @@ -16,6 +16,7 @@
> >>  #ifdef CONFIG_CMA
> >>  #include <linux/cma.h>
> >>  #endif
> >> +#include <linux/dma-buf.h>
> >>  #include <asm/page.h>
> >>  #include "internal.h"
> >>  
> >> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
> >>  	show_val_kb(m, "CmaFree:        ",
> >>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
> >>  #endif
> >> -
> >> +#ifdef CONFIG_DMA_SHARED_BUFFER
> >> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
> >> +#endif
> >>  	hugetlb_report_meminfo(m);
> >>  
> >>  	arch_report_meminfo(m);
> >> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
> >> index efdc56b9d95f..5b05816bd2cd 100644
> >> --- a/include/linux/dma-buf.h
> >> +++ b/include/linux/dma-buf.h
> >> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
> >>  		 unsigned long);
> >>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
> >>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
> >> +long dma_buf_allocated_pages(void);
> >>  #endif /* __DMA_BUF_H__ */
> >> -- 
> >> 2.17.1
> >>
> >> _______________________________________________
> >> dri-devel mailing list
> >> dri-devel@lists.freedesktop.org
> >> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!qW8kUOZyY4Dkew6OvqgfoM-5unQNVeF_M1biaIAyQQBR0KB7ksRzZjoh382ZdGGQR9k$ 
>
Peter Enderborg April 20, 2021, 10:45 a.m. UTC | #4
On 4/20/21 11:41 AM, Mike Rapoport wrote:
> Hello Peter,
>
> On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
>> On 4/20/21 10:58 AM, Daniel Vetter wrote:
>>> On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
>>>> This adds a total used dma-buf memory. Details
>>>> can be found in debugfs, however it is not for everyone
>>>> and not always available. dma-buf are indirect allocated by
>>>> userspace. So with this value we can monitor and detect
>>>> userspace applications that have problems.
>>>>
>>>> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
>>> So there have been tons of discussions around how to track dma-buf and
>>> why, and I really need to understand the use-cass here first I think. proc
>>> uapi is as much forever as anything else, and depending what you're doing
>>> this doesn't make any sense at all:
>>>
>>> - on most linux systems dma-buf are only instantiated for shared buffer.
>>>   So there this gives you a fairly meaningless number and not anything
>>>   reflecting gpu memory usage at all.
>>>
>>> - on Android all buffers are allocated through dma-buf afaik. But there
>>>   we've recently had some discussions about how exactly we should track
>>>   all this, and the conclusion was that most of this should be solved by
>>>   cgroups long term. So if this is for Android, then I don't think adding
>>>   random quick stop-gaps to upstream is a good idea (because it's a pretty
>>>   long list of patches that have come up on this).
>>>
>>> So what is this for?
>> For the overview. dma-buf today only have debugfs for info. Debugfs
>> is not allowed by google to use in andoid. So this aggregate the information
>> so we can get information on what going on on the system. 
>  
> Can you send an example debugfs output to see what data are we talking
> about?

Sure. This is on a idle system. Im not sure why you need it.The problem is partly that debugfs is
not accessable on a commercial device.


Dma-buf Objects:
size        flags       mode        count       exp_name        buf name    ino    
00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17728    07400825    dmabuf17728
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17727    07400824    dmabuf17727
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17726    07400823    dmabuf17726
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17725    07400822    dmabuf17725
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17724    07400821    dmabuf17724
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17723    07400820    dmabuf17723
    Attached Devices:
    kgsl-3d0
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
Total 2 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17722    07399870    dmabuf17722
    Attached Devices:
Total 0 devices attached

10969088    00000002    00080007    00000001    ion-system-1006-allocator-servi    dmabuf17721    07399869    dmabuf17721
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17693    07396324    dmabuf17693
    Attached Devices:
Total 0 devices attached

03371008    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17692    07396323    dmabuf17692
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17691    07396322    dmabuf17691
    Attached Devices:
Total 0 devices attached

03371008    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17690    07396321    dmabuf17690
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17689    07396320    dmabuf17689
    Attached Devices:
Total 0 devices attached

03371008    00000002    00080007    00000001    ion-system-1006-allocator-servi    dmabuf17688    07396319    dmabuf17688
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17687    07396318    dmabuf17687
    Attached Devices:
Total 0 devices attached

03371008    00000002    00080007    00000001    ion-system-1006-allocator-servi    dmabuf17686    07396317    dmabuf17686
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17685    07396316    dmabuf17685
    Attached Devices:
Total 0 devices attached

03371008    00000002    00080007    00000001    ion-system-1006-allocator-servi    dmabuf17684    07396315    dmabuf17684
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17667    07394218    dmabuf17667
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000005    ion-system-1006-allocator-servi    dmabuf17666    07394217    dmabuf17666
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17117    07057605    dmabuf17117
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17116    07057604    dmabuf17116
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17115    07058646    dmabuf17115
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17114    07058645    dmabuf17114
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17113    07058644    dmabuf17113
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17112    07058643    dmabuf17112
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17111    07057603    dmabuf17111
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17110    07057602    dmabuf17110
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17109    07059724    dmabuf17109
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17108    07059723    dmabuf17108
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17107    07058642    dmabuf17107
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17106    07058641    dmabuf17106
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17105    07059722    dmabuf17105
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17104    07059721    dmabuf17104
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17103    07057601    dmabuf17103
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17102    07057600    dmabuf17102
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17101    07057599    dmabuf17101
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17100    07057598    dmabuf17100
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17099    07057597    dmabuf17099
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17098    07057596    dmabuf17098
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17097    07058640    dmabuf17097
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17096    07058639    dmabuf17096
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17095    07058638    dmabuf17095
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17094    07058637    dmabuf17094
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17093    07059720    dmabuf17093
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17092    07059719    dmabuf17092
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17091    07058636    dmabuf17091
    Attached Devices:
Total 0 devices attached

05885952    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17090    07058635    dmabuf17090
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00016384    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17089    07059718    dmabuf17089
    Attached Devices:
Total 0 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17088    07059717    dmabuf17088
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17087    07059716    dmabuf17087
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17086    07059715    dmabuf17086
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17085    07059714    dmabuf17085
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17084    07059713    dmabuf17084
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17083    07059712    dmabuf17083
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17082    07059711    dmabuf17082
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17081    07059710    dmabuf17081
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17080    07059709    dmabuf17080
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17079    07059708    dmabuf17079
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17078    07059707    dmabuf17078
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17077    07059706    dmabuf17077
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-1358-omx@1.0-service    dmabuf17076    07059705    dmabuf17076
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00016384    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17075    07059704    dmabuf17075
    Attached Devices:
Total 0 devices attached

00016384    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17074    07059703    dmabuf17074
    Attached Devices:
Total 0 devices attached

00016384    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17073    07059702    dmabuf17073
    Attached Devices:
Total 0 devices attached

00016384    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17072    07059701    dmabuf17072
    Attached Devices:
Total 0 devices attached

00122880    00000002    00080007    00000001    ion-system-1358-omx@1.0-service    dmabuf17047    07057587    dmabuf17047
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

24416256    00000002    00080007    00000001    ion-system-1358-omx@1.0-service    dmabuf17046    07057586    dmabuf17046
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

16502784    00000002    00080007    00000001    ion-system-1358-omx@1.0-service    dmabuf17045    07057585    dmabuf17045
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17021    07057561    dmabuf17021
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17020    07057557    dmabuf17020
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17019    07057553    dmabuf17019
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17018    07059676    dmabuf17018
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17017    07059672    dmabuf17017
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17016    07059668    dmabuf17016
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17015    07059664    dmabuf17015
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17014    07058606    dmabuf17014
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17013    07058602    dmabuf17013
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17012    07058598    dmabuf17012
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17011    07058594    dmabuf17011
    Attached Devices:
Total 0 devices attached

08851456    00000002    00080007    00000002    ion-system-1358-omx@1.0-service    dmabuf17010    07058590    dmabuf17010
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf17009    07059653    dmabuf17009
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000005    ion-system-1006-allocator-servi    dmabuf17008    07059652    dmabuf17008
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf17007    07059651    dmabuf17007
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000005    ion-system-1006-allocator-servi    dmabuf17006    07059650    dmabuf17006
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf17005    07059649    dmabuf17005
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf17004    07059648    dmabuf17004
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
    kgsl-3d0
Total 3 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf17003    07059647    dmabuf17003
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000007    ion-system-1006-allocator-servi    dmabuf17002    07059646    dmabuf17002
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
    kgsl-3d0
Total 3 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf17001    07059645    dmabuf17001
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf17000    07059644    dmabuf17000
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf16999    07058580    dmabuf16999
    Attached Devices:
Total 0 devices attached

10969088    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf16998    07058579    dmabuf16998
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000008    ion-system-1006-allocator-servi    dmabuf16956    07047666    dmabuf16956
    Attached Devices:
Total 0 devices attached

10969088    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf16955    07047665    dmabuf16955
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf16929    07048400    dmabuf16929
    Attached Devices:
Total 0 devices attached

10969088    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf16928    07048399    dmabuf16928
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16858    06802333    dmabuf16858
    Attached Devices:
Total 0 devices attached

10969088    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16857    06802332    dmabuf16857
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16827    06958738    dmabuf16827
    Attached Devices:
Total 0 devices attached

10969088    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16826    06958737    dmabuf16826
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16792    07040695    dmabuf16792
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf16791    07040694    dmabuf16791
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16790    06963704    dmabuf16790
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf16789    06963703    dmabuf16789
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16788    07040691    dmabuf16788
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf16787    07040690    dmabuf16787
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16786    07037878    dmabuf16786
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf16785    07037877    dmabuf16785
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16784    06962398    dmabuf16784
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf16783    06962397    dmabuf16783
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf16776    06962386    dmabuf16776
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf16775    06962385    dmabuf16775
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf14044    03156314    dmabuf14044
    Attached Devices:
Total 0 devices attached

10969088    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf14043    03156313    dmabuf14043
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf10793    02508124    dmabuf10793
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf10792    02508123    dmabuf10792
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6237    01620958    dmabuf6237
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6236    01620957    dmabuf6236
    Attached Devices:
Total 0 devices attached

00151552    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6235    01620956    dmabuf6235
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6162    01810478    dmabuf6162
    Attached Devices:
Total 0 devices attached

00262144    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6161    01810477    dmabuf6161
    Attached Devices:
Total 0 devices attached

00999424    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6160    01810476    dmabuf6160
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6121    01809929    dmabuf6121
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6120    01809928    dmabuf6120
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6119    01809927    dmabuf6119
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6118    01809926    dmabuf6118
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6117    01809925    dmabuf6117
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6116    01809924    dmabuf6116
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6115    01809923    dmabuf6115
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6114    01809922    dmabuf6114
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6113    01809921    dmabuf6113
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6112    01809920    dmabuf6112
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6111    01809919    dmabuf6111
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6110    01809918    dmabuf6110
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6109    01809917    dmabuf6109
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6108    01809916    dmabuf6108
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6107    01811683    dmabuf6107
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6106    01811682    dmabuf6106
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6105    01811681    dmabuf6105
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6104    01811680    dmabuf6104
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6103    01620889    dmabuf6103
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6102    01809915    dmabuf6102
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6101    01809914    dmabuf6101
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6100    01809913    dmabuf6100
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6099    01809912    dmabuf6099
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6098    01809911    dmabuf6098
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6097    01809910    dmabuf6097
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6096    01809909    dmabuf6096
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6095    01809908    dmabuf6095
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6094    01809907    dmabuf6094
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6093    01809906    dmabuf6093
    Attached Devices:
Total 0 devices attached

00065536    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6092    01809905    dmabuf6092
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6091    01809904    dmabuf6091
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6090    01809903    dmabuf6090
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6089    01809902    dmabuf6089
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6088    01809901    dmabuf6088
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6087    01809900    dmabuf6087
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6086    01809899    dmabuf6086
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6085    01809898    dmabuf6085
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6084    01809897    dmabuf6084
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6083    01809896    dmabuf6083
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6082    01809895    dmabuf6082
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6081    01809894    dmabuf6081
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6080    01809893    dmabuf6080
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6079    01809892    dmabuf6079
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6078    01809891    dmabuf6078
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6077    01809890    dmabuf6077
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6076    01809889    dmabuf6076
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6075    01809888    dmabuf6075
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6074    01809887    dmabuf6074
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6073    01809886    dmabuf6073
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6072    01809885    dmabuf6072
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6071    01809884    dmabuf6071
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6070    01809883    dmabuf6070
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6069    01809882    dmabuf6069
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6068    01809881    dmabuf6068
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6067    01809880    dmabuf6067
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6066    01809879    dmabuf6066
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6065    01809878    dmabuf6065
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6064    01809877    dmabuf6064
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6063    01809876    dmabuf6063
    Attached Devices:
Total 0 devices attached

00294912    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6062    01809875    dmabuf6062
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6061    01809874    dmabuf6061
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6060    01809873    dmabuf6060
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6059    01809872    dmabuf6059
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6058    01809871    dmabuf6058
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6057    01809870    dmabuf6057
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6056    01809869    dmabuf6056
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6055    01809868    dmabuf6055
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6054    01809867    dmabuf6054
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6053    01809866    dmabuf6053
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6052    01809865    dmabuf6052
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6051    01809864    dmabuf6051
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6050    01809863    dmabuf6050
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6049    01809862    dmabuf6049
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6048    01809861    dmabuf6048
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6047    01809860    dmabuf6047
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6046    01809859    dmabuf6046
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6045    01809858    dmabuf6045
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6044    01809857    dmabuf6044
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6043    01809856    dmabuf6043
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6042    01809855    dmabuf6042
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6041    01809854    dmabuf6041
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6040    01809853    dmabuf6040
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6039    01809852    dmabuf6039
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6038    01809851    dmabuf6038
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6037    01809850    dmabuf6037
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6036    01809849    dmabuf6036
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6035    01809848    dmabuf6035
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6034    01809847    dmabuf6034
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf6033    01809846    dmabuf6033
    Attached Devices:
Total 0 devices attached

00008192    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6032    01809845    dmabuf6032
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6031    01809844    dmabuf6031
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6030    01809843    dmabuf6030
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6029    01809842    dmabuf6029
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6028    01809841    dmabuf6028
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6027    01809840    dmabuf6027
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6026    01809839    dmabuf6026
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6025    01809838    dmabuf6025
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6024    01809837    dmabuf6024
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6023    01809836    dmabuf6023
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6022    01809835    dmabuf6022
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6021    01809834    dmabuf6021
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6020    01809833    dmabuf6020
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6019    01809832    dmabuf6019
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6018    01809831    dmabuf6018
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6017    01809830    dmabuf6017
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6016    01809829    dmabuf6016
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6015    01809828    dmabuf6015
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6014    01809827    dmabuf6014
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6013    01809826    dmabuf6013
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6012    01809825    dmabuf6012
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6011    01809824    dmabuf6011
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6010    01809823    dmabuf6010
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6009    01809822    dmabuf6009
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6008    01809821    dmabuf6008
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6007    01809820    dmabuf6007
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6006    01809819    dmabuf6006
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6005    01809818    dmabuf6005
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6004    01809817    dmabuf6004
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6003    01809816    dmabuf6003
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf6002    01809815    dmabuf6002
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf5991    01620874    dmabuf5991
    Attached Devices:
Total 0 devices attached

00020480    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf5990    01620873    dmabuf5990
    Attached Devices:
Total 0 devices attached

00053248    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf5989    01620872    dmabuf5989
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf5888    01620854    dmabuf5888
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf5887    01620853    dmabuf5887
    Attached Devices:
Total 0 devices attached

00606208    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf5886    01620852    dmabuf5886
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf2037    00366312    dmabuf2037
    Attached Devices:
Total 0 devices attached

00561152    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf2036    00366311    dmabuf2036
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf2035    00366310    dmabuf2035
    Attached Devices:
Total 0 devices attached

00561152    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf2034    00366309    dmabuf2034
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf1084    00215844    dmabuf1084
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000005    ion-system-1006-allocator-servi    dmabuf1083    00215843    dmabuf1083
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf1044    00205307    dmabuf1044
    Attached Devices:
Total 0 devices attached

00282624    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf1043    00205306    dmabuf1043
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
    kgsl-3d0
Total 3 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf1010    00205248    dmabuf1010
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf1009    00205247    dmabuf1009
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf1008    00205246    dmabuf1008
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf1007    00205245    dmabuf1007
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf1006    00205242    dmabuf1006
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf1005    00205241    dmabuf1005
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf1004    00204394    dmabuf1004
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf1003    00204393    dmabuf1003
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf1002    00198139    dmabuf1002
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf1001    00198138    dmabuf1001
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf1000    00205238    dmabuf1000
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf999    00205237    dmabuf999
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf998    00204385    dmabuf998
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf997    00204384    dmabuf997
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf996    00204380    dmabuf996
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf995    00204379    dmabuf995
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf994    00205234    dmabuf994
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf993    00205233    dmabuf993
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf992    00204376    dmabuf992
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf991    00204375    dmabuf991
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf990    00205230    dmabuf990
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf989    00205229    dmabuf989
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf988    00205223    dmabuf988
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf987    00205222    dmabuf987
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf986    00205213    dmabuf986
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf985    00205212    dmabuf985
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf984    00205209    dmabuf984
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf983    00205208    dmabuf983
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf982    00204371    dmabuf982
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf981    00204370    dmabuf981
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf845    00100876    dmabuf845
    Attached Devices:
Total 0 devices attached

00282624    00000002    00080007    00000007    ion-system-1006-allocator-servi    dmabuf844    00100875    dmabuf844
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
    kgsl-3d0
Total 3 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf809    00075396    dmabuf809
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf808    00075395    dmabuf808
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf807    00092787    dmabuf807
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf806    00092786    dmabuf806
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf805    00092779    dmabuf805
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf804    00092778    dmabuf804
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf803    00091856    dmabuf803
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf802    00091855    dmabuf802
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf801    00095534    dmabuf801
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf800    00095533    dmabuf800
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf799    00084705    dmabuf799
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf798    00084704    dmabuf798
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf797    00091844    dmabuf797
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf796    00091843    dmabuf796
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf795    00095519    dmabuf795
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf794    00095518    dmabuf794
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf793    00091839    dmabuf793
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf792    00091838    dmabuf792
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf791    00091833    dmabuf791
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf790    00091832    dmabuf790
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf789    00084668    dmabuf789
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf788    00084667    dmabuf788
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf787    00091818    dmabuf787
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf786    00091817    dmabuf786
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf785    00084646    dmabuf785
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf784    00084645    dmabuf784
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf783    00092690    dmabuf783
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf782    00092689    dmabuf782
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf781    00091815    dmabuf781
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf780    00091814    dmabuf780
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf779    00084638    dmabuf779
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf778    00084637    dmabuf778
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf777    00092673    dmabuf777
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf776    00092672    dmabuf776
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf775    00092670    dmabuf775
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf774    00092669    dmabuf774
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf771    00092654    dmabuf771
    Attached Devices:
Total 0 devices attached

00114688    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf770    00092653    dmabuf770
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf753    00084455    dmabuf753
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000001    ion-system-1006-allocator-servi    dmabuf752    00084454    dmabuf752
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf751    00092467    dmabuf751
    Attached Devices:
Total 0 devices attached

00016384    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf750    00092466    dmabuf750
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf749    00082929    dmabuf749
    Attached Devices:
Total 0 devices attached

00045056    00000002    00080007    00000001    ion-system-1006-allocator-servi    dmabuf748    00082928    dmabuf748
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf747    00082927    dmabuf747
    Attached Devices:
Total 0 devices attached

00016384    00000002    00080007    00000001    ion-system-1006-allocator-servi    dmabuf746    00082926    dmabuf746
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf724    00077131    dmabuf724
    Attached Devices:
Total 0 devices attached

00561152    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf723    00077130    dmabuf723
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf722    00077998    dmabuf722
    Attached Devices:
Total 0 devices attached

00561152    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf721    00077997    dmabuf721
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf716    00079920    dmabuf716
    Attached Devices:
Total 0 devices attached

00282624    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf715    00079919    dmabuf715
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
    kgsl-3d0
Total 3 devices attached

00032768    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf714    00079915    dmabuf714
    Attached Devices:
Total 0 devices attached

00282624    00000002    00080007    00000006    ion-system-1006-allocator-servi    dmabuf713    00079914    dmabuf713
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
    kgsl-3d0
Total 3 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf712    00077113    dmabuf712
    Attached Devices:
Total 0 devices attached

00561152    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf711    00077112    dmabuf711
    Attached Devices:
    kgsl-3d0
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf513    00022038    dmabuf513
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf512    00022037    dmabuf512
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf511    00022036    dmabuf511
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf510    00022035    dmabuf510
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf508    00023549    dmabuf508
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf507    00023548    dmabuf507
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf506    00023547    dmabuf506
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf505    00023546    dmabuf505
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf504    00023545    dmabuf504
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf503    00023544    dmabuf503
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf502    00023543    dmabuf502
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf501    00023542    dmabuf501
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf500    00023541    dmabuf500
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf499    00023540    dmabuf499
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf498    00023539    dmabuf498
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf497    00023538    dmabuf497
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf496    00023537    dmabuf496
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf495    00023536    dmabuf495
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf493    00023535    dmabuf493
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf492    00023534    dmabuf492
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf491    00023533    dmabuf491
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf490    00023532    dmabuf490
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf489    00023531    dmabuf489
    Attached Devices:
Total 0 devices attached

04050944    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf488    00023530    dmabuf488
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf486    00019142    dmabuf486
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf485    00019141    dmabuf485
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf484    00023529    dmabuf484
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf483    00023528    dmabuf483
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf482    00023527    dmabuf482
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf481    00023526    dmabuf481
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf480    00019137    dmabuf480
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf479    00019136    dmabuf479
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf478    00019135    dmabuf478
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf477    00019134    dmabuf477
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf476    00019133    dmabuf476
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf475    00019132    dmabuf475
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf473    00074408    dmabuf473
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf472    00074407    dmabuf472
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf471    00074406    dmabuf471
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf470    00074405    dmabuf470
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf469    00074404    dmabuf469
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf468    00074403    dmabuf468
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf467    00074402    dmabuf467
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf466    00074401    dmabuf466
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf465    00074400    dmabuf465
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf464    00074399    dmabuf464
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf463    00074398    dmabuf463
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf462    00074397    dmabuf462
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf461    00074396    dmabuf461
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf460    00074395    dmabuf460
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf459    00074394    dmabuf459
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf458    00074393    dmabuf458
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf457    00074392    dmabuf457
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf456    00074391    dmabuf456
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf367    00074125    dmabuf367
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf366    00074124    dmabuf366
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf365    00074123    dmabuf365
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf364    00074122    dmabuf364
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf363    00074121    dmabuf363
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf362    00074120    dmabuf362
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf361    00074119    dmabuf361
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf360    00074118    dmabuf360
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf359    00074117    dmabuf359
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf358    00074116    dmabuf358
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf357    00074115    dmabuf357
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf356    00074114    dmabuf356
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf355    00074113    dmabuf355
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf354    00074112    dmabuf354
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf353    00074111    dmabuf353
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf352    00074110    dmabuf352
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf351    00074109    dmabuf351
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf350    00074108    dmabuf350
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf349    00074107    dmabuf349
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf348    00074106    dmabuf348
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf347    00074105    dmabuf347
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf346    00074104    dmabuf346
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf345    00074103    dmabuf345
    Attached Devices:
Total 0 devices attached

00397312    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf344    00074102    dmabuf344
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf343    00074101    dmabuf343
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf342    00074100    dmabuf342
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf341    00074099    dmabuf341
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf340    00074098    dmabuf340
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf339    00074097    dmabuf339
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf338    00074096    dmabuf338
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf337    00074095    dmabuf337
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf336    00074094    dmabuf336
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf335    00074093    dmabuf335
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf334    00074092    dmabuf334
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf333    00074091    dmabuf333
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf332    00074090    dmabuf332
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf331    00074089    dmabuf331
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf330    00074088    dmabuf330
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf329    00074087    dmabuf329
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf328    00074086    dmabuf328
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf327    00074085    dmabuf327
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf326    00074084    dmabuf326
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf325    00074083    dmabuf325
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf324    00074082    dmabuf324
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf323    00072355    dmabuf323
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf322    00072354    dmabuf322
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf321    00072353    dmabuf321
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf320    00072352    dmabuf320
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf319    00072351    dmabuf319
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf318    00072350    dmabuf318
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf317    00072349    dmabuf317
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf316    00072348    dmabuf316
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf315    00072347    dmabuf315
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf314    00072346    dmabuf314
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf296    00071072    dmabuf296
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf295    00071071    dmabuf295
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf294    00071070    dmabuf294
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf293    00071069    dmabuf293
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf292    00071068    dmabuf292
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf291    00071067    dmabuf291
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf290    00071066    dmabuf290
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf289    00071065    dmabuf289
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf288    00071064    dmabuf288
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf287    00071063    dmabuf287
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf286    00071062    dmabuf286
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf285    00071061    dmabuf285
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf284    00071060    dmabuf284
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf283    00071059    dmabuf283
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf282    00071058    dmabuf282
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf281    00071057    dmabuf281
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf280    00071056    dmabuf280
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf279    00071055    dmabuf279
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf278    00071054    dmabuf278
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf277    00071053    dmabuf277
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf276    00071052    dmabuf276
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf275    00071051    dmabuf275
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf274    00071050    dmabuf274
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf273    00071049    dmabuf273
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf272    00071048    dmabuf272
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf271    00071047    dmabuf271
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf270    00071046    dmabuf270
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf269    00071045    dmabuf269
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf268    00071044    dmabuf268
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf267    00071043    dmabuf267
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf266    00071042    dmabuf266
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf265    00071041    dmabuf265
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf264    00071040    dmabuf264
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf263    00071039    dmabuf263
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf262    00071038    dmabuf262
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf261    00071037    dmabuf261
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf260    00071036    dmabuf260
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf259    00071035    dmabuf259
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf258    00071034    dmabuf258
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf257    00071033    dmabuf257
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf256    00071032    dmabuf256
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf255    00071031    dmabuf255
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf254    00071030    dmabuf254
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf253    00071029    dmabuf253
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf252    00071028    dmabuf252
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf251    00071027    dmabuf251
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf250    00071026    dmabuf250
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf249    00071025    dmabuf249
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf248    00071024    dmabuf248
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf247    00071023    dmabuf247
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf246    00071022    dmabuf246
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf245    00071021    dmabuf245
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf244    00071020    dmabuf244
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf243    00071019    dmabuf243
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000001    ion-system-1358-omx@1.0-service    dmabuf242    00060298    dmabuf242
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

03137536    00000002    00080007    00000001    ion-system-1358-omx@1.0-service    dmabuf241    00060297    dmabuf241
    Attached Devices:
    aa00000.qcom,vidc:non_secure_cb
Total 1 devices attached

00032768    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf215    00073846    dmabuf215
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf214    00073845    dmabuf214
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf213    00073844    dmabuf213
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf212    00073843    dmabuf212
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf211    00073842    dmabuf211
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf210    00073841    dmabuf210
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf209    00073840    dmabuf209
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf208    00073839    dmabuf208
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf207    00073838    dmabuf207
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf206    00073837    dmabuf206
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf205    00073836    dmabuf205
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf204    00073835    dmabuf204
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf203    00073834    dmabuf203
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf202    00073833    dmabuf202
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf201    00073832    dmabuf201
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf200    00073831    dmabuf200
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf199    00073830    dmabuf199
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf198    00073829    dmabuf198
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf197    00073828    dmabuf197
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf196    00073827    dmabuf196
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf195    00073826    dmabuf195
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf194    00073825    dmabuf194
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf193    00073824    dmabuf193
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf192    00073823    dmabuf192
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf191    00073822    dmabuf191
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf190    00073821    dmabuf190
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf189    00073820    dmabuf189
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf188    00073819    dmabuf188
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf187    00073818    dmabuf187
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf186    00073817    dmabuf186
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf167    00072012    dmabuf167
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf166    00072011    dmabuf166
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf165    00072010    dmabuf165
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf164    00072009    dmabuf164
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf163    00065234    dmabuf163
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf162    00065233    dmabuf162
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf161    00065232    dmabuf161
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf160    00065231    dmabuf160
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf159    00065230    dmabuf159
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf158    00065229    dmabuf158
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf157    00065228    dmabuf157
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf156    00065227    dmabuf156
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf155    00065226    dmabuf155
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf154    00065225    dmabuf154
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf153    00065224    dmabuf153
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf152    00065223    dmabuf152
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf151    00065222    dmabuf151
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf150    00065221    dmabuf150
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf149    00065220    dmabuf149
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf148    00065219    dmabuf148
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf147    00065218    dmabuf147
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf146    00065217    dmabuf146
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf145    00065216    dmabuf145
    Attached Devices:
Total 0 devices attached

04284416    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf144    00065215    dmabuf144
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf143    00065214    dmabuf143
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf142    00065213    dmabuf142
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf141    00065212    dmabuf141
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf140    00065211    dmabuf140
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf139    00065210    dmabuf139
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf138    00065209    dmabuf138
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf137    00065208    dmabuf137
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf136    00065207    dmabuf136
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf135    00065206    dmabuf135
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf134    00065205    dmabuf134
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf133    00065204    dmabuf133
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf132    00065203    dmabuf132
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf131    00065202    dmabuf131
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf130    00065201    dmabuf130
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf129    00065200    dmabuf129
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf128    00065199    dmabuf128
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf127    00065198    dmabuf127
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf126    00065197    dmabuf126
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf125    00065196    dmabuf125
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf124    00065195    dmabuf124
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf123    00065194    dmabuf123
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf122    00065193    dmabuf122
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf121    00065192    dmabuf121
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf120    00065191    dmabuf120
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf119    00065190    dmabuf119
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf118    00065189    dmabuf118
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf117    00065188    dmabuf117
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf116    00065187    dmabuf116
    Attached Devices:
Total 0 devices attached

00032768    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf115    00065186    dmabuf115
    Attached Devices:
Total 0 devices attached

01384448    00000002    00080007    00000002    ion-system-1029-vendor.somc.har    dmabuf114    00065185    dmabuf114
    Attached Devices:
Total 0 devices attached

01048576    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf89    00071825    dmabuf89
    Attached Devices:
    soc:qcom,cam_smmu:msm_cam_smmu_icp
Total 1 devices attached

00008192    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf88    00071824    dmabuf88
    Attached Devices:
    soc:qcom,cam_smmu:msm_cam_smmu_icp
Total 1 devices attached

01048576    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf87    00071823    dmabuf87
    Attached Devices:
    soc:qcom,cam_smmu:msm_cam_smmu_icp
Total 1 devices attached

01048576    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf86    00071822    dmabuf86
    Attached Devices:
    soc:qcom,cam_smmu:msm_cam_smmu_icp
Total 1 devices attached

01048576    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf85    00071821    dmabuf85
    Attached Devices:
    soc:qcom,cam_smmu:msm_cam_smmu_icp
Total 1 devices attached

01048576    00000002    00080007    00000001    ion-system-1029-vendor.somc.har    dmabuf84    00071820    dmabuf84
    Attached Devices:
    soc:qcom,cam_smmu:msm_cam_smmu_icp
Total 1 devices attached

00008192    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf82    00063179    dmabuf82
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf81    00064877    dmabuf81
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf80    00064876    dmabuf80
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf79    00064875    dmabuf79
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf78    00064874    dmabuf78
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00008192    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf77    00063178    dmabuf77
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf75    00063176    dmabuf75
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000002    ion-system-972-audio.service    dmabuf74    00063175    dmabuf74
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-972-audio.service    dmabuf73    00063174    dmabuf73
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf72    00063173    dmabuf72
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf71    00063172    dmabuf71
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf70    00063171    dmabuf70
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf69    00063170    dmabuf69
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf68    00063169    dmabuf68
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf67    00063168    dmabuf67
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf66    00063167    dmabuf66
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf65    00063166    dmabuf65
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf64    00064873    dmabuf64
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf63    00064872    dmabuf63
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf62    00062371    dmabuf62
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00016384    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf61    00064871    dmabuf61
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf60    00062370    dmabuf60
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf59    00062369    dmabuf59
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00061440    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf58    00062368    dmabuf58
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00061440    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf57    00062367    dmabuf57
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00245760    00000002    00080007    00000003    ion-system-972-audio.service    dmabuf56    00062366    dmabuf56
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00020480    00000002    00080007    00000003    ion-system-1007-composer-servic    dmabuf55    00064464    dmabuf55
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
Total 1 devices attached

00020480    00000002    00080007    00000003    ion-system-1007-composer-servic    dmabuf54    00064463    dmabuf54
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
Total 1 devices attached

00020480    00000002    00080007    00000003    ion-system-1007-composer-servic    dmabuf53    00064462    dmabuf53
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
Total 1 devices attached

00032768    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf50    00062345    dmabuf50
    Attached Devices:
Total 0 devices attached

11083776    00000002    00080007    00000004    ion-system-1006-allocator-servi    dmabuf49    00062344    dmabuf49
    Attached Devices:
    ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
    kgsl-3d0
Total 2 devices attached

00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf35    00064244    dmabuf35
    Attached Devices:
Total 0 devices attached

00004096    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf34    00064243    dmabuf34
    Attached Devices:
    kgsl-3d0
Total 1 devices attached

00262144    00000002    00080007    00000003    ion-system-1387-cdsprpcd    dmabuf31    00018895    dmabuf31
    Attached Devices:
    soc:qcom,msm_fastrpc:qcom,msm_fastrpc_compute_cb1
Total 1 devices attached

00262144    00000002    00080007    00000003    ion-system-1385-adsprpcd    dmabuf30    00021832    dmabuf30
    Attached Devices:
    soc:qcom,msm_fastrpc:qcom,msm_fastrpc_compute_cb11
Total 1 devices attached

00012288    00000002    00080007    00000003    ion-qsecom-1143-android.hardwar    dmabuf23    00047359    dmabuf23
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00004096    00000002    00080007    00000001    ion-system-92-kworker/7:1    dmabuf19    00046502    dmabuf19
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00008192    00000002    00080007    00000001    ion-system-92-kworker/7:1    dmabuf18    00046501    dmabuf18
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00004096    00000002    00080007    00000001    ion-system-92-kworker/7:1    dmabuf17    00046500    dmabuf17
    Attached Devices:
    soc:qcom,msm-audio-apr:qcom,msm-audio-ion
Total 1 devices attached

00045056    00000002    00080007    00000003    ion-qsecom-983-android.hardwar    dmabuf16    00043480    dmabuf16
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00004096    00000002    00080007    00000001    ion-system-579-init    dmabuf15    00043228    dmabuf15
    Attached Devices:
    ab00000.qcom,cvp:cvp_non_secure_cb
Total 1 devices attached

03137536    00000002    00080007    00000001    ion-system-579-init    dmabuf14    00043227    dmabuf14
    Attached Devices:
    ab00000.qcom,cvp:cvp_non_secure_cb
Total 1 devices attached

00045056    00000002    00080007    00000003    ion-qsecom-737-keymasterd    dmabuf13    00041541    dmabuf13
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00045056    00000002    00080007    00000003    ion-qsecom-723-android.hardwar    dmabuf12    00033196    dmabuf12
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00045056    00000002    00080007    00000003    ion-qsecom-641-android.hardwar    dmabuf11    00025113    dmabuf11
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00028672    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf10    00032981    dmabuf10
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00020480    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf9    00041460    dmabuf9
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf8    00025105    dmabuf8
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00004096    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf7    00025104    dmabuf7
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00516096    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf6    00041456    dmabuf6
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00020480    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf5    00042068    dmabuf5
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00020480    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf4    00042064    dmabuf4
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00008192    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf3    00041455    dmabuf3
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00020480    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf2    00041453    dmabuf2
    Attached Devices:
    82400000.qseecom
Total 1 devices attached

00028672    00000002    00080007    00000003    ion-qsecom-661-qseecomd    dmabuf1    00042047    dmabuf1
    Attached Devices:
    82400000.qseecom
Total 1 devices attached


Total 654 objects, 744144896 bytes


>> And the LKML standard respond to that is "SHOW ME THE CODE".
>>
>> When the top memgc has a aggregated information on dma-buf it is maybe
>> a better source to meminfo. But then it also imply that dma-buf requires memcg.
>>
>> And I dont see any problem to replace this with something better with it is ready.
> Well, the problem with replacing the counter in /proc/meminfo is that it
> requires all users of /proc/meminfo to adapt to the changes.
>
> That's why it's way less painful to go an extra mile and define (hopefully)
> stable user ABI up front.
>
> Why can't you use fdinfo to show how much memory consumed by a dma-buf?
>
>>> -Daniel
>>>
>>>> ---
>>>>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
>>>>  fs/proc/meminfo.c         |  5 ++++-
>>>>  include/linux/dma-buf.h   |  1 +
>>>>  3 files changed, 17 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
>>>> index f264b70c383e..4dc37cd4293b 100644
>>>> --- a/drivers/dma-buf/dma-buf.c
>>>> +++ b/drivers/dma-buf/dma-buf.c
>>>> @@ -37,6 +37,7 @@ struct dma_buf_list {
>>>>  };
>>>>  
>>>>  static struct dma_buf_list db_list;
>>>> +static atomic_long_t dma_buf_global_allocated;
>>>>  
>>>>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
>>>>  {
>>>> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
>>>>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
>>>>  		dma_resv_fini(dmabuf->resv);
>>>>  
>>>> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
>>>>  	module_put(dmabuf->owner);
>>>>  	kfree(dmabuf->name);
>>>>  	kfree(dmabuf);
>>>> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
>>>>  	mutex_lock(&db_list.lock);
>>>>  	list_add(&dmabuf->list_node, &db_list.head);
>>>>  	mutex_unlock(&db_list.lock);
>>>> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
>>>>  
>>>>  	return dmabuf;
>>>>  
>>>> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
>>>>  }
>>>>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
>>>>  
>>>> +/**
>>>> + * dma_buf_allocated_pages - Return the used nr of pages
>>>> + * allocated for dma-buf
>>>> + */
>>>> +long dma_buf_allocated_pages(void)
>>>> +{
>>>> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
>>>> +}
>>>> +
>>>>  #ifdef CONFIG_DEBUG_FS
>>>>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
>>>>  {
>>>> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
>>>> index 6fa761c9cc78..ccc7c40c8db7 100644
>>>> --- a/fs/proc/meminfo.c
>>>> +++ b/fs/proc/meminfo.c
>>>> @@ -16,6 +16,7 @@
>>>>  #ifdef CONFIG_CMA
>>>>  #include <linux/cma.h>
>>>>  #endif
>>>> +#include <linux/dma-buf.h>
>>>>  #include <asm/page.h>
>>>>  #include "internal.h"
>>>>  
>>>> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
>>>>  	show_val_kb(m, "CmaFree:        ",
>>>>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
>>>>  #endif
>>>> -
>>>> +#ifdef CONFIG_DMA_SHARED_BUFFER
>>>> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
>>>> +#endif
>>>>  	hugetlb_report_meminfo(m);
>>>>  
>>>>  	arch_report_meminfo(m);
>>>> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
>>>> index efdc56b9d95f..5b05816bd2cd 100644
>>>> --- a/include/linux/dma-buf.h
>>>> +++ b/include/linux/dma-buf.h
>>>> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
>>>>  		 unsigned long);
>>>>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>>>>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>>>> +long dma_buf_allocated_pages(void);
>>>>  #endif /* __DMA_BUF_H__ */
>>>> -- 
>>>> 2.17.1
>>>>
>>>> _______________________________________________
>>>> dri-devel mailing list
>>>> dri-devel@lists.freedesktop.org
>>>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!qW8kUOZyY4Dkew6OvqgfoM-5unQNVeF_M1biaIAyQQBR0KB7ksRzZjoh382ZdGGQR9k$
Daniel Vetter April 20, 2021, 11:14 a.m. UTC | #5
On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
> On 4/20/21 10:58 AM, Daniel Vetter wrote:
> > On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
> >> This adds a total used dma-buf memory. Details
> >> can be found in debugfs, however it is not for everyone
> >> and not always available. dma-buf are indirect allocated by
> >> userspace. So with this value we can monitor and detect
> >> userspace applications that have problems.
> >>
> >> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
> > So there have been tons of discussions around how to track dma-buf and
> > why, and I really need to understand the use-cass here first I think. proc
> > uapi is as much forever as anything else, and depending what you're doing
> > this doesn't make any sense at all:
> >
> > - on most linux systems dma-buf are only instantiated for shared buffer.
> >   So there this gives you a fairly meaningless number and not anything
> >   reflecting gpu memory usage at all.
> >
> > - on Android all buffers are allocated through dma-buf afaik. But there
> >   we've recently had some discussions about how exactly we should track
> >   all this, and the conclusion was that most of this should be solved by
> >   cgroups long term. So if this is for Android, then I don't think adding
> >   random quick stop-gaps to upstream is a good idea (because it's a pretty
> >   long list of patches that have come up on this).
> >
> > So what is this for?
> 
> For the overview. dma-buf today only have debugfs for info. Debugfs
> is not allowed by google to use in andoid. So this aggregate the information
> so we can get information on what going on on the system. 
> 
> And the LKML standard respond to that is "SHOW ME THE CODE".

Yes. Except this extends to how exactly this is supposed to be used in
userspace and acted upon.

> When the top memgc has a aggregated information on dma-buf it is maybe
> a better source to meminfo. But then it also imply that dma-buf requires memcg.
> 
> And I dont see any problem to replace this with something better with it is ready.

The thing is, this is uapi. Once it's merged we cannot, ever, replace it.
It must be kept around forever, or a very close approximation thereof. So
merging this with the justification that we can fix it later on or replace
isn't going to happen.
-Daniel

> 
> > -Daniel
> >
> >> ---
> >>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
> >>  fs/proc/meminfo.c         |  5 ++++-
> >>  include/linux/dma-buf.h   |  1 +
> >>  3 files changed, 17 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> >> index f264b70c383e..4dc37cd4293b 100644
> >> --- a/drivers/dma-buf/dma-buf.c
> >> +++ b/drivers/dma-buf/dma-buf.c
> >> @@ -37,6 +37,7 @@ struct dma_buf_list {
> >>  };
> >>  
> >>  static struct dma_buf_list db_list;
> >> +static atomic_long_t dma_buf_global_allocated;
> >>  
> >>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
> >>  {
> >> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
> >>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
> >>  		dma_resv_fini(dmabuf->resv);
> >>  
> >> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
> >>  	module_put(dmabuf->owner);
> >>  	kfree(dmabuf->name);
> >>  	kfree(dmabuf);
> >> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
> >>  	mutex_lock(&db_list.lock);
> >>  	list_add(&dmabuf->list_node, &db_list.head);
> >>  	mutex_unlock(&db_list.lock);
> >> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
> >>  
> >>  	return dmabuf;
> >>  
> >> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
> >>  }
> >>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
> >>  
> >> +/**
> >> + * dma_buf_allocated_pages - Return the used nr of pages
> >> + * allocated for dma-buf
> >> + */
> >> +long dma_buf_allocated_pages(void)
> >> +{
> >> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
> >> +}
> >> +
> >>  #ifdef CONFIG_DEBUG_FS
> >>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
> >>  {
> >> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
> >> index 6fa761c9cc78..ccc7c40c8db7 100644
> >> --- a/fs/proc/meminfo.c
> >> +++ b/fs/proc/meminfo.c
> >> @@ -16,6 +16,7 @@
> >>  #ifdef CONFIG_CMA
> >>  #include <linux/cma.h>
> >>  #endif
> >> +#include <linux/dma-buf.h>
> >>  #include <asm/page.h>
> >>  #include "internal.h"
> >>  
> >> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
> >>  	show_val_kb(m, "CmaFree:        ",
> >>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
> >>  #endif
> >> -
> >> +#ifdef CONFIG_DMA_SHARED_BUFFER
> >> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
> >> +#endif
> >>  	hugetlb_report_meminfo(m);
> >>  
> >>  	arch_report_meminfo(m);
> >> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
> >> index efdc56b9d95f..5b05816bd2cd 100644
> >> --- a/include/linux/dma-buf.h
> >> +++ b/include/linux/dma-buf.h
> >> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
> >>  		 unsigned long);
> >>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
> >>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
> >> +long dma_buf_allocated_pages(void);
> >>  #endif /* __DMA_BUF_H__ */
> >> -- 
> >> 2.17.1
> >>
> >> _______________________________________________
> >> dri-devel mailing list
> >> dri-devel@lists.freedesktop.org
> >> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!qW8kUOZyY4Dkew6OvqgfoM-5unQNVeF_M1biaIAyQQBR0KB7ksRzZjoh382ZdGGQR9k$ 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Peter Enderborg April 20, 2021, 11:37 a.m. UTC | #6
On 4/20/21 1:14 PM, Daniel Vetter wrote:
> On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
>> On 4/20/21 10:58 AM, Daniel Vetter wrote:
>>> On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
>>>> This adds a total used dma-buf memory. Details
>>>> can be found in debugfs, however it is not for everyone
>>>> and not always available. dma-buf are indirect allocated by
>>>> userspace. So with this value we can monitor and detect
>>>> userspace applications that have problems.
>>>>
>>>> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
>>> So there have been tons of discussions around how to track dma-buf and
>>> why, and I really need to understand the use-cass here first I think. proc
>>> uapi is as much forever as anything else, and depending what you're doing
>>> this doesn't make any sense at all:
>>>
>>> - on most linux systems dma-buf are only instantiated for shared buffer.
>>>   So there this gives you a fairly meaningless number and not anything
>>>   reflecting gpu memory usage at all.
>>>
>>> - on Android all buffers are allocated through dma-buf afaik. But there
>>>   we've recently had some discussions about how exactly we should track
>>>   all this, and the conclusion was that most of this should be solved by
>>>   cgroups long term. So if this is for Android, then I don't think adding
>>>   random quick stop-gaps to upstream is a good idea (because it's a pretty
>>>   long list of patches that have come up on this).
>>>
>>> So what is this for?
>> For the overview. dma-buf today only have debugfs for info. Debugfs
>> is not allowed by google to use in andoid. So this aggregate the information
>> so we can get information on what going on on the system. 
>>
>> And the LKML standard respond to that is "SHOW ME THE CODE".
> Yes. Except this extends to how exactly this is supposed to be used in
> userspace and acted upon.
>
>> When the top memgc has a aggregated information on dma-buf it is maybe
>> a better source to meminfo. But then it also imply that dma-buf requires memcg.
>>
>> And I dont see any problem to replace this with something better with it is ready.
> The thing is, this is uapi. Once it's merged we cannot, ever, replace it.
> It must be kept around forever, or a very close approximation thereof. So
> merging this with the justification that we can fix it later on or replace
> isn't going to happen.

It is intended to be relevant as long there is a dma-buf. This is a proper
metric. If the newer implementations is not get the same result it is
not doing it right and is not better. If a memcg counter or a global_zone
counter do the same thing they it can replace the suggested method.

But I dont think they will. dma-buf does not have to be mapped to a process,
and the case of vram, it is not covered in current global_zone. All of them
would be very nice to have in some form. But it wont change what the
correct value of what "Total" is.


> -Daniel
>
>>> -Daniel
>>>
>>>> ---
>>>>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
>>>>  fs/proc/meminfo.c         |  5 ++++-
>>>>  include/linux/dma-buf.h   |  1 +
>>>>  3 files changed, 17 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
>>>> index f264b70c383e..4dc37cd4293b 100644
>>>> --- a/drivers/dma-buf/dma-buf.c
>>>> +++ b/drivers/dma-buf/dma-buf.c
>>>> @@ -37,6 +37,7 @@ struct dma_buf_list {
>>>>  };
>>>>  
>>>>  static struct dma_buf_list db_list;
>>>> +static atomic_long_t dma_buf_global_allocated;
>>>>  
>>>>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
>>>>  {
>>>> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
>>>>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
>>>>  		dma_resv_fini(dmabuf->resv);
>>>>  
>>>> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
>>>>  	module_put(dmabuf->owner);
>>>>  	kfree(dmabuf->name);
>>>>  	kfree(dmabuf);
>>>> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
>>>>  	mutex_lock(&db_list.lock);
>>>>  	list_add(&dmabuf->list_node, &db_list.head);
>>>>  	mutex_unlock(&db_list.lock);
>>>> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
>>>>  
>>>>  	return dmabuf;
>>>>  
>>>> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
>>>>  }
>>>>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
>>>>  
>>>> +/**
>>>> + * dma_buf_allocated_pages - Return the used nr of pages
>>>> + * allocated for dma-buf
>>>> + */
>>>> +long dma_buf_allocated_pages(void)
>>>> +{
>>>> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
>>>> +}
>>>> +
>>>>  #ifdef CONFIG_DEBUG_FS
>>>>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
>>>>  {
>>>> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
>>>> index 6fa761c9cc78..ccc7c40c8db7 100644
>>>> --- a/fs/proc/meminfo.c
>>>> +++ b/fs/proc/meminfo.c
>>>> @@ -16,6 +16,7 @@
>>>>  #ifdef CONFIG_CMA
>>>>  #include <linux/cma.h>
>>>>  #endif
>>>> +#include <linux/dma-buf.h>
>>>>  #include <asm/page.h>
>>>>  #include "internal.h"
>>>>  
>>>> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
>>>>  	show_val_kb(m, "CmaFree:        ",
>>>>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
>>>>  #endif
>>>> -
>>>> +#ifdef CONFIG_DMA_SHARED_BUFFER
>>>> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
>>>> +#endif
>>>>  	hugetlb_report_meminfo(m);
>>>>  
>>>>  	arch_report_meminfo(m);
>>>> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
>>>> index efdc56b9d95f..5b05816bd2cd 100644
>>>> --- a/include/linux/dma-buf.h
>>>> +++ b/include/linux/dma-buf.h
>>>> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
>>>>  		 unsigned long);
>>>>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>>>>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>>>> +long dma_buf_allocated_pages(void);
>>>>  #endif /* __DMA_BUF_H__ */
>>>> -- 
>>>> 2.17.1
>>>>
>>>> _______________________________________________
>>>> dri-devel mailing list
>>>> dri-devel@lists.freedesktop.org
>>>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!qW8kUOZyY4Dkew6OvqgfoM-5unQNVeF_M1biaIAyQQBR0KB7ksRzZjoh382ZdGGQR9k$ 
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!vXvDg6I4V__QdL2fA08Rc5v6rjDzxOIQz6kwyMMLUK3_g4z7qZTg1H98BDDTxZeZjI4$
Mike Rapoport April 20, 2021, 11:52 a.m. UTC | #7
On Tue, Apr 20, 2021 at 10:45:21AM +0000, Peter.Enderborg@sony.com wrote:
> On 4/20/21 11:41 AM, Mike Rapoport wrote:
> > Hello Peter,
> >
> > On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
> >> On 4/20/21 10:58 AM, Daniel Vetter wrote:
> >>> On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
> >>>> This adds a total used dma-buf memory. Details
> >>>> can be found in debugfs, however it is not for everyone
> >>>> and not always available. dma-buf are indirect allocated by
> >>>> userspace. So with this value we can monitor and detect
> >>>> userspace applications that have problems.
> >>>>
> >>>> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
> >>> So there have been tons of discussions around how to track dma-buf and
> >>> why, and I really need to understand the use-cass here first I think. proc
> >>> uapi is as much forever as anything else, and depending what you're doing
> >>> this doesn't make any sense at all:
> >>>
> >>> - on most linux systems dma-buf are only instantiated for shared buffer.
> >>>   So there this gives you a fairly meaningless number and not anything
> >>>   reflecting gpu memory usage at all.
> >>>
> >>> - on Android all buffers are allocated through dma-buf afaik. But there
> >>>   we've recently had some discussions about how exactly we should track
> >>>   all this, and the conclusion was that most of this should be solved by
> >>>   cgroups long term. So if this is for Android, then I don't think adding
> >>>   random quick stop-gaps to upstream is a good idea (because it's a pretty
> >>>   long list of patches that have come up on this).
> >>>
> >>> So what is this for?
> >> For the overview. dma-buf today only have debugfs for info. Debugfs
> >> is not allowed by google to use in andoid. So this aggregate the information
> >> so we can get information on what going on on the system. 
> >  
> > Can you send an example debugfs output to see what data are we talking
> > about?
> 
> Sure. This is on a idle system. Im not sure why you need it.The problem is partly that debugfs is
> not accessable on a commercial device.

I wanted to see what kind of information is there, but I didn't think it's
that long :)
 
> Dma-buf Objects:
> size        flags       mode        count       exp_name        buf name    ino    
> 00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17728    07400825    dmabuf17728
>     Attached Devices:
> Total 0 devices attached
> 
> 11083776    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17727    07400824    dmabuf17727
>     Attached Devices:
>     ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
> Total 1 devices attached
> 
> 00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17726    07400823    dmabuf17726
>     Attached Devices:
> Total 0 devices attached
> 
> 11083776    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17725    07400822    dmabuf17725
>     Attached Devices:
>     ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
> Total 1 devices attached

...

> Total 654 objects, 744144896 bytes
 
Isn't the size from the first column also available in fdinfo?

Is there anything that prevents monitoring those?
Peter Enderborg April 20, 2021, 12:03 p.m. UTC | #8
On 4/20/21 1:52 PM, Mike Rapoport wrote:
> On Tue, Apr 20, 2021 at 10:45:21AM +0000, Peter.Enderborg@sony.com wrote:
>> On 4/20/21 11:41 AM, Mike Rapoport wrote:
>>> Hello Peter,
>>>
>>> On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
>>>> On 4/20/21 10:58 AM, Daniel Vetter wrote:
>>>>> On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
>>>>>> This adds a total used dma-buf memory. Details
>>>>>> can be found in debugfs, however it is not for everyone
>>>>>> and not always available. dma-buf are indirect allocated by
>>>>>> userspace. So with this value we can monitor and detect
>>>>>> userspace applications that have problems.
>>>>>>
>>>>>> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
>>>>> So there have been tons of discussions around how to track dma-buf and
>>>>> why, and I really need to understand the use-cass here first I think. proc
>>>>> uapi is as much forever as anything else, and depending what you're doing
>>>>> this doesn't make any sense at all:
>>>>>
>>>>> - on most linux systems dma-buf are only instantiated for shared buffer.
>>>>>   So there this gives you a fairly meaningless number and not anything
>>>>>   reflecting gpu memory usage at all.
>>>>>
>>>>> - on Android all buffers are allocated through dma-buf afaik. But there
>>>>>   we've recently had some discussions about how exactly we should track
>>>>>   all this, and the conclusion was that most of this should be solved by
>>>>>   cgroups long term. So if this is for Android, then I don't think adding
>>>>>   random quick stop-gaps to upstream is a good idea (because it's a pretty
>>>>>   long list of patches that have come up on this).
>>>>>
>>>>> So what is this for?
>>>> For the overview. dma-buf today only have debugfs for info. Debugfs
>>>> is not allowed by google to use in andoid. So this aggregate the information
>>>> so we can get information on what going on on the system. 
>>>  
>>> Can you send an example debugfs output to see what data are we talking
>>> about?
>> Sure. This is on a idle system. Im not sure why you need it.The problem is partly that debugfs is
>> not accessable on a commercial device.
> I wanted to see what kind of information is there, but I didn't think it's
> that long :)
Sorry, but it was making a point.
>  
>> Dma-buf Objects:
>> size        flags       mode        count       exp_name        buf name    ino    
>> 00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17728    07400825    dmabuf17728
>>     Attached Devices:
>> Total 0 devices attached
>>
>> 11083776    00000002    00080007    00000003    ion-system-1006-allocator-servi    dmabuf17727    07400824    dmabuf17727
>>     Attached Devices:
>>     ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
>> Total 1 devices attached
>>
>> 00032768    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17726    07400823    dmabuf17726
>>     Attached Devices:
>> Total 0 devices attached
>>
>> 11083776    00000002    00080007    00000002    ion-system-1006-allocator-servi    dmabuf17725    07400822    dmabuf17725
>>     Attached Devices:
>>     ae00000.qcom,mdss_mdp:qcom,smmu_sde_unsec_cb
>> Total 1 devices attached
> ...
>
>> Total 654 objects, 744144896 bytes
>  
> Isn't the size from the first column also available in fdinfo?
>
> Is there anything that prevents monitoring those?
>
Yes, selinux.
Daniel Vetter April 21, 2021, 9:15 a.m. UTC | #9
On Tue, Apr 20, 2021 at 11:37:41AM +0000, Peter.Enderborg@sony.com wrote:
> On 4/20/21 1:14 PM, Daniel Vetter wrote:
> > On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
> >> On 4/20/21 10:58 AM, Daniel Vetter wrote:
> >>> On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
> >>>> This adds a total used dma-buf memory. Details
> >>>> can be found in debugfs, however it is not for everyone
> >>>> and not always available. dma-buf are indirect allocated by
> >>>> userspace. So with this value we can monitor and detect
> >>>> userspace applications that have problems.
> >>>>
> >>>> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
> >>> So there have been tons of discussions around how to track dma-buf and
> >>> why, and I really need to understand the use-cass here first I think. proc
> >>> uapi is as much forever as anything else, and depending what you're doing
> >>> this doesn't make any sense at all:
> >>>
> >>> - on most linux systems dma-buf are only instantiated for shared buffer.
> >>>   So there this gives you a fairly meaningless number and not anything
> >>>   reflecting gpu memory usage at all.
> >>>
> >>> - on Android all buffers are allocated through dma-buf afaik. But there
> >>>   we've recently had some discussions about how exactly we should track
> >>>   all this, and the conclusion was that most of this should be solved by
> >>>   cgroups long term. So if this is for Android, then I don't think adding
> >>>   random quick stop-gaps to upstream is a good idea (because it's a pretty
> >>>   long list of patches that have come up on this).
> >>>
> >>> So what is this for?
> >> For the overview. dma-buf today only have debugfs for info. Debugfs
> >> is not allowed by google to use in andoid. So this aggregate the information
> >> so we can get information on what going on on the system. 
> >>
> >> And the LKML standard respond to that is "SHOW ME THE CODE".
> > Yes. Except this extends to how exactly this is supposed to be used in
> > userspace and acted upon.
> >
> >> When the top memgc has a aggregated information on dma-buf it is maybe
> >> a better source to meminfo. But then it also imply that dma-buf requires memcg.
> >>
> >> And I dont see any problem to replace this with something better with it is ready.
> > The thing is, this is uapi. Once it's merged we cannot, ever, replace it.
> > It must be kept around forever, or a very close approximation thereof. So
> > merging this with the justification that we can fix it later on or replace
> > isn't going to happen.
> 
> It is intended to be relevant as long there is a dma-buf. This is a proper
> metric. If the newer implementations is not get the same result it is
> not doing it right and is not better. If a memcg counter or a global_zone
> counter do the same thing they it can replace the suggested method.

We're not talking about a memcg controller, but about a dma-buf tracker.

Also my point was that you might not have a dma-buf on most linux systems
(outside of android really) for most gpu allocations. So we kinda need to
understand what you actually want to measure, not "I want to count all the
dma-buf in the system". Because that's a known-problematic metric in
general.

> But I dont think they will. dma-buf does not have to be mapped to a process,
> and the case of vram, it is not covered in current global_zone. All of them
> would be very nice to have in some form. But it wont change what the
> correct value of what "Total" is.

We need to understand what the "correct" value is. Not in terms of kernel
code, but in terms of semantics. Like if userspace allocates a GL texture,
is this supposed to show up in your metric or not. Stuff like that.
-Daniel

> 
> 
> > -Daniel
> >
> >>> -Daniel
> >>>
> >>>> ---
> >>>>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
> >>>>  fs/proc/meminfo.c         |  5 ++++-
> >>>>  include/linux/dma-buf.h   |  1 +
> >>>>  3 files changed, 17 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> >>>> index f264b70c383e..4dc37cd4293b 100644
> >>>> --- a/drivers/dma-buf/dma-buf.c
> >>>> +++ b/drivers/dma-buf/dma-buf.c
> >>>> @@ -37,6 +37,7 @@ struct dma_buf_list {
> >>>>  };
> >>>>  
> >>>>  static struct dma_buf_list db_list;
> >>>> +static atomic_long_t dma_buf_global_allocated;
> >>>>  
> >>>>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
> >>>>  {
> >>>> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
> >>>>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
> >>>>  		dma_resv_fini(dmabuf->resv);
> >>>>  
> >>>> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
> >>>>  	module_put(dmabuf->owner);
> >>>>  	kfree(dmabuf->name);
> >>>>  	kfree(dmabuf);
> >>>> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
> >>>>  	mutex_lock(&db_list.lock);
> >>>>  	list_add(&dmabuf->list_node, &db_list.head);
> >>>>  	mutex_unlock(&db_list.lock);
> >>>> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
> >>>>  
> >>>>  	return dmabuf;
> >>>>  
> >>>> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
> >>>>  }
> >>>>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
> >>>>  
> >>>> +/**
> >>>> + * dma_buf_allocated_pages - Return the used nr of pages
> >>>> + * allocated for dma-buf
> >>>> + */
> >>>> +long dma_buf_allocated_pages(void)
> >>>> +{
> >>>> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
> >>>> +}
> >>>> +
> >>>>  #ifdef CONFIG_DEBUG_FS
> >>>>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
> >>>>  {
> >>>> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
> >>>> index 6fa761c9cc78..ccc7c40c8db7 100644
> >>>> --- a/fs/proc/meminfo.c
> >>>> +++ b/fs/proc/meminfo.c
> >>>> @@ -16,6 +16,7 @@
> >>>>  #ifdef CONFIG_CMA
> >>>>  #include <linux/cma.h>
> >>>>  #endif
> >>>> +#include <linux/dma-buf.h>
> >>>>  #include <asm/page.h>
> >>>>  #include "internal.h"
> >>>>  
> >>>> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
> >>>>  	show_val_kb(m, "CmaFree:        ",
> >>>>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
> >>>>  #endif
> >>>> -
> >>>> +#ifdef CONFIG_DMA_SHARED_BUFFER
> >>>> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
> >>>> +#endif
> >>>>  	hugetlb_report_meminfo(m);
> >>>>  
> >>>>  	arch_report_meminfo(m);
> >>>> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
> >>>> index efdc56b9d95f..5b05816bd2cd 100644
> >>>> --- a/include/linux/dma-buf.h
> >>>> +++ b/include/linux/dma-buf.h
> >>>> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
> >>>>  		 unsigned long);
> >>>>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
> >>>>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
> >>>> +long dma_buf_allocated_pages(void);
> >>>>  #endif /* __DMA_BUF_H__ */
> >>>> -- 
> >>>> 2.17.1
> >>>>
> >>>> _______________________________________________
> >>>> dri-devel mailing list
> >>>> dri-devel@lists.freedesktop.org
> >>>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!qW8kUOZyY4Dkew6OvqgfoM-5unQNVeF_M1biaIAyQQBR0KB7ksRzZjoh382ZdGGQR9k$ 
> >> _______________________________________________
> >> dri-devel mailing list
> >> dri-devel@lists.freedesktop.org
> >> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!vXvDg6I4V__QdL2fA08Rc5v6rjDzxOIQz6kwyMMLUK3_g4z7qZTg1H98BDDTxZeZjI4$ 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Peter Enderborg April 21, 2021, 10:37 a.m. UTC | #10
On 4/21/21 11:15 AM, Daniel Vetter wrote:
> On Tue, Apr 20, 2021 at 11:37:41AM +0000, Peter.Enderborg@sony.com wrote:
>> On 4/20/21 1:14 PM, Daniel Vetter wrote:
>>> On Tue, Apr 20, 2021 at 09:26:00AM +0000, Peter.Enderborg@sony.com wrote:
>>>> On 4/20/21 10:58 AM, Daniel Vetter wrote:
>>>>> On Sat, Apr 17, 2021 at 06:38:35PM +0200, Peter Enderborg wrote:
>>>>>> This adds a total used dma-buf memory. Details
>>>>>> can be found in debugfs, however it is not for everyone
>>>>>> and not always available. dma-buf are indirect allocated by
>>>>>> userspace. So with this value we can monitor and detect
>>>>>> userspace applications that have problems.
>>>>>>
>>>>>> Signed-off-by: Peter Enderborg <peter.enderborg@sony.com>
>>>>> So there have been tons of discussions around how to track dma-buf and
>>>>> why, and I really need to understand the use-cass here first I think. proc
>>>>> uapi is as much forever as anything else, and depending what you're doing
>>>>> this doesn't make any sense at all:
>>>>>
>>>>> - on most linux systems dma-buf are only instantiated for shared buffer.
>>>>>   So there this gives you a fairly meaningless number and not anything
>>>>>   reflecting gpu memory usage at all.
>>>>>
>>>>> - on Android all buffers are allocated through dma-buf afaik. But there
>>>>>   we've recently had some discussions about how exactly we should track
>>>>>   all this, and the conclusion was that most of this should be solved by
>>>>>   cgroups long term. So if this is for Android, then I don't think adding
>>>>>   random quick stop-gaps to upstream is a good idea (because it's a pretty
>>>>>   long list of patches that have come up on this).
>>>>>
>>>>> So what is this for?
>>>> For the overview. dma-buf today only have debugfs for info. Debugfs
>>>> is not allowed by google to use in andoid. So this aggregate the information
>>>> so we can get information on what going on on the system. 
>>>>
>>>> And the LKML standard respond to that is "SHOW ME THE CODE".
>>> Yes. Except this extends to how exactly this is supposed to be used in
>>> userspace and acted upon.
>>>
>>>> When the top memgc has a aggregated information on dma-buf it is maybe
>>>> a better source to meminfo. But then it also imply that dma-buf requires memcg.
>>>>
>>>> And I dont see any problem to replace this with something better with it is ready.
>>> The thing is, this is uapi. Once it's merged we cannot, ever, replace it.
>>> It must be kept around forever, or a very close approximation thereof. So
>>> merging this with the justification that we can fix it later on or replace
>>> isn't going to happen.
>> It is intended to be relevant as long there is a dma-buf. This is a proper
>> metric. If the newer implementations is not get the same result it is
>> not doing it right and is not better. If a memcg counter or a global_zone
>> counter do the same thing they it can replace the suggested method.
> We're not talking about a memcg controller, but about a dma-buf tracker.
>
> Also my point was that you might not have a dma-buf on most linux systems
> (outside of android really) for most gpu allocations. So we kinda need to
> understand what you actually want to measure, not "I want to count all the
> dma-buf in the system". Because that's a known-problematic metric in
> general.

I have got some android in my Fedora 33 then.

 cat /sys/kernel/debug/dma_buf/bufinfo

Dma-buf Objects:
size            flags           mode            count           exp_name        ino    
04456448        00000000        00080005        00000003        drm     05267137
        Exclusive fence: nouveau Xwayland[154936] signalled
        Attached Devices:
Total 0 devices attached

00851968        00000000        00080005        00000003        drm     03571790
        Exclusive fence: nouveau Xwayland[154936] signalled
        Shared fence: nouveau systemd-logind[691] signalled
        Attached Devices:
Total 0 devices attached

00851968        00000000        00080005        00000003        drm     03556344
        Exclusive fence: nouveau Xwayland[154936] signalled
        Shared fence: nouveau systemd-logind[691] signalled
        Attached Devices:
Total 0 devices attached

00851968        00000000        00080005        00000003        drm     03249623
        Exclusive fence: nouveau Xwayland[154936] signalled
        Shared fence: nouveau systemd-logind[691] signalled
        Attached Devices:
Total 0 devices attached


Total 4 objects, 7012352 bytes

It is on my old ubuntu's too, but no clients.



>> But I dont think they will. dma-buf does not have to be mapped to a process,
>> and the case of vram, it is not covered in current global_zone. All of them
>> would be very nice to have in some form. But it wont change what the
>> correct value of what "Total" is.
> We need to understand what the "correct" value is. Not in terms of kernel
> code, but in terms of semantics. Like if userspace allocates a GL texture,
> is this supposed to show up in your metric or not. Stuff like that.
That it like that would like to only one pointer type. You need to know what

you pointing at to know what it is. it might be a hardware or a other pointer.

If there is a limitation on your pointers it is a good metric to count them
even if you don't  know what they are. Same goes for dma-buf, they
are generic, but they consume some resources that are counted in pages.

It would be very good if there a sub division where you could measure
all possible types separately.  We have the detailed in debugfs, but nothing
for the user. A summary in meminfo seems to be the best place for such
metric.

> -Daniel
>
>>
>>> -Daniel
>>>
>>>>> -Daniel
>>>>>
>>>>>> ---
>>>>>>  drivers/dma-buf/dma-buf.c | 12 ++++++++++++
>>>>>>  fs/proc/meminfo.c         |  5 ++++-
>>>>>>  include/linux/dma-buf.h   |  1 +
>>>>>>  3 files changed, 17 insertions(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
>>>>>> index f264b70c383e..4dc37cd4293b 100644
>>>>>> --- a/drivers/dma-buf/dma-buf.c
>>>>>> +++ b/drivers/dma-buf/dma-buf.c
>>>>>> @@ -37,6 +37,7 @@ struct dma_buf_list {
>>>>>>  };
>>>>>>  
>>>>>>  static struct dma_buf_list db_list;
>>>>>> +static atomic_long_t dma_buf_global_allocated;
>>>>>>  
>>>>>>  static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
>>>>>>  {
>>>>>> @@ -79,6 +80,7 @@ static void dma_buf_release(struct dentry *dentry)
>>>>>>  	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
>>>>>>  		dma_resv_fini(dmabuf->resv);
>>>>>>  
>>>>>> +	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
>>>>>>  	module_put(dmabuf->owner);
>>>>>>  	kfree(dmabuf->name);
>>>>>>  	kfree(dmabuf);
>>>>>> @@ -586,6 +588,7 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
>>>>>>  	mutex_lock(&db_list.lock);
>>>>>>  	list_add(&dmabuf->list_node, &db_list.head);
>>>>>>  	mutex_unlock(&db_list.lock);
>>>>>> +	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
>>>>>>  
>>>>>>  	return dmabuf;
>>>>>>  
>>>>>> @@ -1346,6 +1349,15 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
>>>>>>  }
>>>>>>  EXPORT_SYMBOL_GPL(dma_buf_vunmap);
>>>>>>  
>>>>>> +/**
>>>>>> + * dma_buf_allocated_pages - Return the used nr of pages
>>>>>> + * allocated for dma-buf
>>>>>> + */
>>>>>> +long dma_buf_allocated_pages(void)
>>>>>> +{
>>>>>> +	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
>>>>>> +}
>>>>>> +
>>>>>>  #ifdef CONFIG_DEBUG_FS
>>>>>>  static int dma_buf_debug_show(struct seq_file *s, void *unused)
>>>>>>  {
>>>>>> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
>>>>>> index 6fa761c9cc78..ccc7c40c8db7 100644
>>>>>> --- a/fs/proc/meminfo.c
>>>>>> +++ b/fs/proc/meminfo.c
>>>>>> @@ -16,6 +16,7 @@
>>>>>>  #ifdef CONFIG_CMA
>>>>>>  #include <linux/cma.h>
>>>>>>  #endif
>>>>>> +#include <linux/dma-buf.h>
>>>>>>  #include <asm/page.h>
>>>>>>  #include "internal.h"
>>>>>>  
>>>>>> @@ -145,7 +146,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
>>>>>>  	show_val_kb(m, "CmaFree:        ",
>>>>>>  		    global_zone_page_state(NR_FREE_CMA_PAGES));
>>>>>>  #endif
>>>>>> -
>>>>>> +#ifdef CONFIG_DMA_SHARED_BUFFER
>>>>>> +	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
>>>>>> +#endif
>>>>>>  	hugetlb_report_meminfo(m);
>>>>>>  
>>>>>>  	arch_report_meminfo(m);
>>>>>> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
>>>>>> index efdc56b9d95f..5b05816bd2cd 100644
>>>>>> --- a/include/linux/dma-buf.h
>>>>>> +++ b/include/linux/dma-buf.h
>>>>>> @@ -507,4 +507,5 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
>>>>>>  		 unsigned long);
>>>>>>  int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>>>>>>  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
>>>>>> +long dma_buf_allocated_pages(void);
>>>>>>  #endif /* __DMA_BUF_H__ */
>>>>>> -- 
>>>>>> 2.17.1
>>>>>>
>>>>>> _______________________________________________
>>>>>> dri-devel mailing list
>>>>>> dri-devel@lists.freedesktop.org
>>>>>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!qW8kUOZyY4Dkew6OvqgfoM-5unQNVeF_M1biaIAyQQBR0KB7ksRzZjoh382ZdGGQR9k$ 
>>>> _______________________________________________
>>>> dri-devel mailing list
>>>> dri-devel@lists.freedesktop.org
>>>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!vXvDg6I4V__QdL2fA08Rc5v6rjDzxOIQz6kwyMMLUK3_g4z7qZTg1H98BDDTxZeZjI4$ 
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://urldefense.com/v3/__https://lists.freedesktop.org/mailman/listinfo/dri-devel__;!!JmoZiZGBv3RvKRSx!od9haTp00uB35ksL1F2pfvwodlxNjU4P8cx3MUi7xJzbcP00uLbUGfTQaMK8Q2oFhS0$
Michal Hocko April 21, 2021, 10:57 a.m. UTC | #11
On Wed 21-04-21 10:37:11, Peter.Enderborg@sony.com wrote:
> On 4/21/21 11:15 AM, Daniel Vetter wrote:
[...]
> > We need to understand what the "correct" value is. Not in terms of kernel
> > code, but in terms of semantics. Like if userspace allocates a GL texture,
> > is this supposed to show up in your metric or not. Stuff like that.
> That it like that would like to only one pointer type. You need to know what
> 
> you pointing at to know what it is. it might be a hardware or a other pointer.
> 
> If there is a limitation on your pointers it is a good metric to count them
> even if you don't  know what they are. Same goes for dma-buf, they
> are generic, but they consume some resources that are counted in pages.
> 
> It would be very good if there a sub division where you could measure
> all possible types separately.  We have the detailed in debugfs, but nothing
> for the user. A summary in meminfo seems to be the best place for such
> metric.

I strongly suspect that the main problem of this patch (and its previous
versions) is that you are failing to explain the purpose of the counter
to others. From what you have said so far it sounds like this is a
number which is nice to have because gives us more than nothing. And
while this is not really hard to agree with it doesn't really meet the
justification for exporting yet another counter to the userspace with
all the headache of the future maintenance. I think it would hugely help
to describe a typical scenario when the counter would be useful and the
conclusion you can draw from the exported value or a set of values over
time.

And please note that a mixed bag of different memory resources in a
single counter doesn't make this any easier because then it essentially
makes it impossible to know whether an excessive usage contribues to RAM
or device memory depletion - hence this is completely bogus for the OOM
report.
Pekka Paalanen April 21, 2021, 1:05 p.m. UTC | #12
On Wed, 21 Apr 2021 10:37:11 +0000
<Peter.Enderborg@sony.com> wrote:

> On 4/21/21 11:15 AM, Daniel Vetter wrote:
> > On Tue, Apr 20, 2021 at 11:37:41AM +0000, Peter.Enderborg@sony.com wrote:  

> >> But I dont think they will. dma-buf does not have to be mapped to a process,
> >> and the case of vram, it is not covered in current global_zone. All of them
> >> would be very nice to have in some form. But it wont change what the
> >> correct value of what "Total" is.  
> > We need to understand what the "correct" value is. Not in terms of kernel
> > code, but in terms of semantics. Like if userspace allocates a GL texture,
> > is this supposed to show up in your metric or not. Stuff like that.  

> That it like that would like to only one pointer type. You need to know what
> you pointing at to know what it is. it might be a hardware or a other pointer.

To clarify the GL texture example: a GL texture consumes "graphics
memory", whatever that is, but they are not allocated as dmabufs. So
they count for resource consumption, but they do not show up in your
counter, until they become exported. Most GL textures are never
exported at all. In fact, exporting GL textures is a path strongly
recommended against due to unsuitable EGL/GL API.

As far as I understand, dmabufs are never allocated as is. Dmabufs
always just wrap an existing memory allocation. So creating (exporting)
a dmabuf does not increase resource usage. Allocation increases
resource usage, and most allocations are never exported.

> If there is a limitation on your pointers it is a good metric to count them
> even if you don't  know what they are. Same goes for dma-buf, they
> are generic, but they consume some resources that are counted in pages.

Given above, I could even argue that *dmabufs* do not consume
resources. They only reference resources that were already allocated
by some specific means (not generic). They might keep the resource
allocated, preventing it from being freed if leaked.

As you might know, there is no really generic "dmabuf allocator", not
as a kernel UAPI nor as a userspace library (the hypothetical Unix
Device Memory Allocator library notwithstanding).

So this kind of leaves the question, what is DmaBufTotal good for? Is
it the same kind of counter as VIRT in 'top'? If you know your
particular programs, you can maybe infer if VIRT is too much or not,
but for e.g. WebKitWebProcess it is normal to have 85 GB in VIRT and
it's not a problem (like I have, on this 8 GB RAM machine).


Thanks,
pq
Mike Rapoport April 21, 2021, 3:31 p.m. UTC | #13
On Wed, Apr 21, 2021 at 10:37:11AM +0000, Peter.Enderborg@sony.com wrote:
> On 4/21/21 11:15 AM, Daniel Vetter wrote:
> >
> > We need to understand what the "correct" value is. Not in terms of kernel
> > code, but in terms of semantics. Like if userspace allocates a GL texture,
> > is this supposed to show up in your metric or not. Stuff like that.
> That it like that would like to only one pointer type. You need to know what
> 
> you pointing at to know what it is. it might be a hardware or a other pointer.
> 
> If there is a limitation on your pointers it is a good metric to count them
> even if you don't  know what they are. Same goes for dma-buf, they
> are generic, but they consume some resources that are counted in pages.
> 
> It would be very good if there a sub division where you could measure
> all possible types separately.  We have the detailed in debugfs, but nothing
> for the user. A summary in meminfo seems to be the best place for such
> metric.
 
Let me try to summarize my understanding of the problem, maybe it'll help
others as well.

A device driver allocates memory and exports this memory via dma-buf so
that this memory will be accessible for userspace via a file descriptor.

The allocated memory can be either allocated with alloc_page() from system
RAM or by other means from dedicated VRAM (that is not managed by Linux mm)
or even from on-device memory.

The dma-buf driver tracks the amount of the memory it was requested to
export and the size it sees is available at debugfs and fdinfo.

The debugfs is not available to user and maybe entirely disabled in
production systems.

There could be quite a few open dma-bufs so there is no overall summary,
plus fdinfo in production systems your refer to is also unavailable to the
user because of selinux policy.

And there are a few details that are not clear to me:

* Since DRM device drivers seem to be the major user of dma-buf exports,
  why cannot we add information about their memory consumption to, say,
  /sys/class/graphics/drm/cardX/memory-usage?

* How exactly user generates reports that would include the new counters?
  From my (mostly outdated) experience Android users won't open a terminal
  and type 'cat /proc/meminfo' there. I'd presume there is a vendor agent
  that collects the data and sends it for analysis. In this case what is
  the reason the vendor is unable to adjust selinix policy so that the
  agent will be able to access fdinfo?

* And, as others already mentioned, it is not clear what are the problems
  that can be detected by examining DmaBufTotal except saying "oh, there is
  too much/too little memory exported via dma-buf". What would be user
  visible effects of these problems? What are the next steps to investigate
  them? What other data will be probably required to identify root cause?
Peter Enderborg April 21, 2021, 5:35 p.m. UTC | #14
On 4/21/21 5:31 PM, Mike Rapoport wrote:
> On Wed, Apr 21, 2021 at 10:37:11AM +0000, Peter.Enderborg@sony.com wrote:
>> On 4/21/21 11:15 AM, Daniel Vetter wrote:
>>> We need to understand what the "correct" value is. Not in terms of kernel
>>> code, but in terms of semantics. Like if userspace allocates a GL texture,
>>> is this supposed to show up in your metric or not. Stuff like that.
>> That it like that would like to only one pointer type. You need to know what
>>
>> you pointing at to know what it is. it might be a hardware or a other pointer.
>>
>> If there is a limitation on your pointers it is a good metric to count them
>> even if you don't  know what they are. Same goes for dma-buf, they
>> are generic, but they consume some resources that are counted in pages.
>>
>> It would be very good if there a sub division where you could measure
>> all possible types separately.  We have the detailed in debugfs, but nothing
>> for the user. A summary in meminfo seems to be the best place for such
>> metric.
>  
> Let me try to summarize my understanding of the problem, maybe it'll help
> others as well.

Thanks!


> A device driver allocates memory and exports this memory via dma-buf so
> that this memory will be accessible for userspace via a file descriptor.
>
> The allocated memory can be either allocated with alloc_page() from system
> RAM or by other means from dedicated VRAM (that is not managed by Linux mm)
> or even from on-device memory.
>
> The dma-buf driver tracks the amount of the memory it was requested to
> export and the size it sees is available at debugfs and fdinfo.
>
> The debugfs is not available to user and maybe entirely disabled in
> production systems.
>
> There could be quite a few open dma-bufs so there is no overall summary,
> plus fdinfo in production systems your refer to is also unavailable to the
> user because of selinux policy.
>
> And there are a few details that are not clear to me:
>
> * Since DRM device drivers seem to be the major user of dma-buf exports,
>   why cannot we add information about their memory consumption to, say,
>   /sys/class/graphics/drm/cardX/memory-usage?

Android is using it for binder that connect more or less everything
internally.

> * How exactly user generates reports that would include the new counters?
>   From my (mostly outdated) experience Android users won't open a terminal
>   and type 'cat /proc/meminfo' there. I'd presume there is a vendor agent
>   that collects the data and sends it for analysis. In this case what is
>   the reason the vendor is unable to adjust selinix policy so that the
>   agent will be able to access fdinfo?

When you turn on developer mode on android you can use
usb with a program called adb. And there you get a normal shell.

(not root though)

There is applications that non developers can use to get
information. It is very limited though and there are API's
provide it.


>
> * And, as others already mentioned, it is not clear what are the problems
>   that can be detected by examining DmaBufTotal except saying "oh, there is
>   too much/too little memory exported via dma-buf". What would be user
>   visible effects of these problems? What are the next steps to investigate
>   them? What other data will be probably required to identify root cause?
>
When you debug thousands of devices it is quite nice to have
ways to classify what the problem it is not. The normal user does not
see anything of this. However they can generate bug-reports that
collect information about as much they can. Then the user have
to provide this bug-report to the manufacture or mostly the
application developer. And when the problem is
system related we need to reproduce the issue on a full
debug enabled unit.
Mike Rapoport April 22, 2021, 8:06 a.m. UTC | #15
On Wed, Apr 21, 2021 at 05:35:57PM +0000, Peter.Enderborg@sony.com wrote:
> On 4/21/21 5:31 PM, Mike Rapoport wrote:
> > On Wed, Apr 21, 2021 at 10:37:11AM +0000, Peter.Enderborg@sony.com wrote:
> >> On 4/21/21 11:15 AM, Daniel Vetter wrote:
> >>> We need to understand what the "correct" value is. Not in terms of kernel
> >>> code, but in terms of semantics. Like if userspace allocates a GL texture,
> >>> is this supposed to show up in your metric or not. Stuff like that.
> >> That it like that would like to only one pointer type. You need to know what
> >>
> >> you pointing at to know what it is. it might be a hardware or a other pointer.
> >>
> >> If there is a limitation on your pointers it is a good metric to count them
> >> even if you don't  know what they are. Same goes for dma-buf, they
> >> are generic, but they consume some resources that are counted in pages.
> >>
> >> It would be very good if there a sub division where you could measure
> >> all possible types separately.  We have the detailed in debugfs, but nothing
> >> for the user. A summary in meminfo seems to be the best place for such
> >> metric.
> >  
> > Let me try to summarize my understanding of the problem, maybe it'll help
> > others as well.
> 
> Thanks!
> 
> 
> > A device driver allocates memory and exports this memory via dma-buf so
> > that this memory will be accessible for userspace via a file descriptor.
> >
> > The allocated memory can be either allocated with alloc_page() from system
> > RAM or by other means from dedicated VRAM (that is not managed by Linux mm)
> > or even from on-device memory.
> >
> > The dma-buf driver tracks the amount of the memory it was requested to
> > export and the size it sees is available at debugfs and fdinfo.
> >
> > The debugfs is not available to user and maybe entirely disabled in
> > production systems.
> >
> > There could be quite a few open dma-bufs so there is no overall summary,
> > plus fdinfo in production systems your refer to is also unavailable to the
> > user because of selinux policy.
> >
> > And there are a few details that are not clear to me:
> >
> > * Since DRM device drivers seem to be the major user of dma-buf exports,
> >   why cannot we add information about their memory consumption to, say,
> >   /sys/class/graphics/drm/cardX/memory-usage?
> 
> Android is using it for binder that connect more or less everything
> internally.
 
Ok, then it rules out /sys/class/graphics indeed.

> > * How exactly user generates reports that would include the new counters?
> >   From my (mostly outdated) experience Android users won't open a terminal
> >   and type 'cat /proc/meminfo' there. I'd presume there is a vendor agent
> >   that collects the data and sends it for analysis. In this case what is
> >   the reason the vendor is unable to adjust selinix policy so that the
> >   agent will be able to access fdinfo?
> 
> When you turn on developer mode on android you can use
> usb with a program called adb. And there you get a normal shell.
> 
> (not root though)
> 
> There is applications that non developers can use to get
> information. It is very limited though and there are API's
> provide it.
> 
> 
> >
> > * And, as others already mentioned, it is not clear what are the problems
> >   that can be detected by examining DmaBufTotal except saying "oh, there is
> >   too much/too little memory exported via dma-buf". What would be user
> >   visible effects of these problems? What are the next steps to investigate
> >   them? What other data will be probably required to identify root cause?
> >
> When you debug thousands of devices it is quite nice to have
> ways to classify what the problem it is not. The normal user does not
> see anything of this. However they can generate bug-reports that
> collect information about as much they can. Then the user have
> to provide this bug-report to the manufacture or mostly the
> application developer. And when the problem is
> system related we need to reproduce the issue on a full
> debug enabled unit.

So the flow is like this:

* a user has a problem and reports it to an application developer; at best
  the user runs simple and limited app to collect some data
* if the application developer considers this issue as a system related
  they can open adb and collect some more information about the system
  using non-root shell with selinux policy restrictions and send this
  information to the device manufacturer.
* the manufacturer continues to debug the issue and at this point as much
  information is possible would have been useful.

In this flow I still fail to understand why the manufacturer cannot provide
userspace tools that will be able to collect the required information.
These tools not necessarily need to target the end user, they may be only
intended for the application developers, e.g. policy could allow such tool
to access some of the system data only when the system is in developer
mode.
Peter Enderborg April 22, 2021, 2:08 p.m. UTC | #16
On 4/22/21 10:06 AM, Mike Rapoport wrote:
> On Wed, Apr 21, 2021 at 05:35:57PM +0000, Peter.Enderborg@sony.com wrote:
>> On 4/21/21 5:31 PM, Mike Rapoport wrote:
>>> On Wed, Apr 21, 2021 at 10:37:11AM +0000, Peter.Enderborg@sony.com wrote:
>>>> On 4/21/21 11:15 AM, Daniel Vetter wrote:
>>>>> We need to understand what the "correct" value is. Not in terms of kernel
>>>>> code, but in terms of semantics. Like if userspace allocates a GL texture,
>>>>> is this supposed to show up in your metric or not. Stuff like that.
>>>> That it like that would like to only one pointer type. You need to know what
>>>>
>>>> you pointing at to know what it is. it might be a hardware or a other pointer.
>>>>
>>>> If there is a limitation on your pointers it is a good metric to count them
>>>> even if you don't  know what they are. Same goes for dma-buf, they
>>>> are generic, but they consume some resources that are counted in pages.
>>>>
>>>> It would be very good if there a sub division where you could measure
>>>> all possible types separately.  We have the detailed in debugfs, but nothing
>>>> for the user. A summary in meminfo seems to be the best place for such
>>>> metric.
>>>  
>>> Let me try to summarize my understanding of the problem, maybe it'll help
>>> others as well.
>> Thanks!
>>
>>
>>> A device driver allocates memory and exports this memory via dma-buf so
>>> that this memory will be accessible for userspace via a file descriptor.
>>>
>>> The allocated memory can be either allocated with alloc_page() from system
>>> RAM or by other means from dedicated VRAM (that is not managed by Linux mm)
>>> or even from on-device memory.
>>>
>>> The dma-buf driver tracks the amount of the memory it was requested to
>>> export and the size it sees is available at debugfs and fdinfo.
>>>
>>> The debugfs is not available to user and maybe entirely disabled in
>>> production systems.
>>>
>>> There could be quite a few open dma-bufs so there is no overall summary,
>>> plus fdinfo in production systems your refer to is also unavailable to the
>>> user because of selinux policy.
>>>
>>> And there are a few details that are not clear to me:
>>>
>>> * Since DRM device drivers seem to be the major user of dma-buf exports,
>>>   why cannot we add information about their memory consumption to, say,
>>>   /sys/class/graphics/drm/cardX/memory-usage?
>> Android is using it for binder that connect more or less everything
>> internally.
>  
> Ok, then it rules out /sys/class/graphics indeed.
>
>>> * How exactly user generates reports that would include the new counters?
>>>   From my (mostly outdated) experience Android users won't open a terminal
>>>   and type 'cat /proc/meminfo' there. I'd presume there is a vendor agent
>>>   that collects the data and sends it for analysis. In this case what is
>>>   the reason the vendor is unable to adjust selinix policy so that the
>>>   agent will be able to access fdinfo?
>> When you turn on developer mode on android you can use
>> usb with a program called adb. And there you get a normal shell.
>>
>> (not root though)
>>
>> There is applications that non developers can use to get
>> information. It is very limited though and there are API's
>> provide it.
>>
>>
>>> * And, as others already mentioned, it is not clear what are the problems
>>>   that can be detected by examining DmaBufTotal except saying "oh, there is
>>>   too much/too little memory exported via dma-buf". What would be user
>>>   visible effects of these problems? What are the next steps to investigate
>>>   them? What other data will be probably required to identify root cause?
>>>
>> When you debug thousands of devices it is quite nice to have
>> ways to classify what the problem it is not. The normal user does not
>> see anything of this. However they can generate bug-reports that
>> collect information about as much they can. Then the user have
>> to provide this bug-report to the manufacture or mostly the
>> application developer. And when the problem is
>> system related we need to reproduce the issue on a full
>> debug enabled unit.
> So the flow is like this:
>
> * a user has a problem and reports it to an application developer; at best
>   the user runs simple and limited app to collect some data
> * if the application developer considers this issue as a system related
>   they can open adb and collect some more information about the system
>   using non-root shell with selinux policy restrictions and send this
>   information to the device manufacturer.
> * the manufacturer continues to debug the issue and at this point as much
>   information is possible would have been useful.
>
> In this flow I still fail to understand why the manufacturer cannot provide
> userspace tools that will be able to collect the required information.
> These tools not necessarily need to target the end user, they may be only
> intended for the application developers, e.g. policy could allow such tool
> to access some of the system data only when the system is in developer
> mode.
>
The manufacture is trying to get the tool to work. This is what the
patch is about. Even for a application developer a commercial
phone is locked down. Many vendors allow that you flash
some other software like a AOSP.  But that can be very
different. Like installing a ubuntu on a PC to debug a Fedora issue.

And sure we can pickup parts of what using the dma-buf. But
we can not get the total and be sure that is the total without a
proper counter.
Mike Rapoport April 25, 2021, 7:33 a.m. UTC | #17
On Thu, Apr 22, 2021 at 02:08:51PM +0000, Peter.Enderborg@sony.com wrote:
> On 4/22/21 10:06 AM, Mike Rapoport wrote:
> > So the flow is like this:
> >
> > * a user has a problem and reports it to an application developer; at best
> >   the user runs simple and limited app to collect some data
> > * if the application developer considers this issue as a system related
> >   they can open adb and collect some more information about the system
> >   using non-root shell with selinux policy restrictions and send this
> >   information to the device manufacturer.
> > * the manufacturer continues to debug the issue and at this point as much
> >   information is possible would have been useful.
> >
> > In this flow I still fail to understand why the manufacturer cannot provide
> > userspace tools that will be able to collect the required information.
> > These tools not necessarily need to target the end user, they may be only
> > intended for the application developers, e.g. policy could allow such tool
> > to access some of the system data only when the system is in developer
> > mode.
> >
> The manufacture is trying to get the tool to work. This is what the
> patch is about. Even for a application developer a commercial
> phone is locked down.

Right, but it's still in full control of the manufacturer what's flashed
there, isn't it?
So there could be some tools that are only available in the developer mode?
These tools could have different permissions etc.

> Many vendors allow that you flash some other software like a AOSP.  But
> that can be very different. Like installing a ubuntu on a PC to debug a
> Fedora issue.
> 
> And sure we can pickup parts of what using the dma-buf. But
> we can not get the total and be sure that is the total without a
> proper counter.

If I understand you correctly, a user space tool that scans fdinfo and
accumulates dma-buf size from there is not accurate enough, that's why an
atomic counter exposed by kernel is a must.

But if the changes in consumption of dma-bufs are that frequent, I cannot
see how a global counter will help to identify an issue.

And if this counter is needed to see if there is a memory leak, summing
sizes of dma-bufs from fdinfo will identify a leak.

What am I missing?
Peter Enderborg April 25, 2021, 8:40 a.m. UTC | #18
On 4/25/21 9:33 AM, Mike Rapoport wrote:
> On Thu, Apr 22, 2021 at 02:08:51PM +0000, Peter.Enderborg@sony.com wrote:
>> On 4/22/21 10:06 AM, Mike Rapoport wrote:
>>> So the flow is like this:
>>>
>>> * a user has a problem and reports it to an application developer; at best
>>>   the user runs simple and limited app to collect some data
>>> * if the application developer considers this issue as a system related
>>>   they can open adb and collect some more information about the system
>>>   using non-root shell with selinux policy restrictions and send this
>>>   information to the device manufacturer.
>>> * the manufacturer continues to debug the issue and at this point as much
>>>   information is possible would have been useful.
>>>
>>> In this flow I still fail to understand why the manufacturer cannot provide
>>> userspace tools that will be able to collect the required information.
>>> These tools not necessarily need to target the end user, they may be only
>>> intended for the application developers, e.g. policy could allow such tool
>>> to access some of the system data only when the system is in developer
>>> mode.
>>>
>> The manufacture is trying to get the tool to work. This is what the
>> patch is about. Even for a application developer a commercial
>> phone is locked down.
> Right, but it's still in full control of the manufacturer what's flashed
> there, isn't it?

No. There is a lot of restrictions, and Google will provide a binary
kernel that is used on android devices that is the one hat MUST
be used on commercial models. It is called GKI.

> So there could be some tools that are only available in the developer mode?
> These tools could have different permissions etc.
>
>> Many vendors allow that you flash some other software like a AOSP.  But
>> that can be very different. Like installing a ubuntu on a PC to debug a
>> Fedora issue.
>>
>> And sure we can pickup parts of what using the dma-buf. But
>> we can not get the total and be sure that is the total without a
>> proper counter.
> If I understand you correctly, a user space tool that scans fdinfo and
> accumulates dma-buf size from there is not accurate enough, that's why an
> atomic counter exposed by kernel is a must.
And it is lightweight.
> But if the changes in consumption of dma-bufs are that frequent, I cannot
> see how a global counter will help to identify an issue.
Same goes for all memory counters. You can sample the counters
and build statistics when you have many devices. Statistics change
you usually see leaks.
> And if this counter is needed to see if there is a memory leak, summing
> sizes of dma-bufs from fdinfo will identify a leak.
>
> What am I missing?
>
I think you can only see dma-buf that is mapped to a process
with that method, we have buffers that goes to other subsystems like audiodsp.
And processing all fd's on a system frequently and sort out
all duplicates is not light, and it sill will not be a total. Nor is it
a snapshot.

When it is about to find the leaks, kmemleak works fine with
kernel leaks, and page_owner (also only in debugfs) is a good tool.
diff mbox series

Patch

diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index f264b70c383e..4dc37cd4293b 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -37,6 +37,7 @@  struct dma_buf_list {
 };
 
 static struct dma_buf_list db_list;
+static atomic_long_t dma_buf_global_allocated;
 
 static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
 {
@@ -79,6 +80,7 @@  static void dma_buf_release(struct dentry *dentry)
 	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
 		dma_resv_fini(dmabuf->resv);
 
+	atomic_long_sub(dmabuf->size, &dma_buf_global_allocated);
 	module_put(dmabuf->owner);
 	kfree(dmabuf->name);
 	kfree(dmabuf);
@@ -586,6 +588,7 @@  struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info)
 	mutex_lock(&db_list.lock);
 	list_add(&dmabuf->list_node, &db_list.head);
 	mutex_unlock(&db_list.lock);
+	atomic_long_add(dmabuf->size, &dma_buf_global_allocated);
 
 	return dmabuf;
 
@@ -1346,6 +1349,15 @@  void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map)
 }
 EXPORT_SYMBOL_GPL(dma_buf_vunmap);
 
+/**
+ * dma_buf_allocated_pages - Return the used nr of pages
+ * allocated for dma-buf
+ */
+long dma_buf_allocated_pages(void)
+{
+	return atomic_long_read(&dma_buf_global_allocated) >> PAGE_SHIFT;
+}
+
 #ifdef CONFIG_DEBUG_FS
 static int dma_buf_debug_show(struct seq_file *s, void *unused)
 {
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index 6fa761c9cc78..ccc7c40c8db7 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -16,6 +16,7 @@ 
 #ifdef CONFIG_CMA
 #include <linux/cma.h>
 #endif
+#include <linux/dma-buf.h>
 #include <asm/page.h>
 #include "internal.h"
 
@@ -145,7 +146,9 @@  static int meminfo_proc_show(struct seq_file *m, void *v)
 	show_val_kb(m, "CmaFree:        ",
 		    global_zone_page_state(NR_FREE_CMA_PAGES));
 #endif
-
+#ifdef CONFIG_DMA_SHARED_BUFFER
+	show_val_kb(m, "DmaBufTotal:    ", dma_buf_allocated_pages());
+#endif
 	hugetlb_report_meminfo(m);
 
 	arch_report_meminfo(m);
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index efdc56b9d95f..5b05816bd2cd 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -507,4 +507,5 @@  int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
 		 unsigned long);
 int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
 void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
+long dma_buf_allocated_pages(void);
 #endif /* __DMA_BUF_H__ */