[SWDEV-554587] Added IFWI Version and boot_firmware API
- Changed amd-smi static --vbios to accept ifwi - Change population logic for vbios version API - Added IFWI boot_firmware to the CLI, C++, Rust, and Python API Signed-off-by: Maisam Arif <Maisam.Arif@amd.com> Change-Id: I4ea504d40a43cfb011ab38fc9a664ecf12d39c8a
Šī revīzija ir iekļauta:
revīziju iesūtīja
Arif, Maisam
vecāks
c708a7e11f
revīzija
cd21b5edcc
@@ -3923,6 +3923,35 @@ rsmi_version_str_get(rsmi_sw_component_t component, char *ver_str,
|
||||
rsmi_status_t
|
||||
rsmi_dev_vbios_version_get(uint32_t dv_ind, char *vbios, uint32_t len);
|
||||
|
||||
/**
|
||||
* @brief Get the VBIOS Build string
|
||||
*
|
||||
* @details Given a device ID @p dv_ind, and a pointer to a char buffer,
|
||||
* @p vbios, this function will write the VBIOS Build string (up to @p len
|
||||
* characters) for device @p dv_ind to @p vbios. The caller must ensure that
|
||||
* it is safe to write at least @p len characters to @p vbios.
|
||||
*
|
||||
* @param[in] dv_ind a device index
|
||||
*
|
||||
* @param[inout] vbios_build_number A pointer to a buffer of char's to which the VBIOS
|
||||
* Build will be written
|
||||
* If this parameter is nullptr, this function will return
|
||||
* ::RSMI_STATUS_INVALID_ARGS if the function is supported with the provided,
|
||||
* arguments and ::RSMI_STATUS_NOT_SUPPORTED if it is not supported with the
|
||||
* provided arguments.
|
||||
*
|
||||
* @param[in] len The number of char's pointed to by @p vbios which can safely
|
||||
* be written to by this function.
|
||||
*
|
||||
* @retval ::RSMI_STATUS_SUCCESS call was successful
|
||||
* @retval ::RSMI_STATUS_NOT_SUPPORTED installed software or hardware does not
|
||||
* support this function with the given arguments
|
||||
* @retval ::RSMI_STATUS_INVALID_ARGS the provided arguments are not valid
|
||||
*
|
||||
*/
|
||||
rsmi_status_t
|
||||
rsmi_dev_vbios_build_number_get(uint32_t dv_ind, char *vbios_build_number, uint32_t len);
|
||||
|
||||
/**
|
||||
* @brief Get the firmware versions for a device
|
||||
*
|
||||
|
||||
@@ -104,6 +104,7 @@ enum DevInfoTypes {
|
||||
kDevUsage,
|
||||
kDevPowerODVoltage,
|
||||
kDevVBiosVer,
|
||||
kDevVBiosBuild,
|
||||
kDevPCIEThruPut,
|
||||
kDevErrCntSDMA,
|
||||
kDevErrCntUMC,
|
||||
|
||||
@@ -4658,7 +4658,7 @@ rsmi_dev_vbios_version_get(uint32_t dv_ind, char *vbios, uint32_t len) {
|
||||
DEVICE_MUTEX
|
||||
int ret = dev->readDevInfo(amd::smi::kDevVBiosVer, &val_str);
|
||||
|
||||
if (ret != 0) {
|
||||
if (ret != RSMI_STATUS_SUCCESS) {
|
||||
return amd::smi::ErrnoToRsmiStatus(ret);
|
||||
}
|
||||
|
||||
@@ -4674,6 +4674,39 @@ rsmi_dev_vbios_version_get(uint32_t dv_ind, char *vbios, uint32_t len) {
|
||||
CATCH
|
||||
}
|
||||
|
||||
rsmi_status_t
|
||||
rsmi_dev_vbios_build_number_get(uint32_t dv_ind, char *vbios_build, uint32_t len) {
|
||||
TRY
|
||||
std::ostringstream ss;
|
||||
ss << __PRETTY_FUNCTION__ << "| ======= start =======";
|
||||
LOG_TRACE(ss);
|
||||
CHK_SUPPORT_NAME_ONLY(vbios_build)
|
||||
|
||||
if (len == 0) {
|
||||
return RSMI_STATUS_INVALID_ARGS;
|
||||
}
|
||||
|
||||
std::string val_str;
|
||||
|
||||
DEVICE_MUTEX
|
||||
int ret = dev->readDevInfo(amd::smi::kDevVBiosBuild, &val_str);
|
||||
|
||||
if (ret != RSMI_STATUS_SUCCESS) {
|
||||
return amd::smi::ErrnoToRsmiStatus(ret);
|
||||
}
|
||||
|
||||
uint32_t ln = static_cast<uint32_t>(val_str.copy(vbios_build, len));
|
||||
|
||||
vbios_build[std::min(len - 1, ln)] = '\0';
|
||||
|
||||
if (len < (val_str.size() + 1)) {
|
||||
return RSMI_STATUS_INSUFFICIENT_SIZE;
|
||||
}
|
||||
return RSMI_STATUS_SUCCESS;
|
||||
|
||||
CATCH
|
||||
}
|
||||
|
||||
rsmi_status_t
|
||||
rsmi_version_get(rsmi_version_t *version) {
|
||||
TRY
|
||||
|
||||
@@ -86,6 +86,7 @@ static const char *kDevPowerProfileModeFName = "pp_power_profile_mode";
|
||||
static const char *kDevPowerODVoltageFName = "pp_od_clk_voltage";
|
||||
static const char *kDevUsageFName = "gpu_busy_percent";
|
||||
static const char *kDevVBiosVerFName = "vbios_version";
|
||||
static const char *kDevVBiosBuildFName = "vbios_build";
|
||||
static const char *kDevPCIEThruPutFName = "pcie_bw";
|
||||
static const char *kDevErrCntSDMAFName = "ras/sdma_err_count";
|
||||
static const char *kDevErrCntUMCFName = "ras/umc_err_count";
|
||||
@@ -268,6 +269,7 @@ static const std::map<DevInfoTypes, const char *> kDevAttribNameMap = {
|
||||
{kDevUsage, kDevUsageFName},
|
||||
{kDevPowerODVoltage, kDevPowerODVoltageFName},
|
||||
{kDevVBiosVer, kDevVBiosVerFName},
|
||||
{kDevVBiosBuild, kDevVBiosBuildFName},
|
||||
{kDevPCIEThruPut, kDevPCIEThruPutFName},
|
||||
{kDevErrCntSDMA, kDevErrCntSDMAFName},
|
||||
{kDevErrCntUMC, kDevErrCntUMCFName},
|
||||
@@ -444,6 +446,7 @@ Device::devInfoTypesStrings = {
|
||||
{kDevUsage, "kDevUsage"},
|
||||
{kDevPowerODVoltage, "kDevPowerODVoltage"},
|
||||
{kDevVBiosVer, "kDevVBiosVer"},
|
||||
{kDevVBiosBuild, "kDevVBiosBuild"},
|
||||
{kDevPCIEThruPut, "kDevPCIEThruPut"},
|
||||
{kDevErrCntSDMA, "kDevErrCntSDMA"},
|
||||
{kDevErrCntUMC, "kDevErrCntUMC"},
|
||||
@@ -569,20 +572,21 @@ static const std::map<const char *, dev_depends_t> kDevFuncDependsMap = {
|
||||
{"rsmi_dev_soc_pstate_get", {{kDevSocPstateFName}, {}}},
|
||||
{"rsmi_dev_xgmi_plpd_set", {{kDevXgmiPlpdFName}, {}}},
|
||||
{"rsmi_dev_xgmi_plpd_get", {{kDevXgmiPlpdFName}, {}}},
|
||||
{"rsmi_dev_process_isolation_set", {{kDevProcessIsolationFName}, {}}},
|
||||
{"rsmi_dev_process_isolation_get", {{kDevProcessIsolationFName}, {}}},
|
||||
{"rsmi_dev_gpu_shader_clean", {{kDevShaderCleanFName}, {}}},
|
||||
{"rsmi_dev_process_isolation_set", {{kDevProcessIsolationFName}, {}}},
|
||||
{"rsmi_dev_process_isolation_get", {{kDevProcessIsolationFName}, {}}},
|
||||
{"rsmi_dev_gpu_shader_clean", {{kDevShaderCleanFName}, {}}},
|
||||
{"rsmi_perf_determinism_mode_set", {{kDevPerfLevelFName,
|
||||
kDevPowerODVoltageFName}, {}}},
|
||||
{"rsmi_dev_overdrive_level_set", {{kDevOverDriveLevelFName}, {}}},
|
||||
{"rsmi_dev_vbios_version_get", {{kDevVBiosVerFName}, {}}},
|
||||
{"rsmi_dev_vbios_build_number_get", {{kDevVBiosBuildFName}, {}}},
|
||||
{"rsmi_dev_od_volt_info_get", {{kDevPowerODVoltageFName}, {}}},
|
||||
{"rsmi_dev_od_volt_info_set", {{kDevPowerODVoltageFName,
|
||||
kDevPerfLevelFName}, {}}},
|
||||
{"rsmi_dev_od_volt_curve_regions_get", {{kDevPowerODVoltageFName}, {}}},
|
||||
{"rsmi_dev_ecc_enabled_get", {{kDevErrCntFeaturesFName}, {}}},
|
||||
{"rsmi_dev_ecc_status_get", {{kDevErrCntFeaturesFName}, {}}},
|
||||
{"rsmi_ras_feature_info_get", {{kDevErrRASSchemaFName,
|
||||
{"rsmi_ras_feature_info_get", {{kDevErrRASSchemaFName,
|
||||
kDevErrTableVersionFName}, {}}},
|
||||
{"rsmi_dev_counter_group_supported", {{}, {}}},
|
||||
{"rsmi_dev_counter_create", {{}, {}}},
|
||||
@@ -1472,6 +1476,7 @@ int Device::readDevInfo(DevInfoTypes type, std::string *val) {
|
||||
case kDevPCieVendorID:
|
||||
case kDevVramVendor:
|
||||
case kDevVBiosVer:
|
||||
case kDevVBiosBuild:
|
||||
case kDevPCIEThruPut:
|
||||
case kDevSerialNumber:
|
||||
case kDevAvailableComputePartition:
|
||||
|
||||
Atsaukties uz šo jaunā problēmā
Block a user