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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user