diff options
author | Ankit Goyal <layog@google.com> | 2021-07-13 17:21:51 +0800 |
---|---|---|
committer | Ankit Goyal <layog@google.com> | 2021-07-21 21:26:08 +0800 |
commit | 620019f26cee4f69c33fc0861a7975f50b7ce8b3 (patch) | |
tree | 35f557f1998a07f4eb35f05390250d8a3e91f63e /mali_kbase/mali_kbase_core_linux.c | |
parent | ced6904b8892e23333566105d5266515532a9c2c (diff) | |
download | gpu-620019f26cee4f69c33fc0861a7975f50b7ce8b3.tar.gz |
mali_kbase: platform: Add per-process and global sysfs nodes for GPU mem usage
Bug: 191966412
Signed-off-by: Ankit Goyal <layog@google.com>
Change-Id: Id47feadaf9da7ef8e22494ab64e6263d7f87213c
Diffstat (limited to 'mali_kbase/mali_kbase_core_linux.c')
-rw-r--r-- | mali_kbase/mali_kbase_core_linux.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/mali_kbase/mali_kbase_core_linux.c b/mali_kbase/mali_kbase_core_linux.c index a9a10fb..b2abdeb 100644 --- a/mali_kbase/mali_kbase_core_linux.c +++ b/mali_kbase/mali_kbase_core_linux.c @@ -5072,6 +5072,36 @@ static struct attribute *kbase_scheduling_attrs[] = { NULL }; +static ssize_t total_gpu_mem_show( + struct device *dev, + struct device_attribute *attr, + char *const buf) +{ + struct kbase_device *kbdev; + kbdev = to_kbase_device(dev); + if (!kbdev) + return -ENODEV; + + return sysfs_emit(buf, "%lu\n", + (unsigned long) kbdev->total_gpu_pages << PAGE_SHIFT); +} +static DEVICE_ATTR_RO(total_gpu_mem); + +static ssize_t dma_buf_gpu_mem_show( + struct device *dev, + struct device_attribute *attr, + char *const buf) +{ + struct kbase_device *kbdev; + kbdev = to_kbase_device(dev); + if (!kbdev) + return -ENODEV; + + return sysfs_emit(buf, "%lu\n", + (unsigned long) kbdev->dma_buf_pages << PAGE_SHIFT); +} +static DEVICE_ATTR_RO(dma_buf_gpu_mem); + static struct attribute *kbase_attrs[] = { #ifdef CONFIG_MALI_DEBUG &dev_attr_debug_command.attr, @@ -5105,6 +5135,8 @@ static struct attribute *kbase_attrs[] = { #if !MALI_USE_CSF &dev_attr_js_ctx_scheduling_mode.attr, #endif /* !MALI_USE_CSF */ + &dev_attr_total_gpu_mem.attr, + &dev_attr_dma_buf_gpu_mem.attr, NULL }; @@ -5166,6 +5198,9 @@ int kbase_sysfs_init(struct kbase_device *kbdev) &kbase_attr_group); } + kbdev->proc_sysfs_node = kobject_create_and_add("kprcs", + &kbdev->dev->kobj); + return err; } @@ -5174,6 +5209,8 @@ void kbase_sysfs_term(struct kbase_device *kbdev) sysfs_remove_group(&kbdev->dev->kobj, &kbase_mempool_attr_group); sysfs_remove_group(&kbdev->dev->kobj, &kbase_scheduling_attr_group); sysfs_remove_group(&kbdev->dev->kobj, &kbase_attr_group); + kobject_del(kbdev->proc_sysfs_node); + kobject_put(kbdev->proc_sysfs_node); put_device(kbdev->dev); } |