Corrected voltage_read call in amdsmi_get_power_info

Change-Id: I4097b3ac5699360d4e91c8b8254431b6b6768c3e
Signed-off-by: Maisam Arif <maisarif@amd.com>
Этот коммит содержится в:
Maisam Arif
2023-09-19 18:50:03 -05:00
коммит произвёл Galantsev, Dmitrii
родитель e4fac177c1
Коммит def17accbe
3 изменённых файлов: 33 добавлений и 48 удалений
+13 -27
Просмотреть файл
@@ -850,10 +850,10 @@ class AMDSMICommands():
if self.helpers.is_linux() and self.helpers.is_baremetal():
if args.power:
power_dict = {'average_socket_power': "N/A",
'gfx_voltage': "N/A",
'soc_voltage': "N/A",
'mem_voltage': "N/A",
power_dict = {'current_power': "N/A",
'current_gfx_voltage': "N/A",
'current_soc_voltage': "N/A",
'current_mem_voltage': "N/A",
'power_limit': "N/A",
'power_management': "N/A"}
@@ -868,35 +868,21 @@ class AMDSMICommands():
try:
power_measure = amdsmi_interface.amdsmi_get_power_info(args.gpu)
power_dict['average_socket_power'] = power_measure['average_socket_power']
power_dict['gfx_voltage'] = power_measure['gfx_voltage']
power_dict['soc_voltage'] = power_measure['soc_voltage']
power_dict['mem_voltage'] = power_measure['mem_voltage']
power_dict['power_limit'] = power_measure['power_limit']
for key, value in power_measure.items():
if value == 0xFFFFFFFF:
power_dict[key] = "N/A"
else:
power_dict[key] = f"{value}"
if self.logger.is_human_readable_format():
power_dict['average_socket_power'] = f"{power_measure['average_socket_power']} W"
power_dict['gfx_voltage'] = f"{power_measure['gfx_voltage']} mV"
power_dict['soc_voltage'] = f"{power_measure['soc_voltage']} mV"
power_dict['mem_voltage'] = f"{power_measure['mem_voltage']} mV"
power_dict['current_power'] = f"{power_measure['average_socket_power']} W"
power_dict['current_gfx_voltage'] = f"{power_measure['gfx_voltage']} mV"
power_dict['current_soc_voltage'] = f"{power_measure['soc_voltage']} mV"
power_dict['current_mem_voltage'] = f"{power_measure['mem_voltage']} mV"
power_dict['power_limit'] = f"{power_measure['power_limit']} W"
except amdsmi_exception.AmdSmiLibraryException as e:
logging.debug("Failed to get power info for gpu %s | %s", args.gpu, e.get_error_info())
if self.logger.is_gpuvsmi_compatibility():
power_dict['current_power'] = power_dict.pop('average_socket_power')
power_dict['current_voltage'] = power_dict.pop('gfx_voltage')
power_dict['current_soc_voltage'] = power_dict.pop('soc_voltage')
power_dict['current_mem_voltage'] = power_dict.pop('mem_voltage')
try:
power_dict['current_fan_rpm'] = amdsmi_interface.amdsmi_get_gpu_fan_rpms(args.gpu, 0)
if self.logger.is_human_readable_format():
power_dict['current_fan_rpm'] = f"{power_dict['current_fan_rpm']} RPM"
except amdsmi_exception.AmdSmiLibraryException as e:
power_dict['current_fan_rpm'] = "N/A"
logging.debug("Failed to get fan rpm for gpu %s | %s", args.gpu, e.get_error_info())
values_dict['power'] = power_dict
if args.clock:
try:
+1 -1
Просмотреть файл
@@ -946,7 +946,7 @@ def amdsmi_get_gpu_driver_info(
def amdsmi_get_power_info(
processor_handle: amdsmi_wrapper.amdsmi_processor_handle,
) -> Dict[str, Any]:
) -> Dict[str, ctypes.c_uint32]:
if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle):
raise AmdSmiParameterException(
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
+19 -20
Просмотреть файл
@@ -1668,37 +1668,36 @@ amdsmi_get_power_info(amdsmi_processor_handle processor_handle, amdsmi_power_inf
if (info == nullptr) {
return AMDSMI_STATUS_INVAL;
}
amdsmi_gpu_metrics_t metrics = {};
amd::smi::AMDSmiGPUDevice* gpu_device = nullptr;
amdsmi_status_t r = get_gpu_device_from_handle(processor_handle, &gpu_device);
if (r != AMDSMI_STATUS_SUCCESS)
return r;
amdsmi_status_t status;
status = amdsmi_get_gpu_metrics_info(processor_handle, &metrics);
if (status != AMDSMI_STATUS_SUCCESS) {
amd::smi::AMDSmiGPUDevice* gpu_device = nullptr;
status = get_gpu_device_from_handle(processor_handle, &gpu_device);
if (status != AMDSMI_STATUS_SUCCESS)
return status;
info->average_socket_power = 0xFFFFFFFF;
info->gfx_voltage = 0xFFFFFFFF;
info->soc_voltage = 0xFFFFFFFF; // Not implmented yet
info->mem_voltage = 0xFFFFFFFF; // Not implmented yet
info->power_limit = 0xFFFFFFFF;
amdsmi_gpu_metrics_t metrics = {};
status = amdsmi_get_gpu_metrics_info(processor_handle, &metrics);
if (status == AMDSMI_STATUS_SUCCESS) {
info->average_socket_power = metrics.average_socket_power;
}
int64_t voltage_read = 0;
status = amdsmi_get_gpu_volt_metric(processor_handle, AMDSMI_VOLT_TYPE_VDDGFX, AMDSMI_VOLT_CURRENT, &voltage_read);
if (status != AMDSMI_STATUS_SUCCESS) {
return status;
status = amdsmi_get_gpu_volt_metric(processor_handle, AMDSMI_VOLT_TYPE_VDDGFX, AMDSMI_VOLT_CURRENT, &voltage_read);
if (status == AMDSMI_STATUS_SUCCESS) {
info->gfx_voltage = voltage_read;
}
int power_limit = 0;
status = smi_amdgpu_get_power_cap(gpu_device, &power_limit);
if (status != AMDSMI_STATUS_SUCCESS) {
return status;
if (status == AMDSMI_STATUS_SUCCESS) {
info->power_limit = power_limit;
}
info->power_limit = power_limit;
info->gfx_voltage = voltage_read;
info->average_socket_power = metrics.average_socket_power;
return status;
}