summaryrefslogtreecommitdiff
path: root/mali_kbase/mali_kbase_core_linux.c
diff options
context:
space:
mode:
authorAnkit Goyal <layog@google.com>2021-07-13 17:21:51 +0800
committerAnkit Goyal <layog@google.com>2021-07-21 21:26:08 +0800
commit620019f26cee4f69c33fc0861a7975f50b7ce8b3 (patch)
tree35f557f1998a07f4eb35f05390250d8a3e91f63e /mali_kbase/mali_kbase_core_linux.c
parentced6904b8892e23333566105d5266515532a9c2c (diff)
downloadgpu-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.c37
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);
}