From 37a41c3bc89f50c7a0c697d3239f1b0fa234169e Mon Sep 17 00:00:00 2001 From: Maisam Arif Date: Fri, 10 Nov 2023 23:43:17 -0600 Subject: [PATCH] SWDEV-426130 - Updated firmware subcommand output Corrected truncation corrected xgmi to ta_xgmi remapped smc(system management controller) to pm(power management) Signed-off-by: Maisam Arif Change-Id: I404cefa7b90a454d4f4b08f6490448b47cf32107 [ROCm/amdsmi commit: 545e57d3e34c6068e195313559b20a7a6c881bba] --- projects/amdsmi/amdsmi_cli/amdsmi_commands.py | 2 +- projects/amdsmi/example/amd_smi_drm_example.cc | 8 ++++---- .../amdsmi/example/amd_smi_nodrm_example.cc | 4 ++-- projects/amdsmi/include/amd_smi/amdsmi.h | 4 ++-- .../amdsmi/py-interface/amdsmi_interface.py | 17 ++++++++++++----- projects/amdsmi/py-interface/amdsmi_wrapper.py | 14 +++++++------- projects/amdsmi/src/amd_smi/amd_smi.cc | 4 ++-- .../amdsmi/tests/amd_smi_test/test_utils.cc | 4 ++-- 8 files changed, 32 insertions(+), 25 deletions(-) diff --git a/projects/amdsmi/amdsmi_cli/amdsmi_commands.py b/projects/amdsmi/amdsmi_cli/amdsmi_commands.py index 6c8e95398e..4bbeda5c23 100644 --- a/projects/amdsmi/amdsmi_cli/amdsmi_commands.py +++ b/projects/amdsmi/amdsmi_cli/amdsmi_commands.py @@ -625,7 +625,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 diff --git a/projects/amdsmi/example/amd_smi_drm_example.cc b/projects/amdsmi/example/amd_smi_drm_example.cc index 38a6882586..7d046cf4c5 100644 --- a/projects/amdsmi/example/amd_smi_drm_example.cc +++ b/projects/amdsmi/example/amd_smi_drm_example.cc @@ -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"); diff --git a/projects/amdsmi/example/amd_smi_nodrm_example.cc b/projects/amdsmi/example/amd_smi_nodrm_example.cc index 843691d0a6..05ff84d669 100644 --- a/projects/amdsmi/example/amd_smi_nodrm_example.cc +++ b/projects/amdsmi/example/amd_smi_nodrm_example.cc @@ -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] diff --git a/projects/amdsmi/include/amd_smi/amdsmi.h b/projects/amdsmi/include/amd_smi/amdsmi.h index 89c0aca42b..7856d8cf47 100644 --- a/projects/amdsmi/include/amd_smi/amdsmi.h +++ b/projects/amdsmi/include/amd_smi/amdsmi.h @@ -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; diff --git a/projects/amdsmi/py-interface/amdsmi_interface.py b/projects/amdsmi/py-interface/amdsmi_interface.py index c9724671d4..71ae0ffd71 100644 --- a/projects/amdsmi/py-interface/amdsmi_interface.py +++ b/projects/amdsmi/py-interface/amdsmi_interface.py @@ -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 @@ -1667,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) @@ -1682,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) diff --git a/projects/amdsmi/py-interface/amdsmi_wrapper.py b/projects/amdsmi/py-interface/amdsmi_wrapper.py index fafa936ecf..c19a492943 100644 --- a/projects/amdsmi/py-interface/amdsmi_wrapper.py +++ b/projects/amdsmi/py-interface/amdsmi_wrapper.py @@ -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', diff --git a/projects/amdsmi/src/amd_smi/amd_smi.cc b/projects/amdsmi/src/amd_smi/amd_smi.cc index 4866bedde6..2281f23593 100644 --- a/projects/amdsmi/src/amd_smi/amd_smi.cc +++ b/projects/amdsmi/src/amd_smi/amd_smi.cc @@ -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} diff --git a/projects/amdsmi/tests/amd_smi_test/test_utils.cc b/projects/amdsmi/tests/amd_smi_test/test_utils.cc index 06fa98fe7e..a0b3e8e9e3 100644 --- a/projects/amdsmi/tests/amd_smi_test/test_utils.cc +++ b/projects/amdsmi/tests/amd_smi_test/test_utils.cc @@ -64,10 +64,10 @@ static const std::map 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"},