Skip to content

Commit 47f1724

Browse files
superm1alexdeucher
authored andcommitted
drm/amd: Introduce AMDGPU_PP_SENSOR_GPU_INPUT_POWER
Some GPUs have been overloading average power values and input power values. To disambiguate these, introduce a new `AMDGPU_PP_SENSOR_GPU_INPUT_POWER` and the GPUs that share input power update to use this instead of average power. Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2746 Signed-off-by: Mario Limonciello <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent e94e787 commit 47f1724

20 files changed

+57
-27
lines changed

drivers/gpu/drm/amd/include/kgd_pp_interface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ enum amd_pp_sensors {
133133
AMDGPU_PP_SENSOR_VCE_POWER,
134134
AMDGPU_PP_SENSOR_UVD_POWER,
135135
AMDGPU_PP_SENSOR_GPU_POWER,
136+
AMDGPU_PP_SENSOR_GPU_INPUT_POWER,
136137
AMDGPU_PP_SENSOR_SS_APU_SHARE,
137138
AMDGPU_PP_SENSOR_SS_DGPU_SHARE,
138139
AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK,

drivers/gpu/drm/amd/pm/amdgpu_pm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2809,7 +2809,7 @@ static ssize_t amdgpu_hwmon_show_power_input(struct device *dev,
28092809
{
28102810
unsigned int val;
28112811

2812-
val = amdgpu_hwmon_get_power(dev, AMDGPU_PP_SENSOR_GPU_POWER);
2812+
val = amdgpu_hwmon_get_power(dev, AMDGPU_PP_SENSOR_GPU_INPUT_POWER);
28132813
if (val < 0)
28142814
return val;
28152815

drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4039,7 +4039,7 @@ static int smu7_read_sensor(struct pp_hwmgr *hwmgr, int idx,
40394039
*((uint32_t *)value) = data->vce_power_gated ? 0 : 1;
40404040
*size = 4;
40414041
return 0;
4042-
case AMDGPU_PP_SENSOR_GPU_POWER:
4042+
case AMDGPU_PP_SENSOR_GPU_INPUT_POWER:
40434043
return smu7_get_gpu_power(hwmgr, (uint32_t *)value);
40444044
case AMDGPU_PP_SENSOR_VDDGFX:
40454045
if ((data->vr_config & VRCONF_VDDGFX_MASK) ==

drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3966,7 +3966,7 @@ static int vega10_read_sensor(struct pp_hwmgr *hwmgr, int idx,
39663966
*((uint32_t *)value) = data->vce_power_gated ? 0 : 1;
39673967
*size = 4;
39683968
break;
3969-
case AMDGPU_PP_SENSOR_GPU_POWER:
3969+
case AMDGPU_PP_SENSOR_GPU_INPUT_POWER:
39703970
ret = vega10_get_gpu_power(hwmgr, (uint32_t *)value);
39713971
break;
39723972
case AMDGPU_PP_SENSOR_VDDGFX:

drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1529,7 +1529,7 @@ static int vega12_read_sensor(struct pp_hwmgr *hwmgr, int idx,
15291529
*((uint32_t *)value) = data->vce_power_gated ? 0 : 1;
15301530
*size = 4;
15311531
break;
1532-
case AMDGPU_PP_SENSOR_GPU_POWER:
1532+
case AMDGPU_PP_SENSOR_GPU_INPUT_POWER:
15331533
ret = vega12_get_gpu_power(hwmgr, (uint32_t *)value);
15341534
if (!ret)
15351535
*size = 4;

drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_hwmgr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2253,7 +2253,7 @@ static int vega20_read_sensor(struct pp_hwmgr *hwmgr, int idx,
22532253
*((uint32_t *)value) = data->vce_power_gated ? 0 : 1;
22542254
*size = 4;
22552255
break;
2256-
case AMDGPU_PP_SENSOR_GPU_POWER:
2256+
case AMDGPU_PP_SENSOR_GPU_INPUT_POWER:
22572257
*size = 16;
22582258
ret = vega20_get_gpu_power(hwmgr, (uint32_t *)value);
22592259
break;

drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1398,6 +1398,7 @@ typedef enum {
13981398
METRICS_PCIE_RATE,
13991399
METRICS_PCIE_WIDTH,
14001400
METRICS_CURR_FANPWM,
1401+
METRICS_CURR_SOCKETPOWER,
14011402
} MetricsMember_t;
14021403

14031404
enum smu_cmn2asic_mapping_type {

drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,7 @@ static int arcturus_read_sensor(struct smu_context *smu,
11691169
ret = smu_v11_0_get_gfx_vdd(smu, (uint32_t *)data);
11701170
*size = 4;
11711171
break;
1172+
case AMDGPU_PP_SENSOR_GPU_INPUT_POWER:
11721173
default:
11731174
ret = -EOPNOTSUPP;
11741175
break;

drivers/gpu/drm/amd/pm/swsmu/smu11/cyan_skillfish_ppt.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,14 @@ cyan_skillfish_get_smu_metrics_data(struct smu_context *smu,
154154
case METRICS_CURR_UCLK:
155155
*value = metrics->Current.MemclkFrequency;
156156
break;
157-
case METRICS_AVERAGE_SOCKETPOWER:
157+
case METRICS_CURR_SOCKETPOWER:
158158
*value = (metrics->Current.CurrentSocketPower << 8) /
159159
1000;
160160
break;
161+
case METRICS_AVERAGE_SOCKETPOWER:
162+
*value = (metrics->Average.CurrentSocketPower << 8) /
163+
1000;
164+
break;
161165
case METRICS_TEMPERATURE_EDGE:
162166
*value = metrics->Current.GfxTemperature / 100 *
163167
SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;
@@ -214,6 +218,12 @@ static int cyan_skillfish_read_sensor(struct smu_context *smu,
214218
(uint32_t *)data);
215219
*size = 4;
216220
break;
221+
case AMDGPU_PP_SENSOR_GPU_INPUT_POWER:
222+
ret = cyan_skillfish_get_smu_metrics_data(smu,
223+
METRICS_CURR_SOCKETPOWER,
224+
(uint32_t *)data);
225+
*size = 4;
226+
break;
217227
case AMDGPU_PP_SENSOR_HOTSPOT_TEMP:
218228
ret = cyan_skillfish_get_smu_metrics_data(smu,
219229
METRICS_TEMPERATURE_HOTSPOT,

drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,6 +2240,7 @@ static int navi10_read_sensor(struct smu_context *smu,
22402240
ret = smu_v11_0_get_gfx_vdd(smu, (uint32_t *)data);
22412241
*size = 4;
22422242
break;
2243+
case AMDGPU_PP_SENSOR_GPU_INPUT_POWER:
22432244
default:
22442245
ret = -EOPNOTSUPP;
22452246
break;

0 commit comments

Comments
 (0)