From c3d8cfd066998862656706bb00d15ad986470fe5 Mon Sep 17 00:00:00 2001 From: Roland Veloz Date: Fri, 23 Aug 2019 20:00:36 -0500 Subject: Added code to support doing an NVM health check Added a method that will do an NVM (non-volatile memory) health check. In particular this method will check the flash error counts and does a predictive callout if the number of flash error counts exceeds the maximum allowed. This method also checks the bad block percentage and does a predictive callout if the number of bad block percentage exceeds the maximum allowed. A predictive callout is done if either or both fail the check. Added support in the runtime commands to make the nvm health check call as well. Also, when I did the ES (energy source) health check method, I was not very explicit in the method that it was doing an ES health check. So I updated the verbiage in the nvDimmCheckHealthStatus to add ES wherever appropriate as to make these two method explicit as to what health check is being performed. Change-Id: Ib9925fd2bb8430cf2121108329247d96072beb1b CQ: 473220 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82843 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Glenn Miles Reviewed-by: Zachary Clark Reviewed-by: Christian R Geddes --- src/include/runtime/interface.h | 8 +- src/include/usr/isteps/nvdimm/nvdimm.H | 51 +++++-- src/include/usr/isteps/nvdimm/nvdimmreasoncodes.H | 158 +++++++++++----------- 3 files changed, 127 insertions(+), 90 deletions(-) (limited to 'src/include') diff --git a/src/include/runtime/interface.h b/src/include/runtime/interface.h index 152226d54..638bf8b89 100644 --- a/src/include/runtime/interface.h +++ b/src/include/runtime/interface.h @@ -593,17 +593,19 @@ typedef struct hostInterfaces // Arm the NV logic HBRT_FW_NVDIMM_ARM = 0x0010, - /// The following operation pertains to the Health of the NVDIMM + /// The following operations pertain to the Health of the NVDIMM /// This operation can be performed with the arming/disarming /// operation, these operation types are orthogonal to each other - // Manufacturing energy source(ES) health check request + // Manufacturing(MNFG) energy source(ES) health check request HBRT_FW_MNFG_ES_HEALTH_CHECK = 0x0020, + // Manufacturing(MNFG) non-volatile memory(NVM) health check request + HBRT_FW_MNFG_NVM_HEALTH_CHECK = 0x0040 }; // NVDIMM (PHYP -> HBRT) message to request NVDIMM operation(s) struct nvdimm_operation_t { - uint64_t procId; // Retrieve all NVDIMMs under the processor ID, all + uint64_t procId; // Retrieve all NVDIMMs under the processor ID; all // FFs (HBRT_NVDIMM_OPERATION_APPLY_TO_ALL_NVDIMMS) // means operate on all NVDIMMs in the system uint32_t rsvd1; // reserved diff --git a/src/include/usr/isteps/nvdimm/nvdimm.H b/src/include/usr/isteps/nvdimm/nvdimm.H index 4f7804f3e..9d5e3c0e0 100644 --- a/src/include/usr/isteps/nvdimm/nvdimm.H +++ b/src/include/usr/isteps/nvdimm/nvdimm.H @@ -206,7 +206,8 @@ bool nvdimmArm(TARGETING::TargetHandleList &i_nvdimmTargetList); bool nvdimmDisarm(TARGETING::TargetHandleList &i_nvdimmTargetList); /** - * @brief Check the health status of the individual NVDIMMs supplied in list + * @brief Check the ES (enery source)/backup power module(BPM) health status of + * the individual NVDIMMs supplied in list * * @details The BPM will trigger the health check when power is applied at the * beginning of the IPL, with results ready to check about 20 mins @@ -219,25 +220,57 @@ bool nvdimmDisarm(TARGETING::TargetHandleList &i_nvdimmTargetList); * Bit 1 : Health Check Succeeded * Bit 2 : Health Check Failed * - * @param[in] i_nvdimmTargetList - list of NVDIMMs to check the health of + * @param[in] i_nvdimmTargetList - list of NVDIMMs to check the ES health of * - * @return false if one or more NVDIMMs fail health check, else true + * @return false if one or more NVDIMMs fail ES health check, else true */ -bool nvDimmCheckHealthStatus(TARGETING::TargetHandleList &i_nvdimmTargetList); +bool nvDimmEsCheckHealthStatus(const TARGETING::TargetHandleList + &i_nvdimmTargetList); /** - * @brief A wrapper around the call to nvDimmCheckHealthStatus + * @brief A wrapper around the call to nvDimmEsCheckHealthStatus * * @details This will aggregate all the NVDIMMs of the system and pass - * them to the call nvDimmCheckHealthStatus + * them to the call nvDimmEsCheckHealthStatus * - * @see nvDimmCheckHealthStatus for more details + * @see nvDimmEsCheckHealthStatus for more details * - * @return false if one or more NVDIMMs fail health check, else true + * @return false if one or more NVDIMMs fail an ES health check, else true */ -bool nvDimmCheckHealthStatusOnSystem(); +bool nvDimmEsCheckHealthStatusOnSystem(); +/* + * @brief Check the NVM (non-volatile memory)/flash health status of the + * individual NVDIMMs supplied in list. + * + * @details This method will check the flash error count registers + * (FLASH_ERROR_COUNT0 to FLASH_ERROR_COUNT2) to determine if the + * number of flash error exceeds the maximum allowed. Will also check + * the flash bad block percentage register (FLASH_BAD_BLK_PCT) to + * determine if the percentage exceeds the maximum allowed. + * If any one of these or both of these fail their perspective + * maximums then a callout will be made with either or both failures. + * + * @param[in] i_nvdimmTargetList - list of NVDIMMs to check the NVM health of + * + * @return false if one or more NVDIMMs fail NVM health check, else true + */ +bool nvDimmNvmCheckHealthStatus(const TARGETING::TargetHandleList + &i_nvdimmTargetList); + +/** + * @brief A wrapper around the call to nvDimmNvmCheckHealthStatus + * + * @details This will aggregate all the NVDIMMs of the system and pass + * them to the call nvDimmNvmCheckHealthStatus + * + * @see nvDimmNvmCheckHealthStatus for more details + * + * @return false if one or more NVDIMMs fail an NVM health check, else true + */ +bool nvDimmNvmCheckHealthStatusOnSystem(); + #endif /** diff --git a/src/include/usr/isteps/nvdimm/nvdimmreasoncodes.H b/src/include/usr/isteps/nvdimm/nvdimmreasoncodes.H index da69fb86e..ad5c6be50 100644 --- a/src/include/usr/isteps/nvdimm/nvdimmreasoncodes.H +++ b/src/include/usr/isteps/nvdimm/nvdimmreasoncodes.H @@ -98,11 +98,12 @@ enum nvdimmModuleId SET_ATTR_NVDIMM_ENCRYPTION_KEYS_FW = 0x30, SEND_ATTR_NVDIMM_ARMED = 0x31, NVDIMM_FACTORY_RESET = 0x32, - NVDIMM_HEALTH_CHECK = 0x33, + NVDIMM_ES_HEALTH_CHECK = 0x33, // Health check on the ES (energy source)/backup power module NVDIMM_CHECK_RESETN = 0x34, NVDIMM_CHECK_CSAVE = 0x35, NVDIMM_MODULE_HEALTH_STATUS_CHECK = 0x36, NVDIMM_SET_EVENT_NOTIFICATION = 0x37, + NVDIMM_NVM_HEALTH_CHECK = 0x38, // Health check on the NVM (non-volatile memory)/flash }; /** @@ -113,83 +114,84 @@ enum nvdimmModuleId */ enum nvdimmReasonCode { - NVDIMM_INVALID_REASONCODE = NVDIMM_COMP_ID | 0x00, // Invalid Reasoncode - NVDIMM_INVALID_OPERATION = NVDIMM_COMP_ID | 0x01, - NVDIMM_INVALID_DEVICE_TYPE = NVDIMM_COMP_ID | 0x02, - NVDIMM_ATTR_INFO_NOT_FOUND = NVDIMM_COMP_ID | 0x03, - NVDIMM_INVALID_CHIP = NVDIMM_COMP_ID | 0x04, - NVDIMM_I2C_MASTER_PATH_ERROR = NVDIMM_COMP_ID | 0x05, - NVDIMM_TARGET_NULL = NVDIMM_COMP_ID | 0x06, - NVDIMM_INVALID_ADDR_OFFSET_SIZE = NVDIMM_COMP_ID | 0x07, - NVDIMM_OVERFLOW_ERROR = NVDIMM_COMP_ID | 0x08, - NVDIMM_I2C_WRITE_PAGE_SIZE_ZERO = NVDIMM_COMP_ID | 0x09, - NVDIMM_INVALID_OFFSET = NVDIMM_COMP_ID | 0x0A, - NVDIMM_READ_FAILURE = NVDIMM_COMP_ID | 0x0B, // NV Controller read failure - NVDIMM_WRITE_FAILURE = NVDIMM_COMP_ID | 0x0C, // NV Controller write failure - NVDIMM_BACKUP_TIMEOUT = NVDIMM_COMP_ID | 0x0D, // Backup/save timeout - NVDIMM_RESTORE_TIMEOUT = NVDIMM_COMP_ID | 0x0E, // Restore timeout - NVDIMM_ERASE_TIMEOUT = NVDIMM_COMP_ID | 0x0F, // Erase timeout - NVDIMM_CHARGE_TIMEOUT = NVDIMM_COMP_ID | 0x10, // Battery charging timeout - NVDIMM_ARM_TIMEOUT = NVDIMM_COMP_ID | 0x11, // Arming timeout - NVDIMM_SET_ES_ERROR = NVDIMM_COMP_ID | 0x12, // Failure to set the ES policy - NVDIMM_MSS_STR_ENTRY_ERROR = NVDIMM_COMP_ID | 0x13, // Failure to enter STR - NVDIMM_MSS_STR_EXIT_ERROR = NVDIMM_COMP_ID | 0x14, // Failure to exit STR - NVDIMM_MSS_POST_RSTR_ERROR = NVDIMM_COMP_ID | 0x15, // Failure to perform post restore work - NVDIMM_OPEN_PAGE_TIMEOUT = NVDIMM_COMP_ID | 0x16, // Open page timeout - NVDIMM_STATUS_TIMEOUT = NVDIMM_COMP_ID | 0x17, // Status timeout - NVDIMM_ARM_FAILED = NVDIMM_COMP_ID | 0x18, // Failure to arm reset_n - NVDIMM_ERASE_FAILED = NVDIMM_COMP_ID | 0x19, // Failure to erase - NVDIMM_RESTORE_FAILED = NVDIMM_COMP_ID | 0x1A, // Failure to restore - NVDIMM_NOT_READY = NVDIMM_COMP_ID | 0x1B, // NVDIMM not ready for host to access - NVDIMM_NULL_FIRMWARE_REQUEST_PTR = NVDIMM_COMP_ID | 0x1C, // Firmware request is NULL - NVDIMM_UNSUPPORTED_NVDIMM_TYPE = NVDIMM_COMP_ID | 0x1D, // Unsupported NVDIMM type for update - NVDIMM_OPERATION_IN_PROGRESS = NVDIMM_COMP_ID | 0x1E, // NV controller is busy - NVDIMM_CHECKSUM_ERROR = NVDIMM_COMP_ID | 0x1F, // Checksum error between host and nv calculated - NVDIMM_ZERO_TOTAL_REGIONS = NVDIMM_COMP_ID | 0x20, // Zero write regions calculated - NVDIMM_UPDATE_MODE_UNCHANGED = NVDIMM_COMP_ID | 0x21, // Unable to change update mode - NVDIMM_FW_OPS_IN_PROGRESS_TIMEOUT = NVDIMM_COMP_ID | 0x22, // Operations In Progress timeout - NVDIMM_DATA_SIZE_TOO_LARGE = NVDIMM_COMP_ID | 0x23, // Trying to write too much data - NVDIMM_DATA_SIZE_INVALID = NVDIMM_COMP_ID | 0x24, // Data size is invalid - NVDIMM_BLOCK_NOT_RECEIVED = NVDIMM_COMP_ID | 0x25, // Block data not received - NVDIMM_FW_OPS_NOT_SUCCESSFUL = NVDIMM_COMP_ID | 0x26, // Unsuccessful Firmware Operation - NVDIMM_UPDATE_NOT_SUPPORTED = NVDIMM_COMP_ID | 0x27, // NV controller cannot be updated - NVDIMM_START_UPDATE = NVDIMM_COMP_ID | 0x28, // start update - NVDIMM_UPDATE_COMPLETE = NVDIMM_COMP_ID | 0x29, // update completed - NVDIMM_TPM_NOT_FOUND = NVDIMM_COMP_ID | 0x2A, // TPM not found - NVDIMM_POWER_SAVE_FAILURE = NVDIMM_COMP_ID | 0x2B, // Save failed due to power loss - NVDIMM_CSAVE_ERROR = NVDIMM_COMP_ID | 0x2C, // CSave failed due to error - NVDIMM_VOLTAGE_REGULATOR_FAILED = NVDIMM_COMP_ID | 0x2D, - NVDIMM_VDD_LOST = NVDIMM_COMP_ID | 0x2E, - NVDIMM_VPP_LOST = NVDIMM_COMP_ID | 0x2F, - NVDIMM_VTT_LOST = NVDIMM_COMP_ID | 0x30, - NVDIMM_DRAM_NOT_SELF_REFRESH = NVDIMM_COMP_ID | 0x31, - NVDIMM_CONTROLLER_HARDWARE_ERROR = NVDIMM_COMP_ID | 0x32, - NVDIMM_NVM_CONTROLLER_ERROR = NVDIMM_COMP_ID | 0x33, - NVDIMM_NVM_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x34, - NVDIMM_NOT_ENOUGH_ENERGY_FOR_CSAVE = NVDIMM_COMP_ID | 0x35, - NVDIMM_INVALID_FIRMWARE_ERROR = NVDIMM_COMP_ID | 0x36, // Module Health Status Registers - NVDIMM_CONFIG_DATA_ERROR = NVDIMM_COMP_ID | 0x37, - NVDIMM_NO_ES_PRESENT = NVDIMM_COMP_ID | 0x38, - NVDIMM_ES_POLICY_NOT_SET = NVDIMM_COMP_ID | 0x39, - NVDIMM_ES_HARDWARE_FAILURE = NVDIMM_COMP_ID | 0x3A, - NVDIMM_ES_HEALTH_ASSESSMENT_ERROR = NVDIMM_COMP_ID | 0x3B, - NVDIMM_ES_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x3C, - NVDIMM_ES_TEMP_ERROR = NVDIMM_COMP_ID | 0x3D, - NVDIMM_SET_EVENT_NOTIFICATION_ERROR = NVDIMM_COMP_ID | 0x3E, - NVDIMM_VERIF_BYTE_CHECK_FAILED = NVDIMM_COMP_ID | 0x3F, // Encryption key reg verif failed - NVDIMM_ENCRYPTION_ENABLE_FAILED = NVDIMM_COMP_ID | 0x40, // Encryption enable failed - NVDIMM_ENCRYPTION_ERASE_PENDING_FAILED = NVDIMM_COMP_ID | 0x41, // Encryption crypto erase pending failed - NVDIMM_ENCRYPTION_ERASE_FAILED = NVDIMM_COMP_ID | 0x42, // Encryption crypto erase failed - NVDIMM_ENCRYPTION_UNLOCK_FAILED = NVDIMM_COMP_ID | 0x43, // Encryption unlock failed - NVDIMM_ENCRYPTION_INVALID_ATTRIBUTE = NVDIMM_COMP_ID | 0x44, // Encryption attribute key data invalid - NVDIMM_ENCRYPTION_KEY_ATTRS_INVALID = NVDIMM_COMP_ID | 0x45, // Encryption key attributes are both invalid - NVDIMM_ENCRYPTION_MAX_DARN_ERRORS = NVDIMM_COMP_ID | 0x46, // Darn random key gen reached max errors - NVDIMM_ENCRYPTION_BAD_RANDOM_DATA = NVDIMM_COMP_ID | 0x47, // Generated key data not valid - NVDIMM_CANNOT_MAKE_ATTRIBUTE = NVDIMM_COMP_ID | 0x48, // Cannot make Attribute - NVDIMM_HEALTH_CHECK_IN_PROGRESS_FAILURE = NVDIMM_COMP_ID | 0x49, // !< pertains to ES_CMD_STATUS0[0]; the health check in progress flag - NVDIMM_HEALTH_CHECK_REPORTED_FAILURE = NVDIMM_COMP_ID | 0x4A, // !< pertains to ES_CMD_STATUS0[2]; the health check reported a failure flag - NVDIMM_LIFETIME_MIN_REQ_NOT_MET = NVDIMM_COMP_ID | 0x4B, // !< pertains to ES_LIFETIME; BPM does not meet minimum requirement for a new BPM - NVDIMM_HEALTH_CHECK_NEVER_INITIATED = NVDIMM_COMP_ID | 0x4C, // !< A health check was never initiated at start of IPL + NVDIMM_INVALID_REASONCODE = NVDIMM_COMP_ID | 0x00, // Invalid Reasoncode + NVDIMM_INVALID_OPERATION = NVDIMM_COMP_ID | 0x01, + NVDIMM_INVALID_DEVICE_TYPE = NVDIMM_COMP_ID | 0x02, + NVDIMM_ATTR_INFO_NOT_FOUND = NVDIMM_COMP_ID | 0x03, + NVDIMM_INVALID_CHIP = NVDIMM_COMP_ID | 0x04, + NVDIMM_I2C_MASTER_PATH_ERROR = NVDIMM_COMP_ID | 0x05, + NVDIMM_TARGET_NULL = NVDIMM_COMP_ID | 0x06, + NVDIMM_INVALID_ADDR_OFFSET_SIZE = NVDIMM_COMP_ID | 0x07, + NVDIMM_OVERFLOW_ERROR = NVDIMM_COMP_ID | 0x08, + NVDIMM_I2C_WRITE_PAGE_SIZE_ZERO = NVDIMM_COMP_ID | 0x09, + NVDIMM_INVALID_OFFSET = NVDIMM_COMP_ID | 0x0A, + NVDIMM_READ_FAILURE = NVDIMM_COMP_ID | 0x0B, // NV Controller read failure + NVDIMM_WRITE_FAILURE = NVDIMM_COMP_ID | 0x0C, // NV Controller write failure + NVDIMM_BACKUP_TIMEOUT = NVDIMM_COMP_ID | 0x0D, // Backup/save timeout + NVDIMM_RESTORE_TIMEOUT = NVDIMM_COMP_ID | 0x0E, // Restore timeout + NVDIMM_ERASE_TIMEOUT = NVDIMM_COMP_ID | 0x0F, // Erase timeout + NVDIMM_CHARGE_TIMEOUT = NVDIMM_COMP_ID | 0x10, // Battery charging timeout + NVDIMM_ARM_TIMEOUT = NVDIMM_COMP_ID | 0x11, // Arming timeout + NVDIMM_SET_ES_ERROR = NVDIMM_COMP_ID | 0x12, // Failure to set the ES policy + NVDIMM_MSS_STR_ENTRY_ERROR = NVDIMM_COMP_ID | 0x13, // Failure to enter STR + NVDIMM_MSS_STR_EXIT_ERROR = NVDIMM_COMP_ID | 0x14, // Failure to exit STR + NVDIMM_MSS_POST_RSTR_ERROR = NVDIMM_COMP_ID | 0x15, // Failure to perform post restore work + NVDIMM_OPEN_PAGE_TIMEOUT = NVDIMM_COMP_ID | 0x16, // Open page timeout + NVDIMM_STATUS_TIMEOUT = NVDIMM_COMP_ID | 0x17, // Status timeout + NVDIMM_ARM_FAILED = NVDIMM_COMP_ID | 0x18, // Failure to arm reset_n + NVDIMM_ERASE_FAILED = NVDIMM_COMP_ID | 0x19, // Failure to erase + NVDIMM_RESTORE_FAILED = NVDIMM_COMP_ID | 0x1A, // Failure to restore + NVDIMM_NOT_READY = NVDIMM_COMP_ID | 0x1B, // NVDIMM not ready for host to access + NVDIMM_NULL_FIRMWARE_REQUEST_PTR = NVDIMM_COMP_ID | 0x1C, // Firmware request is NULL + NVDIMM_UNSUPPORTED_NVDIMM_TYPE = NVDIMM_COMP_ID | 0x1D, // Unsupported NVDIMM type for update + NVDIMM_OPERATION_IN_PROGRESS = NVDIMM_COMP_ID | 0x1E, // NV controller is busy + NVDIMM_CHECKSUM_ERROR = NVDIMM_COMP_ID | 0x1F, // Checksum error between host and nv calculated + NVDIMM_ZERO_TOTAL_REGIONS = NVDIMM_COMP_ID | 0x20, // Zero write regions calculated + NVDIMM_UPDATE_MODE_UNCHANGED = NVDIMM_COMP_ID | 0x21, // Unable to change update mode + NVDIMM_FW_OPS_IN_PROGRESS_TIMEOUT = NVDIMM_COMP_ID | 0x22, // Operations In Progress timeout + NVDIMM_DATA_SIZE_TOO_LARGE = NVDIMM_COMP_ID | 0x23, // Trying to write too much data + NVDIMM_DATA_SIZE_INVALID = NVDIMM_COMP_ID | 0x24, // Data size is invalid + NVDIMM_BLOCK_NOT_RECEIVED = NVDIMM_COMP_ID | 0x25, // Block data not received + NVDIMM_FW_OPS_NOT_SUCCESSFUL = NVDIMM_COMP_ID | 0x26, // Unsuccessful Firmware Operation + NVDIMM_UPDATE_NOT_SUPPORTED = NVDIMM_COMP_ID | 0x27, // NV controller cannot be updated + NVDIMM_START_UPDATE = NVDIMM_COMP_ID | 0x28, // start update + NVDIMM_UPDATE_COMPLETE = NVDIMM_COMP_ID | 0x29, // update completed + NVDIMM_TPM_NOT_FOUND = NVDIMM_COMP_ID | 0x2A, // TPM not found + NVDIMM_POWER_SAVE_FAILURE = NVDIMM_COMP_ID | 0x2B, // Save failed due to power loss + NVDIMM_CSAVE_ERROR = NVDIMM_COMP_ID | 0x2C, // CSave failed due to error + NVDIMM_VOLTAGE_REGULATOR_FAILED = NVDIMM_COMP_ID | 0x2D, + NVDIMM_VDD_LOST = NVDIMM_COMP_ID | 0x2E, + NVDIMM_VPP_LOST = NVDIMM_COMP_ID | 0x2F, + NVDIMM_VTT_LOST = NVDIMM_COMP_ID | 0x30, + NVDIMM_DRAM_NOT_SELF_REFRESH = NVDIMM_COMP_ID | 0x31, + NVDIMM_CONTROLLER_HARDWARE_ERROR = NVDIMM_COMP_ID | 0x32, + NVDIMM_NVM_CONTROLLER_ERROR = NVDIMM_COMP_ID | 0x33, + NVDIMM_NVM_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x34, + NVDIMM_NOT_ENOUGH_ENERGY_FOR_CSAVE = NVDIMM_COMP_ID | 0x35, + NVDIMM_INVALID_FIRMWARE_ERROR = NVDIMM_COMP_ID | 0x36, // Module Health Status Registers + NVDIMM_CONFIG_DATA_ERROR = NVDIMM_COMP_ID | 0x37, + NVDIMM_NO_ES_PRESENT = NVDIMM_COMP_ID | 0x38, + NVDIMM_ES_POLICY_NOT_SET = NVDIMM_COMP_ID | 0x39, + NVDIMM_ES_HARDWARE_FAILURE = NVDIMM_COMP_ID | 0x3A, + NVDIMM_ES_HEALTH_ASSESSMENT_ERROR = NVDIMM_COMP_ID | 0x3B, + NVDIMM_ES_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x3C, + NVDIMM_ES_TEMP_ERROR = NVDIMM_COMP_ID | 0x3D, + NVDIMM_SET_EVENT_NOTIFICATION_ERROR = NVDIMM_COMP_ID | 0x3E, + NVDIMM_VERIF_BYTE_CHECK_FAILED = NVDIMM_COMP_ID | 0x3F, // Encryption key reg verif failed + NVDIMM_ENCRYPTION_ENABLE_FAILED = NVDIMM_COMP_ID | 0x40, // Encryption enable failed + NVDIMM_ENCRYPTION_ERASE_PENDING_FAILED = NVDIMM_COMP_ID | 0x41, // Encryption crypto erase pending failed + NVDIMM_ENCRYPTION_ERASE_FAILED = NVDIMM_COMP_ID | 0x42, // Encryption crypto erase failed + NVDIMM_ENCRYPTION_UNLOCK_FAILED = NVDIMM_COMP_ID | 0x43, // Encryption unlock failed + NVDIMM_ENCRYPTION_INVALID_ATTRIBUTE = NVDIMM_COMP_ID | 0x44, // Encryption attribute key data invalid + NVDIMM_ENCRYPTION_KEY_ATTRS_INVALID = NVDIMM_COMP_ID | 0x45, // Encryption key attributes are both invalid + NVDIMM_ENCRYPTION_MAX_DARN_ERRORS = NVDIMM_COMP_ID | 0x46, // Darn random key gen reached max errors + NVDIMM_ENCRYPTION_BAD_RANDOM_DATA = NVDIMM_COMP_ID | 0x47, // Generated key data not valid + NVDIMM_CANNOT_MAKE_ATTRIBUTE = NVDIMM_COMP_ID | 0x48, // Cannot make Attribute + NVDIMM_ES_HEALTH_CHECK_IN_PROGRESS_FAILURE = NVDIMM_COMP_ID | 0x49, // !< pertains to ES_CMD_STATUS0[0]; the ES health check in progress flag + NVDIMM_ES_HEALTH_CHECK_REPORTED_FAILURE = NVDIMM_COMP_ID | 0x4A, // !< pertains to ES_CMD_STATUS0[2]; the ES health check reported a failure flag + NVDIMM_ES_LIFETIME_MIN_REQ_NOT_MET = NVDIMM_COMP_ID | 0x4B, // !< pertains to ES_LIFETIME; BPM does not meet minimum requirement for a new BPM + NVDIMM_ES_HEALTH_CHECK_NEVER_INITIATED = NVDIMM_COMP_ID | 0x4C, // !< An ES health check was never initiated at start of IPL + NVDIMM_NVM_HEALTH_CHECK_FAILED = NVDIMM_COMP_ID | 0x4D, // !< An NVM health check on the NVDIMM failed }; enum UserDetailsTypes -- cgit v1.2.1