Skip to content

Commit 6a92761

Browse files
Umio-Yasunoalexdeucher
authored andcommitted
drm/amdgpu/pm: fix throttle_status for other than MP1 11.0.7
Use the right metrics table version based on the firmware. Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2720 Reviewed-by: Evan Quan <evan.quan@amd.com> Signed-off-by: Umio Yasuno <coelacanth_dream@protonmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
1 parent 0d6f374 commit 6a92761

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -588,21 +588,21 @@ static int sienna_cichlid_tables_init(struct smu_context *smu)
588588
return -ENOMEM;
589589
}
590590

591-
static uint32_t sienna_cichlid_get_throttler_status_locked(struct smu_context *smu)
591+
static uint32_t sienna_cichlid_get_throttler_status_locked(struct smu_context *smu,
592+
bool use_metrics_v3,
593+
bool use_metrics_v2)
592594
{
593595
struct smu_table_context *smu_table= &smu->smu_table;
594596
SmuMetricsExternal_t *metrics_ext =
595597
(SmuMetricsExternal_t *)(smu_table->metrics_table);
596598
uint32_t throttler_status = 0;
597599
int i;
598600

599-
if ((smu->adev->ip_versions[MP1_HWIP][0] == IP_VERSION(11, 0, 7)) &&
600-
(smu->smc_fw_version >= 0x3A4900)) {
601+
if (use_metrics_v3) {
601602
for (i = 0; i < THROTTLER_COUNT; i++)
602603
throttler_status |=
603604
(metrics_ext->SmuMetrics_V3.ThrottlingPercentage[i] ? 1U << i : 0);
604-
} else if ((smu->adev->ip_versions[MP1_HWIP][0] == IP_VERSION(11, 0, 7)) &&
605-
(smu->smc_fw_version >= 0x3A4300)) {
605+
} else if (use_metrics_v2) {
606606
for (i = 0; i < THROTTLER_COUNT; i++)
607607
throttler_status |=
608608
(metrics_ext->SmuMetrics_V2.ThrottlingPercentage[i] ? 1U << i : 0);
@@ -864,7 +864,7 @@ static int sienna_cichlid_get_smu_metrics_data(struct smu_context *smu,
864864
metrics->TemperatureVrSoc) * SMU_TEMPERATURE_UNITS_PER_CENTIGRADES;
865865
break;
866866
case METRICS_THROTTLER_STATUS:
867-
*value = sienna_cichlid_get_throttler_status_locked(smu);
867+
*value = sienna_cichlid_get_throttler_status_locked(smu, use_metrics_v3, use_metrics_v2);
868868
break;
869869
case METRICS_CURR_FANSPEED:
870870
*value = use_metrics_v3 ? metrics_v3->CurrFanSpeed :
@@ -4017,7 +4017,7 @@ static ssize_t sienna_cichlid_get_gpu_metrics(struct smu_context *smu,
40174017
gpu_metrics->current_dclk1 = use_metrics_v3 ? metrics_v3->CurrClock[PPCLK_DCLK_1] :
40184018
use_metrics_v2 ? metrics_v2->CurrClock[PPCLK_DCLK_1] : metrics->CurrClock[PPCLK_DCLK_1];
40194019

4020-
gpu_metrics->throttle_status = sienna_cichlid_get_throttler_status_locked(smu);
4020+
gpu_metrics->throttle_status = sienna_cichlid_get_throttler_status_locked(smu, use_metrics_v3, use_metrics_v2);
40214021
gpu_metrics->indep_throttle_status =
40224022
smu_cmn_get_indep_throttler_status(gpu_metrics->throttle_status,
40234023
sienna_cichlid_throttler_map);

0 commit comments

Comments
 (0)