Add xgmi error_status and error_reset functions
Also, comment corrections and added check for invalid arguments
Change-Id: I891cbf9b37bfda629914a008811b840323872c02
[ROCm/amdsmi commit: 557e1f5704]
这个提交包含在:
1 父节点
df93edbbc0
当前提交
64f22d2749
8 个文件已更改
+320
-1
没有与搜索条件相匹配的文件
@@ -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
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
在新工单中引用
屏蔽一个用户