mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 12:03:54 +02:00
drm/amd/pn: Fetch static metrics table
Fetch static metrics table for smu_v13_0_6 v2: Add static metrics caps check to fetch static metrics table v3: Update version having all fixes for static metrics support Signed-off-by: Asad Kamal <asad.kamal@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
a2344a9827
commit
9eddfcbef4
|
|
@ -177,6 +177,7 @@ static const struct cmn2asic_msg_mapping smu_v13_0_6_message_map[SMU_MSG_MAX_COU
|
|||
MSG_MAP(SetThrottlingPolicy, PPSMC_MSG_SetThrottlingPolicy, 0),
|
||||
MSG_MAP(ResetSDMA, PPSMC_MSG_ResetSDMA, 0),
|
||||
MSG_MAP(ResetVCN, PPSMC_MSG_ResetVCN, 0),
|
||||
MSG_MAP(GetStaticMetricsTable, PPSMC_MSG_GetStaticMetricsTable, 0),
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
|
|
@ -391,6 +392,8 @@ static void smu_v13_0_6_init_caps(struct smu_context *smu)
|
|||
if ((pgm == 7 && fw_ver >= 0x7550E00) ||
|
||||
(pgm == 0 && fw_ver >= 0x00557E00))
|
||||
smu_v13_0_6_cap_set(smu, SMU_CAP(HST_LIMIT_METRICS));
|
||||
if (fw_ver >= 0x00557F01)
|
||||
smu_v13_0_6_cap_set(smu, SMU_CAP(STATIC_METRICS));
|
||||
}
|
||||
if (((pgm == 7) && (fw_ver >= 0x7550700)) ||
|
||||
((pgm == 0) && (fw_ver >= 0x00557900)) ||
|
||||
|
|
@ -736,6 +739,26 @@ static ssize_t smu_v13_0_6_get_pm_metrics(struct smu_context *smu,
|
|||
return pm_metrics->common_header.structure_size;
|
||||
}
|
||||
|
||||
static int smu_v13_0_6_get_static_metrics_table(struct smu_context *smu)
|
||||
{
|
||||
struct smu_table_context *smu_table = &smu->smu_table;
|
||||
uint32_t table_size = smu_table->tables[SMU_TABLE_SMU_METRICS].size;
|
||||
struct smu_table *table = &smu_table->driver_table;
|
||||
int ret;
|
||||
|
||||
ret = smu_cmn_send_smc_msg(smu, SMU_MSG_GetStaticMetricsTable, NULL);
|
||||
if (ret) {
|
||||
dev_info(smu->adev->dev,
|
||||
"Failed to export static metrics table!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
amdgpu_asic_invalidate_hdp(smu->adev, NULL);
|
||||
memcpy(smu_table->metrics_table, table->cpu_addr, table_size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int smu_v13_0_6_setup_driver_pptable(struct smu_context *smu)
|
||||
{
|
||||
struct smu_table_context *smu_table = &smu->smu_table;
|
||||
|
|
@ -803,6 +826,11 @@ static int smu_v13_0_6_setup_driver_pptable(struct smu_context *smu)
|
|||
GET_METRIC_FIELD(PublicSerialNumber_AID, version)[0];
|
||||
|
||||
pptable->Init = true;
|
||||
if (smu_v13_0_6_cap_supported(smu, SMU_CAP(STATIC_METRICS))) {
|
||||
ret = smu_v13_0_6_get_static_metrics_table(smu);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user