[SWDEV-529665] Add PLDM Bundle version

feat: Report PLDM Bundle from SMC to IB

Code changes related to the following:
  * APIs
  * CLI
  * Unit tests

Signed-off-by: Oliveira, Daniel <daniel.oliveira@amd.com>
Change-Id: I35ccf01eb612ca80e3ae6b72039085c18c989222
Este commit está contenido en:
Daniel Oliveira
2025-05-14 21:19:53 -05:00
cometido por Arif, Maisam
padre bd39e461a5
commit fe9b6eeb49
Se han modificado 12 ficheros con 38 adiciones y 9 borrados
+2
Ver fichero
@@ -29,6 +29,8 @@ Full documentation for amd_smi_lib is available at [https://rocm.docs.amd.com/pr
- **Added bad page threshold count**.
- Added `amdsmi_get_gpu_bad_page_threshold` to Python API and CLI; root/sudo permissions required to display the count.
- **Added new firmware PLDM**.
### Changed
- **The `amd-smi topology` command has been enabled for Guest environments**.
+3
Ver fichero
@@ -188,6 +188,9 @@ void getFWNameFromId(int id, char *name)
case AMDSMI_FW_ID_DMCU:
strcpy(name, "ID_DMCU");
break;
case AMDSMI_FW_ID_PLDM:
strcpy(name, "PLDM");
break;
default:
strcpy(name, "");
break;
+4
Ver fichero
@@ -214,6 +214,10 @@ int main() {
"\tPSP SOSDRV: %ld\n\n",
fw_information.fw_info_list[amdsmi_fw_block_t::AMDSMI_FW_ID_PSP_SOSDRV]
.fw_version);
printf(
"\tPLDM: %ld\n\n",
fw_information.fw_info_list[amdsmi_fw_block_t::AMDSMI_FW_ID_PLDM]
.fw_version);
// Get temperature measurements
int64_t temp_measurements[AMDSMI_TEMPERATURE_TYPE__MAX + 1];
+1
Ver fichero
@@ -549,6 +549,7 @@ typedef enum {
AMDSMI_FW_ID_RLC_SRLS,
AMDSMI_FW_ID_PM,
AMDSMI_FW_ID_DMCU,
AMDSMI_FW_ID_PLDM,
AMDSMI_FW_ID__MAX
} amdsmi_fw_block_t;
+3 -1
Ver fichero
@@ -198,6 +198,7 @@ class AmdSmiFwBlock(IntEnum):
AMDSMI_FW_ID_RLC_SRLS = amdsmi_wrapper.AMDSMI_FW_ID_RLC_SRLS
AMDSMI_FW_ID_PM = amdsmi_wrapper.AMDSMI_FW_ID_PM
AMDSMI_FW_ID_DMCU = amdsmi_wrapper.AMDSMI_FW_ID_DMCU
AMDSMI_FW_ID_PLDM = amdsmi_wrapper.AMDSMI_FW_ID_PLDM
class AmdSmiClkType(IntEnum):
@@ -2737,7 +2738,8 @@ def amdsmi_get_fw_info(
AmdSmiFwBlock.AMDSMI_FW_ID_TA_XGMI,
AmdSmiFwBlock.AMDSMI_FW_ID_UVD,
AmdSmiFwBlock.AMDSMI_FW_ID_VCE,
AmdSmiFwBlock.AMDSMI_FW_ID_VCN]
AmdSmiFwBlock.AMDSMI_FW_ID_VCN,
AmdSmiFwBlock.AMDSMI_FW_ID_PLDM]
# PM(AKA: SMC) firmware's hex value looks like 0x12345678
# However, they are parsed as: int(0x12).int(0x34).int(0x56).int(0x78)
+7 -4
Ver fichero
@@ -582,7 +582,8 @@ amdsmi_fw_block_t__enumvalues = {
76: 'AMDSMI_FW_ID_RLC_SRLS',
77: 'AMDSMI_FW_ID_PM',
78: 'AMDSMI_FW_ID_DMCU',
79: 'AMDSMI_FW_ID__MAX',
79: 'AMDSMI_FW_ID_PLDM',
80: 'AMDSMI_FW_ID__MAX',
}
AMDSMI_FW_ID_SMU = 1
AMDSMI_FW_ID_FIRST = 1
@@ -663,7 +664,8 @@ AMDSMI_FW_ID_RLC_SRLG = 75
AMDSMI_FW_ID_RLC_SRLS = 76
AMDSMI_FW_ID_PM = 77
AMDSMI_FW_ID_DMCU = 78
AMDSMI_FW_ID__MAX = 79
AMDSMI_FW_ID_PLDM = 79
AMDSMI_FW_ID__MAX = 80
amdsmi_fw_block_t = ctypes.c_uint32 # enum
# values for enumeration 'amdsmi_vram_type_t'
@@ -985,7 +987,7 @@ struct_amdsmi_fw_info_t._pack_ = 1 # source:False
struct_amdsmi_fw_info_t._fields_ = [
('num_fw_info', ctypes.c_ubyte),
('PADDING_0', ctypes.c_ubyte * 7),
('fw_info_list', struct_fw_info_list_ * 79),
('fw_info_list', struct_fw_info_list_ * 80),
('reserved', ctypes.c_uint32 * 7),
('PADDING_1', ctypes.c_ubyte * 4),
]
@@ -3055,7 +3057,8 @@ __all__ = \
'AMDSMI_FW_ID_ISP', 'AMDSMI_FW_ID_MC', 'AMDSMI_FW_ID_MES_KIQ',
'AMDSMI_FW_ID_MES_STACK', 'AMDSMI_FW_ID_MES_THREAD1',
'AMDSMI_FW_ID_MES_THREAD1_STACK', 'AMDSMI_FW_ID_MMSCH',
'AMDSMI_FW_ID_PM', 'AMDSMI_FW_ID_PPTABLE', 'AMDSMI_FW_ID_PSP_BL',
'AMDSMI_FW_ID_PLDM', 'AMDSMI_FW_ID_PM',
'AMDSMI_FW_ID_PPTABLE', 'AMDSMI_FW_ID_PSP_BL',
'AMDSMI_FW_ID_PSP_DBG', 'AMDSMI_FW_ID_PSP_INTF',
'AMDSMI_FW_ID_PSP_KEYDB', 'AMDSMI_FW_ID_PSP_SOC',
'AMDSMI_FW_ID_PSP_SOSDRV', 'AMDSMI_FW_ID_PSP_SPL',
+2 -2
Ver fichero
@@ -725,8 +725,8 @@ typedef enum {
RSMI_FW_BLOCK_UVD,
RSMI_FW_BLOCK_VCE,
RSMI_FW_BLOCK_VCN,
RSMI_FW_BLOCK_LAST = RSMI_FW_BLOCK_VCN
RSMI_FW_BLOCK_PLDM,
RSMI_FW_BLOCK_LAST = RSMI_FW_BLOCK_PLDM
} rsmi_fw_block_t;
/**
@@ -152,6 +152,7 @@ enum DevInfoTypes {
kDevFwVersionUvd,
kDevFwVersionVce,
kDevFwVersionVcn,
kDevFwVersionPldm,
kDevSerialNumber,
kDevMemPageBad,
kDevNumaNode,
+1
Ver fichero
@@ -1985,6 +1985,7 @@ rsmi_dev_firmware_version_get(uint32_t dv_ind, rsmi_fw_block_t block,
{ RSMI_FW_BLOCK_UVD, amd::smi::kDevFwVersionUvd },
{ RSMI_FW_BLOCK_VCE, amd::smi::kDevFwVersionVce },
{ RSMI_FW_BLOCK_VCN, amd::smi::kDevFwVersionVcn },
{ RSMI_FW_BLOCK_PLDM, amd::smi::kDevFwVersionPldm},
};
const auto & dev_type_it = kFWBlockTypeMap.find(block);
+6
Ver fichero
@@ -160,6 +160,7 @@ static const char *kDevFwVersionTaXgmiFName = "fw_version/ta_xgmi_fw_version";
static const char *kDevFwVersionUvdFName = "fw_version/uvd_fw_version";
static const char *kDevFwVersionVceFName = "fw_version/vce_fw_version";
static const char *kDevFwVersionVcnFName = "fw_version/vcn_fw_version";
static const char *kDevFwVersionPldmFName = "fw_version/pldm_fw_version";
static const char *kDevKFDNodePropCachesCntSName = "caches_count";
static const char *kDevKFDNodePropIoLinksCntSName = "io_links_count";
@@ -309,6 +310,7 @@ static const std::map<DevInfoTypes, const char *> kDevAttribNameMap = {
{kDevFwVersionUvd, kDevFwVersionUvdFName},
{kDevFwVersionVce, kDevFwVersionVceFName},
{kDevFwVersionVcn, kDevFwVersionVcnFName},
{kDevFwVersionPldm, kDevFwVersionPldmFName},
{kDevSerialNumber, kDevSerialNumberFName},
{kDevMemPageBad, kDevMemPageBadFName},
{kDevNumaNode, kDevNumaNodeFName},
@@ -396,6 +398,7 @@ static const std::map<DevInfoTypes, uint8_t> kDevInfoVarTypeToRSMIVariant = {
{kDevFwVersionUvd, RSMI_FW_BLOCK_UVD},
{kDevFwVersionVce, RSMI_FW_BLOCK_VCE},
{kDevFwVersionVcn, RSMI_FW_BLOCK_VCN},
{kDevFwVersionPldm, RSMI_FW_BLOCK_PLDM},
// rsmi_gpu_block_t
{kDevErrCntUMC, RSMI_GPU_BLOCK_UMC},
@@ -480,6 +483,7 @@ Device::devInfoTypesStrings = {
{kDevFwVersionUvd, "kDevFwVersionUvd"},
{kDevFwVersionVce, "kDevFwVersionVce"},
{kDevFwVersionVcn, "kDevFwVersionVcn"},
{kDevFwVersionPldm, "kDevFwVersionPldm"},
{kDevSerialNumber, "kDevSerialNumber"},
{kDevMemPageBad, "kDevMemPageBad"},
{kDevNumaNode, "kDevNumaNode"},
@@ -648,6 +652,7 @@ static const std::map<const char *, dev_depends_t> kDevFuncDependsMap = {
kDevFwVersionUvd,
kDevFwVersionVce,
kDevFwVersionVcn,
kDevFwVersionPldm,
}
}
},
@@ -1249,6 +1254,7 @@ int Device::readDevInfo(DevInfoTypes type, uint64_t *val) {
case kDevFwVersionUvd:
case kDevFwVersionVce:
case kDevFwVersionVcn:
case kDevFwVersionPldm:
ret = readDevInfoStr(type, &tempStr);
RET_IF_NONZERO(ret);
if (tempStr.empty()) {
+3 -2
Ver fichero
@@ -1395,8 +1395,9 @@ amdsmi_status_t amdsmi_get_fw_info(amdsmi_processor_handle processor_handle,
{ AMDSMI_FW_ID_TA_RAS, RSMI_FW_BLOCK_TA_RAS},
{ AMDSMI_FW_ID_TA_XGMI, RSMI_FW_BLOCK_TA_XGMI},
{ AMDSMI_FW_ID_UVD, RSMI_FW_BLOCK_UVD},
{AMDSMI_FW_ID_VCE, RSMI_FW_BLOCK_VCE},
{ AMDSMI_FW_ID_VCN, RSMI_FW_BLOCK_VCN}
{ AMDSMI_FW_ID_VCE, RSMI_FW_BLOCK_VCE},
{ AMDSMI_FW_ID_VCN, RSMI_FW_BLOCK_VCN},
{ AMDSMI_FW_ID_PLDM, RSMI_FW_BLOCK_PLDM},
};
AMDSMI_CHECK_INIT();
+5
Ver fichero
@@ -278,6 +278,9 @@ test_fw_info (__main__.TestAmdSmiPythonInterface) ...
FW version: 20.00.00.0F
FW name: AMDSMI_FW_ID_PM
FW version: 00.58.90.00
FW name: AMDSMI_FW_ID_PLDM
FW version: 00.xx.yy.zz
ok
test_gpu_activity (__main__.TestAmdSmiPythonInterface) ...
@@ -587,6 +590,8 @@ test_walkthrough (__main__.TestAmdSmiPythonInterface) ...
FW version: 20.00.00.0F
FW name: AMDSMI_FW_ID_PM
FW version: 00.58.90.00
FW name: AMDSMI_FW_ID_PLDM
FW version: 00.xx.yy.zz