[PATCH] drm/amd/pm: Fix incorrect avg vcn utilization in gpu_metrics

Boqun Feng <[email protected]>
Newsgroups org.freedesktop.lists.dri-devel,org.freedesktop.lists.amd-gfx,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
In a Strix Halo system, a >100 average_vcn_activity in gpu_metrics can
be observed by running the following command:

    ffmpeg -hwaccel vappi -vappi_device /dev/dri/renderD128 -i \
    ~/sample-10s.mp4 -vf hwupload,scale_vappi=format=nv12 -c:v \
    h264_vappi /tmp/output.mp4

This is incorrect because the value is supposed to be in [0-100] range.

The cause of the issue is that the metrics.VcnActivity reported by
smu_cmn_get_metrics_table() is a permyriad value instead of a percentage
value (e.g. smu_v14_0_0_get_smu_metrics_data() has a division by 100 to
report the vcn_busy_percent). Therefore fix this by applying the same
division in smu_v14_0_0_get_gpu_metrics().

Reported-by: Mark Janes <[email protected]>
Signed-off-by: Boqun Feng <[email protected]>
---
 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
index 568665265a13..1058338344b0 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
@@ -566,7 +566,8 @@ static ssize_t smu_v14_0_0_get_gpu_metrics(struct smu_context *smu,
 	gpu_metrics->temperature_skin = metrics.SkinTemp;
 
 	gpu_metrics->average_gfx_activity = metrics.GfxActivity;
-	gpu_metrics->average_vcn_activity = metrics.VcnActivity;
+	/* metrics.VcnActivity is permyriad, convert it to percentage. */
+	gpu_metrics->average_vcn_activity = metrics.VcnActivity / 100;
 	memcpy(&gpu_metrics->average_ipu_activity[0],
 		&metrics.IpuBusy[0],
 		sizeof(uint16_t) * 8);
-- 
2.50.1 (Apple Git-155)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.