Merge amd-dev into amd-master 20231116

Signed-off-by: guanyu12 <guanyu12@amd.com>
Change-Id: I49c2a01f07b8b0415204083566b72a5afcd10c18
Этот коммит содержится в:
guanyu12
2023-11-16 10:15:22 +08:00
родитель 74e91fdac8 baa2c94a86
Коммит 95cd949854
13 изменённых файлов: 397 добавлений и 61 удалений
+5 -1
Просмотреть файл
@@ -293,6 +293,10 @@ class AMDSMICommands():
if args.vbios:
try:
vbios_info = amdsmi_interface.amdsmi_get_gpu_vbios_info(args.gpu)
for key, value in vbios_info.items():
if isinstance(value, str):
if value.strip() == '':
vbios_info[key] = "N/A"
static_dict['vbios'] = vbios_info
except amdsmi_exception.AmdSmiLibraryException as e:
static_dict['vbios'] = "N/A"
@@ -625,7 +629,7 @@ class AMDSMICommands():
for fw_index, fw_entry in enumerate(fw_info['fw_list']):
# Change fw_name to fw_id
fw_entry['fw_id'] = fw_entry.pop('fw_name').name.strip('FW_ID_')
fw_entry['fw_id'] = fw_entry.pop('fw_name').name.replace("FW_ID_", "")
fw_entry['fw_version'] = fw_entry.pop('fw_version') # popping to ensure order
# Add custom human readable formatting
+1 -1
Просмотреть файл
@@ -1,3 +1,3 @@
# ESMI Library README
For more information, see the [ESMI Library README](https://raw.githubusercontent.com/am/esmi_ib_library/master/docs/README.md)
For more information, see the [ESMI Library README](https://raw.githubusercontent.com/amd/esmi_ib_library/master/docs/README.md)
+4 -4
Просмотреть файл
@@ -191,8 +191,8 @@ void getFWNameFromId(int id, char *name)
case FW_ID_TA_RAS:
strcpy(name, "ID_TA_RAS");
break;
case FW_ID_XGMI:
strcpy(name, "ID_XGMI");
case FW_ID_TA_XGMI:
strcpy(name, "ID_TA_XGMI");
break;
case FW_ID_RLC_SRLG:
strcpy(name, "ID_RLC_SRLG");
@@ -200,8 +200,8 @@ void getFWNameFromId(int id, char *name)
case FW_ID_RLC_SRLS:
strcpy(name, "ID_RLC_SRLS");
break;
case FW_ID_SMC:
strcpy(name, "ID_SMC");
case FW_ID_PM:
strcpy(name, "ID_PM");
break;
case FW_ID_DMCU:
strcpy(name, "ID_DMCU");
+2 -2
Просмотреть файл
@@ -186,8 +186,8 @@ int main() {
printf("\tSMU: %ld\n",
fw_information.fw_info_list[amdsmi_fw_block_t::FW_ID_SMU]
.fw_version);
printf("\tSMC: %ld\n",
fw_information.fw_info_list[amdsmi_fw_block_t::FW_ID_SMC]
printf("\tPM: %ld\n",
fw_information.fw_info_list[amdsmi_fw_block_t::FW_ID_PM]
.fw_version);
printf("\tVCN: %ld\n",
fw_information.fw_info_list[amdsmi_fw_block_t::FW_ID_VCN]
+2 -2
Просмотреть файл
@@ -357,10 +357,10 @@ typedef enum {
FW_ID_RLC_SAVE_RESTORE_LIST,
FW_ID_ASD,
FW_ID_TA_RAS,
FW_ID_XGMI,
FW_ID_TA_XGMI,
FW_ID_RLC_SRLG,
FW_ID_RLC_SRLS,
FW_ID_SMC,
FW_ID_PM,
FW_ID_DMCU,
FW_ID__MAX
} amdsmi_fw_block_t;
+5 -5
Просмотреть файл
@@ -87,15 +87,15 @@ class AMDSmiSystem {
amdsmi_status_t cpu_index_to_handle(uint32_t cpu_index,
amdsmi_cpusocket_handle* cpusock_handle);
amdsmi_status_t get_cpu_sockets(uint32_t socks);
amdsmi_status_t get_cpu_sockets(uint32_t *socks);
amdsmi_status_t get_cpu_cores(uint32_t cpus);
amdsmi_status_t get_cpu_cores(uint32_t *cpus);
amdsmi_status_t get_threads_per_core(uint32_t threads);
amdsmi_status_t get_threads_per_core(uint32_t *threads);
amdsmi_status_t get_cpu_family(uint32_t family);
amdsmi_status_t get_cpu_family(uint32_t *family);
amdsmi_status_t get_cpu_model(uint32_t model);
amdsmi_status_t get_cpu_model(uint32_t *model);
#endif
private:
AMDSmiSystem() : init_flag_(AMDSMI_INIT_AMD_GPUS) {}
+130
Просмотреть файл
@@ -4069,3 +4069,133 @@ try:
except AmdSmiException as e:
print(e)
```
### amdsmi_get_cpu_socket_temperature
Description: Get the socket temperature.
Output: amdsmi temperature value
Exceptions that can be thrown by `amdsmi_get_cpu_socket_temperature` function:
* `AmdSmiLibraryException`
Example:
```python
try:
socket_handles = amdsmi_get_cpusocket_handles()
if len(socket_handles) == 0:
print("No CPU sockets on machine")
else:
for socket in socket_handles:
ptmon = amdsmi_get_cpu_socket_temperature(socket)
print(ptmon)
except AmdSmiException as e:
print(e)
```
### amdsmi_get_cpu_dimm_temp_range_and_refresh_rate
Description: Get DIMM temperature range and refresh rate.
Output: amdsmi dimm metric data
Exceptions that can be thrown by `amdsmi_get_cpu_dimm_temp_range_and_refresh_rate` function:
* `AmdSmiLibraryException`
Example:
```python
try:
socket_handles = amdsmi_get_cpusocket_handles()
if len(socket_handles) == 0:
print("No CPU sockets on machine")
else:
for socket in socket_handles:
dimm = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(socket)
print(dimm['range'])
print(dimm['ref_rate'])
except AmdSmiException as e:
print(e)
```
### amdsmi_get_cpu_dimm_power_consumption
Description: amdsmi_get_cpu_dimm_power_consumption.
Output: amdsmi dimm power consumption value
Exceptions that can be thrown by `amdsmi_get_cpu_dimm_power_consumption` function:
* `AmdSmiLibraryException`
Example:
```python
try:
socket_handles = amdsmi_get_cpusocket_handles()
if len(socket_handles) == 0:
print("No CPU sockets on machine")
else:
for socket in socket_handles:
dimm = amdsmi_get_cpu_dimm_power_consumption(socket)
print(dimm['power'])
print(dimm['update_rate'])
print(dimm['dimm_addr'])
except AmdSmiException as e:
print(e)
```
### amdsmi_get_cpu_dimm_thermal_sensor
Description: Get DIMM thermal sensor value.
Output: amdsmi dimm temperature data
Exceptions that can be thrown by `amdsmi_get_cpu_dimm_thermal_sensor` function:
* `AmdSmiLibraryException`
Example:
```python
try:
socket_handles = amdsmi_get_cpusocket_handles()
if len(socket_handles) == 0:
print("No CPU sockets on machine")
else:
for socket in socket_handles:
dimm = amdsmi_get_cpu_dimm_thermal_sensor(socket)
print(dimm['sensor'])
print(dimm['update_rate'])
print(dimm['dimm_addr'])
print(dimm['temp'])
except AmdSmiException as e:
print(e)
```
### amdsmi_set_cpu_xgmi_width
Description: Set xgmi width.
Input: amdsmi xgmi width
Exceptions that can be thrown by `amdsmi_set_cpu_xgmi_width` function:
* `AmdSmiLibraryException`
Example:
```python
try:
socket_handles = amdsmi_get_cpusocket_handles()
if len(socket_handles) == 0:
print("No CPU sockets on machine")
else:
for socket in socket_handles:
xgmi_width = amdsmi_set_cpu_xgmi_width(socket, 0, 100)
except AmdSmiException as e:
print(e)
```
+15
Просмотреть файл
@@ -45,6 +45,21 @@ try:
from .amdsmi_interface import amdsmi_get_cpu_socket_freq_range
from .amdsmi_interface import amdsmi_get_cpu_core_current_freq_limit
from .amdsmi_interface import amdsmi_get_cpu_socket_power
from .amdsmi_interface import amdsmi_get_cpu_socket_power_cap
from .amdsmi_interface import amdsmi_get_cpu_socket_power_cap_max
from .amdsmi_interface import amdsmi_get_cpu_pwr_svi_telemetry_all_rails
from .amdsmi_interface import amdsmi_set_cpu_socket_power_cap
from .amdsmi_interface import amdsmi_set_cpu_pwr_efficiency_mode
from .amdsmi_interface import amdsmi_get_cpu_core_boostlimit
from .amdsmi_interface import amdsmi_get_cpu_socket_c0_residency
from .amdsmi_interface import amdsmi_set_cpu_core_boostlimit
from .amdsmi_interface import amdsmi_set_cpu_socket_boostlimit
from .amdsmi_interface import amdsmi_get_cpu_ddr_bw
from .amdsmi_interface import amdsmi_get_cpu_socket_temperature
from .amdsmi_interface import amdsmi_get_cpu_dimm_temp_range_and_refresh_rate
from .amdsmi_interface import amdsmi_get_cpu_dimm_power_consumption
from .amdsmi_interface import amdsmi_get_cpu_dimm_thermal_sensor
from .amdsmi_interface import amdsmi_set_cpu_xgmi_width
except AttributeError:
pass
+117 -5
Просмотреть файл
@@ -130,10 +130,10 @@ class AmdSmiFwBlock(IntEnum):
FW_ID_RLC_SAVE_RESTORE_LIST = amdsmi_wrapper.FW_ID_RLC_SAVE_RESTORE_LIST
FW_ID_ASD = amdsmi_wrapper.FW_ID_ASD
FW_ID_TA_RAS = amdsmi_wrapper.FW_ID_TA_RAS
FW_ID_XGMI = amdsmi_wrapper.FW_ID_XGMI
FW_ID_TA_XGMI = amdsmi_wrapper.FW_ID_TA_XGMI
FW_ID_RLC_SRLG = amdsmi_wrapper.FW_ID_RLC_SRLG
FW_ID_RLC_SRLS = amdsmi_wrapper.FW_ID_RLC_SRLS
FW_ID_SMC = amdsmi_wrapper.FW_ID_SMC
FW_ID_PM = amdsmi_wrapper.FW_ID_PM
FW_ID_DMCU = amdsmi_wrapper.FW_ID_DMCU
@@ -1063,6 +1063,111 @@ def amdsmi_get_cpu_ddr_bw(socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle)
"ddr_bw_utilized_pct": ddr_bw.utilized_pct
}
def amdsmi_get_cpu_socket_temperature(
socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, sock_idx: int
) -> int:
if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle):
raise AmdSmiParameterException(
socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle
)
if not isinstance(sock_idx, int):
raise AmdSmiParameterException(sock_idx, int)
ptmon = ctypes.c_uint32()
_check_res(
amdsmi_wrapper.amdsmi_get_cpu_socket_temperature(
socket_handle, sock_idx, ctypes.byref(ptmon)
)
)
return ptmon.value
def amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(
socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle,
sock_idx: int, dimm_addr: int):
if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle):
raise AmdSmiParameterException(
socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle
)
if not isinstance(sock_idx, int):
raise AmdSmiParameterException(sock_idx, int)
if not isinstance(dimm_addr, int):
raise AmdSmiParameterException(dimm_addr, int)
dimm = amdsmi_wrapper.amdsmi_temp_range_refresh_rate_t()
_check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(socket_handle, dimm))
return {
"dimm_temperature_range": dimm.range,
"dimm_refresh_rate": dimm.ref_rate
}
def amdsmi_get_cpu_dimm_power_consumption(
socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle,
sock_idx: int, dimm_addr: int):
if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle):
raise AmdSmiParameterException(
socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle
)
if not isinstance(sock_idx, int):
raise AmdSmiParameterException(sock_idx, int)
if not isinstance(dimm_addr, int):
raise AmdSmiParameterException(dimm_addr, int)
dimm = amdsmi_wrapper.amdsmi_dimm_power_t()
_check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_power_consumption(socket_handle, dimm))
return {
"dimm_power_consumed": dimm.power,
"dimm_power_update_rate": dimm.update_rate,
"dimm_dimm_addr": dimm.dimm_addr
}
def amdsmi_get_cpu_dimm_thermal_sensor(
socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle,
sock_idx: int, dimm_addr: int):
if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle):
raise AmdSmiParameterException(
socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle
)
if not isinstance(sock_idx, int):
raise AmdSmiParameterException(sock_idx, int)
if not isinstance(dimm_addr, int):
raise AmdSmiParameterException(dimm_addr, int)
dimm_thermal = amdsmi_wrapper.amdsmi_dimm_thermal_t()
_check_res(amdsmi_wrapper.amdsmi_get_cpu_dimm_thermal_sensor(socket_handle, dimm_thermal))
return {
"dimm_thermal_sensor_value": dimm_thermal.sensor,
"dimm_thermal_update_rate": dimm_thermal.update_rate,
"dimm_thermal_dimm_addr": dimm_thermal.dimm_addr,
"dimm_thermal_temperature": dimm_thermal.temp
}
def amdsmi_set_cpu_xgmi_width(
socket_handle: amdsmi_wrapper.amdsmi_cpusocket_handle, min_width: int, max_width: int
):
if not isinstance(socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle):
raise AmdSmiParameterException(
socket_handle, amdsmi_wrapper.amdsmi_cpusocket_handle
)
if not isinstance(min_width, int):
raise AmdSmiParameterException(min_width, int)
if not isinstance(max_width, int):
raise AmdSmiParameterException(max_width, int)
min_width = ctypes.c_uint8(min_width)
max_width = ctypes.c_uint8(max_width)
_check_res(
amdsmi_wrapper.amdsmi_set_cpu_xgmi_width(
socket_handle, min_width, max_width)
)
def amdsmi_init(flag=AmdSmiInitFlags.INIT_AMD_GPUS):
if not isinstance(flag, AmdSmiInitFlags):
raise AmdSmiParameterException(flag, AmdSmiInitFlags)
@@ -1562,14 +1667,15 @@ def amdsmi_get_fw_info(
_check_res(amdsmi_wrapper.amdsmi_get_fw_info(
processor_handle, ctypes.byref(fw_info)))
hex_format_fw = [AmdSmiFwBlock.FW_ID_SMC,
AmdSmiFwBlock.FW_ID_PSP_SOSDRV,
hex_format_fw = [AmdSmiFwBlock.FW_ID_PSP_SOSDRV,
AmdSmiFwBlock.FW_ID_TA_RAS,
AmdSmiFwBlock.FW_ID_XGMI,
AmdSmiFwBlock.FW_ID_TA_XGMI,
AmdSmiFwBlock.FW_ID_UVD,
AmdSmiFwBlock.FW_ID_VCE,
AmdSmiFwBlock.FW_ID_VCN]
dec_format_fw = [AmdSmiFwBlock.FW_ID_PM]
firmwares = []
for i in range(0, fw_info.num_fw_info):
fw_name = AmdSmiFwBlock(fw_info.fw_info_list[i].fw_id)
@@ -1577,6 +1683,12 @@ def amdsmi_get_fw_info(
if fw_name in hex_format_fw:
fw_version_string = ".".join(re.findall('..?', hex(fw_version)[2:]))
elif fw_name in dec_format_fw:
# Convert every two hex digits to decimal and join them with a dot
dec_version_string = ''
for ver1,ver2 in zip(hex(fw_version)[2::2], hex(fw_version)[3::2]):
dec_version_string += str(int(f"0x{ver1}{ver2}", 0)) + "."
fw_version_string = dec_version_string.strip('.')
else:
fw_version_string = str(fw_version)
+7 -7
Просмотреть файл
@@ -496,10 +496,10 @@ amdsmi_fw_block_t__enumvalues = {
71: 'FW_ID_RLC_SAVE_RESTORE_LIST',
72: 'FW_ID_ASD',
73: 'FW_ID_TA_RAS',
74: 'FW_ID_XGMI',
74: 'FW_ID_TA_XGMI',
75: 'FW_ID_RLC_SRLG',
76: 'FW_ID_RLC_SRLS',
77: 'FW_ID_SMC',
77: 'FW_ID_PM',
78: 'FW_ID_DMCU',
79: 'FW_ID__MAX',
}
@@ -577,10 +577,10 @@ FW_ID_RLCV_LX7 = 70
FW_ID_RLC_SAVE_RESTORE_LIST = 71
FW_ID_ASD = 72
FW_ID_TA_RAS = 73
FW_ID_XGMI = 74
FW_ID_TA_XGMI = 74
FW_ID_RLC_SRLG = 75
FW_ID_RLC_SRLS = 76
FW_ID_SMC = 77
FW_ID_PM = 77
FW_ID_DMCU = 78
FW_ID__MAX = 79
amdsmi_fw_block_t = ctypes.c_uint32 # enum
@@ -2235,9 +2235,9 @@ __all__ = \
'FW_ID_RS64_PFP_P1_DATA', 'FW_ID_SDMA0', 'FW_ID_SDMA1',
'FW_ID_SDMA2', 'FW_ID_SDMA3', 'FW_ID_SDMA4', 'FW_ID_SDMA5',
'FW_ID_SDMA6', 'FW_ID_SDMA7', 'FW_ID_SDMA_TH0', 'FW_ID_SDMA_TH1',
'FW_ID_SEC_POLICY_STAGE2', 'FW_ID_SMC', 'FW_ID_SMU',
'FW_ID_TA_RAS', 'FW_ID_UVD', 'FW_ID_VCE', 'FW_ID_VCN',
'FW_ID_XGMI', 'FW_ID__MAX', 'MEMORY_PARTITION_NPS1',
'FW_ID_SEC_POLICY_STAGE2', 'FW_ID_PM', 'FW_ID_SMU',
'FW_ID_TA_RAS', 'FW_ID_TA_XGMI', 'FW_ID_UVD', 'FW_ID_VCE',
'FW_ID_VCN', 'FW_ID__MAX', 'MEMORY_PARTITION_NPS1',
'MEMORY_PARTITION_NPS2', 'MEMORY_PARTITION_NPS4',
'MEMORY_PARTITION_NPS8', 'MEMORY_PARTITION_UNKNOWN',
'NON_AMD_CPU', 'NON_AMD_GPU', 'RD_BW0', 'TEMPERATURE_TYPE_EDGE',
+87 -12
Просмотреть файл
@@ -662,10 +662,10 @@ amdsmi_status_t amdsmi_get_fw_info(amdsmi_processor_handle processor_handle,
{ FW_ID_RLC_RESTORE_LIST_SRM_MEM, RSMI_FW_BLOCK_RLC_SRLS},
{ FW_ID_SDMA0, RSMI_FW_BLOCK_SDMA},
{ FW_ID_SDMA1, RSMI_FW_BLOCK_SDMA2},
{ FW_ID_SMC, RSMI_FW_BLOCK_SMC},
{ FW_ID_PM, RSMI_FW_BLOCK_SMC},
{ FW_ID_PSP_SOSDRV, RSMI_FW_BLOCK_SOS},
{ FW_ID_TA_RAS, RSMI_FW_BLOCK_TA_RAS},
{ FW_ID_XGMI, RSMI_FW_BLOCK_TA_XGMI},
{ FW_ID_TA_XGMI, RSMI_FW_BLOCK_TA_XGMI},
{ FW_ID_UVD, RSMI_FW_BLOCK_UVD},
{ FW_ID_VCE, RSMI_FW_BLOCK_VCE},
{ FW_ID_VCN, RSMI_FW_BLOCK_VCN}
@@ -1499,20 +1499,19 @@ amdsmi_get_gpu_vbios_info(amdsmi_processor_handle processor_handle, amdsmi_vbios
amdsmi_status_t status;
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;
status = get_gpu_device_from_handle(processor_handle, &gpu_device);
if (status != AMDSMI_STATUS_SUCCESS)
return status;
if (gpu_device->check_if_drm_is_supported()) {
status = gpu_device->amdgpu_query_vbios(&vbios);
if (status != AMDSMI_STATUS_SUCCESS) {
return status;
if (status == AMDSMI_STATUS_SUCCESS) {
strncpy(info->name, (char *) vbios.name, AMDSMI_MAX_STRING_LENGTH);
strncpy(info->build_date, (char *) vbios.date, AMDSMI_MAX_DATE_LENGTH);
strncpy(info->part_number, (char *) vbios.vbios_pn, AMDSMI_MAX_STRING_LENGTH);
strncpy(info->version, (char *) vbios.vbios_ver_str, AMDSMI_NORMAL_STRING_LENGTH);
}
strncpy(info->name, (char *) vbios.name, AMDSMI_MAX_STRING_LENGTH);
strncpy(info->build_date, (char *) vbios.date, AMDSMI_MAX_DATE_LENGTH);
strncpy(info->part_number, (char *) vbios.vbios_pn, AMDSMI_MAX_STRING_LENGTH);
strncpy(info->version, (char *) vbios.vbios_ver_str, AMDSMI_NORMAL_STRING_LENGTH);
}
else {
// get vbios version string from rocm_smi
@@ -1528,7 +1527,7 @@ amdsmi_get_gpu_vbios_info(amdsmi_processor_handle processor_handle, amdsmi_vbios
}
}
return AMDSMI_STATUS_SUCCESS;
return status;
}
amdsmi_status_t
@@ -2138,6 +2137,8 @@ amdsmi_status_t amdsmi_get_cpu_hsmp_proto_ver(amdsmi_cpusocket_handle socket_han
amdsmi_status_t status;
uint32_t hsmp_proto_ver;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2161,6 +2162,8 @@ amdsmi_status_t amdsmi_get_cpu_smu_fw_version(amdsmi_cpusocket_handle socket_han
amdsmi_status_t status;
struct smu_fw_version smu_fw;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2187,6 +2190,8 @@ amdsmi_status_t amdsmi_get_cpu_core_energy(amdsmi_processor_handle processor_han
amdsmi_status_t status;
uint64_t core_input;
AMDSMI_CHECK_INIT();
if (processor_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2211,6 +2216,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_energy(amdsmi_cpusocket_handle socket_hand
amdsmi_status_t status;
uint64_t pkg_input;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2234,6 +2241,8 @@ amdsmi_status_t amdsmi_get_cpu_prochot_status(amdsmi_cpusocket_handle socket_han
amdsmi_status_t status;
uint32_t phot;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2257,6 +2266,8 @@ amdsmi_status_t amdsmi_get_cpu_fclk_mclk(amdsmi_cpusocket_handle socket_handle,
amdsmi_status_t status;
uint32_t f_clk, m_clk;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2281,6 +2292,8 @@ amdsmi_status_t amdsmi_get_cpu_cclk_limit(amdsmi_cpusocket_handle socket_handle,
amdsmi_status_t status;
uint32_t c_clk;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2304,6 +2317,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_current_active_freq_limit(amdsmi_cpusocket
amdsmi_status_t status;
uint16_t limit;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2328,6 +2343,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_freq_range(amdsmi_cpusocket_handle socket_
uint16_t f_max;
uint16_t f_min;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2352,6 +2369,8 @@ amdsmi_status_t amdsmi_get_cpu_core_current_freq_limit(amdsmi_processor_handle p
amdsmi_status_t status;
uint32_t c_clk;
AMDSMI_CHECK_INIT();
if (processor_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2376,6 +2395,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_power(amdsmi_cpusocket_handle socket_handl
amdsmi_status_t status;
uint32_t avg_power;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2399,6 +2420,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_power_cap(amdsmi_cpusocket_handle socket_h
amdsmi_status_t status;
uint32_t p_cap;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2422,6 +2445,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_power_cap_max(amdsmi_cpusocket_handle sock
amdsmi_status_t status;
uint32_t p_max;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2445,6 +2470,8 @@ amdsmi_status_t amdsmi_get_cpu_pwr_svi_telemetry_all_rails(amdsmi_cpusocket_hand
amdsmi_status_t status;
uint32_t pow;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2467,6 +2494,8 @@ amdsmi_status_t amdsmi_set_cpu_socket_power_cap(amdsmi_cpusocket_handle socket_h
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2488,6 +2517,8 @@ amdsmi_status_t amdsmi_set_cpu_pwr_efficiency_mode(amdsmi_cpusocket_handle socke
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2510,6 +2541,8 @@ amdsmi_status_t amdsmi_get_cpu_core_boostlimit(amdsmi_processor_handle processor
amdsmi_status_t status;
uint32_t boostlimit;
AMDSMI_CHECK_INIT();
if (processor_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2533,6 +2566,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_c0_residency(amdsmi_cpusocket_handle socke
amdsmi_status_t status;
uint32_t res;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2555,6 +2590,8 @@ amdsmi_status_t amdsmi_set_cpu_core_boostlimit(amdsmi_processor_handle processor
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (processor_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2576,6 +2613,8 @@ amdsmi_status_t amdsmi_set_cpu_socket_boostlimit(amdsmi_cpusocket_handle socket_
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2598,6 +2637,8 @@ amdsmi_status_t amdsmi_get_cpu_ddr_bw(amdsmi_cpusocket_handle socket_handle,
amdsmi_status_t status;
struct ddr_bw_metrics ddr;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2623,6 +2664,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_temperature(amdsmi_cpusocket_handle socket
amdsmi_status_t status;
uint32_t tmon;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2647,6 +2690,8 @@ amdsmi_status_t amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(
amdsmi_status_t status;
struct temp_range_refresh_rate dimm_rate;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2672,6 +2717,8 @@ amdsmi_status_t amdsmi_get_cpu_dimm_power_consumption(amdsmi_cpusocket_handle so
amdsmi_status_t status;
struct dimm_power d_power;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2698,6 +2745,8 @@ amdsmi_status_t amdsmi_get_cpu_dimm_thermal_sensor(amdsmi_cpusocket_handle socke
amdsmi_status_t status;
struct dimm_thermal d_sensor;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2723,6 +2772,8 @@ amdsmi_status_t amdsmi_set_cpu_xgmi_width(amdsmi_cpusocket_handle socket_handle,
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2743,6 +2794,8 @@ amdsmi_status_t amdsmi_set_cpu_gmi3_link_width_range(amdsmi_cpusocket_handle soc
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2763,6 +2816,8 @@ amdsmi_status_t amdsmi_cpu_apb_enable(amdsmi_cpusocket_handle socket_handle, uin
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2783,6 +2838,8 @@ amdsmi_status_t amdsmi_cpu_apb_disable(amdsmi_cpusocket_handle socket_handle,
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2803,6 +2860,8 @@ amdsmi_status_t amdsmi_set_cpu_socket_lclk_dpm_level(amdsmi_cpusocket_handle soc
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2824,6 +2883,8 @@ amdsmi_status_t amdsmi_get_cpu_socket_lclk_dpm_level(amdsmi_cpusocket_handle soc
amdsmi_status_t status;
struct dpm_level nb;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2848,6 +2909,8 @@ amdsmi_status_t amdsmi_set_cpu_pcie_link_rate(amdsmi_cpusocket_handle socket_han
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2869,6 +2932,8 @@ amdsmi_status_t amdsmi_set_cpu_df_pstate_range(amdsmi_cpusocket_handle socket_ha
{
amdsmi_status_t status;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2892,6 +2957,8 @@ amdsmi_status_t amdsmi_get_cpu_current_io_bandwidth(amdsmi_cpusocket_handle sock
uint32_t bw;
struct link_id_bw_type io_link;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2919,6 +2986,8 @@ amdsmi_status_t amdsmi_get_cpu_current_xgmi_bw(amdsmi_cpusocket_handle socket_ha
uint32_t bw;
struct link_id_bw_type io_link;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2944,6 +3013,8 @@ amdsmi_status_t amdsmi_get_metrics_table_version(amdsmi_cpusocket_handle socket_
amdsmi_status_t status;
uint32_t metrics_tbl_ver;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2967,6 +3038,8 @@ amdsmi_status_t amdsmi_get_metrics_table(amdsmi_cpusocket_handle socket_handle,
amdsmi_status_t status;
struct hsmp_metric_table metrics_tbl;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
@@ -2990,6 +3063,8 @@ amdsmi_status_t amdsmi_first_online_core_on_cpu_socket(amdsmi_cpusocket_handle s
amdsmi_status_t status;
uint32_t online_core;
AMDSMI_CHECK_INIT();
if (socket_handle == nullptr)
return AMDSMI_STATUS_INVAL;
+20 -20
Просмотреть файл
@@ -100,11 +100,11 @@ amdsmi_status_t AMDSmiSystem::populate_amd_cpus() {
}
}
amd_smi_status = get_cpu_sockets(sockets);
amd_smi_status = get_cpu_cores(cpus);
amd_smi_status = get_threads_per_core(threads);
amd_smi_status = get_cpu_family(family);
amd_smi_status = get_cpu_model(model);
amd_smi_status = get_cpu_sockets(&sockets);
amd_smi_status = get_cpu_cores(&cpus);
amd_smi_status = get_threads_per_core(&threads);
amd_smi_status = get_cpu_family(&family);
amd_smi_status = get_cpu_model(&model);
std::cout << "\n***********************EPYC METRICS***********************" << std::endl;
std::cout <<"| NR_SOCKETS | "<<sockets<<"\t\t|" << std::endl;
std::cout <<"| NR_CPUS | "<<cpus<<"\t\t|" << std::endl;
@@ -145,10 +145,10 @@ amdsmi_status_t AMDSmiSystem::populate_amd_cpus() {
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t AMDSmiSystem::get_cpu_sockets(uint32_t num_socks) {
amdsmi_status_t AMDSmiSystem::get_cpu_sockets(uint32_t *num_socks) {
amdsmi_status_t ret;
ret = static_cast<amdsmi_status_t>(esmi_number_of_sockets_get(&num_socks));
sockets = num_socks;
ret = static_cast<amdsmi_status_t>(esmi_number_of_sockets_get(num_socks));
sockets = *num_socks;
if (ret != AMDSMI_STATUS_SUCCESS) {
std::cout << "Failed to get number of sockets, Err["<<ret<<"]" << std::endl;
@@ -157,10 +157,10 @@ amdsmi_status_t AMDSmiSystem::get_cpu_sockets(uint32_t num_socks) {
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t AMDSmiSystem::get_cpu_cores(uint32_t num_cpus) {
amdsmi_status_t AMDSmiSystem::get_cpu_cores(uint32_t *num_cpus) {
amdsmi_status_t ret;
ret = static_cast<amdsmi_status_t>(esmi_number_of_cpus_get(&num_cpus));
cpus = num_cpus;
ret = static_cast<amdsmi_status_t>(esmi_number_of_cpus_get(num_cpus));
cpus = *num_cpus;
if (ret != AMDSMI_STATUS_SUCCESS) {
std::cout << "Failed to get number of cpus, Err["<<ret<<"]" << std::endl;
@@ -169,10 +169,10 @@ amdsmi_status_t AMDSmiSystem::get_cpu_cores(uint32_t num_cpus) {
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t AMDSmiSystem::get_threads_per_core(uint32_t threads_per_core) {
amdsmi_status_t AMDSmiSystem::get_threads_per_core(uint32_t *threads_per_core) {
amdsmi_status_t ret;
ret = static_cast<amdsmi_status_t>(esmi_threads_per_core_get(&threads_per_core));
threads = threads_per_core;
ret = static_cast<amdsmi_status_t>(esmi_threads_per_core_get(threads_per_core));
threads = *threads_per_core;
if (ret != AMDSMI_STATUS_SUCCESS) {
std::cout << "Failed to get threads per core, Err["<<ret<<"]" << std::endl;
@@ -181,10 +181,10 @@ amdsmi_status_t AMDSmiSystem::get_threads_per_core(uint32_t threads_per_core) {
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t AMDSmiSystem::get_cpu_family(uint32_t cpu_family) {
amdsmi_status_t AMDSmiSystem::get_cpu_family(uint32_t *cpu_family) {
amdsmi_status_t ret;
ret = static_cast<amdsmi_status_t>(esmi_cpu_family_get(&cpu_family));
family = cpu_family;
ret = static_cast<amdsmi_status_t>(esmi_cpu_family_get(cpu_family));
family = *cpu_family;
if (ret != AMDSMI_STATUS_SUCCESS) {
std::cout << "Failed to get cpu family, Err["<<ret<<"]" << std::endl;
@@ -193,10 +193,10 @@ amdsmi_status_t AMDSmiSystem::get_cpu_family(uint32_t cpu_family) {
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t AMDSmiSystem::get_cpu_model(uint32_t cpu_model) {
amdsmi_status_t AMDSmiSystem::get_cpu_model(uint32_t *cpu_model) {
amdsmi_status_t ret;
ret = static_cast<amdsmi_status_t>(esmi_cpu_model_get(&cpu_model));
model = cpu_model;
ret = static_cast<amdsmi_status_t>(esmi_cpu_model_get(cpu_model));
model = *cpu_model;
if (ret != AMDSMI_STATUS_SUCCESS) {
std::cout << "Failed to get cpu model, Err["<<ret<<"]" << std::endl;
+2 -2
Просмотреть файл
@@ -64,10 +64,10 @@ static const std::map<amdsmi_fw_block_t, const char *> kDevFWNameMap = {
{FW_ID_RLC_SRLS, "rlc_srls"},
{FW_ID_SDMA1, "sdma1"},
{FW_ID_SDMA2, "sdma2"},
{FW_ID_SMC, "smc"},
{FW_ID_PM, "pm"},
{FW_ID_PSP_SOSDRV, "sos"},
{FW_ID_TA_RAS, "ta_ras"},
{FW_ID_XGMI, "ta_xgmi"},
{FW_ID_TA_XGMI, "ta_xgmi"},
{FW_ID_UVD, "uvd"},
{FW_ID_VCE, "vce"},
{FW_ID_VCN, "vcn"},