Add Directory Not Found Status code to map to ENOTDIR (#238)
* Corrected ecc count error return
* Added directory not found error code
* Added ENOTDIR mapping to RSMI_STATUS_DIRECTORY_NOT_FOUND in ErrnoToRsmiStatus
---------
Signed-off-by: Maisam Arif <Maisam.Arif@amd.com>
Co-authored-by: gabrpham_amdeng <Gabriel.Pham@amd.com>
[ROCm/amdsmi commit: e2692ab533]
This commit is contained in:
@@ -316,6 +316,7 @@ typedef enum {
|
||||
AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS = 17, //!< The provided input is out of allowable or safe range
|
||||
AMDSMI_STATUS_INIT_ERROR = 18, //!< An error occurred when initializing internal data structures
|
||||
AMDSMI_STATUS_REFCOUNT_OVERFLOW = 19, //!< An internal reference counter exceeded INT32_MAX
|
||||
AMDSMI_STATUS_DIRECTORY_NOT_FOUND = 20, //!< Error when a directory is not found, maps to ENOTDIR
|
||||
// Processor related errors
|
||||
AMDSMI_STATUS_BUSY = 30, //!< Processor busy
|
||||
AMDSMI_STATUS_NOT_FOUND = 31, //!< Processor Not found
|
||||
|
||||
@@ -58,6 +58,7 @@ const std::map<rsmi_status_t, amdsmi_status_t> rsmi_status_map = {
|
||||
{RSMI_STATUS_UNEXPECTED_DATA, AMDSMI_STATUS_UNEXPECTED_DATA},
|
||||
{RSMI_STATUS_BUSY, AMDSMI_STATUS_BUSY},
|
||||
{RSMI_STATUS_REFCOUNT_OVERFLOW, AMDSMI_STATUS_REFCOUNT_OVERFLOW},
|
||||
{RSMI_STATUS_DIRECTORY_NOT_FOUND, AMDSMI_STATUS_DIRECTORY_NOT_FOUND},
|
||||
{RSMI_STATUS_SETTING_UNAVAILABLE, AMDSMI_STATUS_SETTING_UNAVAILABLE},
|
||||
{RSMI_STATUS_AMDGPU_RESTART_ERR, AMDSMI_STATUS_AMDGPU_RESTART_ERR},
|
||||
{RSMI_STATUS_UNKNOWN_ERROR, AMDSMI_STATUS_UNKNOWN_ERROR},
|
||||
|
||||
@@ -66,6 +66,7 @@ class AmdSmiLibraryException(AmdSmiException):
|
||||
amdsmi_wrapper.AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS : "AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS - Out of bounds",
|
||||
amdsmi_wrapper.AMDSMI_STATUS_INIT_ERROR : "AMDSMI_STATUS_INIT_ERROR - Initialization error",
|
||||
amdsmi_wrapper.AMDSMI_STATUS_REFCOUNT_OVERFLOW : "AMDSMI_STATUS_REFCOUNT_OVERFLOW - Internal reference counter exceeded INT32_MAX",
|
||||
amdsmi_wrapper.AMDSMI_STATUS_DIRECTORY_NOT_FOUND : "AMDSMI_STATUS_DIRECTORY_NOT_FOUND - Error when a directory is not found, maps to ENOTDIR",
|
||||
amdsmi_wrapper.AMDSMI_STATUS_BUSY : "AMDSMI_STATUS_BUSY - Device busy",
|
||||
amdsmi_wrapper.AMDSMI_STATUS_NOT_FOUND : "AMDSMI_STATUS_NOT_FOUND - Device Not found",
|
||||
amdsmi_wrapper.AMDSMI_STATUS_NOT_INIT : "AMDSMI_STATUS_NOT_INIT - Device not initialized",
|
||||
|
||||
@@ -302,6 +302,7 @@ amdsmi_status_t__enumvalues = {
|
||||
17: 'AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS',
|
||||
18: 'AMDSMI_STATUS_INIT_ERROR',
|
||||
19: 'AMDSMI_STATUS_REFCOUNT_OVERFLOW',
|
||||
20: 'AMDSMI_STATUS_DIRECTORY_NOT_FOUND',
|
||||
30: 'AMDSMI_STATUS_BUSY',
|
||||
31: 'AMDSMI_STATUS_NOT_FOUND',
|
||||
32: 'AMDSMI_STATUS_NOT_INIT',
|
||||
@@ -348,6 +349,7 @@ AMDSMI_STATUS_INTERNAL_EXCEPTION = 16
|
||||
AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS = 17
|
||||
AMDSMI_STATUS_INIT_ERROR = 18
|
||||
AMDSMI_STATUS_REFCOUNT_OVERFLOW = 19
|
||||
AMDSMI_STATUS_DIRECTORY_NOT_FOUND = 20
|
||||
AMDSMI_STATUS_BUSY = 30
|
||||
AMDSMI_STATUS_NOT_FOUND = 31
|
||||
AMDSMI_STATUS_NOT_INIT = 32
|
||||
@@ -3119,6 +3121,7 @@ __all__ = \
|
||||
'AMDSMI_STATUS_AMDGPU_RESTART_ERR', 'AMDSMI_STATUS_API_FAILED',
|
||||
'AMDSMI_STATUS_ARG_PTR_NULL', 'AMDSMI_STATUS_BUSY',
|
||||
'AMDSMI_STATUS_CORRUPTED_EEPROM',
|
||||
'AMDSMI_STATUS_DIRECTORY_NOT_FOUND',
|
||||
'AMDSMI_STATUS_DRIVER_NOT_LOADED', 'AMDSMI_STATUS_DRM_ERROR',
|
||||
'AMDSMI_STATUS_FAIL_LOAD_MODULE',
|
||||
'AMDSMI_STATUS_FAIL_LOAD_SYMBOL', 'AMDSMI_STATUS_FILE_ERROR',
|
||||
|
||||
@@ -108,6 +108,8 @@ typedef enum {
|
||||
//!< being used
|
||||
RSMI_STATUS_REFCOUNT_OVERFLOW, //!< An internal reference counter
|
||||
//!< exceeded INT32_MAX
|
||||
RSMI_STATUS_DIRECTORY_NOT_FOUND, //!< Error when a directory is not
|
||||
//!< found, maps to ENOTDIR
|
||||
RSMI_STATUS_SETTING_UNAVAILABLE, //!< Requested setting is unavailable
|
||||
//!< for the current device
|
||||
RSMI_STATUS_AMDGPU_RESTART_ERR, //!< Could not successfully restart
|
||||
|
||||
@@ -706,13 +706,6 @@ rsmi_dev_ecc_count_get(uint32_t dv_ind, rsmi_gpu_block_t block,
|
||||
ret = GetDevValueVec(type, dv_ind, &val_vec);
|
||||
if (val_vec.size() < 2 ) ret = RSMI_STATUS_FILE_ERROR;
|
||||
|
||||
if (ret == RSMI_STATUS_FILE_ERROR) {
|
||||
ss << __PRETTY_FUNCTION__ << " | ======= end ======="
|
||||
<< ", GetDevValueVec() ret was RSMI_STATUS_FILE_ERROR "
|
||||
<< "-> reporting RSMI_STATUS_NOT_SUPPORTED";
|
||||
LOG_ERROR(ss);
|
||||
return RSMI_STATUS_NOT_SUPPORTED;
|
||||
}
|
||||
if (ret != RSMI_STATUS_SUCCESS) {
|
||||
ss << __PRETTY_FUNCTION__ << " | ======= end ======="
|
||||
<< ", GetDevValueVec() ret was not RSMI_STATUS_SUCCESS"
|
||||
@@ -4248,6 +4241,11 @@ rsmi_status_string(rsmi_status_t status, const char **status_string) {
|
||||
"counter exceeded INT32_MAX";
|
||||
break;
|
||||
|
||||
case RSMI_STATUS_DIRECTORY_NOT_FOUND:
|
||||
*status_string = "RSMI_STATUS_DIRECTORY_NOT_FOUND: Error when a "
|
||||
"directory is not found, maps to ENOTDIR";
|
||||
break;
|
||||
|
||||
case RSMI_STATUS_SETTING_UNAVAILABLE:
|
||||
*status_string = "RSMI_STATUS_SETTING_UNAVAILABLE: Requested setting is "
|
||||
"unavailable for the current device";
|
||||
|
||||
@@ -327,18 +327,19 @@ GetDevBinaryBlob(amd::smi::DevInfoTypes type,
|
||||
|
||||
rsmi_status_t ErrnoToRsmiStatus(int err) {
|
||||
switch (err) {
|
||||
case 0: return RSMI_STATUS_SUCCESS;
|
||||
case ESRCH: return RSMI_STATUS_NOT_FOUND;
|
||||
case EACCES: return RSMI_STATUS_PERMISSION;
|
||||
case 0: return RSMI_STATUS_SUCCESS;
|
||||
case ESRCH: return RSMI_STATUS_NOT_FOUND;
|
||||
case EACCES: return RSMI_STATUS_PERMISSION;
|
||||
case EPERM:
|
||||
case ENOENT: return RSMI_STATUS_NOT_SUPPORTED;
|
||||
case ENOENT: return RSMI_STATUS_NOT_SUPPORTED;
|
||||
case EBADF:
|
||||
case EISDIR: return RSMI_STATUS_FILE_ERROR;
|
||||
case EINTR: return RSMI_STATUS_INTERRUPT;
|
||||
case EIO: return RSMI_STATUS_UNEXPECTED_SIZE;
|
||||
case ENXIO: return RSMI_STATUS_UNEXPECTED_DATA;
|
||||
case EBUSY: return RSMI_STATUS_BUSY;
|
||||
case EINVAL: return RSMI_STATUS_INVALID_ARGS;
|
||||
case EISDIR: return RSMI_STATUS_FILE_ERROR;
|
||||
case EINTR: return RSMI_STATUS_INTERRUPT;
|
||||
case EIO: return RSMI_STATUS_UNEXPECTED_SIZE;
|
||||
case ENXIO: return RSMI_STATUS_UNEXPECTED_DATA;
|
||||
case EBUSY: return RSMI_STATUS_BUSY;
|
||||
case EINVAL: return RSMI_STATUS_INVALID_ARGS;
|
||||
case ENOTDIR: return RSMI_STATUS_DIRECTORY_NOT_FOUND;
|
||||
default: return RSMI_STATUS_UNKNOWN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -262,6 +262,10 @@ amdsmi_status_code_to_string(amdsmi_status_t status, const char **status_string)
|
||||
*status_string = "AMDSMI_STATUS_REFCOUNT_OVERFLOW: An internal reference"
|
||||
" counter exceeded INT32_MAX.";
|
||||
break;
|
||||
case AMDSMI_STATUS_DIRECTORY_NOT_FOUND:
|
||||
*status_string = "AMDSMI_STATUS_DIRECTORY_NOT_FOUND: Error when a"
|
||||
" directory is not found, maps to ENOTDIR.";
|
||||
break;
|
||||
case AMDSMI_STATUS_BUSY:
|
||||
*status_string = "AMDSMI_STATUS_BUSY: Processor busy.";
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user