diff --git a/projects/amdsmi/example/amdsmi_esmi_intg_example.cc b/projects/amdsmi/example/amdsmi_esmi_intg_example.cc index d25366af2b..bc84b7a73d 100644 --- a/projects/amdsmi/example/amdsmi_esmi_intg_example.cc +++ b/projects/amdsmi/example/amdsmi_esmi_intg_example.cc @@ -114,14 +114,14 @@ int main(int argc, char **argv) { CHK_AMDSMI_RET(ret) std::cout << "core_count=" << core_count << std::endl; - ret = amdsmi_get_hsmp_proto_ver(&proto_ver); + ret = amdsmi_get_cpu_hsmp_proto_ver(sockets[i], &proto_ver); CHK_AMDSMI_RET(ret) cout<<"\n------------------------------------------"; cout<<"\n| HSMP Proto Version | "<< proto_ver <<"\t\t |"<< endl; cout<<"------------------------------------------\n"; - ret = amdsmi_get_smu_fw_version(&smu_fw); + ret = amdsmi_get_cpu_smu_fw_version(sockets[i], &smu_fw); CHK_AMDSMI_RET(ret) cout<<"\n------------------------------------------"; diff --git a/projects/amdsmi/include/amd_smi/amdsmi.h b/projects/amdsmi/include/amd_smi/amdsmi.h index 2291753682..2a3b3c722f 100644 --- a/projects/amdsmi/include/amd_smi/amdsmi.h +++ b/projects/amdsmi/include/amd_smi/amdsmi.h @@ -3685,20 +3685,24 @@ amdsmi_status_t amdsmi_get_cpu_socket_energy(amdsmi_cpusocket_handle socket_hand /** * @brief Get SMU Firmware Version. * + * @param[in] socket_handle Cpu socket which to query * @param[in,out] amdsmi_smu_fw - Input buffer to return the firmware version * * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail */ -amdsmi_status_t amdsmi_get_smu_fw_version(amdsmi_smu_fw_version_t *amdsmi_smu_fw); +amdsmi_status_t amdsmi_get_cpu_smu_fw_version(amdsmi_cpusocket_handle socket_handle, + amdsmi_smu_fw_version_t *amdsmi_smu_fw); /** * @brief Get HSMP protocol Version. * + * @param[in] socket_handle Cpu socket which to query * @param[in,out] proto_ver - Input buffer to return the protocol version * * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail */ -amdsmi_status_t amdsmi_get_hsmp_proto_ver(uint32_t *proto_ver); +amdsmi_status_t amdsmi_get_cpu_hsmp_proto_ver(amdsmi_cpusocket_handle socket_handle, + uint32_t *proto_ver); /** * @brief Get normalized status of the processor's PROCHOT status. @@ -3938,11 +3942,13 @@ amdsmi_status_t amdsmi_set_cpu_socket_boostlimit(amdsmi_cpusocket_handle socket_ /** * @brief Get the DDR bandwidth data. * + * @param[in] socket_handle Cpu socket which to query * @param[in,out] ddr_bw - Input buffer to fill ddr bandwidth data * * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail */ -amdsmi_status_t amdsmi_get_cpu_ddr_bw(amdsmi_ddr_bw_metrics_t *ddr_bw); +amdsmi_status_t amdsmi_get_cpu_ddr_bw(amdsmi_cpusocket_handle socket_handle, + amdsmi_ddr_bw_metrics_t *ddr_bw); /** @} */ @@ -4154,12 +4160,14 @@ amdsmi_status_t amdsmi_get_cpu_current_io_bandwidth(amdsmi_cpusocket_handle sock /** * @brief Get current input output bandwidth. * + * @param[in] socket_handle Cpu socket which to query * @param[in] link - link id and bw type to which xgmi bandwidth to be obtained * @param[in,out] xgmi_bw - Input buffer to fill bandwidth data * * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail */ -amdsmi_status_t amdsmi_get_cpu_current_xgmi_bw(amdsmi_link_id_bw_type_t link, uint32_t *xgmi_bw); +amdsmi_status_t amdsmi_get_cpu_current_xgmi_bw(amdsmi_cpusocket_handle socket_handle, + amdsmi_link_id_bw_type_t link, uint32_t *xgmi_bw); /** @} */ diff --git a/projects/amdsmi/src/amd_smi/amd_smi.cc b/projects/amdsmi/src/amd_smi/amd_smi.cc index ed99ba9ce4..0ec96ec544 100644 --- a/projects/amdsmi/src/amd_smi/amd_smi.cc +++ b/projects/amdsmi/src/amd_smi/amd_smi.cc @@ -1861,14 +1861,20 @@ amdsmi_status_t amdsmi_get_processor_handle_from_bdf(amdsmi_bdf_t bdf, } #ifdef ENABLE_ESMI_LIB -amdsmi_status_t amdsmi_get_hsmp_proto_ver(uint32_t *proto_ver) +amdsmi_status_t amdsmi_get_cpu_hsmp_proto_ver(amdsmi_cpusocket_handle socket_handle, + uint32_t *proto_ver) { amdsmi_status_t status; uint32_t hsmp_proto_ver; - if (proto_ver == nullptr) + if (socket_handle == nullptr) return AMDSMI_STATUS_INVAL; + amd::smi::AMDSmiCpuSocket* socket = nullptr; + amdsmi_status_t r = get_cpu_socket_from_handle(socket_handle, &socket); + if (r != AMDSMI_STATUS_SUCCESS) + return r; + status = static_cast(esmi_hsmp_proto_ver_get(&hsmp_proto_ver)); *proto_ver = hsmp_proto_ver; @@ -1878,14 +1884,20 @@ amdsmi_status_t amdsmi_get_hsmp_proto_ver(uint32_t *proto_ver) return AMDSMI_STATUS_SUCCESS; } -amdsmi_status_t amdsmi_get_smu_fw_version(amdsmi_smu_fw_version_t *amdsmi_smu_fw) +amdsmi_status_t amdsmi_get_cpu_smu_fw_version(amdsmi_cpusocket_handle socket_handle, + amdsmi_smu_fw_version_t *amdsmi_smu_fw) { amdsmi_status_t status; struct smu_fw_version smu_fw; - if (amdsmi_smu_fw == nullptr) + if (socket_handle == nullptr) return AMDSMI_STATUS_INVAL; + amd::smi::AMDSmiCpuSocket* socket = nullptr; + amdsmi_status_t r = get_cpu_socket_from_handle(socket_handle, &socket); + if (r != AMDSMI_STATUS_SUCCESS) + return r; + status = static_cast(esmi_smu_fw_version_get(&smu_fw)); amdsmi_smu_fw->major = smu_fw.major; @@ -2309,14 +2321,20 @@ amdsmi_status_t amdsmi_set_cpu_socket_boostlimit(amdsmi_cpusocket_handle socket_ return AMDSMI_STATUS_SUCCESS; } -amdsmi_status_t amdsmi_get_cpu_ddr_bw(amdsmi_ddr_bw_metrics_t *ddr_bw) +amdsmi_status_t amdsmi_get_cpu_ddr_bw(amdsmi_cpusocket_handle socket_handle, + amdsmi_ddr_bw_metrics_t *ddr_bw) { amdsmi_status_t status; struct ddr_bw_metrics ddr; - if (ddr_bw == nullptr) + if (socket_handle == nullptr) return AMDSMI_STATUS_INVAL; + amd::smi::AMDSmiCpuSocket* socket = nullptr; + amdsmi_status_t r = get_cpu_socket_from_handle(socket_handle, &socket); + if (r != AMDSMI_STATUS_SUCCESS) + return r; + status = static_cast(esmi_ddr_bw_get(&ddr)); if (status != AMDSMI_STATUS_SUCCESS) return status; @@ -2624,15 +2642,21 @@ amdsmi_status_t amdsmi_get_cpu_current_io_bandwidth(amdsmi_cpusocket_handle sock return AMDSMI_STATUS_SUCCESS; } -amdsmi_status_t amdsmi_get_cpu_current_xgmi_bw(amdsmi_link_id_bw_type_t link, uint32_t *xgmi_bw) +amdsmi_status_t amdsmi_get_cpu_current_xgmi_bw(amdsmi_cpusocket_handle socket_handle, + amdsmi_link_id_bw_type_t link, uint32_t *xgmi_bw) { amdsmi_status_t status; uint32_t bw; struct link_id_bw_type io_link; - if (xgmi_bw == nullptr) + if (socket_handle == nullptr) return AMDSMI_STATUS_INVAL; + amd::smi::AMDSmiCpuSocket* socket = nullptr; + amdsmi_status_t r = get_cpu_socket_from_handle(socket_handle, &socket); + if (r != AMDSMI_STATUS_SUCCESS) + return r; + status = static_cast(esmi_current_xgmi_bw_get(io_link, &bw)); if (status != AMDSMI_STATUS_SUCCESS) return status;