drm/amd/pm: avoid driver getting empty metrics table for the first time

add metrics.AccumulationCouter check to avoid driver getting an empty
metrics data since metrics table not updated completely in pmfw side.

Signed-off-by: Yang Wang <KevinYang.Wang@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Tested-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Yang Wang 2023-05-30 17:08:08 +08:00 committed by Alex Deucher
parent bd6040b0ea
commit e01eeffc3f

View File

@ -325,14 +325,24 @@ static int smu_v13_0_6_setup_driver_pptable(struct smu_context *smu)
MetricsTable_t *metrics = (MetricsTable_t *)smu_table->metrics_table;
struct PPTable_t *pptable =
(struct PPTable_t *)smu_table->driver_pptable;
int ret;
int i;
int ret, i, retry = 100;
/* Store one-time values in driver PPTable */
if (!pptable->Init) {
ret = smu_v13_0_6_get_metrics_table(smu, NULL, false);
if (ret)
return ret;
while (retry--) {
ret = smu_v13_0_6_get_metrics_table(smu, NULL, true);
if (ret)
return ret;
/* Ensure that metrics have been updated */
if (metrics->AccumulationCounter)
break;
usleep_range(1000, 1100);
}
if (!retry)
return -ETIME;
pptable->MaxSocketPowerLimit =
SMUQ10_TO_UINT(metrics->MaxSocketPowerLimit);