fix: [SWDEV-458862] [rocm/rocm_smi_lib]

Fixes reading pp_od_clk_voltage new variable format and size.

Code changes related to the following:
  * get_od_clk_volt_info()
  * get_od_clk_volt_curve_regions()
  * Unit tests
  * CLI options removed: --showclkvolt, --showvc, --showvoltagerange, --setvc

Change-Id: Ieedb845eeadcea2f2e447ec576c253ad2a814176
Signed-off-by: Oliveira, Daniel <daniel.oliveira@amd.com>
This commit is contained in:
Oliveira, Daniel
2024-04-26 23:48:15 -05:00
committed by Maisam Arif
parent 3282aaa8de
commit 48ddd9abd7
7 changed files with 390 additions and 288 deletions
@@ -186,10 +186,10 @@ void TestMutualExclusion::Run(void) {
int64_t dmy_i64 = 0;
char dmy_str[10];
rsmi_dev_perf_level_t dmy_perf_lvl;
rsmi_frequencies_t dmy_freqs;
rsmi_od_volt_freq_data_t dmy_od_volt;
rsmi_freq_volt_region_t dmy_vlt_reg;
rsmi_error_count_t dmy_err_cnt;
rsmi_frequencies_t dmy_freqs{};
rsmi_od_volt_freq_data_t dmy_od_volt{};
rsmi_freq_volt_region_t dmy_vlt_reg{};
rsmi_error_count_t dmy_err_cnt{};
rsmi_ras_err_state_t dmy_ras_err_st;
// This can be replaced with ASSERT_EQ() once env. stabilizes
@@ -87,7 +87,7 @@ void TestVoltCurvRead::Close() {
void TestVoltCurvRead::Run(void) {
rsmi_status_t err, ret;
rsmi_od_volt_freq_data_t odv;
rsmi_od_volt_freq_data_t odv{};
rsmi_dev_perf_level_t pfl;
TestBase::Run();
@@ -134,9 +134,6 @@ void TestVoltCurvRead::Run(void) {
IF_VERB(STANDARD) {
std::cout << "\t**rsmi_dev_od_volt_info_get(i, nullptr): "
<< amd::smi::getRSMIStatusString(err, false) << "\n";
// << "\n"
// << amd::smi::print_rsmi_od_volt_freq_data_t(&odv)
// << "\n";
}
ASSERT_TRUE(err == RSMI_STATUS_INVALID_ARGS);
err = rsmi_dev_od_volt_info_get(i, &odv);
@@ -147,43 +144,5 @@ void TestVoltCurvRead::Run(void) {
<< "\t**odv.num_regions = " << std::dec
<< odv.num_regions << "\n";
}
if (err == RSMI_STATUS_SUCCESS) {
std::cout << "\t**Frequency-voltage curve data:" << "\n";
std::cout << amd::smi::print_rsmi_od_volt_freq_data_t(&odv);
rsmi_freq_volt_region_t *regions;
uint32_t num_regions;
regions = new rsmi_freq_volt_region_t[odv.num_regions];
ASSERT_TRUE(regions != nullptr);
num_regions = odv.num_regions;
err = rsmi_dev_od_volt_curve_regions_get(i, &num_regions, regions);
IF_VERB(STANDARD) {
std::cout << "\t**rsmi_dev_od_volt_curve_regions_get("
<< "i, &num_regions, regions): "
<< amd::smi::getRSMIStatusString(err, false) << "\n"
<< "\t**Number of regions: " << std::dec << num_regions
<< "\n";
}
ASSERT_TRUE(err == RSMI_STATUS_SUCCESS
|| err == RSMI_STATUS_NOT_SUPPORTED
|| err == RSMI_STATUS_UNEXPECTED_DATA
|| err == RSMI_STATUS_UNEXPECTED_SIZE);
if (err != RSMI_STATUS_SUCCESS) {
IF_VERB(STANDARD) {
std::cout << "\t**rsmi_dev_od_volt_curve_regions_get: "
"Not supported on this machine" << std::endl;
}
continue;
}
CHK_ERR_ASRT(err)
ASSERT_TRUE(num_regions == odv.num_regions);
std::cout << "\t**Frequency-voltage curve regions:" << std::endl;
std::cout << amd::smi::print_rsmi_od_volt_freq_regions(num_regions,
regions);
delete []regions;
}
}
}