NvmeRecovery: Data Structures

NvmeRecovery NvmeRecovery_09
Data Structures
Here are the data structures with brief descriptions:
C ACTIVE_NAMESPACE_DATA
C COMPLETION_QUEUE_ENTRY
C NVME_ADMIN_COMMAND
C NVME_COMMAND_WRAPPER
C NVME_CONTROLLER_INFO
C NVME_PCI_DEVICE_INFO
C NVME_RECOVERY_BLK_IO_DEV
C STRUC_CMD0
Generated by doxygen 1.8.17


NvmeRecovery: ACTIVE_NAMESPACE_DATA Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
ACTIVE_NAMESPACE_DATA Struct Reference

Data Fields

UINT32 | Signature
UINT32 | ActiveNameSpaceId
NVME_ADMIN_NAMESPACE_DATA | IdentifyNamespaceData
UINT64 * | Prp2List
EFI_PEI_BLOCK_IO_MEDIA | MediaInfo
BOOLEAN | LookedForMedia
EFI_DEVICE_PATH * | DevicePath
NVME_CONTROLLER_INFO * | NvmeControllerInfo
LIST_ENTRY | Link
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeCtrl.h


NvmeRecovery: COMPLETION_QUEUE_ENTRY Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
COMPLETION_QUEUE_ENTRY Struct Reference

Data Fields

UINT32 | Dw0
UINT32 | Dw1
UINT16 | SqHeadPointer
UINT16 | SqIdentifier
UINT16 | CommandIdentifier
UINT16 | PhaseTag: 1
UINT16 | StatusCode: 8
UINT16 | StatusCodeType: 3
UINT16 | Reservered1: 2
UINT16 | More: 1
UINT16 | DoNotRetry: 1
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeCtrl.h


NvmeRecovery: NVME_ADMIN_COMMAND Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
NVME_ADMIN_COMMAND Struct Reference

Data Fields

STRUC_CMD0 | Cmd0
UINT32 | Nsid
UINT64 | Reserved1
UINT64 | Mptr
UINT64 | Prp1
UINT64 | Prp2
UINT32 | Cdw10
UINT32 | Cdw11
UINT32 | Cdw12
UINT32 | Cdw13
UINT32 | Cdw14
UINT32 | Cdw15
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeCtrl.h


NvmeRecovery: NVME_COMMAND_WRAPPER Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
NVME_COMMAND_WRAPPER Struct Reference

Data Fields

NVME_ADMIN_COMMAND | NvmCmd
BOOLEAN | AdminOrNVMCmdSet
UINT16 | SqIdentifier
UINT32 | CmdTimeOut
UINT8 | RetryCount
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeCtrl.h


NvmeRecovery: NVME_CONTROLLER_INFO Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
NVME_CONTROLLER_INFO Struct Reference

Data Fields

EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI | NvmePassThru
UINT64 | BarAddress
UINT8 | BusNumber
UINT8 | Device
UINT8 | Function
UINT16 | CommandIdentifierAdmin
UINT16 | CommandIdentifierQueue1
UINT64 | RawNvmeCapability
UINT32 | MaxQueueEntrySupported
BOOLEAN | ContiguousQueueRequired
BOOLEAN | ArbitrationMechanismSupport
UINT8 | TimeOut
UINT8 | DoorBellStride
BOOLEAN | NVMResetSupport
UINT8 | CmdSetsSupported
UINT32 | MemoryPageSizeMin
UINT32 | MemoryPageSizeMax
UINT32 | MemoryPageSize
UINT64 | AdminSubmissionUnAligned
UINTN | AdminSubmissionUnAlignedSize
UINT64 | AdminSubmissionQueue
UINTN | AdminSubmissionQueueSize
UINT16 | AdminSubmissionQueueHeadPtr
UINT16 | AdminSubmissionQueueTailPtr
UINT64 | AdminCompletionUnAligned
UINTN | AdminCompletionUnAlignedSize
UINT64 | AdminCompletionQueue
UINTN | AdminCompletionQueueSize
UINT16 | AdminCompletionQueueHeadPtr
UINT16 | AdminCompletionQueueTailPtr
UINT8 | AdminPhaseTag: 1
UINT8 | Reserved: 7
UINT16 | NVMQueueNumber
UINT64 | Queue1SubmissionUnAligned
UINTN | Queue1SubmissionUnAlignedSize
UINT64 | Queue1SubmissionQueue
UINT64 | Queue1CompletionUnAligned
UINTN | Queue1CompletionUnAlignedSize
UINT64 | Queue1CompletionQueue
UINT32 | Queue1SubmissionQueueSize
UINT32 | Queue1CompletionQueueSize
UINT16 | Queue1CompletionQueueHeadPtr
UINT16 | Queue1CompletionQueueTailPtr
UINT16 | Queue1SubmissionQueueHeadPtr
UINT16 | Queue1SubmissionQueueTailPtr
UINT8 | Queue1PhaseTag: 1
UINT8 | Reserved1: 7
NVME_ADMIN_CONTROLLER_DATA * | IdentifyData
NVME_COMMAND_WRAPPER * | NvmeCmdWrapper
BOOLEAN | ReInitializingQueue1
EFI_DEVICE_PATH * | DevPath
UINT32 | ControllerVersion
UINT32 * | ActiveNameSpaceIds
UINT32 | TotalActiveNameSpaceCount
LIST_ENTRY | ActiveNameSpaceList
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeCtrl.h


NvmeRecovery: NVME_PCI_DEVICE_INFO Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
NVME_PCI_DEVICE_INFO Struct Reference

Data Fields

UINT8 | BusNumber
UINT8 | Device
UINT8 | Function
BOOLEAN | IsMmioDevice
UINT64 | BaseAddress
EFI_DEVICE_PATH * | DevPath
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeRecovery.h


NvmeRecovery: NVME_RECOVERY_BLK_IO_DEV Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
NVME_RECOVERY_BLK_IO_DEV Struct Reference

Data Fields

EFI_PEI_RECOVERY_BLOCK_IO_PPI | RecoveryBlkIo
UINT64 | AmiExtSig
BOOLEAN | HaveEnumeratedDevices
UINTN | TotalDeviceCount
UINTN | TotalControllerCount
NVME_CONTROLLER_INFO * | NvmeControllerInfo [MAX_NVME_RECOVERY_DEVICE]
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeRecovery.h


NvmeRecovery: STRUC_CMD0 Struct Reference

NvmeRecovery NvmeRecovery_09
Data Fields
STRUC_CMD0 Struct Reference

Data Fields

UINT8 | Opcode
UINT8 | FusedOperation: 2
UINT8 | Reserved1: 5
UINT8 | Psdt: 1
UINT16 | CommandIdentifier
The documentation for this struct was generated from the following file:
  • AmiModulePkg/NvmeRecovery/NvmeCtrl.h


NvmeRecovery: Data Structure Index

NvmeRecovery NvmeRecovery_09
Data Structure Index
a | c | n | s
a
ACTIVE_NAMESPACE_DATA
c
COMPLETION_QUEUE_ENTRY
n
NVME_ADMIN_COMMAND
NVME_COMMAND_WRAPPER
NVME_CONTROLLER_INFO
NVME_PCI_DEVICE_INFO
NVME_RECOVERY_BLK_IO_DEV
s
STRUC_CMD0
a | c | n | s


NvmeRecovery: File List

NvmeRecovery NvmeRecovery_09
File List
Here is a list of all documented files with brief descriptions:
[detail level 123]
▼ AmiModulePkg
▼ NvmeRecovery
NvmeCtrl.c
NvmePassThruPei.c
NvmeRecovery.c
NvmeRecovery.h
Generated by doxygen 1.8.17


NvmeRecovery: AmiModulePkg Directory Reference

NvmeRecovery NvmeRecovery_09
  • AmiModulePkg
AmiModulePkg Directory Reference

Directories

Generated by doxygen 1.8.17


NvmeRecovery: AmiModulePkg/NvmeRecovery Directory Reference

NvmeRecovery NvmeRecovery_09
  • AmiModulePkg
  • NvmeRecovery
NvmeRecovery Directory Reference

Files

file | NvmeCtrl.c
file | NvmePassThruPei.c
file | NvmeRecovery.c
file | NvmeRecovery.h


NvmeRecovery: AmiModulePkg/NvmeRecovery/NvmeCtrl.c File Reference

NvmeRecovery NvmeRecovery_09
  • AmiModulePkg
  • NvmeRecovery
Functions | Variables
NvmeCtrl.c File Reference

Functions

ACTIVE_NAMESPACE_DATA * | GetActiveNameSpace (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN UINT32 NamespaceId)
EFI_STATUS | RecreateAllQueues (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
EFI_STATUS | AddToAdminSubmissionQueue (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper)
EFI_STATUS | CreateAdditionalSubmissionCompletionQueue (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper, IN UINT16 QueueNumber, IN UINT32 QueueSize)
EFI_STATUS | RecreateQueue1 (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
EFI_STATUS | AddToQueue1SubmissionQueue (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper)
EFI_STATUS | UpdateDoorBellRegister (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN UINT16 QueueNumber, IN UINT32 Value)
EFI_STATUS | ExecuteNvmeCmd (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper, OUT COMPLETION_QUEUE_ENTRY *CmdCompletionData)
EFI_STATUS | WaitForCompletionQueueUpdate (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper, OUT COMPLETION_QUEUE_ENTRY *CmdCompletionData)
EFI_STATUS | GetIdentifyData (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, OUT VOID *IdentifyData, IN NVME_ADMIN_IDENTIFY_CNS ControllerNameSpaceStructure, IN UINT32 NameSpaceId)
EFI_STATUS | ConfigureActiveNamespace (NVME_CONTROLLER_INFO *NvmeControllerInfo, UINT32 ActiveNameSpaceId)
EFI_STATUS | NvmeReadBlocks (IN ACTIVE_NAMESPACE_DATA *ActiveNameSpace, IN EFI_LBA Lba, IN UINTN BufferSize, OUT VOID *Buffer, IN OUT COMPLETION_QUEUE_ENTRY *NvmeCompletionData)
EFI_STATUS | ProgramPrp2List (IN UINT64 *Prp2List, IN UINT32 PageSize, IN UINTN BufferAddress, IN UINTN BufferSize, IN UINTN *Prp2TransferSize)
EFI_STATUS | ProgramPrpEntry (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper, IN UINTN TransferLength, IN VOID *Buffer, IN UINT64 *Prp2List, OUT UINTN *BufferSize)
EFI_STATUS | SetNumberOfQueues (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
VOID | PrintExecuteNvmeCmdData (IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper)
VOID | PrintNvmeCapability (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
EFI_STATUS | InitializeNvmeController (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
EFI_STATUS | InitAndConfigNvmeController (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
VOID | PrintIdentifyDataStructure (IN VOID *IdentifyData, IN NVME_ADMIN_IDENTIFY_CNS ControllerNameSpaceStructure)

Variables

EDKII_IOMMU_PPI * | gEdk2IoMmuPpi
NVME_NAMESPACE_DEVICE_PATH | gPeiNvmePath

Detailed Description

This file contains the code which provide access to the Nvme Controller/Device

Header file for Nvme Controller/device definition

Function Documentation

◆ InitializeNvmeController()

EFI_STATUS InitializeNvmeController ( IN NVME_CONTROLLER_INFO * NvmeControllerInfo )

Initialize Nvme controller and ADMIN submission and Completion queues

Parameters
NvmeControllerInfo
PciDeviceInfo
Return values
EFI_STATUS

◆ PrintIdentifyDataStructure()

VOID PrintIdentifyDataStructure | ( | IN VOID * | IdentifyData,
 |  | IN NVME_ADMIN_IDENTIFY_CNS | ControllerNameSpaceStructure
 | ) |  |

Prints Identfiy data information for the Nvme controller/Namespace based on the ControllerNameSpaceStructure input value.

Parameters
NvmeControllerInfo
PciDeviceInfo
Return values
EFI_STATUS
Generated by doxygen 1.8.17


NvmeRecovery: AmiModulePkg/NvmeRecovery/NvmePassThruPei.c File Reference

NvmeRecovery NvmeRecovery_09
  • AmiModulePkg
  • NvmeRecovery
Functions | Variables
NvmePassThruPei.c File Reference

Functions

BOOLEAN | ValidateGetLogBuffer (IN EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET *Packet)
EFI_STATUS EFIAPI | GetDevicePath (IN EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI *This, OUT UINTN *DevicePathLength, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath)
EFI_STATUS EFIAPI | GetNextNameSpace (IN EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI *This, IN OUT UINT32 *NamespaceId)
EFI_STATUS EFIAPI | PassThru (IN EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI *This, IN UINT32 NamespaceId, IN OUT EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET *Packet)
EFI_STATUS | InstallNvmePassThruPpi (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)

Variables

EDKII_IOMMU_PPI * gEdk2IoMmuPpi

Function Documentation

◆ GetDevicePath()

EFI_STATUS EFIAPI GetDevicePath | ( | IN EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI * | This,
 |  | OUT UINTN * | DevicePathLength,
 |  | OUT EFI_DEVICE_PATH_PROTOCOL ** | DevicePath
 | ) |  |

Returns NVM Express controller device path

Parameters
This | A pointer to the EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI instance
DevicePathLength | Returns DevicePath Length
DevicePath | Returns DevicePath
Return values
EFI_STATUS

◆ GetNextNameSpace()

EFI_STATUS EFIAPI GetNextNameSpace | ( | IN EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI * | This,
 |  | IN OUT UINT32 * | NamespaceId
 | ) |  |

API to get next valid NameSpace ID of the Nvme Device

Parameters
This | A pointer to the EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI instance
NamespaceId | A pointer to a valid Namespace ID on this NVM Express controller
Return values
EFI_STATUS

◆ PassThru()

EFI_STATUS EFIAPI PassThru | ( | IN EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI * | This,
 |  | IN UINT32 | NamespaceId,
 |  | IN OUT EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET * | Packet
 | ) |  |

Sends an NVM Express Command Packet to an NVM Express controller or namespace

Parameters
This | A pointer to the EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI instance
NamespaceId A 32 bit namespace ID as defined in the NVMe specification to which the NVM Express Command Packet will be sent.
Packet | A pointer to the NVM Express Command Packet to send to the NVMe namespace specified by NamespaceId.
Return values
EFI_STATUS
Generated by doxygen 1.8.17


NvmeRecovery: AmiModulePkg/NvmeRecovery/NvmeRecovery.c File Reference

NvmeRecovery NvmeRecovery_09
  • AmiModulePkg
  • NvmeRecovery
Functions | Variables
NvmeRecovery.c File Reference

Functions

ACTIVE_NAMESPACE_DATA * | GetActiveNameSpaceDataByIndex (IN NVME_RECOVERY_BLK_IO_DEV *NvmeBlkIo, IN UINTN DeviceIndex)
EFI_STATUS EFIAPI | Nvme_GetNumberOfBlockDevices (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, OUT UINTN *NumberBlockDevices)
EFI_STATUS EFIAPI | Nvme_GetBlockDeviceMediaInfo (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, IN UINTN DeviceIndex, OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo)
EFI_STATUS EFIAPI | Nvme_ReadBlocks (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, IN UINTN DeviceIndex, IN EFI_PEI_LBA StartLba, IN UINTN BufferSize, OUT VOID *Buffer)
EFI_STATUS | EnumerateNvmeDevices (IN OUT NVME_RECOVERY_BLK_IO_DEV *NvmeBlkIoDev)
EFI_STATUS EFIAPI | NotifyOnNvmeRecoveryCapsuleLoaded (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN VOID *InvokePpi)
VOID * | PeiDpCopy (IN EFI_DEVICE_PATH *DevicePath)
UINTN | PeiDpLength (IN EFI_DEVICE_PATH *DevicePath)
VOID * | PeiDpAddNode (IN EFI_DEVICE_PATH *pDp1, IN EFI_DEVICE_PATH *pDp2)
EFI_STATUS EFIAPI | InstallPeiRecoveryBlkIoPpi ()
EFI_STATUS EFIAPI | NvmeRecoveryPeimEntry (IN EFI_PEI_FILE_HANDLE FileHandle, IN CONST EFI_PEI_SERVICES **PeiServices)

Variables

EFI_PEI_PPI_DESCRIPTOR | NvmeBlockIoPpiDescriptor
NVME_NAMESPACE_DEVICE_PATH | gPeiNvmePath
NVME_PCI_DEVICE_INFO * | gNvmePciDeviceInfo [MAX_NVME_RECOVERY_DEVICE]
EDKII_IOMMU_PPI * | gEdk2IoMmuPpi = NULL

Detailed Description

This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for Nvme devices.

Function Documentation

◆ InstallPeiRecoveryBlkIoPpi()

EFI_STATUS EFIAPI InstallPeiRecoveryBlkIoPpi ( )

Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI for Nvme devices.

Return values
EFI_OUT_OF_RESOURCES | Memory allocation failed due to a lack of resources.
EFI_SUCCESS | EFI_PEI_RECOVERY_BLOCK_IO_PPI installed successfully.
EFI_INVALID_PARAMETER | The PpiList pointer is NULL, or any of the PEI PPI descriptors in the list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.

◆ Nvme_GetBlockDeviceMediaInfo()

EFI_STATUS EFIAPI Nvme_GetBlockDeviceMediaInfo | ( | IN EFI_PEI_SERVICES ** | PeiServices,
 |  | IN EFI_PEI_RECOVERY_BLOCK_IO_PPI * | This,
 |  | IN UINTN | DeviceIndex,
 |  | OUT EFI_PEI_BLOCK_IO_MEDIA * | MediaInfo
 | ) |  |

Routine returns the Media information of the Nvme device respective to the NvmeDevice index

Parameters
PeiServices
This
DeviceIndex
MediaInfo
Return values
Status
Note

The enumeration will be done to find Nvmedevices if not enumerated already.

◆ Nvme_GetNumberOfBlockDevices()

EFI_STATUS EFIAPI Nvme_GetNumberOfBlockDevices | ( | IN EFI_PEI_SERVICES ** | PeiServices,
 |  | IN EFI_PEI_RECOVERY_BLOCK_IO_PPI * | This,
 |  | OUT UINTN * | NumberBlockDevices
 | ) |  |

Nvme_GetNumberOfBlockDevices is API function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. This Returns the number of Nvme Block Devices present in the System.

Parameters
PeiServices
This
NumberBlockDevices
Return values
EFI_STATUS
Note

The enumeration will be done to find Nvmedevices if not enumerated already

◆ Nvme_ReadBlocks()

EFI_STATUS EFIAPI Nvme_ReadBlocks | ( | IN EFI_PEI_SERVICES ** | PeiServices,
 |  | IN EFI_PEI_RECOVERY_BLOCK_IO_PPI * | This,
 |  | IN UINTN | DeviceIndex,
 |  | IN EFI_PEI_LBA | StartLba,
 |  | IN UINTN | BufferSize,
 |  | OUT VOID * | Buffer
 | ) |  |

Read Nvme device LBA given as input and stores the data in Buffer Total number of LBA to read is calculated from input BufferSize

Parameters
PeiServices
This
DeviceIndex
StartLba
BufferSize
Buffer
Return values
Status Data filled in *Buffer
Note

The enumeration will be done to find Nvme devices if not enumerated already.

◆ NvmeRecoveryPeimEntry()

EFI_STATUS EFIAPI NvmeRecoveryPeimEntry | ( | IN EFI_PEI_FILE_HANDLE | FileHandle,
 |  | IN CONST EFI_PEI_SERVICES ** | PeiServices
 | ) |  |

Entry point for NvmeRecovery, installs EFI_PEI_RECOVERY_BLOCK_IO_PPI for Nvme devices.

Parameters
FileHandle | Handle of the file being invoked.
PeiServices | Describes the list of possible PEI Services.
Return values
EFI_SUCCESS | The PEIM executed normally.
EFI_INVALID_PARAMETER | Invalid input parameter.

Variable Documentation

◆ gPeiNvmePath

NVME_NAMESPACE_DEVICE_PATH gPeiNvmePath
Initial value:
= { { MESSAGING_DEVICE_PATH,
MSG_NVME_NAMESPACE_DP,
{sizeof( NVME_NAMESPACE_DEVICE_PATH )}
}, 0, 0
}

◆ NvmeBlockIoPpiDescriptor

EFI_PEI_PPI_DESCRIPTOR NvmeBlockIoPpiDescriptor
Initial value:
= {
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEfiPeiVirtualBlockIoPpiGuid,
NULL
}


NvmeRecovery: AmiModulePkg/NvmeRecovery/NvmeRecovery.h File Reference

NvmeRecovery NvmeRecovery_09
  • AmiModulePkg
  • NvmeRecovery
Data Structures | Functions
NvmeRecovery.h File Reference

Data Structures

struct | NVME_RECOVERY_BLK_IO_DEV
struct | NVME_PCI_DEVICE_INFO

Functions

EFI_STATUS EFIAPI | Nvme_GetBlockDeviceMediaInfo (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, IN UINTN DeviceIndex, OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo)
EFI_STATUS EFIAPI | Nvme_ReadBlocks (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, IN UINTN DeviceIndex, IN EFI_PEI_LBA StartLba, IN UINTN BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI | Nvme_GetNumberOfBlockDevices (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, OUT UINTN *NumberBlockDevices)
EFI_STATUS EFIAPI | NotifyOnNvmeRecoveryCapsuleLoaded (IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN VOID *InvokePpi)
EFI_STATUS | EnumerateNvmeDevices (IN OUT NVME_RECOVERY_BLK_IO_DEV *NvmeBlkIoDev)
EFI_STATUS | InitializeNvmeController (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
VOID | PrintExecuteNvmeCmdData (IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper)
EFI_STATUS EFIAPI | InstallPeiRecoveryBlkIoPpi ()
VOID * | PeiDpAddNode (IN EFI_DEVICE_PATH *pDp1, IN EFI_DEVICE_PATH *pDp2)
UINTN | PeiDpLength (IN EFI_DEVICE_PATH *pDp)
VOID * | PeiDpCopy (IN EFI_DEVICE_PATH *pDp)
EFI_STATUS | InitAndConfigNvmeController (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
EFI_STATUS | ProgramPrpEntry (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN NVME_COMMAND_WRAPPER *NvmeCmdWrapper, IN UINTN TransferLength, IN VOID *Buffer, IN UINT64 *Prp2List, OUT UINTN *BufferSize)
EFI_STATUS | InstallNvmePassThruPpi (IN NVME_CONTROLLER_INFO *NvmeControllerInfo)
ACTIVE_NAMESPACE_DATA * | GetActiveNameSpace (IN NVME_CONTROLLER_INFO *NvmeControllerInfo, IN UINT32 NamespaceId)

Detailed Description

Header file contains structure and function declaration used for Nvme PCI enumeration

Function Documentation

◆ InitializeNvmeController()

EFI_STATUS InitializeNvmeController ( IN NVME_CONTROLLER_INFO * NvmeControllerInfo )

Initialize Nvme controller and ADMIN submission and Completion queues

Parameters
NvmeControllerInfo
PciDeviceInfo
Return values
EFI_STATUS

◆ InstallPeiRecoveryBlkIoPpi()

EFI_STATUS EFIAPI InstallPeiRecoveryBlkIoPpi ( )

Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI for Nvme devices.

Return values
EFI_OUT_OF_RESOURCES | Memory allocation failed due to a lack of resources.
EFI_SUCCESS | EFI_PEI_RECOVERY_BLOCK_IO_PPI installed successfully.
EFI_INVALID_PARAMETER | The PpiList pointer is NULL, or any of the PEI PPI descriptors in the list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.

◆ Nvme_GetBlockDeviceMediaInfo()

EFI_STATUS EFIAPI Nvme_GetBlockDeviceMediaInfo | ( | IN EFI_PEI_SERVICES ** | PeiServices,
 |  | IN EFI_PEI_RECOVERY_BLOCK_IO_PPI * | This,
 |  | IN UINTN | DeviceIndex,
 |  | OUT EFI_PEI_BLOCK_IO_MEDIA * | MediaInfo
 | ) |  |

Routine returns the Media information of the Nvme device respective to the NvmeDevice index

Parameters
PeiServices
This
DeviceIndex
MediaInfo
Return values
Status
Note

The enumeration will be done to find Nvmedevices if not enumerated already.

◆ Nvme_GetNumberOfBlockDevices()

EFI_STATUS EFIAPI Nvme_GetNumberOfBlockDevices | ( | IN EFI_PEI_SERVICES ** | PeiServices,
 |  | IN EFI_PEI_RECOVERY_BLOCK_IO_PPI * | This,
 |  | OUT UINTN * | NumberBlockDevices
 | ) |  |

Nvme_GetNumberOfBlockDevices is API function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. This Returns the number of Nvme Block Devices present in the System.

Parameters
PeiServices
This
NumberBlockDevices
Return values
EFI_STATUS
Note

The enumeration will be done to find Nvmedevices if not enumerated already

◆ Nvme_ReadBlocks()

EFI_STATUS EFIAPI Nvme_ReadBlocks | ( | IN EFI_PEI_SERVICES ** | PeiServices,
 |  | IN EFI_PEI_RECOVERY_BLOCK_IO_PPI * | This,
 |  | IN UINTN | DeviceIndex,
 |  | IN EFI_PEI_LBA | StartLba,
 |  | IN UINTN | BufferSize,
 |  | OUT VOID * | Buffer
 | ) |  |

Read Nvme device LBA given as input and stores the data in Buffer Total number of LBA to read is calculated from input BufferSize

Parameters
PeiServices
This
DeviceIndex
StartLba
BufferSize
Buffer
Return values
Status Data filled in *Buffer
Note

The enumeration will be done to find Nvme devices if not enumerated already.


NvmeRecovery: Globals

NvmeRecovery NvmeRecovery_09
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
  • GetDevicePath() : NvmePassThruPei.c
  • GetNextNameSpace() : NvmePassThruPei.c
  • InitializeNvmeController() : NvmeCtrl.c , NvmeRecovery.h
  • InstallPeiRecoveryBlkIoPpi() : NvmeRecovery.c , NvmeRecovery.h
  • Nvme_GetBlockDeviceMediaInfo() : NvmeRecovery.c , NvmeRecovery.h
  • Nvme_GetNumberOfBlockDevices() : NvmeRecovery.c , NvmeRecovery.h
  • Nvme_ReadBlocks() : NvmeRecovery.c , NvmeRecovery.h
  • NvmeRecoveryPeimEntry() : NvmeRecovery.c
  • PassThru() : NvmePassThruPei.c
  • PrintIdentifyDataStructure() : NvmeCtrl.c


NvmeRecovery: Globals

NvmeRecovery NvmeRecovery_09
  • GetDevicePath() : NvmePassThruPei.c
  • GetNextNameSpace() : NvmePassThruPei.c
  • InitializeNvmeController() : NvmeCtrl.c , NvmeRecovery.h
  • InstallPeiRecoveryBlkIoPpi() : NvmeRecovery.c , NvmeRecovery.h
  • Nvme_GetBlockDeviceMediaInfo() : NvmeRecovery.c , NvmeRecovery.h
  • Nvme_GetNumberOfBlockDevices() : NvmeRecovery.c , NvmeRecovery.h
  • Nvme_ReadBlocks() : NvmeRecovery.c , NvmeRecovery.h
  • NvmeRecoveryPeimEntry() : NvmeRecovery.c
  • PassThru() : NvmePassThruPei.c
  • PrintIdentifyDataStructure() : NvmeCtrl.c


Copyright

American Megatrends International LLC.
5555 Oakbrook Parkway
Suite 200
Norcross, GA 30093 (USA)

Copyright (c) 1999-2020 American Megatrends International LLC. All Rights Reserved.

This publication contains proprietary information, which is protected by copyright. No part of this publication may be reproduced, transcribed, stored in a retrieval system, translated into any language or computer language, or transmitted in any form whatsoever without the prior written consent of the publisher, American Megatrends International LLC.

American Megatrends International LLC. retains the right to update, change, modify this publication at any time, without notice.

For Additional Information

Call American Megatrends International LLC BIOS Sales Department at 1-800-828-9264 for additional information.

Limitations of Liability

In no event shall American Megatrends be held liable for any loss, expenses, or damages of any kind whatsoever, whether direct, indirect, incidental, or consequential, arising from the design or use of this product or the support materials provided with the product.

Limited Warranty

No warranties are made, either expressed or implied, with regard to the contents of this work, its merchantability, or fitness for a particular use. American Megatrends assumes no responsibility for errors and omissions or for the uses made of the material contained herein or reader decisions based on such use.

Trademark and Copyright Acknowledgments

All product names used in this publication are for identification purposes only and are trademarks of their respective Companies.


NvmeRecovery: F: Directory Reference

NvmeRecovery NvmeRecovery_09
  • F:
F: Directory Reference
Generated by doxygen 1.8.17


NvmeRecovery: F:/Nvmerecovery/NvmeRecoveryHelpFiles Directory Reference

NvmeRecovery NvmeRecovery_09
  • F:
  • Nvmerecovery
  • NvmeRecoveryHelpFiles
NvmeRecoveryHelpFiles Directory Reference


NvmeRecovery: F:/Nvmerecovery Directory Reference

NvmeRecovery NvmeRecovery_09
  • F:
  • Nvmerecovery
Nvmerecovery Directory Reference

Directories

Generated by doxygen 1.8.17


NvmeRecovery: Main Page

NvmeRecovery NvmeRecovery_09
NvmeRecovery Documentation

Release Notes
Copyright

Generated by doxygen 1.8.17


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2015-02-26
Source Control Label: NvmeRecovery_01
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Dependencies
Component Dependencies
N0NE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge value in order to enumerate bridge under which NVMe controller is connected.
NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BASE_ADDRESS | Integer | Memory map address to be allocated for NVMe Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label:VeB_7_15_0248, Dated: 2013-11-13
Visual eBios: RSS.7.15.0248, Dated: 2013-11-13
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes:
NONE
EIP addressed in this label:
EIP#205922 - GCC build check for NvmeRecovery_01 driver
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #205922)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.h (EIP #205922)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
1. Create a DOS partition in NVMe device and put the recovery image in that
2. Press Ctrl+Home keys while booting and verify that the Recovery Image in device has been Flashed
Validation Testing:
Quality Assurance Test Results
Release History:
NvmeRecovery_01
  • [TAG] EIP205922
    [Category] Improvement
    [Description] GCC build check for NvmeRecovery_01 driver
    [Files] NvmeRecovery.c, NvmeRecovery.h

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2015-10-29
Source Control Label: NvmeRecovery_02
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge value in order to enumerate bridge under which NVMe controller is connected.
NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BASE_ADDRESS | Integer | Memory map address to be allocated for NVMe Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label:VeB_7_17_0325, Dated: 2015-03-30
Visual eBios: RSS.7.15.0325, Dated: 2015-03-30
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes:
EIP#208202 - Recovery from Nvme Device failed in some platform
EIP addressed in this label:
EIP#239106 - SUT cannot find image in recovery mode with NVMe device
EIP#243734 - Nvme device expects the Nvme command buffer address in 64 bit format, as PEI driver's buffer address have 32bit width, we made change in Nvmerecovery driver in order to support nvme command buffer address in 32bit format.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #239106)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.c (EIP #208202,#239106, #243734)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
1. Create a DOS partition in NVMe device and put the recovery image in that
2. Press Ctrl+Home keys while booting and verify that the Recovery Image in device has been Flashed
Validation Testing:
Quality Assurance Test Results
Release History:
NvmeRecovery_02
  • [TAG] EIP239106
    [Category] Improvement
    [Description] SUT cannot find image in recovery mode with NVMe device
    [Files] NvmeRecovery.c,NvmeCtrl.c

  • [TAG] EIP208202
    [Category] Bug Fix
    [Severity:] Minor
    [Symptom:] Recovery from Nvme Device failed in some paltform
    [Root Cause] PRP2List will be created if NvmeRead command is sent to read data more than a page size. In such case as PRP2List base address is invalid, Recovery from Nvme Device failed.
    [Solution] Changes done to assign valid buffer address for PRP2List pointer.
    [Files] NvmeCtrl.c

  • [TAG] EIP243734
    [Category] Improvement
    [Severity] Normal
    [Description] Nvme device expects the Nvme command buffer address in 64 bit format, as PEI driver's buffer address have 32bit width, we made change in Nvmerecovery driver in order to support nvme command buffer address in 32bit format.
    [Files] NvmeCtrl.c

NvmeRecovery_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2016-06-21
Source Control Label: NvmeRecovery_03
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Driver Dependencies
Component Dependencies
AmiModulePkg
Dependent Component Title: AmiModulePkg
Dependent Component Reference Name: AmiModulePkg
Dependent Source Control Label: AmiModulePkg_32
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Interface/AmiModulePkg;
NOTE: If the project has AhciRecovery eModule, then upgrade the module label as below.
AhciRecovery
Dependent Component Title: AhciRecovery
Dependent Component Reference Name: AhciRecovery
Dependent Source Control Label: AhciRecovery_04 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Source/Modules/AhciRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge or PCI/PCI bridge value in order to enumerate the bridge under which NVMe controller is connected.
NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list.
NvmeRecovery.chm | CHM file for the eModule.
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BRIDGE_ADDRESS_OFFSET | Integer | Memory map address to be allocated for Nvme Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
NVME_PCI_MEM_MAP_BASE_ADDRESS_LENGTH | Integer | NVMe BAR Memory space size.Currently only consider for one controller.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label: BuildTools_28, Dated: 2016-12-30
Visual eBios: RSS.7.18.0424, Dated: 2016-12-30
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes:
EIP#271158 - Add EFIAPI qualifier in public functions.
EIP#274815 - Fault Tolerance Recovery is not working with NVMe device
EIP addressed in this label:
EIP#250484 - Modify base address base on PCIe Bar and Length
EIP#256260 - Modified Resource allocation for Nvme Recovery devices, based on these PCD's AmiPcdPeiPciMmioTopAddress and AmiPcdPeiPciEnumerationLastBusNumber, defined in AmiModulePkg.dec to avoid resource conflict during recovery across different recovery drivers.
EIP#270918 - NvmeRecovery should obtain the Free Pci Mmio Space from the Resource Descriptor HOB and use it for resource allocation.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.sdl (EIP #250484, #256260, #271158)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #256260,#270918, #274815)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #256260,#271158, #270918)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #256260,#271158, #270918)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
1. Create a DOS partition in NVMe device and put the recovery image in that
2. Press Ctrl+Home keys while booting and verify that the Recovery Image in device has been Flashed
Validation Testing:
Quality Assurance Test Results
Release History:
NvmeRecovery_03
  • [TAG] EIP250484
    [Category] Improvement
    [Severity] Normal
    [Description] Modify base address base on PCIe Bar and Length
    [Files] NvmeRecovery.sdl

  • [TAG] EIP256260
    [Category] Improvement
    [Description] Modified Resource allocation for Nvme Recovery devices, based on these PCD's AmiPcdPeiPciMmioTopAddress and AmiPcdPeiPciEnumerationLastBusNumber, defined in AmiModulePkg.dec to avoid resource conflict during recovery across different recovery drivers.
    [Files] NvmeRecovery.sdl, NvmeRecovery.inf, NvmeRecovery.c, NvmeRecovery.h

  • [TAG] EIP271158
    [Category] Bug Fix
    [Severity] Normal
    [Symptom] NvmeRecovery: Add EFIAPI qualifier in public functions
    [RootCause] EFIAPI qualifier is missing in public functions of NvmeRecovery module
    [Solution] Added EFIAPI qualifier in required functions
    [Files] NvmeRecovery.sdl, NvmeRecovery.c, NvmeRecovery.h

  • [TAG] EIP270918
    [Category] Improvement
    [Severity] Normal
    [Description] NvmeRecovery should obtain the Free Pci Mmio Space from the Resource Descriptor HOB and use it for resource allocation.
    [Files] NvmeRecovery.inf, NvmeRecovery.c, NvmeRecovery.h

  • [TAG] EIP274815
    [Category] Bug Fix
    [Severity] Normal
    [Symptom] Fault Tolerance Recovery is not working with NVMe device
    [RootCause] In NvmeRecovery gPciCfg global variable is used to access the Pci configuration Read/Write services. This global variable is updated in the NvmeRecovery entry point from the Pei Service Table.During Fault Tolerance recovery case, Nvme recovery entry has been executed before loading PciCfg Services Instance to the PeiService table.Since Pci Configuration space access is corrupted, NvmeRecovery driver not able to detect the Nvme SSD.
    [Solution] Added gEfiPciCfg2PpiGuid in the NvmeRecovery.inf Depex section.
    [Files] NvmeRecovery.inf

NvmeRecovery_02
NvmeRecovery_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2016-10-18
Source Control Label: NvmeRecovery_04
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Driver Dependencies
Component Dependencies
AmiModulePkg
Dependent Component Title: AmiModulePkg
Dependent Component Reference Name: AmiModulePkg
Dependent Source Control Label: AmiModulePkg_32
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Interface/AmiModulePkg;
NOTE: If the project has AhciRecovery eModule, then upgrade the module label as below.
AhciRecovery
Dependent Component Title: AhciRecovery
Dependent Component Reference Name: AhciRecovery
Dependent Source Control Label: AhciRecovery_04 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Source/Modules/AhciRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge or PCI/PCI bridge value in order to enumerate the bridge under which NVMe controller is connected.
NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list.
NvmeRecovery.chm | CHM file for the eModule.
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BRIDGE_ADDRESS_OFFSET | Integer | Memory map address to be allocated for Nvme Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
NVME_PCI_MEM_MAP_BASE_ADDRESS_LENGTH | Integer | NVMe BAR Memory space size.Currently only consider for one controller.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label: BuildTools_28, Dated: 2016-12-30
Visual eBios: RSS.7.18.0424, Dated: 2016-12-30
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes:
NONE
EIP addressed in this label:
EIP#287893 - Modified NvmeRecovery driver to utilize the PeiPciEnumeration Ppi Services.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.sdl (EIP #287893)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #287893)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #287893)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.h (EIP #287893)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
1. Create a DOS partition in NVMe device and put the recovery image in that
2. Press Ctrl+Home keys while booting and verify that the Recovery Image in device has been Flashed
Validation Testing:
Quality Assurance Test Results
Release History:
NvmeRecovery_04
  • [TAG] EIP287893
    [Category] Improvement
    [Severity] Normal
    [Description] Modified NvmeRecovery driver to utilize the PeiPciEnumeration Ppi Services.
    [Files] NvmeRecovery.sdl,NvmeRecovery.inf,NvmeRecovery.c,NvmeRecovery.h

NvmeRecovery_03
NvmeRecovery_02
NvmeRecovery_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2017-08-03
Source Control Label: NvmeRecovery_05
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Driver Dependencies
Component Dependencies
AmiModulePkg
Dependent Component Title: AmiModulePkg
Dependent Component Reference Name: AmiModulePkg
Dependent Source Control Label: AmiModulePkg_32 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Interface/AmiModulePkg;
NOTE: If the project has AhciRecovery eModule, then upgrade the module label as below.
AhciRecovery
Dependent Component Title: AhciRecovery
Dependent Component Reference Name: AhciRecovery
Dependent Source Control Label: AhciRecovery_04 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Source/Modules/AhciRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge or PCI/PCI bridge value in order to enumerate the bridge under which NVMe controller is connected.
NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list.
NvmeRecovery.chm | CHM file for the eModule.
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BRIDGE_ADDRESS_OFFSET | Integer | Memory map address to be allocated for Nvme Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
NVME_PCI_MEM_MAP_BASE_ADDRESS_LENGTH | Integer | NVMe BAR Memory space size.Currently only consider for one controller.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label: BuildTools_30.7, Dated: 2017-01-13
Visual eBios: RSS.7.19.0478, Dated: 2017-01-13
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes:
EIP #302023 -Nvme recovery failed when Nvme card is behind three level PCIE bridge
EIP #352147 -Builderror due to PcdDebugPrintErrorLevel type mismatch
EIP addressed in this label:
EIP#293551 - Update the TRACE with DEBUG macro and add debug messages to debug the driver.
EIP#302021 - Added PciLib usage in NvmeRecovery driver to avoid build error due to the usage of PciRead32() for obtaining PCI express Base address and Length when PCIE_DYNAMIC_SUPPORT SDL token is enabled.
EIP#299916 - Traced the DevicePath information for each Nvme devices in PEI Phase and updated information in NVME_RECOVERY_DEVICE_INFO structure.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.sdl (EIP #293551, #352147)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #302021)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #293551, #302023, #299916)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.h (EIP #299916, #302021)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.h (EIP #299916)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.c (EIP #299916, #293351)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
1. Create a DOS partition in NVMe device and put the recovery image in that
2. Press Ctrl+Home keys while booting and verify that the Recovery Image in device has been Flashed
Validation Testing:
Quality Assurance Test Results
Release History:
NvmeRecovery_05
  • [TAG] EIP293551
    [Category] Improvement
    [Severity] Normal
    [Description] Update the TRACE with DEBUG macro and add debug messages to debug the driver
    [Files] NvmeRecovery.sdl,NvmeRecovery.c,NvmeCtrl.c

  • [TAG] EIP302021
    [Category] Improvement
    [Severity] Normal
    [Description] Added PciLib usage in NvmeRecovery driver to avoid build error due to the usage of PciRead32() for obtaining PCI express Base address and Length when PCIE_DYNAMIC_SUPPORT SDL token is enabled.
    [Files] NvmeRecovery.inf,NvmeRecovery.h

  • [TAG] EIP302023
    [Category] Bug Fix
    [Severity] Minor
    [Symptom] Nvme recovery failed when Nvme card is behind three level PCIE bridge
    [RootCause] For a 3 Level PCI to PCI bridge, parent's bridge Subordinate Bus Number is not programmed with the correct maximum Bus Number value behind the bridge.So Nvme device which is connected under the 3rd Level P2P bridge is not found.
    [Solution] Added code to recursively update the Subordinate Bus Number for all the Bridge's above if any new PCI to PCI bridge is discovered.
    And skipped re-programming of Subordinate Bus No if the PCI to PCI bridge is already programmed.
    [Files] NvmeRecovery.c

  • [TAG] EIP299916
    [Category] Improvement
    [Severity] Important
    [Description] Traced the DevicePath information for each Nvme devices in PEI Phase and updated information in NVME_RECOVERY_DEVICE_INFO structure
    [Files] NvmeRecovery.c,NvmeRecovery.h,NvmeCtrl.h,NvmeCtrl.c

  • [TAG] EIP352147
    [Category] Bug Fix
    [Severity] Minor
    [Symptom] Builderror due to PcdDebugPrintErrorLevel type mismatch.
    [RootCause] PcdDebugPrintErrorLevel type mismatch across project override and driver override causes build error.
    [Solution] As per module developers guide, used "PcdFixedDebugPrintErrorLevel" .
    [Files] NvmeRecovery.sdl

NvmeRecovery_04
NvmeRecovery_03
NvmeRecovery_02
NvmeRecovery_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2017-12-22
Source Control Label: NvmeRecovery_06
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Driver Dependencies
Component Dependencies
AmiModulePkg
Dependent Component Title: AmiModulePkg
Dependent Component Reference Name: AmiModulePkg
Dependent Source Control Label: AmiModulePkg_32 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Interface/AmiModulePkg;
NOTE: If the project has AhciRecovery eModule, then upgrade the module label as below.
AhciRecovery
Dependent Component Title: AhciRecovery
Dependent Component Reference Name: AhciRecovery
Dependent Source Control Label: AhciRecovery_04 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Source/Modules/AhciRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge or PCI/PCI bridge value in order to enumerate the bridge under which NVMe controller is connected.
NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list.
NvmeRecovery.chm | CHM file for the eModule.
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BRIDGE_ADDRESS_OFFSET | Integer | Memory map address to be allocated for Nvme Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
NVME_PCI_MEM_MAP_BASE_ADDRESS_LENGTH | Integer | NVMe BAR Memory space size.Currently only consider for one controller.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label: BuildTools_30.7, Dated: 2017-01-13
Visual eBios: RSS.7.19.0478, Dated: 2017-01-13
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes:
NONE
EIP addressed in this label:
EIP#293551 - Remove dependency of AmiCompatibilityPkg in NvmeRecovery.
EIP#302021 - Need support to Publish Block Io PPI Service on Default Boot.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #367629, #368408)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #367629, #368408)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.h (EIP #367629, #368408)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.c (EIP #367629)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
1. Create a DOS partition in NVMe device and put the recovery image in that
2. Press Ctrl+Home keys while booting and verify that the Recovery Image in device has been Flashed
Validation Testing:
Quality Assurance Test Results
Release History:
NvmeRecovery_06
  • [TAG] EIP367629
    [Category] Improvement
    [Severity] Normal
    [Description] Remove dependency of AmiCompatibilityPkg in NvmeRecovery
    [Files] NvmeRecovery.inf,NvmeRecovery.c,NvmeRecovery.h,NvmeCtrl.c

  • [TAG] EIP368408
    [Category] Improvement
    [Severity] Normal
    [Description] Need support to Pubish Block Io PPI Service on Default Boot
    [Files] NvmeRecovery.inf,NvmeRecovery.c,NvmeRecovery.h

NvmeRecovery_05
NvmeRecovery_04
NvmeRecovery_03
NvmeRecovery_02
NvmeRecovery_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2018-10-23
Source Control Label: NvmeRecovery_07
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Driver Dependencies
Component Dependencies
Mandatory
AmiModulePkg
Dependent Component Title: AmiModulePkg
Dependent Component Reference Name: AmiModulePkg
Dependent Source Control Label: AmiModulePkg_32 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Interface/AmiModulePkg;
MdeModulePkg
Dependent Component Title: MdeModulePkg
Dependent Component Reference Name: MdeModulePkg
Dependent Source Control Label: MdeModulePkg_19 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Interface/MdeModulePkg;
Recovery
Dependent Component Title: Recovery
Dependent Component Reference Name: Recovery
Dependent Source Control Label: Recovery_11 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Modules/Recovery;
Optional
AhciRecovery
Dependent Component Title: AhciRecovery
Dependent Component Reference Name: AhciRecovery
Dependent Source Control Label: AhciRecovery_04 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Source/Modules/AhciRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge or PCI/PCI bridge value in order to enumerate the bridge under which NVMe controller is connected.
NOTE:To support PEI IOMMU feature in NvmeRecovery driver,port the'PcdVTdPeiDmaBufferSizePCD'value based on recovery image size.

NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list.
NvmeRecovery.chm | CHM file for the eModule.
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BRIDGE_ADDRESS_OFFSET | Integer | Memory map address to be allocated for Nvme Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
NVME_PCI_MEM_MAP_BASE_ADDRESS_LENGTH | Integer | NVMe BAR Memory space size.Currently only consider for one controller.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label: BuildTools_32.1, Dated: 2018-03-01
Visual eBios: RSS.7.19.0590, Dated: 2018-02-08
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Enterprise WDK version 1703
New features added in this label:
EIP#420134 - Added PEI IOMMU support in NvmeRecovery driver
General Bug Fixes:
EIP #436441 - System failed to read the recovery binary from the NVMe device
EIP #437473 - Recovery from Nvme device failed with IOMMU support enabled
EIP addressed in this label:
EIP#375819 - Fix errors reported by static code analysis tool
EIP#389390 - As per the PI spec, DeviceIndex for EFI_PEI_RECOVERY_BLOCK_IO_PPI services is a number from 1 to NumberBlockDevices. So, Modified the DeviceIndex of GetBlockDeviceMediaInfo() & ReadBlocks() in NvmeRecovery module
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.cif (EIP #420134)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.sdl (EIP #420134, #437473)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #420134)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #420134, #389390, #436441)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.c (EIP #420134, #375819, #437473)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.h (EIP #420134, #437473)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
1. Create a DOS partition in NVMe device and put the recovery image in that
2. Press Ctrl+Home keys while booting and verify that the Recovery Image in device has been Flashed
Result: PASS
Validation Testing:
Quality Assurance Test Results
Release History:
NvmeRecovery_07
  • [TAG] EIP375819
    [Category] Improvement
    [Severity] Important
    [Description] Fix errors reported by static code analysis tool
    [Files] NvmeCtrl.c

  • [TAG] EIP389390
    [Category] Improvement
    [Severity] Normal
    [Description] As per the PI spec, DeviceIndex for EFI_PEI_RECOVERY_BLOCK_IO_PPI services is a number from 1 to NumberBlockDevices. So, Modified the DeviceIndex of GetBlockDeviceMediaInfo() & ReadBlocks() in NvmeRecovery module
    [Files] NvmeRecovery.c

  • [TAG] EIP420134
    [Category] New Feature
    [Severity] Normal
    [Description] Added PEI IOMMU support in NvmeRecovery driver
    [Files] NvmeRecovery.sdl,NvmeRecovery.inf,NvmeRecovery.c,NvmeCtrl.h,NvmeCtrl.c,NvmeRecovery.cif

  • [TAG] EIP436441
    [Category] Bug Fix
    [Severity] Minor
    [Symptom] System failed to read the recovery binary from the NVMe device
    [RootCause] When User ported duplicate "Root bridge" entries for NVME_ROOT_BRIDGE_LIST Elink, NvmeRecovery driver enumerate's and re-configures the Nvme device again. It causes the device to behave abnormally.
    [Solution] Added changes to avoid PCI enumeration for the Duplicate Root bridge entries added for NVME_ROOT_BRIDGE_LIST Elink.
    [Files] NvmeRecovery.c

  • [TAG] EIP437473
    [Category] Bug Fix
    [Severity] Minor
    [Symptom] Recovery from Nvme device failed with IOMMU support enabled
    [RootCause] Allocated buffer size and size passed for IoMmuMap() and UnMap() differs. Hence during IoMmuUnmap(), unallocated memory is accessed and gets corruptd.
    [Solution] For an NVMe command, PRP1 need not to be aligned only PRP2 should be aligned to MPS.
    1) So removed the code added to align the buffer used for Identify data command. 2) Handled PRP2 usage in GetIdentifyData().
    [Files] NvmeRecovery.sdl,NvmeRecovery.c,NvmeCtrl.h,NvmeCtrl.c

NvmeRecovery_06
NvmeRecovery_05
NvmeRecovery_04
NvmeRecovery_03
NvmeRecovery_02
NvmeRecovery_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2019-10-25
Source Control Label: NvmeRecovery_08
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Driver Dependencies
Component Dependencies
Mandatory
AmiModulePkg
Dependent Component Title: AmiModulePkg
Dependent Component Reference Name: AmiModulePkg
Dependent Source Control Label: AmiModulePkg_49 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Interface/AmiModulePkg;
MdeModulePkg
Dependent Component Title: MdeModulePkg
Dependent Component Reference Name: MdeModulePkg
Dependent Source Control Label: MdeModulePkg_19 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Interface/MdeModulePkg;
Recovery
Dependent Component Title: Recovery
Dependent Component Reference Name: Recovery
Dependent Source Control Label: Recovery_11 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Modules/Recovery;
Optional
AhciRecovery
Dependent Component Title: AhciRecovery
Dependent Component Reference Name: AhciRecovery
Dependent Source Control Label: AhciRecovery_04 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Source/Modules/AhciRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge or PCI/PCI bridge value in order to enumerate the bridge under which NVMe controller is connected.
NOTE:To support PEI IOMMU feature in NvmeRecovery driver,port the'PcdVTdPeiDmaBufferSizePCD'value based on recovery image size.

NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list.
NvmeRecovery.chm | CHM file for the eModule.
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BRIDGE_ADDRESS_OFFSET | Integer | Memory map address to be allocated for Nvme Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
NVME_PCI_MEM_MAP_BASE_ADDRESS_LENGTH | Integer | NVMe BAR Memory space size.Currently only consider for one controller.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label: BuildTools_35, Dated: 2019-07-06
Visual eBios: RSS.7.21.0678, Dated: 2019-01-31
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Enterprise WDK version 1703
Compiler Tool(s): GCC version: 7.4.0
New features added in this label:
NONE
General Bug Fixes:
EIP #500869 - NVMe Recovery failure due to wrong Subordinate Bus number programming for PCI bridge
EIP #493868 - Issue in Device Enumeration
EIP #460464 - Build error occurs after adding NvmeRecovery_07 and PeiPciEnumeration_Latest driver
EIP #454166 - Bridge resource programmed by recovery drivers are not cleared
EIP #502735 - Fix warnings occurred in NvmeRecovery_08 driver
EIP addressed in this label:
EIP#502309 - Changes done to resolve cpp errors
EIP#486340 - Add gAmiPublishBlockIoPpiGuid in the Depex section of Block I/O recovery modules
EIP#400923 - Check and Analyse all GCC Build process Warnings in Core Modules
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.cif (EIP #486340)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #486340, #502735)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #502309, #500869, #493868, #486340, #460464, #454166, #400923, #502735)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.h(EIP #486340)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.c (EIP #502735)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.h (EIP #502735)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
Verify that recovery image is found from the NVMe device and It has been flashed.
Result: PASS
Validation Testing:
The BQA testing had been done before release. The test results will provide upon request
Release History:
NvmeRecovery_08
  • [TAG] EIP400923
    [Category] Improvement
    [Severity] Normal
    [Description] Check and Analyse all GCC Build process Warnings in Core Modules
    [Files] NvmeRecovery.c,NvmeCtrl.c

  • [TAG] EIP454166
    [Category] Bug Fix
    [Severity] Minor
    [Symptom] Bridge resource programmed by recovery drivers are not cleared
    [RootCause] If root bridge cleared first, then resource under the root bridge cannot be cleared in DXE phase
    [Solution] Travesrse from reverse to clear the bridges and resource connected to root bridge and clear the root bridge at the end
    [Files] NvmeRecovery.c

  • [TAG] EIP486340
    [Category] Improvement
    [Severity] Normal
    [Description] Add gAmiPublishBlockIoPpiGuid in the Depex section of Block I/O recovery modules
    [Files] NvmeRecovery.inf,NvmeRecovery.c,NvmeRecovery.h,NvmeRecovery.cif

  • [TAG] EIP493868
    [Category] Bug Fix
    [Severity] Minor
    [Symptom] Issue in Device Enumeration
    [RootCause] When Device and Function numbers are zero's, irrespective of Bus number check, the enumeration is always starts from Bus 0
    [Solution] Done changes to start the enumeration from Bus 0, only when Bus, Device and Function numbers all are zero's
    [Files] NvmeRecovery.c

  • [TAG] EIP500869
    [Category] Bug Fix
    [Severity] Normal
    [Symptom] NVMe Recovery failure due to wrong Subordinate Bus number programming for PCI bridge
    [RootCause] we are programming the Subordinate bus number properly but we are not updating in the internal structure later CheckforProgrammedBridgeorDevice*(), using the structure data and getting the subordinate bus number, as the strucutre is not updated while setting the proper subordinate number its still 0x10so when we go and start enumeration for the second ported bridge, we again start assigning Suboridate bus number 0x10 for the next bridge also
    [Solution] Subordinate bus number value is programmed properly during enumeration for a child PCI bridge and updated in the local structure
    [Files] NvmeRecovery.c

  • [TAG] EIP502309
    [Category] Improvement
    [Severity] Normal
    [Description] Changes done to resolve cpp errors
    [Files] NvmeRecovery.c

  • [TAG] EIP502735
    [Category] Improvement
    [Severity] Normal
    [Description] Fix warnings occurred in NvmeRecovery_08 driver
    [Files] NvmeRecovery.inf,NvmeRecovery.c,NvmeCtrl.h,NvmeCtrl.c

NvmeRecovery_07
NvmeRecovery_06
NvmeRecovery_05
NvmeRecovery_04
NvmeRecovery_03
NvmeRecovery_02
NvmeRecovery_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: NvmeRecovery
Component Reference Name: NvmeRecovery
Component Type: eModule
Release Date: 2020-08-17
Source Control Label: NvmeRecovery_09
Source Control Location: SS:AptioV;$/AptioV/Source/Modules/NvmeRecovery;
Driver Dependencies
Component Dependencies
Mandatory
AmiModulePkg
Dependent Component Title: AmiModulePkg
Dependent Component Reference Name: AmiModulePkg
Dependent Source Control Label: AmiModulePkg_49 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Interface/AmiModulePkg;
MdeModulePkg
Dependent Component Title: MdeModulePkg
Dependent Component Reference Name: MdeModulePkg
Dependent Source Control Label: MdeModulePkg_19 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Interface/MdeModulePkg;
Recovery
Dependent Component Title: Recovery
Dependent Component Reference Name: Recovery
Dependent Source Control Label: Recovery_11 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Modules/Recovery;
PeiPciEnumeration
Dependent Component Title: PeiPciEnumeration
Dependent Component Reference Name: PeiPciEnumeration
Dependent Source Control Label: PeiPciEnumeration_04 or above
Dependent Source Control Location: SS:AptioV;$/AptioV/Source/Modules/PeiPciEnumeration;
Optional
AhciRecovery
Dependent Component Title: AhciRecovery
Dependent Component Reference Name: AhciRecovery
Dependent Source Control Label: AhciRecovery_04 or above
Dependent Source Control Location: SS: AptioV;$/AptioV/Source/Modules/AhciRecovery;
Component Description:
The NvmeRecovery eModule can be added to a EFI BIOS to support recovery from NVMe devices. Recovery through NVMe Device to work, NVME_ROOT_BRIDGE_LIST needs to be ported with board specific Root bridge or PCI/PCI bridge value in order to enumerate the bridge under which NVMe controller is connected.
NOTE:To support PEI IOMMU feature in NvmeRecovery driver,port the'PcdVTdPeiDmaBufferSizePCD'value based on recovery image size.

NvmeRecovery eModule contains the following files:
Filename | Description
Main Component | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.cif | Component information file for the eModule.
NvmeRecovery.sdl | Contains BIOS build parameters.
NvmeRootBridgeElink.txt | Template file to define grammar for generating NVMe Rootbridge list.
NvmeRecovery.chm | CHM file for the eModule.
INF-NvmeRecovery module part | Root\AmiModulePkg\NvmeRecovery
NvmeRecovery.inf | Component information file for the module part.
NvmeRecovery.c | This file contains the code to implement EFI_PEI_RECOVERY_BLOCK_IO_PPI for NVMe devices.
NvmeRecovery.h | Header file contains structure and function declaration used for NVMe PCI enumeration.
NvmeCtrl.h | Header file for NVMe Controller/device definition
NvmeCtrl.c | This file contains the code which provide access to the NVMe Controller/Device
BIOS Parameters:
Parameter Name | Type | Description
NvmeRecovery_SUPPORT | Boolean | Main switch to enable NVMe device recovery support in Project
ENABLE_NVME_RECOVERY_TRACES | Boolean | Main token to enable NVMe Recovery driver Trace support.
NVME_MAXIMUM_PCI_ROOT_BRIDGE | Integer | Port this - Maximum Bridge's in the Platform including number of root/root port Bridge's.
NVME_PCI_MEM_MAP_BRIDGE_ADDRESS_OFFSET | Integer | Memory map address to be allocated for Nvme Device's, the OEM has to be aware that this address is not used by someone in PEI phase, if used OEM has to Port this address and allocate resource also.
NVME_PCI_MEM_MAP_BASE_ADDRESS_LENGTH | Integer | NVMe BAR Memory space size.Currently only consider for one controller.
MAX_NVME_RECOVERY_DEVICE | Integer | Maximum NVMe Device to be supported for recovery.
AMI Build Tools:
Tools Label: BuildTools_35, Dated: 2019-07-06
Visual eBios: RSS.7.21.0678, Dated: 2019-01-31
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Enterprise WDK version 1703
Compiler Tool(s): GCC version: 7.4.0
New features added in this label:
NONE
General Bug Fixes:
EIP#503437 - Same BAR address assigned for 2 Nvme controllers
EIP addressed in this label:
EIP#524665 - Add PassThru support in NvmeRecovery driver
EIP#551829 - Perform Cpp and EfiQuality check for NvmeRecovery_09 driver
EIP#559208 - Fixed warnings occured in NvmeRecovery_09 driver.
EIP#557608 - Reason for this Error:In MSICFL project, "FsRecovery_SUPPORT" token is enabled by default. hence no error will arise. If i disable that token, can see error. In NT32 project, "FsRecovery_SUPPORT" token disabled by default. In NvmeRecovery.sdl file, we have this token dependency enabled under INF Component section. So NvmeRecovery module inf doesn't get a control.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.cif (EIP #524665)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.inf (EIP #524665)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.sdl (EIP #524665, #557608)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.c (EIP #503437, #524665, #559208)
Root\AmiModulePkg\NvmeRecovery\NvmeRecovery.h (EIP #503437, #551829, #524665)
Root\AmiModulePkg\NvmeRecovery\NvmePassThruPei.c (EIP #551829, #524665, #559208)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.c (EIP #524665, #559208)
Root\AmiModulePkg\NvmeRecovery\NvmeCtrl.h (EIP #524665)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
Verify that recovery image is found from the NVMe device and It has been flashed.
Result: PASS
Validation Testing:
The BQA testing had been done before release. The test results will provide upon request
Release History:
NvmeRecovery_09
  • [TAG] EIP503437
    [Category] Bug Fix
    [Severity] Normal
    [Symptom] Same BAR address assigned for 2 Nvme controllers
    [RootCause] If the memory requirement for Nvme controller is less than 16KB then the same Base address is assigned to next Nvme controller.
    [Solution] Increased the base address value by using BAR granularity to align the next 16KB base address before assigning to the controller, if the memory requirement of previous controller is less than 16KB.
    [Files] NvmeRecovery.c,NvmeRecovery.h

  • [TAG] EIP524665
    [Category] Improvement
    [Severity] Important
    [Description] Add PassThru support in NvmeRecovery driver
    [Files] NvmeCtrl.h,NvmePassThruPei.c,NvmeRecovery.c,NvmeRecovery.cif,NvmeRecovery.h,NvmeRecovery.inf,NvmeRecovery.sdl,NvmeCtrl.c

  • [TAG] EIP551829
    [Category] Improvement
    [Severity] Normal
    [Description] Perform Cpp and EfiQuality check for NvmeRecovery_09 driver
    [Files] NvmeRecovery.c,NvmePassThruPei.c

  • [TAG] EIP559208
    [Category] Improvement
    [Severity] Normal
    [Description] Fixed warnings occured in NvmeRecovery_09 driver.
    [Files] NvmeRecovery.c,NvmeCtrl.c,NvmePassThruPei.c

  • [TAG] EIP557608
    [Category] Improvement
    [Severity] Normal
    [Description] Reason for this Error:In MSICFL project, "FsRecovery_SUPPORT" token is enabled by default. hence no error will arise. If i disable that token, can see error. In NT32 project, "FsRecovery_SUPPORT" token disabled by default. In NvmeRecovery.sdl file, we have this token dependency enabled under INF Component section. So NvmeRecovery module inf doesn't get a control. Solution:In this case, instead of having token dependency in SDL file inf component section, did fix in SDL master token.So when FsRecovery token disabled, NvmeRecovery module doesn't navigate to build (since the SDL master token dependency fails).
    [Files] NvmeRecovery.sdl

NvmeRecovery_08
NvmeRecovery_07
NvmeRecovery_06
NvmeRecovery_05
NvmeRecovery_04
NvmeRecovery_03
NvmeRecovery_02
NvmeRecovery_01

© American Megatrends International LLC.


Release Notes - NDA Required

Validation Test Report for NvmeRecovery Label (INT)NvmeRecovery_01.1

Platform Information Form :

Board Information - SharkBay
BIOS Information (Label, Path) - Labeled'5.008_VeB_0AQYC_029'; Path '$/AptioV/Projects/Intel/Haswell/SharkBay-M/SharkBay.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

Recovery from Nvme device with NTFS file system---- PASS
Status Update:

Recovery from Nvme device with FAT file system---- PASS
Status Update:

Platform Information Form :

Board Information - SugarBay
BIOS Information (Label, Path) - Labeled'5.010_SugarBayPkg_16'; Path 'SS: AptioV;$/AptioV/Projects/Intel/IeiSugarbay/IeiSugarbay.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

Recovery from Nvme device with NTFS file system---- PASS
Status Update:

Recovery from Nvme device with FAT file system---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for NvmeRecovery Label (INT)NvmeRecovery_01.02

Platform Information Form :

Board Information - SharkBay
BIOS Information (Label, Path) - Labeled'5.008_VeB_0AQYC_031'; Path '$/AptioV/Projects/Intel/Haswell/SharkBay-M/SharkBay.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

Recovery from Nvme device with NTFS file system---- PASS
Status Update:

Recovery from Nvme device with FAT file system---- PASS
Status Update:

Platform Information Form :

Board Information - SugarBay
BIOS Information (Label, Path) - Labeled'5.011_SugarBayPkg_18'; Path 'SS: AptioV;$/AptioV/Projects/Intel/IeiSugarbay/IeiSugarbay.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

Recovery from Nvme device with NTFS file system---- PASS
Status Update:

Recovery from Nvme device with FAT file system---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for NvmeRecovery Label (INT)NvmeRecovery_02.02

Platform Information Form :

Board Information - SkyLake_DT
BIOS Information (Label, Path) - Labeled'5.11_VEB_1ASOH033'; Path 'SS: AptioV;$/AptioV/Projects/Intel/Skylake/Skylake_DT_1ASOH/';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:

Platform Information Form :

Board Information - BrasWell
BIOS Information (Label, Path) - Labeled'5.011_VEB_1ASBI031'; Path 'SS: AptioV;$/AptioV/Projects/Intel/Braswell/Braswell-Client';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for NvmeRecovery Label (INT)NvmeRecovery_04.02

Platform Information Form :

Board Information - MSI_Kabylake
BIOS Information (Label, Path) - Labeled'5.12_VEB_1ATQP018 '; Path 'SS: AptioV;$/AptioV/Projects/Intel/Kabylake/Kabylake_DT_1ATQP/';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

All the test cases were performed with PeiPciEnumeration support enabled and disabled.

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:

Platform Information Form :

Board Information - Kabylake
BIOS Information (Label, Path) - Labeled'5.12_VEB_1ATQO017 '; Path 'SS: AptioV;$/AptioV/Projects/Intel/Kabylake/Kabylake_MB_1ATQO';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

All the test cases were performed with PeiPciEnumeration support enabled and disabled.

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for NvmeRecovery Label (INT)NvmeRecovery_05.02

Platform Information Form :

Board Information - MSI_Kabylake
BIOS Information (Label, Path) - Labeled'5.13_VEB_KGBIA '; Path 'SS: AptioV;$/AptioV/Projects/Intel/Kabylake/MsiKabylake/';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

All the test cases were performed with PeiPciEnumeration support enabled and disabled.

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:

Platform Information Form :

Board Information - Kabylake Refresh
BIOS Information (Label, Path) - Labeled'5.12_VEB_1ATQO037 '; Path 'SS: AptioV;$/AptioV/Projects/Intel/Kabylake/Kabylake_MB_1ATQO';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

All the test cases were performed with PeiPciEnumeration support enabled and disabled.

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for NvmeRecovery Label (INT)NvmeRecovery_06.01

Platform Information Form :

Board Information - MSI_Kabylake
BIOS Information (Label, Path) - Labeled'5.13_VEB_KGBIA '; Path 'SS: AptioV;$/AptioV/Projects/Intel/Kabylake/MsiKabylake/';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

All the test cases were performed with PeiPciEnumeration support enabled and disabled.

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:

Platform Information Form :

Board Information - Kabylake Refresh
BIOS Information (Label, Path) - Labeled'5.12_VEB_1ATQO046 '; Path 'SS: AptioV;$/AptioV/Projects/Intel/Kabylake/Kabylake_MB_1ATQO';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

All the test cases were performed with PeiPciEnumeration support enabled and disabled.

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

NvmeRecovery with NTFS file system---- PASS
Status Update:

NvmeRecovery with FAT file system---- PASS
Status Update:

Fault Tolerant Firmware Recovery---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for NvmeRecovery Label (INT)NvmeRecovery_07.01

Platform Information Form :

Board Information - WhiskeyLake U
BIOS Information (Label, Path) - Labeled:'5.13_VEB_1AUOK029'; Path 'SS: AptioV;$ /AptioV;$/AptioV/Projects/Intel/CoffeeLake/';
Chipset Information (Type, Stepping) - Intel CannonLake , D1
CPU Information (Type, Stepping) - Intel WhiskeyLake , W0
Memory Info (Manufacturer, Speed, Configuration) - 16384 MB , 2400 MHz
Graphics (Please specify which one in used) - N/A
Chipset driver Version -N/A
Graphics drive Version -N/A

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

REF-52998 : NvmeRecovery with NTFS file system---- PASS
Status Update:

REF-52999 NvmeRecovery with FAT file system---- PASS
Status Update:

REF-28714 Fault Tolerant Firmware Recovery---- PASS
Status Update:

Platform Information Form :

Board Information - MsiKabylake
BIOS Information (Label, Path) - Labeled:'(INT)5.14_MsiH110_2.2.4'; Path 'SS: AptioV;$/AptioV/Projects/Intel/Kabylake/MsiH110/';
Chipset Information (Type, Stepping) - SKL PCH-H , D1
CPU Information (Type, Stepping) - Skylake DT,S0
Memory Info (Manufacturer, Speed, Configuration) -4096 MB , 2133 MHz
Graphics (Please specify which one in used) - N/A
Chipset driver Version - N/A
Graphics drive Version - N/A

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

REF-52998 : NvmeRecovery with NTFS file system---- PASS
Status Update:

REF-52999 NvmeRecovery with FAT file system---- PASS
Status Update:

REF-28714 Fault Tolerant Firmware Recovery---- PASS
Status Update:

Platform Information Form :

Board Information - AMD_Summit
BIOS Information (Label, Path) - Labeled:'(INT)5.14_AsrkAB350M_3.1.0'; Path 'SS: AptioV;$/AptioV/Projects/Amd/SummitKgb/AsrkAB350M';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) - 4096 MB
Graphics (Please specify which one in used) -
Chipset driver Version - N/A
Graphics drive Version - N/A

Build
REF-37927: .N/A Linux - Test ROM build---- PASS
Status Update:

CppCheck
REF-37351: .N/A Cpp Check---- PASS
Status Update:

NvmeRecovery

REF-52998 : NvmeRecovery with NTFS file system---- PASS
Status Update:

REF-52999 NvmeRecovery with FAT file system---- PASS
Status Update:

REF-28714 Fault Tolerant Firmware Recovery---- PASS
Status Update: