Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> On Thu, Jan 12, 2023 at 9:11 PM Liu, Aaron <Aaron.Liu@xxxxxxx> wrote: > > Reviewed-by: Aaron Liu aaron.liu@xxxxxxx > > > > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Zhang, Jesse(Jie) > Sent: Friday, January 13, 2023 10:07 AM > To: Deucher, Alexander <Alexander.Deucher@xxxxxxx> > Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Subject: [PATCH] drm/amdgpu: Renoir/Cezanne GPU power reporting issue > > > > [AMD Official Use Only - General] > > > > > > drm/amdgpu: Correct the power calcultion for Renior/Cezanne. > > From smu firmware,the value of power is transferred in units of watts. > > Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/2321 > > Fixes: 137aac26a2ed ("drm/amdgpu/smu12: fix power reporting on renoir") > > > > Acked-by: Alex Deucher alexander.deucher@xxxxxxx > > Signed-off-by: Jesse Zhang Jesse.Zhang@xxxxxxx > > > > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c > > index 85e22210963f..96a49a3b3ad9 100644 > > --- a/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c > > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c > > @@ -1171,6 +1171,7 @@ static int renoir_get_smu_metrics_data(struct smu_context *smu, > > int ret = 0; > > uint32_t apu_percent = 0; > > uint32_t dgpu_percent = 0; > > + struct amdgpu_device *adev = smu->adev; > > > > > > ret = smu_cmn_get_metrics_table(smu, > > @@ -1196,7 +1197,11 @@ static int renoir_get_smu_metrics_data(struct smu_context *smu, > > *value = metrics->AverageUvdActivity / 100; > > break; > > case METRICS_AVERAGE_SOCKETPOWER: > > - *value = (metrics->CurrentSocketPower << 8) / 1000; > > + if (((adev->ip_versions[MP1_HWIP][0] == IP_VERSION(12, 0, 1)) && (adev->pm.fw_version >= 0x40000f)) > > + || ((adev->ip_versions[MP1_HWIP][0] == IP_VERSION(12, 0, 0)) && (adev->pm.fw_version >= 0x373200))) > > + *value = metrics->CurrentSocketPower << 8; > > + else > > + *value = (metrics->CurrentSocketPower << 8) / 1000; > > break; > > case METRICS_TEMPERATURE_EDGE: > > *value = (metrics->GfxTemperature / 100) *