Fix for multiple hsmp freq sources not reported on some setups
Change-Id: I8afe7076bd7790cf408ef104c50ac8d258b7d3fc Signed-off-by: Maisam Arif <maisarif@amd.com>
This commit is contained in:
committad av
Maisam Arif
förälder
703fdb0ed2
incheckning
84608807da
@@ -1608,6 +1608,19 @@ typedef struct __attribute__((__packed__)){
|
||||
uint32_t gfxclk_frequency[8];
|
||||
} amdsmi_hsmp_metrics_table_t;
|
||||
|
||||
/**
|
||||
* @brief hsmp frequency limit source names
|
||||
*/
|
||||
static char* const amdsmi_hsmp_freqlimit_src_names[] = {
|
||||
"cHTC-Active",
|
||||
"PROCHOT",
|
||||
"TDC limit",
|
||||
"PPT Limit",
|
||||
"OPN Max",
|
||||
"Reliability Limit",
|
||||
"APML Agent",
|
||||
"HSMP Agent"
|
||||
};
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -828,8 +828,9 @@ def amdsmi_get_cpu_socket_current_active_freq_limit(
|
||||
processor_handle, amdsmi_wrapper.amdsmi_processor_handle
|
||||
)
|
||||
|
||||
amdsmi_wrapper.amdsmi_get_cpu_socket_current_active_freq_limit.argtypes = [amdsmi_wrapper.amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint16), ctypes.POINTER(ctypes.c_char_p * len(amdsmi_wrapper.amdsmi_hsmp_freqlimit_src_names))]
|
||||
freq = ctypes.c_uint16()
|
||||
src_type = ctypes.pointer(ctypes.pointer(ctypes.c_char()))
|
||||
src_type = (ctypes.c_char_p * len(amdsmi_wrapper.amdsmi_hsmp_freqlimit_src_names))()
|
||||
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_cpu_socket_current_active_freq_limit(
|
||||
@@ -837,9 +838,14 @@ def amdsmi_get_cpu_socket_current_active_freq_limit(
|
||||
)
|
||||
)
|
||||
|
||||
freq_src = []
|
||||
for names in src_type:
|
||||
if names is not None:
|
||||
freq_src.append(names.decode('utf-8'))
|
||||
|
||||
return {
|
||||
"freq": f"{freq.value} MHz",
|
||||
"freq_src": f"{amdsmi_wrapper.string_cast(src_type.contents)}"
|
||||
"freq_src": f"{freq_src}"
|
||||
}
|
||||
|
||||
def amdsmi_get_cpu_socket_freq_range(
|
||||
|
||||
@@ -1846,6 +1846,7 @@ struct_amdsmi_hsmp_metrics_table_t._fields_ = [
|
||||
]
|
||||
|
||||
amdsmi_hsmp_metrics_table_t = struct_amdsmi_hsmp_metrics_table_t
|
||||
amdsmi_hsmp_freqlimit_src_names = ['cHTC-Active', 'PROCHOT', 'TDC limit', 'PPT Limit', 'OPN Max', 'Reliability Limit', 'APML Agent', 'HSMP Agent'] # Variable ctypes.POINTER(ctypes.c_char) * 8
|
||||
uint64_t = ctypes.c_uint64
|
||||
amdsmi_init = _libraries['libamd_smi.so'].amdsmi_init
|
||||
amdsmi_init.restype = amdsmi_status_t
|
||||
@@ -2618,14 +2619,14 @@ __all__ = \
|
||||
'amdsmi_voltage_type_t', 'amdsmi_vram_info_t',
|
||||
'amdsmi_vram_type_t', 'amdsmi_vram_usage_t',
|
||||
'amdsmi_vram_vendor_type_t', 'amdsmi_xgmi_info_t',
|
||||
'amdsmi_xgmi_status_t', 'processor_type_t', 'size_t',
|
||||
'struct__links', 'struct_amd_metrics_table_header_t',
|
||||
'struct_amdsmi_asic_info_t', 'struct_amdsmi_board_info_t',
|
||||
'struct_amdsmi_clk_info_t', 'struct_amdsmi_counter_value_t',
|
||||
'struct_amdsmi_ddr_bw_metrics_t', 'struct_amdsmi_dimm_power_t',
|
||||
'struct_amdsmi_dimm_thermal_t', 'struct_amdsmi_dpm_level_t',
|
||||
'struct_amdsmi_driver_info_t', 'struct_amdsmi_engine_usage_t',
|
||||
'struct_amdsmi_error_count_t',
|
||||
'amdsmi_xgmi_status_t', 'amdsmi_hsmp_freqlimit_src_names',
|
||||
'processor_type_t', 'size_t', 'struct__links',
|
||||
'struct_amd_metrics_table_header_t', 'struct_amdsmi_asic_info_t',
|
||||
'struct_amdsmi_board_info_t', 'struct_amdsmi_clk_info_t',
|
||||
'struct_amdsmi_counter_value_t', 'struct_amdsmi_ddr_bw_metrics_t',
|
||||
'struct_amdsmi_dimm_power_t', 'struct_amdsmi_dimm_thermal_t',
|
||||
'struct_amdsmi_dpm_level_t', 'struct_amdsmi_driver_info_t',
|
||||
'struct_amdsmi_engine_usage_t', 'struct_amdsmi_error_count_t',
|
||||
'struct_amdsmi_evt_notification_data_t',
|
||||
'struct_amdsmi_freq_volt_region_t', 'struct_amdsmi_frequencies_t',
|
||||
'struct_amdsmi_frequency_range_t', 'struct_amdsmi_fw_info_t',
|
||||
|
||||
Referens i nytt ärende
Block a user