the error EFI_BUFFER_TOO_SMALL is returned and DataSize is set to the\r
required buffer size to obtain the data.\r
\r
- @param This A pointer to this instance of the EFI_PEI_READ_ONLY_VARIABLE2_PPI.\r
-\r
- @param VariableName A pointer to a null-terminated string that is the variable's name.\r
-\r
- @param VendorGuid A pointer to an EFI_GUID that is the variable's GUID. The combination of\r
- VariableGuid and VariableName must be unique.\r
-\r
- @param Attributes If non-NULL, on return, points to the variable's attributes. See "Related Definitons"\r
- below for possible attribute values.\r
-\r
- @param DataSize On entry, points to the size in bytes of the Data buffer. On return, points to the size of\r
- the data returned in Data.\r
-\r
- @param Data Points to the buffer which will hold the returned variable value.\r
-\r
-\r
- @retval EFI_SUCCESS The function completed successfully.\r
-\r
- @retval EFI_NOT_FOUND The variable was not found.\r
+ @param This A pointer to this instance of the EFI_PEI_READ_ONLY_VARIABLE2_PPI.\r
+ @param VariableName A pointer to a null-terminated string that is the variable's name.\r
+ @param VendorGuid A pointer to an EFI_GUID that is the variable's GUID. The combination of\r
+ VariableGuid and VariableName must be unique.\r
+ @param Attributes If non-NULL, on return, points to the variable's attributes.\r
+ @param DataSize On entry, points to the size in bytes of the Data buffer.\r
+ On return, points to the size of the data returned in Data.\r
+ @param Data Points to the buffer which will hold the returned variable value.\r
\r
+ @retval EFI_SUCCESS The variable was read successfully.\r
+ @retval EFI_NOT_FOUND The variable could not be found.\r
@retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the resulting data. \r
DataSize is updated with the size required for \r
the specified variable.\r
-\r
@retval EFI_INVALID_PARAMETER VariableName, VariableGuid, DataSize or Data is NULL.\r
-\r
@retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error.\r
\r
**/\r
@param This A pointer to this instance of the EFI_PEI_READ_ONLY_VARIABLE2_PPI.\r
\r
@param VariableNameSize On entry, points to the size of the buffer pointed to by VariableName.\r
-\r
@param VariableName On entry, a pointer to a null-terminated string that is the variable's name.\r
On return, points to the next variable's null-terminated name string.\r
\r
@param VendorGuid On entry, a pointer to an UEFI _GUID that is the variable's GUID. \r
On return, a pointer to the next variable's GUID.\r
\r
-\r
@retval EFI_SUCCESS The variable was read successfully.\r
-\r
@retval EFI_NOT_FOUND The variable could not be found.\r
-\r
@retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the resulting\r
data. VariableNameSize is updated with the size\r
required for the specified variable.\r
-\r
@retval EFI_INVALID_PARAMETER VariableName, VariableGuid or\r
VariableNameSize is NULL.\r
-\r
@retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error.\r
\r
**/\r
IN OUT EFI_GUID *VariableGuid\r
);\r
\r
-/**\r
- @par Ppi Description:\r
- This PPI provides a lightweight, read-only variant of the full EFI \r
- variable services. \r
-\r
- @param GetVariable\r
- A service to ascertain a given variable name.\r
-\r
- @param GetNextVariableName\r
- A service to ascertain a variable based upon a given, known variable\r
-\r
-**/\r
+///\r
+/// This PPI provides a lightweight, read-only variant of the full EFI \r
+/// variable services. \r
+///\r
struct _EFI_PEI_READ_ONLY_VARIABLE2_PPI {\r
+ ///\r
+ /// A service to read the value of a particular variable using its name.\r
+ ///\r
EFI_PEI_GET_VARIABLE2 GetVariable;\r
+ ///\r
+ /// Find the next variable name in the variable store.\r
+ ///\r
EFI_PEI_NEXT_VARIABLE_NAME2 NextVariableName;\r
};\r
\r
0xef398d58, 0x9dfd, 0x4103, {0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f } \\r
}\r
\r
-/**\r
- @par Ppi Description:\r
- This PPI provides provide a simple reset service. \r
-\r
- @param ResetSystem\r
- A service to reset the entire platform.\r
-\r
-**/\r
+//\r
+// EFI_PEI_RESET_PPI.ResetSystem() is equivalent to the\r
+// PEI Service ResetSystem().\r
+// It is defined in PiPeiCis.h. \r
+//\r
+\r
+///\r
+/// This PPI provides provide a simple reset service. \r
+///\r
typedef struct {\r
+ ///\r
+ /// A service to reset the entire platform.\r
+ /// This function is defined in PiPeicis.h.\r
+ ///\r
EFI_PEI_RESET_SYSTEM ResetSystem;\r
} EFI_PEI_RESET_PPI;\r
\r
///\r
typedef union {\r
struct {\r
+ ///\r
+ /// A 2-bit field indicating self-test state after reset.\r
+ ///\r
UINT32 Status : 2;\r
+ ///\r
+ /// A 1-bit field indicating whether testing has occurred.\r
+ /// If this field is zero, the processor has not been tested,\r
+ /// and no further fields in the self-test State parameter are valid.\r
+ ///\r
UINT32 Tested : 1;\r
+ ///\r
+ /// Reserved 13 bits.\r
+ ///\r
UINT32 Reserved1 :13;\r
+ ///\r
+ /// A 1-bit field. If set to 1, indicates that virtual\r
+ /// memory features are not available.\r
+ ///\r
UINT32 VirtualMemoryUnavailable : 1;\r
+ ///\r
+ /// A 1-bit field. If set to 1, indicates that IA-32 execution\r
+ /// is not available.\r
+ ///\r
UINT32 Ia32ExecutionUnavailable : 1;\r
+ ///\r
+ /// A 1-bit field. If set to 1, indicates that the floating\r
+ /// point unit is not available.\r
+ ///\r
UINT32 FloatingPointUnavailable : 1;\r
+ ///\r
+ /// A 1-bit field. If set to 1, indicates miscellaneous\r
+ /// functional failure other than vm, ia, or fp.\r
+ /// The test status field provides additional information on\r
+ /// test failures when the State field returns a value of\r
+ /// performance restricted or functionally restricted.\r
+ /// The value returned is implementation dependent.\r
+ ///\r
UINT32 MiscFeaturesUnavailable : 1;\r
+ ///\r
+ /// Reserved 12 bits.\r
+ ///\r
UINT32 Reserved2 :12;\r
} Bits;\r
UINT32 Uint32;\r
\r
} IPF_HANDOFF_STATUS;\r
\r
-\r
+///\r
+/// EFI_SEC_PLATFORM_INFORMATION_RECORD\r
+///\r
typedef struct {\r
+ ///\r
+ /// Contains information generated by microcode, hardware,\r
+ /// and/or the Itanium processor PAL code about the state\r
+ /// of the processor upon reset.\r
+ ///\r
EFI_HEALTH_FLAGS HealthFlags;\r
} EFI_SEC_PLATFORM_INFORMATION_RECORD;\r
\r
/**\r
This interface conveys state information out of the Security (SEC) phase into PEI.\r
\r
+ This service is published by the SEC phase. The SEC phase handoff has an optional\r
+ EFI_PEI_PPI_DESCRIPTOR list as its final argument when control is passed from SEC into the\r
+ PEI Foundation. As such, if the platform supports the built-in self test (BIST) on IA-32 Intel\r
+ architecture or the PAL-A handoff state for Itanium architecture, this information is encapsulated\r
+ into the data structure abstracted by this service. This information is collected for the boot-strap\r
+ processor (BSP) on IA-32, and for Itanium architecture, it is available on all processors that execute\r
+ the PEI Foundation.\r
+\r
@param PeiServices Pointer to the PEI Services Table.\r
@param StructureSize Pointer to the variable describing size of the input buffer.\r
@param PlatformInformationRecord Pointer to the EFI_SEC_PLATFORM_INFORMATION_RECORD.\r
\r
- @retval EFI_SUCCESS The data was successfully returned.\r
- @retval EFI_BUFFER_TOO_SMALL The buffer was too small.\r
+ @retval EFI_SUCCESS The data was successfully returned.\r
+ @retval EFI_BUFFER_TOO_SMALL The buffer was too small.\r
\r
**/\r
typedef\r
);\r
\r
\r
-/**\r
- @par Ppi Description:\r
- This service abstracts platform-specific information. It is necessary \r
- to convey this information to the PEI Foundation so that it can \r
- discover where to begin dispatching PEIMs.\r
-\r
- @param PlatformInformation \r
- Conveys state information out of the SEC phase into PEI.\r
-\r
-**/\r
+///\r
+/// This service abstracts platform-specific information. It is necessary \r
+/// to convey this information to the PEI Foundation so that it can \r
+/// discover where to begin dispatching PEIMs.\r
+///\r
struct _EFI_SEC_PLATFORM_INFORMATION_PPI {\r
+ ///\r
+ /// Conveys state information out of the SEC phase into PEI.\r
+ ///\r
EFI_SEC_PLATFORM_INFORMATION PlatformInformation;\r
};\r
\r
priori policy in the PEI Foundation. Specifically, this\r
situation leads to the question whether PEIMs that are either\r
not in GUIDed sections or are in sections whose authentication\r
- fails should still be executed. In fact, it is the\r
- responsibility of the platform builder to make this decision.\r
- This platform-scoped policy is a result that a desktop system\r
- might not be able to skip or not execute PEIMs because the\r
- skipped PEIM could be the agent that initializes main memory.\r
- Alternately, a system may require that unsigned PEIMs not be\r
- executed under any circumstances. In either case, the PEI\r
- Foundation simply multiplexes access to the Section Extraction\r
- PPI and the Security PPI. The Section Extraction PPI determines\r
- the contents of a section, and the Security PPI tells the PEI\r
- Foundation whether or not to invoke the PEIM. The PEIM that\r
- publishes the AuthenticationState() service uses its parameters\r
- in the following ways: ?? AuthenticationStatus conveys the\r
- source information upon which the PEIM acts. 1) The\r
- DeferExecution value tells the PEI Foundation whether or not to\r
- dispatch the PEIM. In addition, between receiving the\r
- AuthenticationState() from the PEI Foundation and returning with\r
- the DeferExecution value, the PEIM that publishes\r
- AuthenticationState() can do the following: 2) Log the file\r
- state. 3) Lock the firmware hubs in response to an unsigned\r
- PEIM being discovered. These latter behaviors are platform-\r
- and market-specific and thus outside the scope of the PEI CIS.\r
-\r
- @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
-\r
- @param This Interface pointer that implements the particular\r
- EFI_PEI_SECURITY2_PPI instance.\r
-\r
-\r
- @param AuthenticationStatus Authentication status of the\r
- file.\r
-\r
- @param FvHandle Handle of the volume in which the file\r
- resides. Type EFI_PEI_FV_HANDLE is defined\r
- in FfsFindNextVolume. This allows different\r
- policies depending on different firmware\r
- volumes.\r
-\r
- @param FileHandle Handle of the file under review. Type\r
- EFI_PEI FILE HANDLE is defined in\r
- FfsFindNextFile.\r
-\r
- @param DeferExecution Pointer to a variable that alerts the\r
- PEI Foundation to defer execution of a\r
- PEIM.\r
-\r
- @retval EFI_SUCCESS The service performed its action\r
- successfully.\r
-\r
- @retval EFI_SECURITY_VIOLATION The object cannot be trusted.\r
+ fails should still be executed.\r
+\r
+ @param PeiServices An indirect pointer to the PEI Services\r
+ Table published by the PEI Foundation.\r
+ @param This Interface pointer that implements the\r
+ particular EFI_PEI_SECURITY2_PPI instance.\r
+ @param AuthenticationStatus Authentication status of the file.\r
+ @param FvHandle Handle of the volume in which the file\r
+ resides. This allows different policies\r
+ depending on different firmware volumes.\r
+ @param FileHandle Handle of the file under review.\r
+ @param DeferExecution Pointer to a variable that alerts the\r
+ PEI Foundation to defer execution of a\r
+ PEIM.\r
+\r
+ @retval EFI_SUCCESS The service performed its action successfully.\r
+ @retval EFI_SECURITY_VIOLATION The object cannot be trusted.\r
\r
**/\r
typedef\r
(EFIAPI *EFI_PEI_SECURITY_AUTHENTICATION_STATE)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN CONST EFI_PEI_SECURITY2_PPI *This,\r
- IN CONST UINT32 AuthenticationStatus,\r
- IN CONST EFI_PEI_FV_HANDLE FvHandle,\r
- IN CONST EFI_PEI_FV_HANDLE FileHandle,\r
+ IN UINT32 AuthenticationStatus,\r
+ IN EFI_PEI_FV_HANDLE FvHandle,\r
+ IN EFI_PEI_FV_HANDLE FileHandle,\r
IN OUT BOOLEAN *DeferExecution\r
);\r
\r
-/**\r
- @par Ppi Description: \r
- This PPI is a means by which the platform builder can indicate\r
- a response to a PEIM's authentication state. This can be in\r
- the form of a requirement for the PEI Foundation to skip a\r
- module using the DeferExecution Boolean output in the\r
- AuthenticationState() member function. Alternately, the\r
- Security PPI can invoke something like a cryptographic PPI\r
- that hashes the PEIM contents to log attestations, for which\r
- the FileHandle parameter in AuthenticationState() will be\r
- useful. If this PPI does not exist, PEIMs will be considered\r
- trusted.\r
-\r
- @param AuthenticationState Allows the platform builder to\r
- implement a security policy in\r
- response to varying file\r
- authentication states. See the\r
- AuthenticationState() function\r
- description.\r
-\r
-**/\r
+///\r
+/// This PPI is a means by which the platform builder can indicate\r
+/// a response to a PEIM's authentication state. This can be in\r
+/// the form of a requirement for the PEI Foundation to skip a\r
+/// module using the DeferExecution Boolean output in the\r
+/// AuthenticationState() member function. Alternately, the\r
+/// Security PPI can invoke something like a cryptographic PPI\r
+/// that hashes the PEIM contents to log attestations, for which\r
+/// the FileHandle parameter in AuthenticationState() will be\r
+/// useful. If this PPI does not exist, PEIMs will be considered\r
+/// trusted.\r
+///\r
struct _EFI_PEI_SECURITY2_PPI {\r
+ ///\r
+ /// Allows the platform builder to implement a security policy\r
+ /// in response to varying file authentication states.\r
+ ///\r
EFI_PEI_SECURITY_AUTHENTICATION_STATE AuthenticationState;\r
};\r
\r
IN UINTN Microseconds\r
);\r
\r
-/**\r
- @par Ppi Description:\r
- This service provides a simple, blocking stall with platform-specific resolution. \r
-\r
- @param Resolution\r
- The resolution in microseconds of the stall services.\r
-\r
- @param Stall\r
- The actual stall procedure call. \r
-\r
-**/\r
+///\r
+/// This service provides a simple, blocking stall with platform-specific resolution. \r
+///\r
struct _EFI_PEI_STALL_PPI {\r
+ ///\r
+ /// The resolution in microseconds of the stall services.\r
+ ///\r
UINTN Resolution;\r
+ ///\r
+ /// The actual stall procedure call. \r
+ ///\r
EFI_PEI_STALL Stall;\r
};\r
\r
#define EFI_PEI_REPORT_PROGRESS_CODE_PPI_GUID \\r
{ 0x229832d3, 0x7a30, 0x4b36, {0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36 } }\r
\r
-/**\r
- @par Ppi Description:\r
- This ppi provides the sevice to report status code. There can be only one instance \r
- of this service in the system.\r
-\r
- @param ReportStatusCode\r
- Service that allows PEIMs to report status codes. This function is defined in PiPeicis.h\r
-\r
-**/\r
+//\r
+// EFI_PEI_PROGRESS_CODE_PPI.ReportStatusCode() is equivalent to the\r
+// PEI Service ReportStatusCode().\r
+// It is defined in PiPeiCis.h. \r
+//\r
+\r
+///\r
+/// This PPI provides the sevice to report status code.\r
+/// There can be only one instance of this service in the system.\r
+///\r
typedef struct {\r
+ ///\r
+ /// Service that allows PEIMs to report status codes.\r
+ /// This function is defined in PiPeicis.h.\r
+ ///\r
EFI_PEI_REPORT_STATUS_CODE ReportStatusCode;\r
} EFI_PEI_PROGRESS_CODE_PPI;\r
\r
permanent memory.\r
\r
@param PeiServices Pointer to the PEI Services Table.\r
-\r
@param TemporaryMemoryBase Source Address in temporary memory from which the SEC or PEIM will copy the\r
Temporary RAM contents.\r
-\r
@param PermanentMemoryBase Destination Address in permanent memory into which the SEC or PEIM will copy the\r
Temporary RAM contents.\r
-\r
@param CopySize Amount of memory to migrate from temporary to permanent memory.\r
\r
-\r
-\r
@retval EFI_SUCCESS The data was successfully returned.\r
-\r
- @retval EFI_INVALID_PARAMETER PermanentMemoryBase + CopySize >\r
- TemporaryMemoryBase when TemporaryMemoryBase >\r
- PermanentMemoryBase.\r
+ @retval EFI_INVALID_PARAMETER PermanentMemoryBase + CopySize > TemporaryMemoryBase when\r
+ TemporaryMemoryBase > PermanentMemoryBase.\r
\r
**/\r
typedef\r
IN UINTN CopySize\r
);\r
\r
-/**\r
- @par Ppi Description:\r
- This service abstracts the ability to migrate contents of the platform early memory store.\r
-\r
- @param ResetSystem\r
- Perform the migration of contents of Temporary RAM to Permanent RAM.\r
- Terminate the Temporary RAM if it cannot coexist with the Permanent RAM.\r
-\r
-**/\r
+///\r
+/// This service abstracts the ability to migrate contents of the platform early memory store.\r
+///\r
typedef struct {\r
+ ///\r
+ /// Perform the migration of contents of Temporary RAM to Permanent RAM.\r
+ /// Terminate the Temporary RAM if it cannot coexist with the Permanent RAM.\r
+ ///\r
TEMPORARY_RAM_MIGRATION TemporaryRamMigration;\r
} TEMPORARY_RAM_SUPPORT_PPI;\r
\r