dla: kmd: Update resource utilization logic

+ Return 0% resource utilization when DLA
is turned off

Bug 4170503

Change-Id: Iaeb6131dc482a750cae1d54b6931e3dd8c9192d0
Signed-off-by: Akshata Bhat <akshatab@nvidia.com>
(cherry picked from commit 4da14f6b3b80f49ca00c92322ad71d75c8bfd4cd)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2929821
Tested-by: Ninad Malwade <nmalwade@nvidia.com>
Reviewed-by: Ninad Malwade <nmalwade@nvidia.com>
Reviewed-by: Arvind M <am@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Akshata
2023-06-30 08:41:25 +00:00
committed by mobile promotions
parent 0df8edb69b
commit e1ea98691b

View File

@@ -302,7 +302,7 @@ static int nvdla_get_stats(struct nvdla_device *nvdla_dev)
static int debug_dla_fw_resource_util_show(struct seq_file *s, void *data)
{
int err;
int err = 0;
struct nvdla_device *nvdla_dev;
struct platform_device *pdev;
@@ -325,28 +325,35 @@ static int debug_dla_fw_resource_util_show(struct seq_file *s, void *data)
goto fail_no_dev;
}
/* make sure that device is powered on */
err = nvhost_module_busy(pdev);
if (err != 0) {
nvdla_dbg_err(pdev, "failed to power on\n");
err = -ENODEV;
goto fail_no_dev;
}
if (atomic_read(&pdev->dev.power.usage_count) == 0) {
/* Print 0% utilization rate if power refcount for DLA
* is zero i.e., DLA is not turned on
*/
util_rate_characteristic = 0;
util_rate_mantissa = 0;
} else {
/* make sure that device is powered on */
err = nvhost_module_busy(pdev);
if (err != 0) {
nvdla_dbg_err(pdev, "failed to power on\n");
err = -ENODEV;
goto fail_no_dev;
}
err = nvdla_get_stats(nvdla_dev);
if (err != 0) {
nvdla_dbg_err(pdev, "Failed to send get stats command");
goto fail_to_send_cmd;
err = nvdla_get_stats(nvdla_dev);
if (err != 0) {
nvdla_dbg_err(pdev, "Failed to send get stats command");
nvhost_module_idle(pdev);
goto fail_no_dev;
}
utilization = *(unsigned int *)nvdla_dev->utilization_mem_va;
util_rate_characteristic = (utilization / 10000);
util_rate_mantissa = (utilization % 10000);
nvhost_module_idle(pdev);
}
utilization = *(unsigned int *)nvdla_dev->utilization_mem_va;
util_rate_characteristic = (utilization / 10000);
util_rate_mantissa = (utilization % 10000);
seq_printf(s, "%u.%04u\n", util_rate_characteristic, util_rate_mantissa);
fail_to_send_cmd:
nvhost_module_idle(pdev);
fail_no_dev:
return err;
}