Added ECC enabled, status and get functions
[ROCm/amdsmi commit: 4e679b9324]
This commit is contained in:
@@ -85,14 +85,44 @@ void TestErrCntRead::Close() {
|
||||
void TestErrCntRead::Run(void) {
|
||||
rsmi_status_t err;
|
||||
rsmi_error_count_t ec;
|
||||
uint64_t enabled_mask;
|
||||
rsmi_ras_err_state_t err_state;
|
||||
|
||||
TestBase::Run();
|
||||
|
||||
for (uint32_t i = 0; i < num_monitor_devs(); ++i) {
|
||||
PrintDeviceHeader(i);
|
||||
|
||||
for (uint32_t b = RSMI_GPU_BLOCK_FIRST; b <= RSMI_GPU_BLOCK_LAST; ++b) {
|
||||
err = rsmi_dev_error_count_get(i, static_cast<rsmi_gpu_block_t>(b), &ec);
|
||||
err = rsmi_dev_ecc_enabled_get(i, &enabled_mask);
|
||||
if (err == RSMI_STATUS_NOT_SUPPORTED) {
|
||||
std::cout <<
|
||||
"\t**Error Count Enabled Mask for is not supported on this machine"
|
||||
<< std::endl;
|
||||
} else {
|
||||
CHK_ERR_ASRT(err)
|
||||
IF_VERB(STANDARD) {
|
||||
std::cout << "Block Error Mask: 0x" << std::hex << enabled_mask <<
|
||||
std::endl;
|
||||
}
|
||||
}
|
||||
for (uint32_t b = RSMI_GPU_BLOCK_FIRST;
|
||||
b <= RSMI_GPU_BLOCK_LAST; b = b*2) {
|
||||
err = rsmi_dev_ecc_status_get(i, static_cast<rsmi_gpu_block_t>(b),
|
||||
&err_state);
|
||||
if (err == RSMI_STATUS_NOT_SUPPORTED) {
|
||||
std::cout << "\t**Error Count Status for " <<
|
||||
GetBlockNameStr(static_cast<rsmi_gpu_block_t>(b)) <<
|
||||
": Not supported on this machine" << std::endl;
|
||||
} else {
|
||||
CHK_ERR_ASRT(err)
|
||||
IF_VERB(STANDARD) {
|
||||
std::cout << "\t**Error count status for " <<
|
||||
GetBlockNameStr(static_cast<rsmi_gpu_block_t>(b)) <<
|
||||
" block: " << GetErrStateNameStr(err_state) << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
err = rsmi_dev_ecc_count_get(i, static_cast<rsmi_gpu_block_t>(b), &ec);
|
||||
|
||||
if (err == RSMI_STATUS_NOT_SUPPORTED) {
|
||||
std::cout << "\t**Error Count for " <<
|
||||
|
||||
@@ -60,6 +60,18 @@ static const std::map<rsmi_gpu_block_t, const char *> kBlockNameMap = {
|
||||
{RSMI_GPU_BLOCK_SDMA, "SDMA"},
|
||||
{RSMI_GPU_BLOCK_GFX, "GFX"},
|
||||
};
|
||||
static_assert(RSMI_GPU_BLOCK_LAST == RSMI_GPU_BLOCK_GFX,
|
||||
"kBlockNameMap needs to be updated");
|
||||
|
||||
static const std::map<rsmi_ras_err_state_t, const char *> kErrStateNameMap = {
|
||||
{RSMI_RAS_ERR_STATE_NONE, "None"},
|
||||
{RSMI_RAS_ERR_STATE_PARITY, "Error Unknown"},
|
||||
{RSMI_RAS_ERR_STATE_SING_C, "Single, Correctable"},
|
||||
{RSMI_RAS_ERR_STATE_MULT_UC, "Multiple, Uncorrectable"},
|
||||
{RSMI_RAS_ERR_STATE_POISON, "Poison"},
|
||||
};
|
||||
static_assert(RSMI_RAS_ERR_STATE_LAST == RSMI_RAS_ERR_STATE_POISON,
|
||||
"kErrStateNameMap needs to be updated");
|
||||
|
||||
static const struct option long_options[] = {
|
||||
{"iterations", required_argument, nullptr, 'i'},
|
||||
@@ -134,6 +146,9 @@ uint32_t ProcessCmdline(RSMITstGlobals* test, int arg_cnt, char** arg_list) {
|
||||
const char *GetBlockNameStr(rsmi_gpu_block_t id) {
|
||||
return kBlockNameMap.at(id);
|
||||
}
|
||||
const char *GetErrStateNameStr(rsmi_ras_err_state_t st) {
|
||||
return kErrStateNameMap.at(st);
|
||||
}
|
||||
|
||||
const char *FreqEnumToStr(rsmi_clk_type rsmi_clk) {
|
||||
static_assert(RSMI_CLK_TYPE_LAST == RSMI_CLK_TYPE_MEM,
|
||||
|
||||
@@ -62,6 +62,7 @@ uint32_t ProcessCmdline(RSMITstGlobals* test, int arg_cnt, char** arg_list);
|
||||
|
||||
void PrintTestHeader(uint32_t dv_ind);
|
||||
const char *GetBlockNameStr(rsmi_gpu_block_t id);
|
||||
const char *GetErrStateNameStr(rsmi_ras_err_state_t st);
|
||||
const char *FreqEnumToStr(rsmi_clk_type rsmi_clk);
|
||||
|
||||
#if ENABLE_SMI
|
||||
|
||||
Reference in New Issue
Block a user