Add support for the HBM temperature

The rsmi_dev_temp_metric_get() can also support the HBM
temperatures which is retrieved from gpu_metrics.

Change-Id: I96b979296e90cf881523627b41b1a02849676416
This commit is contained in:
Bill(Shuzhou) Liu
2021-03-30 10:44:01 -04:00
parent f990d775b7
commit da480b4589
3 changed files with 43 additions and 2 deletions
+5 -2
View File
@@ -407,8 +407,11 @@ typedef enum {
RSMI_TEMP_TYPE_JUNCTION, //!< Junction/hotspot
//!< temperature
RSMI_TEMP_TYPE_MEMORY, //!< VRAM temperature
RSMI_TEMP_TYPE_LAST = RSMI_TEMP_TYPE_MEMORY,
RSMI_TEMP_TYPE_HBM_0, //!< HBM temperature instance 0
RSMI_TEMP_TYPE_HBM_1, //!< HBM temperature instance 1
RSMI_TEMP_TYPE_HBM_2, //!< HBM temperature instance 2
RSMI_TEMP_TYPE_HBM_3, //!< HBM temperature instance 3
RSMI_TEMP_TYPE_LAST = RSMI_TEMP_TYPE_HBM_3,
RSMI_TEMP_TYPE_INVALID = 0xFFFFFFFF //!< Invalid type
} rsmi_temperature_type_t;
+34
View File
@@ -2024,6 +2024,40 @@ rsmi_dev_temp_metric_get(uint32_t dv_ind, uint32_t sensor_type,
mon_type = amd::smi::kMonInvalid;
}
// The HBM temperature is retreived from the gpu_metrics
if (sensor_type == RSMI_TEMP_TYPE_HBM_0
|| sensor_type == RSMI_TEMP_TYPE_HBM_1
|| sensor_type == RSMI_TEMP_TYPE_HBM_2
|| sensor_type == RSMI_TEMP_TYPE_HBM_3) {
if (metric != RSMI_TEMP_CURRENT) { // only support RSMI_TEMP_CURRENT
return RSMI_STATUS_NOT_SUPPORTED;
}
rsmi_gpu_metrics_t gpu_metrics;
ret = rsmi_dev_gpu_metrics_info_get(dv_ind, &gpu_metrics);
if (ret != RSMI_STATUS_SUCCESS) {
return ret;
}
if (temperature == nullptr) {
return RSMI_STATUS_INVALID_ARGS;
}
if (sensor_type == RSMI_TEMP_TYPE_HBM_0) {
*temperature = gpu_metrics.temperature_hbm[0];
} else if (sensor_type == RSMI_TEMP_TYPE_HBM_1) {
*temperature = gpu_metrics.temperature_hbm[1];
} else if (sensor_type == RSMI_TEMP_TYPE_HBM_2) {
*temperature = gpu_metrics.temperature_hbm[2];
} else if (sensor_type == RSMI_TEMP_TYPE_HBM_3) {
*temperature = gpu_metrics.temperature_hbm[3];
} else {
return RSMI_STATUS_NOT_SUPPORTED;
}
return RSMI_STATUS_SUCCESS;
} // end HBM temperature
DEVICE_MUTEX
GET_DEV_FROM_INDX
@@ -60,6 +60,10 @@ static const std::map<uint32_t, std::string> kTempSensorNameMap = {
{RSMI_TEMP_TYPE_MEMORY, "Memory"},
{RSMI_TEMP_TYPE_JUNCTION, "Junction"},
{RSMI_TEMP_TYPE_EDGE, "Edge"},
{RSMI_TEMP_TYPE_HBM_0, "HBM_0"},
{RSMI_TEMP_TYPE_HBM_1, "HBM_1"},
{RSMI_TEMP_TYPE_HBM_2, "HBM_2"},
{RSMI_TEMP_TYPE_HBM_3, "HBM_3"},
};
TestTempRead::TestTempRead() : TestBase() {
set_title("RSMI Temp Read Test");