From c9b2dc036fd45475f2caaf6152c11133a595c808 Mon Sep 17 00:00:00 2001 From: Marko Oblak Date: Tue, 14 Feb 2023 10:50:24 +0100 Subject: [PATCH] SWDEV-381227 - [AMDSMI][Linux][BM] SMILIB returns wrong temperature value Signed-off-by: Marko Oblak Change-Id: Idc9929d1cfd882bb33abf040378587f68d22b31a [ROCm/amdsmi commit: db9d8793be7ddc5a82f9995e614d4f262058be29] --- projects/amdsmi/README.md | 2 +- projects/amdsmi/example/amd_smi_drm_example.cc | 2 +- projects/amdsmi/example/amd_smi_nodrm_example.cc | 2 +- projects/amdsmi/src/amd_smi/amd_smi.cc | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/amdsmi/README.md b/projects/amdsmi/README.md index edfcecde0f..eb7eb00369 100755 --- a/projects/amdsmi/README.md +++ b/projects/amdsmi/README.md @@ -135,7 +135,7 @@ int main() { int64_t val_i64 = 0; ret = amdsmi_dev_get_temp_metric(device_handles[j], TEMPERATURE_TYPE_EDGE, AMDSMI_TEMP_CURRENT, &val_i64); - std::cout << "\t\tTemperature: " << val_i64/1000 << "C" << std::endl; + std::cout << "\t\tTemperature: " << val_i64 << "C" << std::endl; } } diff --git a/projects/amdsmi/example/amd_smi_drm_example.cc b/projects/amdsmi/example/amd_smi_drm_example.cc index 47857aa72a..de821794f7 100644 --- a/projects/amdsmi/example/amd_smi_drm_example.cc +++ b/projects/amdsmi/example/amd_smi_drm_example.cc @@ -640,7 +640,7 @@ int main() { AMDSMI_TEMP_CURRENT, &val_i64); CHK_AMDSMI_RET(ret) printf(" Output of amdsmi_dev_get_temp_metric:\n"); - std::cout << "\t\tTemperature: " << val_i64 / 1000 << "C" + std::cout << "\t\tTemperature: " << val_i64 << "C" << "\n\n"; // Get frame buffer diff --git a/projects/amdsmi/example/amd_smi_nodrm_example.cc b/projects/amdsmi/example/amd_smi_nodrm_example.cc index 3f7cfadec0..43c01594ff 100644 --- a/projects/amdsmi/example/amd_smi_nodrm_example.cc +++ b/projects/amdsmi/example/amd_smi_nodrm_example.cc @@ -304,7 +304,7 @@ int main() { AMDSMI_TEMP_CURRENT, &val_i64); CHK_AMDSMI_RET(ret) printf(" Output of amdsmi_dev_get_temp_metric:\n"); - std::cout << "\t\tTemperature: " << val_i64 / 1000 << "C" + std::cout << "\t\tTemperature: " << val_i64 << "C" << "\n\n"; // Get frame buffer diff --git a/projects/amdsmi/src/amd_smi/amd_smi.cc b/projects/amdsmi/src/amd_smi/amd_smi.cc index be05374118..7c3cbbca15 100644 --- a/projects/amdsmi/src/amd_smi/amd_smi.cc +++ b/projects/amdsmi/src/amd_smi/amd_smi.cc @@ -336,14 +336,14 @@ amdsmi_status_t amdsmi_dev_get_temp_metric(amdsmi_device_handle device_handle, device_handle, &metric_info); if (r_status != AMDSMI_STATUS_SUCCESS) return r_status; - *temperature = metric_info.temperature_vrsoc; return r_status; } - - return rsmi_wrapper(rsmi_dev_temp_metric_get, device_handle, + amdsmi_status_t amdsmi_status = rsmi_wrapper(rsmi_dev_temp_metric_get, device_handle, static_cast(sensor_type), static_cast(metric), temperature); + *temperature /= 1000; + return amdsmi_status; } amdsmi_status_t amdsmi_get_vram_usage(amdsmi_device_handle device_handle,