mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
accel/ivpu: Expose NPU memory utilization info in sysfs
Expose NPU memory utilization info in sysfs in bytes to show total memory used by NPU (FW + runtime). Signed-off-by: Maciej Falkowski <maciej.falkowski@linux.intel.com> Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250107173238.381120-5-maciej.falkowski@linux.intel.com
This commit is contained in:
committed by
Jacek Lawrynowicz
parent
5bbccadaf3
commit
7bfc9fa995
@@ -7,11 +7,14 @@
|
|||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
|
|
||||||
#include "ivpu_drv.h"
|
#include "ivpu_drv.h"
|
||||||
|
#include "ivpu_gem.h"
|
||||||
#include "ivpu_fw.h"
|
#include "ivpu_fw.h"
|
||||||
#include "ivpu_hw.h"
|
#include "ivpu_hw.h"
|
||||||
#include "ivpu_sysfs.h"
|
#include "ivpu_sysfs.h"
|
||||||
|
|
||||||
/*
|
/**
|
||||||
|
* DOC: npu_busy_time_us
|
||||||
|
*
|
||||||
* npu_busy_time_us is the time that the device spent executing jobs.
|
* npu_busy_time_us is the time that the device spent executing jobs.
|
||||||
* The time is counted when and only when there are jobs submitted to firmware.
|
* The time is counted when and only when there are jobs submitted to firmware.
|
||||||
*
|
*
|
||||||
@@ -42,6 +45,30 @@ npu_busy_time_us_show(struct device *dev, struct device_attribute *attr, char *b
|
|||||||
|
|
||||||
static DEVICE_ATTR_RO(npu_busy_time_us);
|
static DEVICE_ATTR_RO(npu_busy_time_us);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: npu_memory_utilization
|
||||||
|
*
|
||||||
|
* The npu_memory_utilization is used to report in bytes a current NPU memory utilization.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static ssize_t
|
||||||
|
npu_memory_utilization_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||||
|
{
|
||||||
|
struct drm_device *drm = dev_get_drvdata(dev);
|
||||||
|
struct ivpu_device *vdev = to_ivpu_device(drm);
|
||||||
|
struct ivpu_bo *bo;
|
||||||
|
u64 total_npu_memory = 0;
|
||||||
|
|
||||||
|
mutex_lock(&vdev->bo_list_lock);
|
||||||
|
list_for_each_entry(bo, &vdev->bo_list, bo_list_node)
|
||||||
|
total_npu_memory += bo->base.base.size;
|
||||||
|
mutex_unlock(&vdev->bo_list_lock);
|
||||||
|
|
||||||
|
return sysfs_emit(buf, "%lld\n", total_npu_memory);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DEVICE_ATTR_RO(npu_memory_utilization);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DOC: sched_mode
|
* DOC: sched_mode
|
||||||
*
|
*
|
||||||
@@ -65,6 +92,7 @@ static DEVICE_ATTR_RO(sched_mode);
|
|||||||
|
|
||||||
static struct attribute *ivpu_dev_attrs[] = {
|
static struct attribute *ivpu_dev_attrs[] = {
|
||||||
&dev_attr_npu_busy_time_us.attr,
|
&dev_attr_npu_busy_time_us.attr,
|
||||||
|
&dev_attr_npu_memory_utilization.attr,
|
||||||
&dev_attr_sched_mode.attr,
|
&dev_attr_sched_mode.attr,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user