]>
Commit | Line | Data |
---|---|---|
1cddf2ef | 1 | /** @file\r |
2 | This file declares Recovery Module PPI. This PPI is used to find and load the\r | |
3 | recovery files.\r | |
4 | \r | |
5 | A module that produces this PPI has many roles and is responsible for the following:\r | |
6 | -# Calling the driver recovery PPI EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.\r | |
7 | GetNumberRecoveryCapsules() to determine if one or more DXE recovery \r | |
8 | entities exist.\r | |
9 | -# If no capsules exist, then performing appropriate error handling.\r | |
10 | -# Allocating a buffer of MaxRecoveryCapsuleSize as determined by\r | |
e16ee65b | 11 | EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.GetRecoveryCapsuleInfo() or\r |
1cddf2ef | 12 | larger.\r |
13 | -# Determining the policy in which DXE recovery capsules are loaded.\r | |
14 | -# Calling the driver recovery PPI EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.\r | |
15 | LoadRecoveryCapsule() for capsule number x.\r | |
16 | -# If the load failed, performing appropriate error handling.\r | |
17 | -# Performing security checks for a loaded DXE recovery capsule.\r | |
18 | -# If the security checks failed, then logging the failure in a data HOB.\r | |
19 | -# If the security checks failed, then determining the next \r | |
20 | EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.LoadRecoveryCapsule()capsule number; \r | |
21 | otherwise, go to step 11.\r | |
22 | -# If more DXE recovery capsules exist, then go to step 5; otherwise, perform \r | |
23 | error handling.\r | |
24 | -# Decomposing the capsule loaded by EFI_PEI_DEVICE_RECOVERY_MODULE_PPI.\r | |
25 | LoadRecoveryCapsule() into its components. It is assumed that the path \r | |
26 | parameters are redundant for recovery and Setup parameters are either \r | |
27 | redundant or canned.\r | |
28 | -# Invalidating all HOB entries for updateable firmware volume entries. \r | |
29 | This invalidation prevents possible errant drivers from being executed.\r | |
30 | -# Updating the HOB table with the recovery DXE firmware volume information \r | |
31 | generated from the capsule decomposition.\r | |
32 | -# Returning to the PEI Dispatcher. \r | |
33 | \r | |
e16ee65b | 34 | Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>\r |
9df063a0 | 35 | This program and the accompanying materials\r |
1cddf2ef | 36 | are licensed and made available under the terms and conditions of the BSD License\r |
37 | which accompanies this distribution. The full text of the license may be found at\r | |
38 | http://opensource.org/licenses/bsd-license.php\r | |
39 | \r | |
40 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
41 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
42 | \r | |
43 | @par Revision Reference:\r | |
e16ee65b | 44 | This PPI is defined in UEFI Platform Initialization Specification 1.2 Errata B Volume 1: \r |
1cddf2ef | 45 | Pre-EFI Initalization Core Interface\r |
46 | \r | |
47 | **/\r | |
48 | \r | |
49 | #ifndef __PEI_RECOVERY_MODULE_PPI_H__\r | |
50 | #define __PEI_RECOVERY_MODULE_PPI_H__\r | |
51 | \r | |
1cddf2ef | 52 | #define EFI_PEI_RECOVERY_MODULE_PPI_GUID \\r |
53 | { \\r | |
54 | 0xFB6D9542, 0x612D, 0x4f45, {0x87, 0x2F, 0x5C, 0xFF, 0x52, 0xE9, 0x3D, 0xCF } \\r | |
55 | }\r | |
56 | \r | |
57 | typedef struct _EFI_PEI_RECOVERY_MODULE_PPI EFI_PEI_RECOVERY_MODULE_PPI;\r | |
58 | \r | |
59 | /**\r | |
60 | Loads a DXE capsule from some media into memory and updates the HOB table\r | |
61 | with the DXE firmware volume information.\r | |
62 | \r | |
63 | @param PeiServices General-purpose services that are available to every PEIM.\r | |
64 | @param This Indicates the EFI_PEI_RECOVERY_MODULE_PPI instance.\r | |
65 | \r | |
66 | @retval EFI_SUCCESS The capsule was loaded correctly.\r | |
67 | @retval EFI_DEVICE_ERROR A device error occurred.\r | |
68 | @retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.\r | |
69 | \r | |
70 | **/\r | |
71 | typedef\r | |
72 | EFI_STATUS\r | |
73 | (EFIAPI *EFI_PEI_LOAD_RECOVERY_CAPSULE)(\r | |
74 | IN EFI_PEI_SERVICES **PeiServices,\r | |
75 | IN EFI_PEI_RECOVERY_MODULE_PPI *This\r | |
76 | );\r | |
77 | \r | |
78 | ///\r | |
79 | /// Finds and loads the recovery files.\r | |
80 | ///\r | |
81 | struct _EFI_PEI_RECOVERY_MODULE_PPI {\r | |
82 | EFI_PEI_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule; ///< Loads a DXE binary capsule into memory.\r | |
83 | };\r | |
84 | \r | |
85 | extern EFI_GUID gEfiPeiRecoveryModulePpiGuid;\r | |
86 | \r | |
87 | #endif\r |