fix: [SWDEV-448201] [rocm/amd_smi_lib]

Adds Add PCIE Errors

Code changes related to the following:
  * amdsmi_get_pcie_info()
  * CLI
  * examples

Change-Id: Ie0b7053e77c88fb18309c16e74bce75d862c45a9
Signed-off-by: Oliveira, Daniel <daniel.oliveira@amd.com>
This commit is contained in:
Oliveira, Daniel
2024-03-05 14:01:06 -06:00
committed by Guan Yu
parent 06fa6580c4
commit 1310c767ce
7 changed files with 200 additions and 102 deletions
+45 -2
View File
@@ -2134,7 +2134,7 @@ def amdsmi_get_pcie_info(
)
)
return {
pcie_info_dict = {
"pcie_static": {
"max_pcie_width": pcie_info.pcie_static.max_pcie_width,
"max_pcie_speed": pcie_info.pcie_static.max_pcie_speed,
@@ -2153,6 +2153,49 @@ def amdsmi_get_pcie_info(
}
}
# Check pcie static values for uint max
if pcie_info_dict['pcie_static']['max_pcie_width'] == 0xFFFF:
pcie_info_dict['pcie_static']['max_pcie_width'] = "N/A"
if pcie_info_dict['pcie_static']['max_pcie_speed'] == 0xFFFFFFFF:
pcie_info_dict['pcie_static']['max_pcie_speed'] = "N/A"
if pcie_info_dict['pcie_static']['pcie_interface_version'] == 0xFFFFFFFF:
pcie_info_dict['pcie_static']['pcie_interface_version'] = "N/A"
slot_type = pcie_info_dict['pcie_static']['slot_type']
if isinstance(slot_type, int):
slot_types = amdsmi_wrapper.amdsmi_card_form_factor_t__enumvalues
if slot_type in slot_types:
pcie_info_dict['pcie_static']['slot_type'] = slot_types[slot_type].replace("AMDSMI_CARD_FORM_FACTOR_", "")
else:
pcie_info_dict['pcie_static']['slot_type'] = "Unknown"
else:
pcie_info_dict['pcie_static']['slot_type'] = "N/A"
# Check pcie metric values for uint max
if pcie_info_dict['pcie_metric']['pcie_width'] == 0xFFFF:
pcie_info_dict['pcie_metric']['pcie_width'] = "N/A"
if pcie_info_dict['pcie_metric']['pcie_speed'] == 0xFFFFFFFF:
pcie_info_dict['pcie_metric']['pcie_speed'] = "N/A"
if pcie_info_dict['pcie_metric']['pcie_bandwidth'] == 0xFFFFFFFF:
pcie_info_dict['pcie_metric']['pcie_bandwidth'] = "N/A"
# TODO Just Navi 21 has a different uint max size for pcie_bandwidth
# if pcie_info_dict['pcie_metric']['pcie_bandwidth'] == 0xFFFFFFFF:
# pcie_info_dict['pcie_metric']['pcie_bandwidth'] = "N/A"
if pcie_info_dict['pcie_metric']['pcie_replay_count'] == 0xFFFFFFFFFFFFFFFF:
pcie_info_dict['pcie_metric']['pcie_replay_count'] = "N/A"
if pcie_info_dict['pcie_metric']['pcie_l0_to_recovery_count'] == 0xFFFFFFFFFFFFFFFF:
pcie_info_dict['pcie_metric']['pcie_l0_to_recovery_count'] = "N/A"
if pcie_info_dict['pcie_metric']['pcie_replay_roll_over_count'] == 0xFFFFFFFFFFFFFFFF:
pcie_info_dict['pcie_metric']['pcie_replay_roll_over_count'] = "N/A"
if pcie_info_dict['pcie_metric']['pcie_nak_sent_count'] == 0xFFFFFFFFFFFFFFFF:
pcie_info_dict['pcie_metric']['pcie_nak_sent_count'] = "N/A"
if pcie_info_dict['pcie_metric']['pcie_nak_received_count'] == 0xFFFFFFFFFFFFFFFF:
pcie_info_dict['pcie_metric']['pcie_nak_received_count'] = "N/A"
return pcie_info_dict
def amdsmi_get_processor_handle_from_bdf(bdf):
bdf = _parse_bdf(bdf)
@@ -3275,7 +3318,7 @@ def amdsmi_get_dpm_policy(
processor_handle, ctypes.byref(policy)
)
)
polices = []
for i in range(0, policy.num_supported):
id = policy.policies[i].policy_id