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:
Arif, Maisam
2025-06-03 17:53:33 -05:00
committed by GitHub
parent ba8d2f0d84
commit e38de3932f
8 changed files with 28 additions and 17 deletions
+1
View File
@@ -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
+5 -7
View File
@@ -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";
+11 -10
View File
@@ -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;
}
}
+4
View File
@@ -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;