Add rsmi_dev_serial_number_get()
Also correct whitespace issues
Change-Id: I7ffe23672304c31ed08d7148b04a19a7d4c3d7ef
[ROCm/rocm_smi_lib commit: cf13d6f4d8]
This commit is contained in:
@@ -782,6 +782,29 @@ rsmi_status_t rsmi_dev_name_get(uint32_t dv_ind, char *name, size_t len);
|
||||
*/
|
||||
rsmi_status_t rsmi_dev_vendor_name_get(uint32_t id, char *name, size_t len);
|
||||
|
||||
/**
|
||||
* @brief Get the serial number string for a device
|
||||
*
|
||||
* @details Given a device index @p dv_ind, a pointer to a buffer of chars
|
||||
* @p serial_num, and the length of the provided buffer @p len, this function
|
||||
* will write the serial number string (up to @p len characters) to the buffer
|
||||
* pointed to by @p serial_num.
|
||||
*
|
||||
* @param[in] dv_ind a device index
|
||||
*
|
||||
* @param[inout] serial_num a pointer to caller-provided memory to which the
|
||||
* serial number will be written
|
||||
*
|
||||
* @param[in] len the length of the caller provided buffer @p serial_num.
|
||||
*
|
||||
* @retval ::RSMI_STATUS_SUCCESS is returned upon successful call.
|
||||
* @retval ::RSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not
|
||||
* large enough to hold the entire name. In this case, only @p len bytes will
|
||||
* be written.
|
||||
*
|
||||
*/
|
||||
rsmi_status_t rsmi_dev_serial_number_get(uint32_t dv_ind,
|
||||
char *serial_num, uint32_t len);
|
||||
/**
|
||||
* @brief Get the subsystem device id associated with the device with
|
||||
* provided device index.
|
||||
|
||||
@@ -118,6 +118,7 @@ enum DevInfoTypes {
|
||||
kDevFwVersionUvd,
|
||||
kDevFwVersionVce,
|
||||
kDevFwVersionVcn,
|
||||
kDevSerialNumber,
|
||||
};
|
||||
|
||||
class Device {
|
||||
|
||||
@@ -1428,7 +1428,6 @@ static rsmi_status_t get_dev_name_from_id(uint32_t dv_ind, char *name,
|
||||
|
||||
static rsmi_status_t
|
||||
get_dev_drm_render_minor(uint32_t dv_ind, uint32_t *minor) {
|
||||
|
||||
GET_DEV_FROM_INDX
|
||||
|
||||
*minor = dev->drm_render_minor();
|
||||
@@ -2244,6 +2243,34 @@ rsmi_version_str_get(rsmi_sw_component_t component, char *ver_str,
|
||||
CATCH
|
||||
}
|
||||
|
||||
rsmi_status_t rsmi_dev_serial_number_get(uint32_t dv_ind,
|
||||
char *serial_num, uint32_t len) {
|
||||
if (serial_num == nullptr || len == 0) {
|
||||
return RSMI_STATUS_INVALID_ARGS;
|
||||
}
|
||||
|
||||
TRY
|
||||
|
||||
std::string val_str;
|
||||
rsmi_status_t ret = get_dev_value_str(amd::smi::kDevSerialNumber,
|
||||
dv_ind, &val_str);
|
||||
|
||||
if (ret != RSMI_STATUS_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint32_t ln = val_str.copy(serial_num, len);
|
||||
|
||||
serial_num[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_dev_pci_replay_counter_get(uint32_t dv_ind, uint64_t *counter) {
|
||||
TRY
|
||||
|
||||
@@ -102,6 +102,7 @@ static const char *kDevUniqueIdFName = "unique_id";
|
||||
static const char *kDevDFCountersAvailableFName = "df_cntr_avail";
|
||||
static const char *kDevMemBusyPercentFName = "mem_busy_percent";
|
||||
static const char *kDevXGMIErrorFName = "xgmi_error";
|
||||
static const char *kDevSerialNumberFName = "serial_number";
|
||||
|
||||
// Strings that are found within sysfs files
|
||||
static const char *kDevPerfLevelAutoStr = "auto";
|
||||
@@ -192,6 +193,7 @@ static const std::map<DevInfoTypes, const char *> kDevAttribNameMap = {
|
||||
{kDevFwVersionUvd, kDevFwVersionUvdFName},
|
||||
{kDevFwVersionVce, kDevFwVersionVceFName},
|
||||
{kDevFwVersionVcn, kDevFwVersionVcnFName},
|
||||
{kDevSerialNumber, kDevSerialNumberFName},
|
||||
};
|
||||
|
||||
static const std::map<rsmi_dev_perf_level, const char *> kDevPerfLvlMap = {
|
||||
@@ -505,6 +507,7 @@ int Device::readDevInfo(DevInfoTypes type, std::string *val) {
|
||||
case kDevVendorID:
|
||||
case kDevVBiosVer:
|
||||
case kDevPCIEThruPut:
|
||||
case kDevSerialNumber:
|
||||
return readDevInfoStr(type, val);
|
||||
break;
|
||||
|
||||
|
||||
@@ -195,5 +195,17 @@ void TestIdInfoRead::Run(void) {
|
||||
std::cout << "\t**PCI ID (BDFID): 0x" << std::hex << val_ui64;
|
||||
std::cout << " (" << std::dec << val_ui64 << ")" << std::endl;
|
||||
}
|
||||
|
||||
err = rsmi_dev_serial_number_get(i, buffer, kBufferLen);
|
||||
if (err == RSMI_STATUS_NOT_SUPPORTED) {
|
||||
std::cout <<
|
||||
"\t**Serial Number string not supported on this system." << std::endl;
|
||||
} else if (err != RSMI_STATUS_SUCCESS) {
|
||||
CHK_ERR_ASRT(err)
|
||||
} else {
|
||||
IF_VERB(STANDARD) {
|
||||
std::cout << "\t**Device Serial Number:" << buffer << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user