/** @file\r
- This file declares Recovery Module PPI.\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+ This file declares Recovery Module PPI. This PPI is used to find and load the\r
+ recovery files.\r
+\r
+ A module that produces this PPI has many roles and is responsible for the following:\r
+ -# Calling the driver recovery PPI EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.\r
+ GetNumberRecoveryCapsules() to determine if one or more DXE recovery \r
+ entities exist.\r
+ -# If no capsules exist, then performing appropriate error handling.\r
+ -# Allocating a buffer of MaxRecoveryCapsuleSize as determined by\r
+ EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.GetNumberRecoveryCapsules() or\r
+ larger.\r
+ -# Determining the policy in which DXE recovery capsules are loaded.\r
+ -# Calling the driver recovery PPI EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.\r
+ LoadRecoveryCapsule() for capsule number x.\r
+ -# If the load failed, performing appropriate error handling.\r
+ -# Performing security checks for a loaded DXE recovery capsule.\r
+ -# If the security checks failed, then logging the failure in a data HOB.\r
+ -# If the security checks failed, then determining the next \r
+ EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.LoadRecoveryCapsule()capsule number; \r
+ otherwise, go to step 11.\r
+ -# If more DXE recovery capsules exist, then go to step 5; otherwise, perform \r
+ error handling.\r
+ -# Decomposing the capsule loaded by EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.\r
+ LoadRecoveryCapsule() into its components. It is assumed that the path \r
+ parameters are redundant for recovery and Setup parameters are either \r
+ redundant or canned.\r
+ -# Invalidating all HOB entries for updateable firmware volume entries. \r
+ This invalidation prevents possible errant drivers from being executed.\r
+ -# Updating the HOB table with the recovery DXE firmware volume information \r
+ generated from the capsule decomposition.\r
+ -# Returning to the PEI Dispatcher. \r
+ \r
+ Copyright (c) 2007 - 2009, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
- Module Name: RecoveryModule.h\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
@par Revision Reference:\r
- This PPI is defined in Framework of EFI Recovery Spec.\r
- Version 0.9\r
+ This PPI is defined in UEFI Platform Initialization Specification 1.2 Volume 1: \r
+ Pre-EFI Initalization Core Interface\r
\r
**/\r
\r
typedef struct _EFI_PEI_RECOVERY_MODULE_PPI EFI_PEI_RECOVERY_MODULE_PPI;\r
\r
/**\r
- Loads a DXE capsule from some media into memory and updates the HOB table \r
+ Loads a DXE capsule from some media into memory and updates the HOB table\r
with the DXE firmware volume information.\r
\r
- @param PeiServices General-purpose services that are available to every PEIM.\r
- \r
- @param This Indicates the EFI_PEI_RECOVERY_MODULE_PPI instance. \r
+ @param PeiServices General-purpose services that are available to every PEIM.\r
+ @param This Indicates the EFI_PEI_RECOVERY_MODULE_PPI instance.\r
\r
- @retval EFI_SUCCESS The capsule was loaded correctly.\r
- \r
- @retval EFI_DEVICE_ERROR A device error occurred.\r
- \r
- @retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.\r
+ @retval EFI_SUCCESS The capsule was loaded correctly.\r
+ @retval EFI_DEVICE_ERROR A device error occurred.\r
+ @retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_LOAD_RECOVERY_CAPSULE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_MODULE_PPI *This\r
+(EFIAPI *EFI_PEI_LOAD_RECOVERY_CAPSULE)(\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_MODULE_PPI *This\r
);\r
\r
-/**\r
- @par Ppi Description:\r
- Finds and loads the recovery files.\r
-\r
- @param LoadRecoveryCapsule\r
- Loads a DXE binary capsule into memory.\r
-\r
-**/\r
+///\r
+/// Finds and loads the recovery files.\r
+///\r
struct _EFI_PEI_RECOVERY_MODULE_PPI {\r
- EFI_PEI_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule;\r
+ EFI_PEI_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule; ///< Loads a DXE binary capsule into memory.\r
};\r
\r
extern EFI_GUID gEfiPeiRecoveryModulePpiGuid;\r