Commit e01eeffc authored by Yang Wang's avatar Yang Wang Committed by Alex Deucher
Browse files

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: default avatarYang Wang <KevinYang.Wang@amd.com>
Reviewed-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarAsad Kamal <asad.kamal@amd.com>
Tested-by: default avatarAsad Kamal <asad.kamal@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent bd6040b0
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -325,15 +325,25 @@ 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);
		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);
		pptable->MaxGfxclkFrequency =