Add xgmi error_status and error_reset functions

Also, comment corrections and added check for invalid arguments

Change-Id: I891cbf9b37bfda629914a008811b840323872c02


[ROCm/amdsmi commit: 557e1f5704]
这个提交包含在:
Chris Freehill 于 2019-07-09 09:55:05 -04:00 提交
1 父节点 df93edbbc0
当前提交 64f22d2749
8 个文件已更改
+320 -1

没有与搜索条件相匹配的文件

+63
查看文件
@@ -2146,6 +2146,10 @@ rsmi_dev_unique_id_get(uint32_t dv_ind, uint64_t *unique_id) {
DEVICE_MUTEX
rsmi_status_t ret;
if (unique_id == nullptr) {
return RSMI_STATUS_INVALID_ARGS;
}
ret = get_dev_value_int(amd::smi::kDevUniqueId, dv_ind, unique_id);
return ret;
@@ -2349,3 +2353,62 @@ rsmi_compute_process_info_by_pid_get(uint32_t pid,
CATCH
}
rsmi_status_t
rsmi_dev_xgmi_error_status(uint32_t dv_ind, rsmi_xgmi_status_t *status) {
TRY
DEVICE_MUTEX
if (status == nullptr) {
return RSMI_STATUS_INVALID_ARGS;
}
rsmi_status_t ret;
uint64_t status_code;
ret = get_dev_value_int(amd::smi::kDevXGMIError, dv_ind, &status_code);
if (ret != RSMI_STATUS_SUCCESS) {
return ret;
}
switch (status_code) {
case 0:
*status = RSMI_XGMI_STATUS_NO_ERRORS;
break;
case 1:
*status = RSMI_XGMI_STATUS_ERROR;
break;
case 2:
*status = RSMI_XGMI_STATUS_MULTIPLE_ERRORS;
break;
default:
assert(!"Unexpected XGMI error status read");
return RSMI_STATUS_UNKNOWN_ERROR;
}
return RSMI_STATUS_SUCCESS;
CATCH
}
rsmi_status_t
rsmi_dev_xgmi_error_reset(uint32_t dv_ind) {
TRY
DEVICE_MUTEX
rsmi_status_t ret;
uint64_t status_code;
ret = get_dev_value_int(amd::smi::kDevXGMIError, dv_ind, &status_code);
if (ret != RSMI_STATUS_SUCCESS) {
return ret;
}
return RSMI_STATUS_SUCCESS;
CATCH
}
+3
查看文件
@@ -101,6 +101,7 @@ static const char *kDevPCIEReplayCountFName = "pcie_replay_count";
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";
// Strings that are found within sysfs files
static const char *kDevPerfLevelAutoStr = "auto";
@@ -145,6 +146,7 @@ static const std::map<DevInfoTypes, const char *> kDevAttribNameMap = {
{kDevPCIEReplayCount, kDevPCIEReplayCountFName},
{kDevUniqueId, kDevUniqueIdFName},
{kDevDFCountersAvailable, kDevDFCountersAvailableFName},
{kDevXGMIError, kDevXGMIErrorFName},
};
static const std::map<rsmi_dev_perf_level, const char *> kDevPerfLvlMap = {
@@ -380,6 +382,7 @@ int Device::readDevInfo(DevInfoTypes type, uint64_t *val) {
case kDevPCIEReplayCount:
case kDevDFCountersAvailable:
case kDevMemBusyPercent:
case kDevXGMIError:
ret = readDevInfoStr(type, &tempStr);
RET_IF_NONZERO(ret);
*val = std::stoul(tempStr, 0);