From 791fa376e9318084d7e78380cfe858b81be11d19 Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Wed, 19 Mar 2025 23:24:57 +0000 Subject: [PATCH] Fix amdsmi_get_power_info API This change creates a workaround for a broken C api in amdsmi. amdsmi_get_power_info API is broken in rocm 6.4.0 (amdsmi 25.2) and is fixed in rocm 6.4.1 (amdsmi 25.3). Breaking AMDSMI change: https://github.com/ROCm/amdsmi/commit/dc4a16da6fb45d581a6e23c78d340172989418a0 Change-Id: Ib45a2702aa722c7735f3ccd1081d8f62e4d34216 Signed-off-by: Galantsev, Dmitrii [ROCm/rdc commit: 929041b556eb8e40d7b7adb962025532cce49733] --- projects/rdc/rdc_libs/rdc/src/RdcMetricFetcherImpl.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/rdc/rdc_libs/rdc/src/RdcMetricFetcherImpl.cc b/projects/rdc/rdc_libs/rdc/src/RdcMetricFetcherImpl.cc index 1e62cd454b..056b25e0b0 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcMetricFetcherImpl.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcMetricFetcherImpl.cc @@ -610,8 +610,14 @@ rdc_status_t RdcMetricFetcherImpl::fetch_smi_field(uint32_t gpu_index, rdc_field } break; case RDC_FI_POWER_USAGE: { amdsmi_power_info_t power_info = {}; - uint32_t sensor_ind = 0; - value->status = amdsmi_get_power_info(processor_handle, sensor_ind, &power_info); +// Handle API breaking change in amdsmi commit dc4a16da6fb45d581a6e23c78d340172989418a0 +// Breaking change is only in rocm 6.4.0 (amdsmi 25.2) +// It is reverted to old signature in 6.4.1 (amdsmi 25.3) +#if (((AMDSMI_LIB_VERSION_MAJOR) == 25) && ((AMDSMI_LIB_VERSION_MINOR) == 2)) + value->status = amdsmi_get_power_info(processor_handle, 0, &power_info); +#else + value->status = amdsmi_get_power_info(processor_handle, &power_info); +#endif value->type = INTEGER; if (value->status != AMDSMI_STATUS_SUCCESS) { RDC_LOG(RDC_ERROR, "amdsmi_get_power_info failed!");