SWDEV-375181 - Fixed amdsmi_get_fw_info python output

Change-Id: I4bf4bf49cd921d52849e1bb140e464e2756b07c5
Signed-off-by: Dalibor Stanisavljevic <Dalibor.Stanisavljevic@amd.com>
Αυτή η υποβολή περιλαμβάνεται σε:
Dalibor Stanisavljevic
2022-12-28 16:11:10 +01:00
γονέας 79bd9c1d5f
υποβολή e217fff82c
3 αρχεία άλλαξαν με 45 προσθήκες και 115 διαγραφές
+5 -49
Προβολή Αρχείου
@@ -448,51 +448,7 @@ Output: Dictionary with fields
Field | Description Field | Description
---|--- ---|---
`FW_ID_SMU` | SMU info `fw_list`| List of dictionaries that contain information about a certain firmware block
`FW_ID_CP_CE` | CP_CE info
`FW_ID_CP_PFP` | CP_PFP info
`FW_ID_CP_ME` | CP_ME info
`FW_ID_CP_MEC_JT1` | CP_MEC_JT1 info
`FW_ID_CP_MEC_JT2` | CP_MEC_JT2 info
`FW_ID_CP_MEC1` | CP_MEC1 info
`FW_ID_CP_MEC2` | CP_MEC2 info
`FW_ID_RLC` | RLC info
`FW_ID_SDMA0` | SDMA0 info
`FW_ID_SDMA1` | SDMA1 info
`FW_ID_SDMA2` | SDMA2 info
`FW_ID_SDMA3` | SDMA3 info
`FW_ID_SDMA4` | SDMA4 info
`FW_ID_SDMA5` | SDMA5 info
`FW_ID_SDMA6` | SDMA6 info
`FW_ID_SDMA7` | SDMA7 info
`FW_ID_VCN` | VCN info
`FW_ID_UVD` | UVD info
`FW_ID_VCE` | VCE info
`FW_ID_ISP` | ISP info
`FW_ID_DMCU_ERAM` | DMCU_ERAM info
`FW_ID_DMCU_ISR` | DMCU_ISR info
`FW_ID_RLC_RESTORE_LIST_GPM_MEM` | RLC_RESTORE_LIST_GPM_MEM info
`FW_ID_RLC_RESTORE_LIST_SRM_MEM` | RLC_RESTORE_LIST_SRM_MEM info
`FW_ID_RLC_RESTORE_LIST_CNTL` | RLC_RESTORE_LIST_CNTL info
`FW_ID_RLC_V` | RLC_V info
`FW_ID_MMSCH` | MMSCH info
`FW_ID_PSP_SYSDRV` | PSP_SYSDRV info
`FW_ID_PSP_SOSDRV` | PSP_SOSDRV info
`FW_ID_PSP_TOC` | PSP_TOC info
`FW_ID_PSP_KEYDB` | PSP_KEYDB info
`FW_ID_DFC` | DFC info
`FW_ID_PSP_SPL` | PSP_SPL info
`FW_ID_DRV_CAP` | DRV_CAP info
`FW_ID_MC` | MC info
`FW_ID_PSP_BL` | PSP_BL info
`FW_ID_CP_PM4` | CP_PM4 info
`FW_ID_ASD` | ASD info
`FW_ID_TA_RAS` | TA_RAS info
`FW_ID_XGMI` | XGMI info
`FW_ID_RLC_SRLG` | RLC_SRLG info
`FW_ID_RLC_SRLS` | RLC_SRLS info
`FW_ID_SMC` | SMC info
`FW_ID_DMCU` | DMCU info
Exceptions that can be thrown by `amdsmi_get_fw_info` function: Exceptions that can be thrown by `amdsmi_get_fw_info` function:
* `AmdSmiLibraryException` * `AmdSmiLibraryException`
@@ -507,10 +463,10 @@ try:
print("No GPUs on machine") print("No GPUs on machine")
else: else:
for device in devices: for device in devices:
fw_info = amdsmi_get_fw_info(device) firmware_list = amdsmi_get_fw_info(device)['fw_list']
for block_name, block_value in fw_info.items(): for firmware_block in firmware_list:
print(block_name, str(block_value)) print(firmware_block['fw_name'])
print(firmware_block['fw_version'])
except AmdSmiException as e: except AmdSmiException as e:
print(e) print(e)
``` ```
+1 -1
Προβολή Αρχείου
@@ -185,7 +185,7 @@ from .amdsmi_interface import AmdSmiInitFlags
from .amdsmi_interface import AmdSmiContainerTypes from .amdsmi_interface import AmdSmiContainerTypes
from .amdsmi_interface import AmdSmiDeviceType from .amdsmi_interface import AmdSmiDeviceType
from .amdsmi_interface import AmdSmiMmIp from .amdsmi_interface import AmdSmiMmIp
from .amdsmi_interface import AmdSmiFWBlock from .amdsmi_interface import AmdSmiFwBlock
from .amdsmi_interface import AmdSmiClkType from .amdsmi_interface import AmdSmiClkType
from .amdsmi_interface import AmdSmiTemperatureType from .amdsmi_interface import AmdSmiTemperatureType
from .amdsmi_interface import AmdSmiDevPerfLevel from .amdsmi_interface import AmdSmiDevPerfLevel
@@ -56,7 +56,7 @@ class AmdSmiMmIp(IntEnum):
VCN = amdsmi_wrapper.AMDSMI_MM_VCN VCN = amdsmi_wrapper.AMDSMI_MM_VCN
class AmdSmiFWBlock(IntEnum): class AmdSmiFwBlock(IntEnum):
FW_ID_SMU = amdsmi_wrapper.FW_ID_SMU FW_ID_SMU = amdsmi_wrapper.FW_ID_SMU
FW_ID_CP_CE = amdsmi_wrapper.FW_ID_CP_CE FW_ID_CP_CE = amdsmi_wrapper.FW_ID_CP_CE
FW_ID_CP_PFP = amdsmi_wrapper.FW_ID_CP_PFP FW_ID_CP_PFP = amdsmi_wrapper.FW_ID_CP_PFP
@@ -376,38 +376,6 @@ _AMDSMI_GPU_UUID_SIZE = 38
_AMDSMI_STRING_LENGTH = 80 _AMDSMI_STRING_LENGTH = 80
def _parse_fw_info(fw_info: amdsmi_wrapper.amdsmi_fw_info_t) -> Dict[str, Any]:
"""
Format firmware info extracted.
Parameters:
fw_info(`amdsmi_fw_info_t`): Struct containing the extracted info to be
formatted.
Returns:
`dict`: All of the firmware info formatted into a dictionary.
"""
if not isinstance(fw_info, amdsmi_wrapper.amdsmi_fw_info_t):
raise AmdSmiParameterException(
fw_info, amdsmi_wrapper.amdsmi_fw_info_t)
formatted_fw_info = dict()
formatted_fw_info = {"num_fw_info": fw_info.num_fw_info}
for i in range(0, fw_info.num_fw_info):
index = fw_info.fw_info_list[i].fw_id
value = amdsmi_wrapper.amdsmi_fw_block__enumvalues.get(index)
if value == "FW_ID_FIRST":
value = "FW_ID_SMU"
if value == "FW_ID__MAX":
continue
formatted_fw_info.update(
{value: fw_info.fw_info_list[i].fw_version})
return formatted_fw_info
def _format_bad_page_info(bad_page_info, bad_page_count: ctypes.c_uint32) -> List[Dict]: def _format_bad_page_info(bad_page_info, bad_page_count: ctypes.c_uint32) -> List[Dict]:
""" """
Format bad page info data retrieved. Format bad page info data retrieved.
@@ -1090,18 +1058,23 @@ def amdsmi_get_power_measure(
def amdsmi_get_fw_info( def amdsmi_get_fw_info(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle
) -> Dict[str, Any]: ) -> List[Dict[str, Any]]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
raise AmdSmiParameterException( raise AmdSmiParameterException(
device_handle, amdsmi_wrapper.amdsmi_device_handle device_handle, amdsmi_wrapper.amdsmi_device_handle)
)
fw_info = amdsmi_wrapper.amdsmi_fw_info_t() fw_info = amdsmi_wrapper.amdsmi_fw_info_t()
_check_res(amdsmi_wrapper.amdsmi_get_fw_info( _check_res(amdsmi_wrapper.amdsmi_get_fw_info(
device_handle, ctypes.byref(fw_info))) device_handle, ctypes.byref(fw_info)))
firmwares = list()
return _parse_fw_info(fw_info) for i in range(0, fw_info.num_fw_info):
firmwares.append({
'fw_name': AmdSmiFwBlock(fw_info.fw_info_list[i].fw_id),
'fw_version': fw_info.fw_info_list[i].fw_version,
})
return {
'fw_list': firmwares
}
def amdsmi_get_vram_usage( def amdsmi_get_vram_usage(
@@ -1342,7 +1315,7 @@ def amdsmi_topo_get_link_weight(
return weight.value return weight.value
def amdsmi_get_minmax_bandwidth( def amdsmi_get_minmax_bandwidth(
device_handle_src: amdsmi_wrapper.amdsmi_device_handle, device_handle_src: amdsmi_wrapper.amdsmi_device_handle,
device_handle_dst: amdsmi_wrapper.amdsmi_device_handle, device_handle_dst: amdsmi_wrapper.amdsmi_device_handle,
): ):
@@ -1392,7 +1365,8 @@ def amdsmi_topo_get_link_type(
_check_res( _check_res(
amdsmi_wrapper.amdsmi_topo_get_link_type( amdsmi_wrapper.amdsmi_topo_get_link_type(
#device_handle_src, device_handle_dst, ctypes.byref(hops), type #device_handle_src, device_handle_dst, ctypes.byref(hops), type
device_handle_src, device_handle_dst, ctypes.byref(hops), ctypes.byref(type) device_handle_src, device_handle_dst, ctypes.byref(
hops), ctypes.byref(type)
) )
) )
@@ -1529,7 +1503,7 @@ def amdsmi_read_counter(
} }
def amdsmi_counter_get_available_counters( def amdsmi_counter_get_available_counters(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
event_group: AmdSmiEventGroup, event_group: AmdSmiEventGroup,
) -> int: ) -> int:
@@ -1550,7 +1524,7 @@ def amdsmi_counter_get_available_counters(
return available.value return available.value
def amdsmi_dev_set_perf_level( def amdsmi_dev_set_perf_level(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
perf_level: AmdSmiDevPerfLevel, perf_level: AmdSmiDevPerfLevel,
): ):
@@ -1565,7 +1539,7 @@ def amdsmi_dev_set_perf_level(
device_handle, perf_level)) device_handle, perf_level))
def amdsmi_dev_get_power_profile_presets( def amdsmi_dev_get_power_profile_presets(
device_handle: amdsmi_wrapper.amdsmi_device_handle, sensor_idx: int device_handle: amdsmi_wrapper.amdsmi_device_handle, sensor_idx: int
) -> Dict[str, Any]: ) -> Dict[str, Any]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -1651,7 +1625,7 @@ def amdsmi_dev_reset_fan(
_check_res(amdsmi_wrapper.amdsmi_dev_reset_fan(device_handle, sensor_idx)) _check_res(amdsmi_wrapper.amdsmi_dev_reset_fan(device_handle, sensor_idx))
def amdsmi_dev_set_clk_freq( def amdsmi_dev_set_clk_freq(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
clk_type: AmdSmiClkType, clk_type: AmdSmiClkType,
freq_bitmask: int, freq_bitmask: int,
@@ -1672,7 +1646,7 @@ def amdsmi_dev_set_clk_freq(
) )
def amdsmi_dev_set_overdrive_level_v1( def amdsmi_dev_set_overdrive_level_v1(
device_handle: amdsmi_wrapper.amdsmi_device_handle, overdrive_value: int device_handle: amdsmi_wrapper.amdsmi_device_handle, overdrive_value: int
): ):
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -1689,7 +1663,7 @@ def amdsmi_dev_set_overdrive_level_v1(
) )
def amdsmi_dev_set_overdrive_level( def amdsmi_dev_set_overdrive_level(
device_handle: amdsmi_wrapper.amdsmi_device_handle, overdrive_value: int device_handle: amdsmi_wrapper.amdsmi_device_handle, overdrive_value: int
): ):
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -1814,7 +1788,7 @@ def amdsmi_get_func_iter_value(
} }
def amdsmi_dev_set_pci_bandwidth( def amdsmi_dev_set_pci_bandwidth(
device_handle: amdsmi_wrapper.amdsmi_device_handle, bitmask: int device_handle: amdsmi_wrapper.amdsmi_device_handle, bitmask: int
) -> None: ) -> None:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -1883,7 +1857,7 @@ def amdsmi_dev_get_pci_throughput(device_handle: amdsmi_wrapper.amdsmi_device_ha
} }
def amdsmi_dev_get_pci_replay_counter(device_handle: amdsmi_wrapper.amdsmi_device_handle): def amdsmi_dev_get_pci_replay_counter(device_handle: amdsmi_wrapper.amdsmi_device_handle):
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
raise AmdSmiParameterException( raise AmdSmiParameterException(
device_handle, amdsmi_wrapper.amdsmi_device_handle device_handle, amdsmi_wrapper.amdsmi_device_handle
@@ -1915,7 +1889,7 @@ def amdsmi_topo_get_numa_affinity(device_handle: amdsmi_wrapper.amdsmi_device_ha
return numa_node.value return numa_node.value
def amdsmi_dev_set_power_cap( def amdsmi_dev_set_power_cap(
device_handle: amdsmi_wrapper.amdsmi_device_handle, sensor_ind: int, cap: int device_handle: amdsmi_wrapper.amdsmi_device_handle, sensor_ind: int, cap: int
) -> None: ) -> None:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -1952,7 +1926,7 @@ def amdsmi_dev_get_power_ave(device_handle: amdsmi_wrapper.amdsmi_device_handle,
return power.value return power.value
def amdsmi_dev_set_power_profile( def amdsmi_dev_set_power_profile(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
reserved: int, reserved: int,
profile: AmdSmiPowerProfilePresetMasks, profile: AmdSmiPowerProfilePresetMasks,
@@ -2048,7 +2022,7 @@ def amdsmi_dev_get_memory_total(device_handle: amdsmi_wrapper.amdsmi_device_hand
return total.value return total.value
def amdsmi_dev_set_od_clk_info( def amdsmi_dev_set_od_clk_info(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
level: AmdSmiFreqInd, level: AmdSmiFreqInd,
value: int, value: int,
@@ -2096,7 +2070,7 @@ def amdsmi_dev_get_memory_usage(device_handle: amdsmi_wrapper.amdsmi_device_hand
return used.value return used.value
def amdsmi_dev_set_od_volt_info( def amdsmi_dev_set_od_volt_info(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
vpoint: int, vpoint: int,
clk_value: int, clk_value: int,
@@ -2142,7 +2116,7 @@ def amdsmi_dev_get_memory_busy_percent(device_handle: amdsmi_wrapper.amdsmi_devi
return busy_percent.value return busy_percent.value
def amdsmi_dev_set_perf_level_v1( def amdsmi_dev_set_perf_level_v1(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
perf_lvl: AmdSmiDevPerfLevel, perf_lvl: AmdSmiDevPerfLevel,
) -> None: ) -> None:
@@ -2215,7 +2189,7 @@ def amdsmi_dev_get_fan_speed_max(
return fan_speed.value return fan_speed.value
def amdsmi_dev_get_temp_metric( def amdsmi_dev_get_temp_metric(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
sensor_type: AmdSmiTemperatureType, sensor_type: AmdSmiTemperatureType,
metric: AmdSmiTemperatureMetric, metric: AmdSmiTemperatureMetric,
@@ -2239,7 +2213,7 @@ def amdsmi_dev_get_temp_metric(
return temp_value.value return temp_value.value
def amdsmi_dev_get_volt_metric( def amdsmi_dev_get_volt_metric(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
sensor_type: AmdSmiVoltageType, sensor_type: AmdSmiVoltageType,
metric: AmdSmiVoltageMetric, metric: AmdSmiVoltageMetric,
@@ -2383,7 +2357,7 @@ def amdsmi_dev_get_overdrive_level(
return od_level.value return od_level.value
def amdsmi_dev_get_gpu_clk_freq( def amdsmi_dev_get_gpu_clk_freq(
device_handle: amdsmi_wrapper.amdsmi_device_handle, clk_type: AmdSmiClkType device_handle: amdsmi_wrapper.amdsmi_device_handle, clk_type: AmdSmiClkType
) -> Dict[str, Any]: ) -> Dict[str, Any]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -2407,7 +2381,7 @@ def amdsmi_dev_get_gpu_clk_freq(
} }
def amdsmi_dev_get_od_volt_info( def amdsmi_dev_get_od_volt_info(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
) -> Dict[str, Any]: ) -> Dict[str, Any]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -2444,7 +2418,7 @@ def amdsmi_dev_get_od_volt_info(
} }
def amdsmi_dev_get_gpu_metrics_info( def amdsmi_dev_get_gpu_metrics_info(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
) -> Dict[str, Any]: ) -> Dict[str, Any]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -2497,7 +2471,7 @@ def amdsmi_dev_get_gpu_metrics_info(
} }
def amdsmi_dev_get_od_volt_curve_regions( def amdsmi_dev_get_od_volt_curve_regions(
device_handle: amdsmi_wrapper.amdsmi_device_handle, num_regions: int device_handle: amdsmi_wrapper.amdsmi_device_handle, num_regions: int
) -> List[Dict[str, Any]]: ) -> List[Dict[str, Any]]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -2536,7 +2510,7 @@ def amdsmi_dev_get_od_volt_curve_regions(
return result return result
def amdsmi_dev_get_power_profile_presets( def amdsmi_dev_get_power_profile_presets(
device_handle: amdsmi_wrapper.amdsmi_device_handle, sensor_idx: int device_handle: amdsmi_wrapper.amdsmi_device_handle, sensor_idx: int
) -> Dict[str, Any]: ) -> Dict[str, Any]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -2560,7 +2534,7 @@ def amdsmi_dev_get_power_profile_presets(
} }
def amdsmi_dev_get_ecc_count( def amdsmi_dev_get_ecc_count(
device_handle: amdsmi_wrapper.amdsmi_device_handle, block: AmdSmiGpuBlock device_handle: amdsmi_wrapper.amdsmi_device_handle, block: AmdSmiGpuBlock
) -> Dict[str, int]: ) -> Dict[str, int]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -2583,7 +2557,7 @@ def amdsmi_dev_get_ecc_count(
} }
def amdsmi_dev_get_ecc_enabled( def amdsmi_dev_get_ecc_enabled(
device_handle: amdsmi_wrapper.amdsmi_device_handle, device_handle: amdsmi_wrapper.amdsmi_device_handle,
) -> int: ) -> int:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -2600,7 +2574,7 @@ def amdsmi_dev_get_ecc_enabled(
return blocks.value return blocks.value
def amdsmi_dev_get_ecc_status( def amdsmi_dev_get_ecc_status(
device_handle: amdsmi_wrapper.amdsmi_device_handle, block: AmdSmiGpuBlock device_handle: amdsmi_wrapper.amdsmi_device_handle, block: AmdSmiGpuBlock
) -> AmdSmiRasErrState: ) -> AmdSmiRasErrState:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle): if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):