From 8133e89e82a787aec788a02c5aae4dc58c2e910f Mon Sep 17 00:00:00 2001 From: "Castillo, Juan" Date: Thu, 3 Jul 2025 01:58:50 -0500 Subject: [PATCH] [SWDEV-539845] Add support for board voltage (#92) * Add the API and CLI to show the board voltage. --------- Signed-off-by: Arif, Maisam Signed-off-by: Juan Castillo Co-authored-by: Liu, Shuzhou (Bill) [ROCm/rocm_smi_lib commit: bab82d98b771b139f405ad5ac436f192398ab726] --- projects/rocm-smi-lib/include/rocm_smi/rocm_smi.h | 7 ++++--- projects/rocm-smi-lib/src/rocm_smi_monitor.cc | 11 +++++++++-- .../rocm-smi-lib/tests/rocm_smi_test/test_common.cc | 1 + 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/projects/rocm-smi-lib/include/rocm_smi/rocm_smi.h b/projects/rocm-smi-lib/include/rocm_smi/rocm_smi.h index 23d537388f..53bc3733cf 100755 --- a/projects/rocm-smi-lib/include/rocm_smi/rocm_smi.h +++ b/projects/rocm-smi-lib/include/rocm_smi/rocm_smi.h @@ -522,9 +522,10 @@ typedef enum { typedef enum { RSMI_VOLT_TYPE_FIRST = 0, - RSMI_VOLT_TYPE_VDDGFX = RSMI_VOLT_TYPE_FIRST, //!< Vddgfx GPU - //!< voltage - RSMI_VOLT_TYPE_LAST = RSMI_VOLT_TYPE_VDDGFX, + RSMI_VOLT_TYPE_VDDGFX = RSMI_VOLT_TYPE_FIRST, //!< Vddgfx GPU voltage + RSMI_VOLT_TYPE_VDDBOARD, //!< Voltage for VDDBOARD + + RSMI_VOLT_TYPE_LAST = RSMI_VOLT_TYPE_VDDBOARD, RSMI_VOLT_TYPE_INVALID = 0xFFFFFFFF //!< Invalid type } rsmi_voltage_type_t; diff --git a/projects/rocm-smi-lib/src/rocm_smi_monitor.cc b/projects/rocm-smi-lib/src/rocm_smi_monitor.cc index 5fff9d1460..dfa8342c26 100755 --- a/projects/rocm-smi-lib/src/rocm_smi_monitor.cc +++ b/projects/rocm-smi-lib/src/rocm_smi_monitor.cc @@ -109,7 +109,7 @@ static const char *kTempSensorTypeJunctionName = "junction"; static const char *kTempSensorTypeEdgeName = "edge"; static const char *kTempSensorTypeVddgfxName = "vddgfx"; - +static const char *kTempSensorTypeVddboardName = "vddboard"; static const std::map kTempSensorNameMap = { @@ -121,6 +121,7 @@ static const std::map static const std::map kVoltSensorNameMap = { {kTempSensorTypeVddgfxName, RSMI_VOLT_TYPE_VDDGFX}, + {kTempSensorTypeVddboardName, RSMI_VOLT_TYPE_VDDBOARD}, }; static const std::map kMonitorNameMap = { @@ -399,7 +400,13 @@ Monitor::setVoltSensorLabelMap(void) { }; for (uint32_t i = 0; i < RSMI_VOLT_TYPE_LAST + 1; ++i) { - ret = add_volt_sensor_entry(i); + // VDDGFX -> 0, VDDNB -> 1, VDDBOARD -> 2 + // Here the VDDNB will be skipped as it is not defined in the enum and not supported by AMD. + auto file_index = i; + if (i >= RSMI_VOLT_TYPE_VDDBOARD) { + file_index = i + 1; + } + ret = add_volt_sensor_entry(file_index); if (ret) { return ret; } diff --git a/projects/rocm-smi-lib/tests/rocm_smi_test/test_common.cc b/projects/rocm-smi-lib/tests/rocm_smi_test/test_common.cc index 573474c6b9..04fe38001f 100755 --- a/projects/rocm-smi-lib/tests/rocm_smi_test/test_common.cc +++ b/projects/rocm-smi-lib/tests/rocm_smi_test/test_common.cc @@ -142,6 +142,7 @@ static const char* short_options = "i:v:m:fr"; static const std::map kVoltSensorNameMap = { {RSMI_VOLT_TYPE_VDDGFX, "Vddgfx"}, + {RSMI_VOLT_TYPE_VDDBOARD, "Vddboard"}, }; static void PrintHelp(void) {