From 9d0ce8ba426aa70cd5d93776b334dad3b3ae8dcc Mon Sep 17 00:00:00 2001 From: Bindhiya Kanangot Balakrishnan Date: Thu, 4 Sep 2025 10:58:33 -0500 Subject: [PATCH] [SWDEV-414304] Reduce excessive hwmon operations Previously, the function was iterating through all enum values(0-250). This fix reduces the number of hwmon operations by calling add_temp_sensor_entry only for temperature types that fall within the defined enum ranges. Signed-off-by: Bindhiya Kanangot Balakrishnan [ROCm/amdsmi commit: 17ffe5a1bd09c8e8d1b948331ce64c9297c36464] --- .../rocm_smi/include/rocm_smi/rocm_smi.h | 6 ++++-- .../amdsmi/rocm_smi/src/rocm_smi_monitor.cc | 20 +++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/projects/amdsmi/rocm_smi/include/rocm_smi/rocm_smi.h b/projects/amdsmi/rocm_smi/include/rocm_smi/rocm_smi.h index cceb59e9ad..2f83bd418d 100644 --- a/projects/amdsmi/rocm_smi/include/rocm_smi/rocm_smi.h +++ b/projects/amdsmi/rocm_smi/include/rocm_smi/rocm_smi.h @@ -534,6 +534,7 @@ typedef enum { RSMI_TEMP_TYPE_HBM_2, //!< HBM temperature instance 2 RSMI_TEMP_TYPE_HBM_3, //!< HBM temperature instance 3 RSMI_TEMP_TYPE_PLX, //!< PLX temperature + RSMI_TEMP_TYPE_GENERAL_LAST = RSMI_TEMP_TYPE_PLX, // GPU Board Node temperature @@ -544,6 +545,7 @@ typedef enum { RSMI_TEMP_TYPE_GPUBOARD_NODE_OAM_X_VDD18_VR, //!< OAM X VDD 1.8V voltage regulator temperature RSMI_TEMP_TYPE_GPUBOARD_NODE_OAM_X_04_HBM_B_VR, //!< OAM X 0.4V HBM B voltage regulator temperature RSMI_TEMP_TYPE_GPUBOARD_NODE_OAM_X_04_HBM_D_VR, //!< OAM X 0.4V HBM D voltage regulator temperature + RSMI_TEMP_TYPE_GPUBOARD_NODE_LAST = RSMI_TEMP_TYPE_GPUBOARD_NODE_OAM_X_04_HBM_D_VR, // GPU Board VR (Voltage Regulator) temperature RSMI_TEMP_TYPE_GPUBOARD_VR_FIRST = 150, @@ -560,7 +562,7 @@ typedef enum { RSMI_TEMP_TYPE_GPUBOARD_VDDCR_11_HBM_D, //!< VDDCR 1.1V HBM D voltage regulator temperature RSMI_TEMP_TYPE_GPUBOARD_VDD_USR, //!< VDD USR voltage regulator temperature RSMI_TEMP_TYPE_GPUBOARD_VDDIO_11_E32, //!< VDDIO 1.1V E32 voltage regulator temperature - RSMI_TEMP_TYPE_GPUBOARD_LAST = 199, + RSMI_TEMP_TYPE_GPUBOARD_LAST = RSMI_TEMP_TYPE_GPUBOARD_VDDIO_11_E32, // Baseboard System temperature RSMI_TEMP_TYPE_BASEBOARD_FIRST = 200, @@ -587,7 +589,7 @@ typedef enum { RSMI_TEMP_TYPE_BASEBOARD_OAM_4_5_6_7_3V3_VR, //!< OAM 4-5-6-7 3.3V voltage regulator temperature RSMI_TEMP_TYPE_BASEBOARD_IBC_HSC, //!< IBC HSC temperature RSMI_TEMP_TYPE_BASEBOARD_IBC, //!< IBC temperature - RSMI_TEMP_TYPE_BASEBOARD_LAST = 249, + RSMI_TEMP_TYPE_BASEBOARD_LAST = RSMI_TEMP_TYPE_BASEBOARD_IBC, RSMI_TEMP_TYPE_LAST = RSMI_TEMP_TYPE_BASEBOARD_LAST, //!< Last of per GPU temperature types diff --git a/projects/amdsmi/rocm_smi/src/rocm_smi_monitor.cc b/projects/amdsmi/rocm_smi/src/rocm_smi_monitor.cc index 4a0a728f08..866862d621 100644 --- a/projects/amdsmi/rocm_smi/src/rocm_smi_monitor.cc +++ b/projects/amdsmi/rocm_smi/src/rocm_smi_monitor.cc @@ -336,14 +336,18 @@ Monitor::setTempSensorLabelMap(void) { return 0; }; - for (uint32_t t = RSMI_TEMP_TYPE_FIRST; t <= RSMI_TEMP_TYPE_LAST; ++t) { - temp_type_index_map_.insert( - {static_cast(t), RSMI_TEMP_TYPE_INVALID}); - } - for (uint32_t i = 1; i <= RSMI_TEMP_TYPE_LAST + 1; ++i) { - ret = add_temp_sensor_entry(i); - if (ret) { - return ret; + for (uint32_t i = RSMI_TEMP_TYPE_FIRST; i <= RSMI_TEMP_TYPE_LAST; ++i) { + if ((i <= RSMI_TEMP_TYPE_GENERAL_LAST) || + (i >= RSMI_TEMP_TYPE_GPUBOARD_NODE_FIRST && i <= RSMI_TEMP_TYPE_GPUBOARD_NODE_LAST) || + (i >= RSMI_TEMP_TYPE_GPUBOARD_VR_FIRST && i <= RSMI_TEMP_TYPE_GPUBOARD_LAST) || + (i >= RSMI_TEMP_TYPE_BASEBOARD_FIRST && i <= RSMI_TEMP_TYPE_BASEBOARD_LAST)) { + ret = add_temp_sensor_entry(i); + if (ret) { + return ret; + } + } else { + temp_type_index_map_.insert( + {static_cast(i), RSMI_TEMP_TYPE_INVALID}); } } return 0;