Skip to content

Commit c3d8cfd

Browse files
velozrcrgeddes
authored andcommitted
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 <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Glenn Miles <milesg@ibm.com> Reviewed-by: Zachary Clark <zach@ibm.com> Reviewed-by: Christian R Geddes <crgeddes@us.ibm.com>
1 parent e22e362 commit c3d8cfd

File tree

7 files changed

+807
-223
lines changed

7 files changed

+807
-223
lines changed

src/include/runtime/interface.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -593,17 +593,19 @@ typedef struct hostInterfaces
593593
// Arm the NV logic
594594
HBRT_FW_NVDIMM_ARM = 0x0010,
595595

596-
/// The following operation pertains to the Health of the NVDIMM
596+
/// The following operations pertain to the Health of the NVDIMM
597597
/// This operation can be performed with the arming/disarming
598598
/// operation, these operation types are orthogonal to each other
599-
// Manufacturing energy source(ES) health check request
599+
// Manufacturing(MNFG) energy source(ES) health check request
600600
HBRT_FW_MNFG_ES_HEALTH_CHECK = 0x0020,
601+
// Manufacturing(MNFG) non-volatile memory(NVM) health check request
602+
HBRT_FW_MNFG_NVM_HEALTH_CHECK = 0x0040
601603
};
602604

603605
// NVDIMM (PHYP -> HBRT) message to request NVDIMM operation(s)
604606
struct nvdimm_operation_t
605607
{
606-
uint64_t procId; // Retrieve all NVDIMMs under the processor ID, all
608+
uint64_t procId; // Retrieve all NVDIMMs under the processor ID; all
607609
// FFs (HBRT_NVDIMM_OPERATION_APPLY_TO_ALL_NVDIMMS)
608610
// means operate on all NVDIMMs in the system
609611
uint32_t rsvd1; // reserved

src/include/usr/isteps/nvdimm/nvdimm.H

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ bool nvdimmArm(TARGETING::TargetHandleList &i_nvdimmTargetList);
206206
bool nvdimmDisarm(TARGETING::TargetHandleList &i_nvdimmTargetList);
207207

208208
/**
209-
* @brief Check the health status of the individual NVDIMMs supplied in list
209+
* @brief Check the ES (enery source)/backup power module(BPM) health status of
210+
* the individual NVDIMMs supplied in list
210211
*
211212
* @details The BPM will trigger the health check when power is applied at the
212213
* beginning of the IPL, with results ready to check about 20 mins
@@ -219,25 +220,57 @@ bool nvdimmDisarm(TARGETING::TargetHandleList &i_nvdimmTargetList);
219220
* Bit 1 : Health Check Succeeded
220221
* Bit 2 : Health Check Failed
221222
*
222-
* @param[in] i_nvdimmTargetList - list of NVDIMMs to check the health of
223+
* @param[in] i_nvdimmTargetList - list of NVDIMMs to check the ES health of
223224
*
224-
* @return false if one or more NVDIMMs fail health check, else true
225+
* @return false if one or more NVDIMMs fail ES health check, else true
225226
*/
226-
bool nvDimmCheckHealthStatus(TARGETING::TargetHandleList &i_nvdimmTargetList);
227+
bool nvDimmEsCheckHealthStatus(const TARGETING::TargetHandleList
228+
&i_nvdimmTargetList);
227229

228230
/**
229-
* @brief A wrapper around the call to nvDimmCheckHealthStatus
231+
* @brief A wrapper around the call to nvDimmEsCheckHealthStatus
230232
*
231233
* @details This will aggregate all the NVDIMMs of the system and pass
232-
* them to the call nvDimmCheckHealthStatus
234+
* them to the call nvDimmEsCheckHealthStatus
233235
*
234-
* @see nvDimmCheckHealthStatus for more details
236+
* @see nvDimmEsCheckHealthStatus for more details
235237
*
236-
* @return false if one or more NVDIMMs fail health check, else true
238+
* @return false if one or more NVDIMMs fail an ES health check, else true
237239
*/
238-
bool nvDimmCheckHealthStatusOnSystem();
240+
bool nvDimmEsCheckHealthStatusOnSystem();
239241

240242

243+
/*
244+
* @brief Check the NVM (non-volatile memory)/flash health status of the
245+
* individual NVDIMMs supplied in list.
246+
*
247+
* @details This method will check the flash error count registers
248+
* (FLASH_ERROR_COUNT0 to FLASH_ERROR_COUNT2) to determine if the
249+
* number of flash error exceeds the maximum allowed. Will also check
250+
* the flash bad block percentage register (FLASH_BAD_BLK_PCT) to
251+
* determine if the percentage exceeds the maximum allowed.
252+
* If any one of these or both of these fail their perspective
253+
* maximums then a callout will be made with either or both failures.
254+
*
255+
* @param[in] i_nvdimmTargetList - list of NVDIMMs to check the NVM health of
256+
*
257+
* @return false if one or more NVDIMMs fail NVM health check, else true
258+
*/
259+
bool nvDimmNvmCheckHealthStatus(const TARGETING::TargetHandleList
260+
&i_nvdimmTargetList);
261+
262+
/**
263+
* @brief A wrapper around the call to nvDimmNvmCheckHealthStatus
264+
*
265+
* @details This will aggregate all the NVDIMMs of the system and pass
266+
* them to the call nvDimmNvmCheckHealthStatus
267+
*
268+
* @see nvDimmNvmCheckHealthStatus for more details
269+
*
270+
* @return false if one or more NVDIMMs fail an NVM health check, else true
271+
*/
272+
bool nvDimmNvmCheckHealthStatusOnSystem();
273+
241274
#endif
242275

243276
/**

src/include/usr/isteps/nvdimm/nvdimmreasoncodes.H

Lines changed: 80 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,12 @@ enum nvdimmModuleId
9898
SET_ATTR_NVDIMM_ENCRYPTION_KEYS_FW = 0x30,
9999
SEND_ATTR_NVDIMM_ARMED = 0x31,
100100
NVDIMM_FACTORY_RESET = 0x32,
101-
NVDIMM_HEALTH_CHECK = 0x33,
101+
NVDIMM_ES_HEALTH_CHECK = 0x33, // Health check on the ES (energy source)/backup power module
102102
NVDIMM_CHECK_RESETN = 0x34,
103103
NVDIMM_CHECK_CSAVE = 0x35,
104104
NVDIMM_MODULE_HEALTH_STATUS_CHECK = 0x36,
105105
NVDIMM_SET_EVENT_NOTIFICATION = 0x37,
106+
NVDIMM_NVM_HEALTH_CHECK = 0x38, // Health check on the NVM (non-volatile memory)/flash
106107
};
107108

108109
/**
@@ -113,83 +114,84 @@ enum nvdimmModuleId
113114
*/
114115
enum nvdimmReasonCode
115116
{
116-
NVDIMM_INVALID_REASONCODE = NVDIMM_COMP_ID | 0x00, // Invalid Reasoncode
117-
NVDIMM_INVALID_OPERATION = NVDIMM_COMP_ID | 0x01,
118-
NVDIMM_INVALID_DEVICE_TYPE = NVDIMM_COMP_ID | 0x02,
119-
NVDIMM_ATTR_INFO_NOT_FOUND = NVDIMM_COMP_ID | 0x03,
120-
NVDIMM_INVALID_CHIP = NVDIMM_COMP_ID | 0x04,
121-
NVDIMM_I2C_MASTER_PATH_ERROR = NVDIMM_COMP_ID | 0x05,
122-
NVDIMM_TARGET_NULL = NVDIMM_COMP_ID | 0x06,
123-
NVDIMM_INVALID_ADDR_OFFSET_SIZE = NVDIMM_COMP_ID | 0x07,
124-
NVDIMM_OVERFLOW_ERROR = NVDIMM_COMP_ID | 0x08,
125-
NVDIMM_I2C_WRITE_PAGE_SIZE_ZERO = NVDIMM_COMP_ID | 0x09,
126-
NVDIMM_INVALID_OFFSET = NVDIMM_COMP_ID | 0x0A,
127-
NVDIMM_READ_FAILURE = NVDIMM_COMP_ID | 0x0B, // NV Controller read failure
128-
NVDIMM_WRITE_FAILURE = NVDIMM_COMP_ID | 0x0C, // NV Controller write failure
129-
NVDIMM_BACKUP_TIMEOUT = NVDIMM_COMP_ID | 0x0D, // Backup/save timeout
130-
NVDIMM_RESTORE_TIMEOUT = NVDIMM_COMP_ID | 0x0E, // Restore timeout
131-
NVDIMM_ERASE_TIMEOUT = NVDIMM_COMP_ID | 0x0F, // Erase timeout
132-
NVDIMM_CHARGE_TIMEOUT = NVDIMM_COMP_ID | 0x10, // Battery charging timeout
133-
NVDIMM_ARM_TIMEOUT = NVDIMM_COMP_ID | 0x11, // Arming timeout
134-
NVDIMM_SET_ES_ERROR = NVDIMM_COMP_ID | 0x12, // Failure to set the ES policy
135-
NVDIMM_MSS_STR_ENTRY_ERROR = NVDIMM_COMP_ID | 0x13, // Failure to enter STR
136-
NVDIMM_MSS_STR_EXIT_ERROR = NVDIMM_COMP_ID | 0x14, // Failure to exit STR
137-
NVDIMM_MSS_POST_RSTR_ERROR = NVDIMM_COMP_ID | 0x15, // Failure to perform post restore work
138-
NVDIMM_OPEN_PAGE_TIMEOUT = NVDIMM_COMP_ID | 0x16, // Open page timeout
139-
NVDIMM_STATUS_TIMEOUT = NVDIMM_COMP_ID | 0x17, // Status timeout
140-
NVDIMM_ARM_FAILED = NVDIMM_COMP_ID | 0x18, // Failure to arm reset_n
141-
NVDIMM_ERASE_FAILED = NVDIMM_COMP_ID | 0x19, // Failure to erase
142-
NVDIMM_RESTORE_FAILED = NVDIMM_COMP_ID | 0x1A, // Failure to restore
143-
NVDIMM_NOT_READY = NVDIMM_COMP_ID | 0x1B, // NVDIMM not ready for host to access
144-
NVDIMM_NULL_FIRMWARE_REQUEST_PTR = NVDIMM_COMP_ID | 0x1C, // Firmware request is NULL
145-
NVDIMM_UNSUPPORTED_NVDIMM_TYPE = NVDIMM_COMP_ID | 0x1D, // Unsupported NVDIMM type for update
146-
NVDIMM_OPERATION_IN_PROGRESS = NVDIMM_COMP_ID | 0x1E, // NV controller is busy
147-
NVDIMM_CHECKSUM_ERROR = NVDIMM_COMP_ID | 0x1F, // Checksum error between host and nv calculated
148-
NVDIMM_ZERO_TOTAL_REGIONS = NVDIMM_COMP_ID | 0x20, // Zero write regions calculated
149-
NVDIMM_UPDATE_MODE_UNCHANGED = NVDIMM_COMP_ID | 0x21, // Unable to change update mode
150-
NVDIMM_FW_OPS_IN_PROGRESS_TIMEOUT = NVDIMM_COMP_ID | 0x22, // Operations In Progress timeout
151-
NVDIMM_DATA_SIZE_TOO_LARGE = NVDIMM_COMP_ID | 0x23, // Trying to write too much data
152-
NVDIMM_DATA_SIZE_INVALID = NVDIMM_COMP_ID | 0x24, // Data size is invalid
153-
NVDIMM_BLOCK_NOT_RECEIVED = NVDIMM_COMP_ID | 0x25, // Block data not received
154-
NVDIMM_FW_OPS_NOT_SUCCESSFUL = NVDIMM_COMP_ID | 0x26, // Unsuccessful Firmware Operation
155-
NVDIMM_UPDATE_NOT_SUPPORTED = NVDIMM_COMP_ID | 0x27, // NV controller cannot be updated
156-
NVDIMM_START_UPDATE = NVDIMM_COMP_ID | 0x28, // start update
157-
NVDIMM_UPDATE_COMPLETE = NVDIMM_COMP_ID | 0x29, // update completed
158-
NVDIMM_TPM_NOT_FOUND = NVDIMM_COMP_ID | 0x2A, // TPM not found
159-
NVDIMM_POWER_SAVE_FAILURE = NVDIMM_COMP_ID | 0x2B, // Save failed due to power loss
160-
NVDIMM_CSAVE_ERROR = NVDIMM_COMP_ID | 0x2C, // CSave failed due to error
161-
NVDIMM_VOLTAGE_REGULATOR_FAILED = NVDIMM_COMP_ID | 0x2D,
162-
NVDIMM_VDD_LOST = NVDIMM_COMP_ID | 0x2E,
163-
NVDIMM_VPP_LOST = NVDIMM_COMP_ID | 0x2F,
164-
NVDIMM_VTT_LOST = NVDIMM_COMP_ID | 0x30,
165-
NVDIMM_DRAM_NOT_SELF_REFRESH = NVDIMM_COMP_ID | 0x31,
166-
NVDIMM_CONTROLLER_HARDWARE_ERROR = NVDIMM_COMP_ID | 0x32,
167-
NVDIMM_NVM_CONTROLLER_ERROR = NVDIMM_COMP_ID | 0x33,
168-
NVDIMM_NVM_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x34,
169-
NVDIMM_NOT_ENOUGH_ENERGY_FOR_CSAVE = NVDIMM_COMP_ID | 0x35,
170-
NVDIMM_INVALID_FIRMWARE_ERROR = NVDIMM_COMP_ID | 0x36, // Module Health Status Registers
171-
NVDIMM_CONFIG_DATA_ERROR = NVDIMM_COMP_ID | 0x37,
172-
NVDIMM_NO_ES_PRESENT = NVDIMM_COMP_ID | 0x38,
173-
NVDIMM_ES_POLICY_NOT_SET = NVDIMM_COMP_ID | 0x39,
174-
NVDIMM_ES_HARDWARE_FAILURE = NVDIMM_COMP_ID | 0x3A,
175-
NVDIMM_ES_HEALTH_ASSESSMENT_ERROR = NVDIMM_COMP_ID | 0x3B,
176-
NVDIMM_ES_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x3C,
177-
NVDIMM_ES_TEMP_ERROR = NVDIMM_COMP_ID | 0x3D,
178-
NVDIMM_SET_EVENT_NOTIFICATION_ERROR = NVDIMM_COMP_ID | 0x3E,
179-
NVDIMM_VERIF_BYTE_CHECK_FAILED = NVDIMM_COMP_ID | 0x3F, // Encryption key reg verif failed
180-
NVDIMM_ENCRYPTION_ENABLE_FAILED = NVDIMM_COMP_ID | 0x40, // Encryption enable failed
181-
NVDIMM_ENCRYPTION_ERASE_PENDING_FAILED = NVDIMM_COMP_ID | 0x41, // Encryption crypto erase pending failed
182-
NVDIMM_ENCRYPTION_ERASE_FAILED = NVDIMM_COMP_ID | 0x42, // Encryption crypto erase failed
183-
NVDIMM_ENCRYPTION_UNLOCK_FAILED = NVDIMM_COMP_ID | 0x43, // Encryption unlock failed
184-
NVDIMM_ENCRYPTION_INVALID_ATTRIBUTE = NVDIMM_COMP_ID | 0x44, // Encryption attribute key data invalid
185-
NVDIMM_ENCRYPTION_KEY_ATTRS_INVALID = NVDIMM_COMP_ID | 0x45, // Encryption key attributes are both invalid
186-
NVDIMM_ENCRYPTION_MAX_DARN_ERRORS = NVDIMM_COMP_ID | 0x46, // Darn random key gen reached max errors
187-
NVDIMM_ENCRYPTION_BAD_RANDOM_DATA = NVDIMM_COMP_ID | 0x47, // Generated key data not valid
188-
NVDIMM_CANNOT_MAKE_ATTRIBUTE = NVDIMM_COMP_ID | 0x48, // Cannot make Attribute
189-
NVDIMM_HEALTH_CHECK_IN_PROGRESS_FAILURE = NVDIMM_COMP_ID | 0x49, // !< pertains to ES_CMD_STATUS0[0]; the health check in progress flag
190-
NVDIMM_HEALTH_CHECK_REPORTED_FAILURE = NVDIMM_COMP_ID | 0x4A, // !< pertains to ES_CMD_STATUS0[2]; the health check reported a failure flag
191-
NVDIMM_LIFETIME_MIN_REQ_NOT_MET = NVDIMM_COMP_ID | 0x4B, // !< pertains to ES_LIFETIME; BPM does not meet minimum requirement for a new BPM
192-
NVDIMM_HEALTH_CHECK_NEVER_INITIATED = NVDIMM_COMP_ID | 0x4C, // !< A health check was never initiated at start of IPL
117+
NVDIMM_INVALID_REASONCODE = NVDIMM_COMP_ID | 0x00, // Invalid Reasoncode
118+
NVDIMM_INVALID_OPERATION = NVDIMM_COMP_ID | 0x01,
119+
NVDIMM_INVALID_DEVICE_TYPE = NVDIMM_COMP_ID | 0x02,
120+
NVDIMM_ATTR_INFO_NOT_FOUND = NVDIMM_COMP_ID | 0x03,
121+
NVDIMM_INVALID_CHIP = NVDIMM_COMP_ID | 0x04,
122+
NVDIMM_I2C_MASTER_PATH_ERROR = NVDIMM_COMP_ID | 0x05,
123+
NVDIMM_TARGET_NULL = NVDIMM_COMP_ID | 0x06,
124+
NVDIMM_INVALID_ADDR_OFFSET_SIZE = NVDIMM_COMP_ID | 0x07,
125+
NVDIMM_OVERFLOW_ERROR = NVDIMM_COMP_ID | 0x08,
126+
NVDIMM_I2C_WRITE_PAGE_SIZE_ZERO = NVDIMM_COMP_ID | 0x09,
127+
NVDIMM_INVALID_OFFSET = NVDIMM_COMP_ID | 0x0A,
128+
NVDIMM_READ_FAILURE = NVDIMM_COMP_ID | 0x0B, // NV Controller read failure
129+
NVDIMM_WRITE_FAILURE = NVDIMM_COMP_ID | 0x0C, // NV Controller write failure
130+
NVDIMM_BACKUP_TIMEOUT = NVDIMM_COMP_ID | 0x0D, // Backup/save timeout
131+
NVDIMM_RESTORE_TIMEOUT = NVDIMM_COMP_ID | 0x0E, // Restore timeout
132+
NVDIMM_ERASE_TIMEOUT = NVDIMM_COMP_ID | 0x0F, // Erase timeout
133+
NVDIMM_CHARGE_TIMEOUT = NVDIMM_COMP_ID | 0x10, // Battery charging timeout
134+
NVDIMM_ARM_TIMEOUT = NVDIMM_COMP_ID | 0x11, // Arming timeout
135+
NVDIMM_SET_ES_ERROR = NVDIMM_COMP_ID | 0x12, // Failure to set the ES policy
136+
NVDIMM_MSS_STR_ENTRY_ERROR = NVDIMM_COMP_ID | 0x13, // Failure to enter STR
137+
NVDIMM_MSS_STR_EXIT_ERROR = NVDIMM_COMP_ID | 0x14, // Failure to exit STR
138+
NVDIMM_MSS_POST_RSTR_ERROR = NVDIMM_COMP_ID | 0x15, // Failure to perform post restore work
139+
NVDIMM_OPEN_PAGE_TIMEOUT = NVDIMM_COMP_ID | 0x16, // Open page timeout
140+
NVDIMM_STATUS_TIMEOUT = NVDIMM_COMP_ID | 0x17, // Status timeout
141+
NVDIMM_ARM_FAILED = NVDIMM_COMP_ID | 0x18, // Failure to arm reset_n
142+
NVDIMM_ERASE_FAILED = NVDIMM_COMP_ID | 0x19, // Failure to erase
143+
NVDIMM_RESTORE_FAILED = NVDIMM_COMP_ID | 0x1A, // Failure to restore
144+
NVDIMM_NOT_READY = NVDIMM_COMP_ID | 0x1B, // NVDIMM not ready for host to access
145+
NVDIMM_NULL_FIRMWARE_REQUEST_PTR = NVDIMM_COMP_ID | 0x1C, // Firmware request is NULL
146+
NVDIMM_UNSUPPORTED_NVDIMM_TYPE = NVDIMM_COMP_ID | 0x1D, // Unsupported NVDIMM type for update
147+
NVDIMM_OPERATION_IN_PROGRESS = NVDIMM_COMP_ID | 0x1E, // NV controller is busy
148+
NVDIMM_CHECKSUM_ERROR = NVDIMM_COMP_ID | 0x1F, // Checksum error between host and nv calculated
149+
NVDIMM_ZERO_TOTAL_REGIONS = NVDIMM_COMP_ID | 0x20, // Zero write regions calculated
150+
NVDIMM_UPDATE_MODE_UNCHANGED = NVDIMM_COMP_ID | 0x21, // Unable to change update mode
151+
NVDIMM_FW_OPS_IN_PROGRESS_TIMEOUT = NVDIMM_COMP_ID | 0x22, // Operations In Progress timeout
152+
NVDIMM_DATA_SIZE_TOO_LARGE = NVDIMM_COMP_ID | 0x23, // Trying to write too much data
153+
NVDIMM_DATA_SIZE_INVALID = NVDIMM_COMP_ID | 0x24, // Data size is invalid
154+
NVDIMM_BLOCK_NOT_RECEIVED = NVDIMM_COMP_ID | 0x25, // Block data not received
155+
NVDIMM_FW_OPS_NOT_SUCCESSFUL = NVDIMM_COMP_ID | 0x26, // Unsuccessful Firmware Operation
156+
NVDIMM_UPDATE_NOT_SUPPORTED = NVDIMM_COMP_ID | 0x27, // NV controller cannot be updated
157+
NVDIMM_START_UPDATE = NVDIMM_COMP_ID | 0x28, // start update
158+
NVDIMM_UPDATE_COMPLETE = NVDIMM_COMP_ID | 0x29, // update completed
159+
NVDIMM_TPM_NOT_FOUND = NVDIMM_COMP_ID | 0x2A, // TPM not found
160+
NVDIMM_POWER_SAVE_FAILURE = NVDIMM_COMP_ID | 0x2B, // Save failed due to power loss
161+
NVDIMM_CSAVE_ERROR = NVDIMM_COMP_ID | 0x2C, // CSave failed due to error
162+
NVDIMM_VOLTAGE_REGULATOR_FAILED = NVDIMM_COMP_ID | 0x2D,
163+
NVDIMM_VDD_LOST = NVDIMM_COMP_ID | 0x2E,
164+
NVDIMM_VPP_LOST = NVDIMM_COMP_ID | 0x2F,
165+
NVDIMM_VTT_LOST = NVDIMM_COMP_ID | 0x30,
166+
NVDIMM_DRAM_NOT_SELF_REFRESH = NVDIMM_COMP_ID | 0x31,
167+
NVDIMM_CONTROLLER_HARDWARE_ERROR = NVDIMM_COMP_ID | 0x32,
168+
NVDIMM_NVM_CONTROLLER_ERROR = NVDIMM_COMP_ID | 0x33,
169+
NVDIMM_NVM_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x34,
170+
NVDIMM_NOT_ENOUGH_ENERGY_FOR_CSAVE = NVDIMM_COMP_ID | 0x35,
171+
NVDIMM_INVALID_FIRMWARE_ERROR = NVDIMM_COMP_ID | 0x36, // Module Health Status Registers
172+
NVDIMM_CONFIG_DATA_ERROR = NVDIMM_COMP_ID | 0x37,
173+
NVDIMM_NO_ES_PRESENT = NVDIMM_COMP_ID | 0x38,
174+
NVDIMM_ES_POLICY_NOT_SET = NVDIMM_COMP_ID | 0x39,
175+
NVDIMM_ES_HARDWARE_FAILURE = NVDIMM_COMP_ID | 0x3A,
176+
NVDIMM_ES_HEALTH_ASSESSMENT_ERROR = NVDIMM_COMP_ID | 0x3B,
177+
NVDIMM_ES_LIFETIME_ERROR = NVDIMM_COMP_ID | 0x3C,
178+
NVDIMM_ES_TEMP_ERROR = NVDIMM_COMP_ID | 0x3D,
179+
NVDIMM_SET_EVENT_NOTIFICATION_ERROR = NVDIMM_COMP_ID | 0x3E,
180+
NVDIMM_VERIF_BYTE_CHECK_FAILED = NVDIMM_COMP_ID | 0x3F, // Encryption key reg verif failed
181+
NVDIMM_ENCRYPTION_ENABLE_FAILED = NVDIMM_COMP_ID | 0x40, // Encryption enable failed
182+
NVDIMM_ENCRYPTION_ERASE_PENDING_FAILED = NVDIMM_COMP_ID | 0x41, // Encryption crypto erase pending failed
183+
NVDIMM_ENCRYPTION_ERASE_FAILED = NVDIMM_COMP_ID | 0x42, // Encryption crypto erase failed
184+
NVDIMM_ENCRYPTION_UNLOCK_FAILED = NVDIMM_COMP_ID | 0x43, // Encryption unlock failed
185+
NVDIMM_ENCRYPTION_INVALID_ATTRIBUTE = NVDIMM_COMP_ID | 0x44, // Encryption attribute key data invalid
186+
NVDIMM_ENCRYPTION_KEY_ATTRS_INVALID = NVDIMM_COMP_ID | 0x45, // Encryption key attributes are both invalid
187+
NVDIMM_ENCRYPTION_MAX_DARN_ERRORS = NVDIMM_COMP_ID | 0x46, // Darn random key gen reached max errors
188+
NVDIMM_ENCRYPTION_BAD_RANDOM_DATA = NVDIMM_COMP_ID | 0x47, // Generated key data not valid
189+
NVDIMM_CANNOT_MAKE_ATTRIBUTE = NVDIMM_COMP_ID | 0x48, // Cannot make Attribute
190+
NVDIMM_ES_HEALTH_CHECK_IN_PROGRESS_FAILURE = NVDIMM_COMP_ID | 0x49, // !< pertains to ES_CMD_STATUS0[0]; the ES health check in progress flag
191+
NVDIMM_ES_HEALTH_CHECK_REPORTED_FAILURE = NVDIMM_COMP_ID | 0x4A, // !< pertains to ES_CMD_STATUS0[2]; the ES health check reported a failure flag
192+
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
193+
NVDIMM_ES_HEALTH_CHECK_NEVER_INITIATED = NVDIMM_COMP_ID | 0x4C, // !< An ES health check was never initiated at start of IPL
194+
NVDIMM_NVM_HEALTH_CHECK_FAILED = NVDIMM_COMP_ID | 0x4D, // !< An NVM health check on the NVDIMM failed
193195
};
194196

195197
enum UserDetailsTypes

0 commit comments

Comments
 (0)