On 09/10/2018 11:27 AM, Greg KH wrote:
> On Sun, Sep 09, 2018 at 01:44:31AM +0300, Alexey Skidanov wrote:
>> The heap statistics have been removed and currently even basics statistics
>> are missing.
>>
>> This patch creates per heap debugfs directory /sys/kernel/debug/<heap_name>
>> and adds two counters - the number of allocated buffers and number of
>> allocated bytes.
> 
> Why?  What can we do with this information?
Are you in doubt that we need these two specific counters or debugfs at all?
> 
>>
>> Signed-off-by: Alexey Skidanov <alexey.skida...@intel.com>
>> ---
>>  drivers/staging/android/ion/ion.c | 40 
>> +++++++++++++++++++++++++++++++--------
>>  drivers/staging/android/ion/ion.h |  3 ++-
>>  2 files changed, 34 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/staging/android/ion/ion.c 
>> b/drivers/staging/android/ion/ion.c
>> index 9907332..62335b9 100644
>> --- a/drivers/staging/android/ion/ion.c
>> +++ b/drivers/staging/android/ion/ion.c
>> @@ -95,6 +95,9 @@ static struct ion_buffer *ion_buffer_create(struct 
>> ion_heap *heap,
>>              goto err1;
>>      }
>>  
>> +    heap->num_of_buffers++;
>> +    heap->num_of_alloc_bytes += len;
>> +
>>      INIT_LIST_HEAD(&buffer->attachments);
>>      mutex_init(&buffer->lock);
>>      mutex_lock(&dev->buffer_lock);
>> @@ -528,6 +531,8 @@ void ion_device_add_heap(struct ion_heap *heap)
>>  {
>>      struct ion_device *dev = internal_dev;
>>      int ret;
>> +    struct dentry *heap_root;
>> +    char debug_name[64];
>>  
>>      if (!heap->ops->allocate || !heap->ops->free)
>>              pr_err("%s: can not add heap with invalid ops struct.\n",
>> @@ -546,6 +551,33 @@ void ion_device_add_heap(struct ion_heap *heap)
>>      }
>>  
>>      heap->dev = dev;
>> +    heap->num_of_buffers = 0;
>> +    heap->num_of_alloc_bytes = 0;
>> +
>> +    /* Create heap root directory. If creation is failed, we may continue */
>> +    heap_root = debugfs_create_dir(heap->name, dev->debug_root);
>> +    if (!IS_ERR_OR_NULL(heap_root)) {
> 
> Close, but no, never check the return value here.  Just keep on moving,
> and call further debugfs calls.  No need even for a comment here.
> 
>> +            debugfs_create_u64("num_of_buffers",
>> +                               0444, heap_root,
>> +                               &heap->num_of_buffers);
>> +            debugfs_create_u64("num_of_alloc_bytes",
>> +                               0444,
>> +                               heap_root,
>> +                               &heap->num_of_alloc_bytes);
>> +
>> +            if (heap->shrinker.count_objects &&
>> +                heap->shrinker.scan_objects) {
>> +                    snprintf(debug_name, 64, "%s_shrink", heap->name);
>> +                    debugfs_create_file(debug_name,
>> +                                        0644,
>> +                                        heap_root,
>> +                                        heap,
>> +                                        &debug_shrink_fops);
>> +            }
>> +    } else {
>> +            pr_err("%s: Failed to create heap dir in debugfs\n", __func__);
> 
> No need to print anything.
> 
>> +    }
>> +
>>      down_write(&dev->lock);
>>      heap->id = heap_id++;
>>      /*
>> @@ -555,14 +587,6 @@ void ion_device_add_heap(struct ion_heap *heap)
>>      plist_node_init(&heap->node, -heap->id);
>>      plist_add(&heap->node, &dev->heaps);
>>  
>> -    if (heap->shrinker.count_objects && heap->shrinker.scan_objects) {
>> -            char debug_name[64];
>> -
>> -            snprintf(debug_name, 64, "%s_shrink", heap->name);
>> -            debugfs_create_file(debug_name, 0644, dev->debug_root,
>> -                                heap, &debug_shrink_fops);
>> -    }
> 
> You just moved the location of these debugfs files, right?  What
> userspace tool just broke when you did that?  :)
> 
> thanks,
> 
> greg k-h
> 
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to