/** @file\r
Implementation for PEI Services Library.\r
\r
- Copyright (c) 2006 - 2016, 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
- 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
+ Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
PeiServicesLocatePpi (\r
IN CONST EFI_GUID *Guid,\r
IN UINTN Instance,\r
- IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,\r
+ IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor OPTIONAL,\r
IN OUT VOID **Ppi\r
)\r
{\r
This service enables PEIMs to register a given service to be invoked when another service is\r
installed or reinstalled.\r
\r
- @param NotifyList A pointer to the list of notification interfaces \r
+ @param NotifyList A pointer to the list of notification interfaces\r
that the caller shall install.\r
\r
@retval EFI_SUCCESS The interface was successfully installed.\r
/**\r
This service enables a PEIM to ascertain the address of the list of HOBs in memory.\r
\r
- @param HobList A pointer to the list of HOBs that the PEI Foundation \r
+ @param HobList A pointer to the list of HOBs that the PEI Foundation\r
will initialize.\r
- \r
+\r
@retval EFI_SUCCESS The list was successfully returned.\r
@retval EFI_NOT_AVAILABLE_YET The HOB list is not yet published.\r
\r
\r
@param Type The type of HOB to be installed.\r
@param Length The length of the HOB to be added.\r
- @param Hob The address of a pointer that will contain the \r
+ @param Hob The address of a pointer that will contain the\r
HOB header.\r
\r
@retval EFI_SUCCESS The HOB was successfully created.\r
/**\r
This service enables PEIMs to discover additional firmware volumes.\r
\r
- @param Instance This instance of the firmware volume to find. The \r
+ @param Instance This instance of the firmware volume to find. The\r
value 0 is the Boot Firmware Volume (BFV).\r
@param VolumeHandle Handle of the firmware volume header of the volume\r
to return.\r
This service enables PEIMs to discover additional firmware files.\r
\r
@param SearchType A filter to find files only of this type.\r
- @param VolumeHandle The pointer to the firmware volume header of the \r
- volume to search. This parameter must point to a \r
- valid FFS volume. \r
+ @param VolumeHandle The pointer to the firmware volume header of the\r
+ volume to search. This parameter must point to a\r
+ valid FFS volume.\r
@param FileHandle Handle of the current file from which to begin searching.\r
\r
@retval EFI_SUCCESS The file was found.\r
This service enables PEIMs to discover sections of a given type within a valid FFS file.\r
\r
@param SectionType The value of the section type to find.\r
- @param FileHandle A pointer to the file header that contains the set \r
+ @param FileHandle A pointer to the file header that contains the set\r
of sections to be searched.\r
@param SectionData A pointer to the discovered section, if successful.\r
\r
\r
@param SectionType The value of the section type to find.\r
@param SectionInstance Section instance to find.\r
- @param FileHandle A pointer to the file header that contains the set \r
+ @param FileHandle A pointer to the file header that contains the set\r
of sections to be searched.\r
@param SectionData A pointer to the discovered section, if successful.\r
@param AuthenticationStatus A pointer to the authentication status for this section.\r
}\r
\r
/**\r
- This service enables PEIMs to allocate memory after the permanent memory has been\r
- installed by a PEIM.\r
+ This service enables PEIMs to allocate memory.\r
\r
@param MemoryType Type of memory to allocate.\r
@param Pages The number of pages to allocate.\r
@param Memory Pointer of memory allocated.\r
\r
@retval EFI_SUCCESS The memory range was successfully allocated.\r
- @retval EFI_INVALID_PARAMETER Type is not equal to AllocateAnyPages.\r
- @retval EFI_NOT_AVAILABLE_YET Called with permanent memory not available.\r
+ @retval EFI_INVALID_PARAMETER Type is not equal to EfiLoaderCode, EfiLoaderData, EfiRuntimeServicesCode,\r
+ EfiRuntimeServicesData, EfiBootServicesCode, EfiBootServicesData,\r
+ EfiACPIReclaimMemory, EfiReservedMemoryType, or EfiACPIMemoryNVS.\r
@retval EFI_OUT_OF_RESOURCES The pages could not be allocated.\r
\r
**/\r
return (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, Memory);\r
}\r
\r
+/**\r
+ This service enables PEIMs to free memory.\r
+\r
+ @param Memory Memory to be freed.\r
+ @param Pages The number of pages to free.\r
+\r
+ @retval EFI_SUCCESS The requested pages were freed.\r
+ @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.\r
+ @retval EFI_NOT_FOUND The requested memory pages were not allocated with\r
+ AllocatePages().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PeiServicesFreePages (\r
+ IN EFI_PHYSICAL_ADDRESS Memory,\r
+ IN UINTN Pages\r
+ )\r
+{\r
+ CONST EFI_PEI_SERVICES **PeiServices;\r
+\r
+ PeiServices = GetPeiServicesTablePointer ();\r
+ return (*PeiServices)->FreePages (PeiServices, Memory, Pages);\r
+}\r
+\r
/**\r
This service allocates memory from the Hand-Off Block (HOB) heap.\r
\r
@param Size The number of bytes to allocate from the pool.\r
- @param Buffer If the call succeeds, a pointer to a pointer to \r
+ @param Buffer If the call succeeds, a pointer to a pointer to\r
the allocate buffer; otherwise, undefined.\r
\r
@retval EFI_SUCCESS The allocation was successful\r
}\r
\r
/**\r
- This service is a wrapper for the PEI Service RegisterForShadow(), except the \r
- pointer to the PEI Services Table has been removed. See the Platform \r
- Initialization Pre-EFI Initialization Core Interface Specification for details. \r
+ This service is a wrapper for the PEI Service RegisterForShadow(), except the\r
+ pointer to the PEI Services Table has been removed. See the Platform\r
+ Initialization Pre-EFI Initialization Core Interface Specification for details.\r
\r
@param FileHandle PEIM's file handle. Must be the currently\r
executing PEIM.\r
- \r
+\r
@retval EFI_SUCCESS The PEIM was successfully registered for\r
shadowing.\r
\r
}\r
\r
/**\r
- This service is a wrapper for the PEI Service FfsGetFileInfo(), except the pointer to the PEI Services \r
- Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface \r
- Specification for details. \r
+ This service is a wrapper for the PEI Service FfsGetFileInfo(), except the pointer to the PEI Services\r
+ Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface\r
+ Specification for details.\r
\r
@param FileHandle The handle of the file.\r
\r
information.\r
\r
@retval EFI_SUCCESS File information returned.\r
- \r
+\r
@retval EFI_INVALID_PARAMETER If FileHandle does not\r
represent a valid file.\r
- \r
+\r
@retval EFI_INVALID_PARAMETER FileInfo is NULL.\r
- \r
+\r
**/\r
EFI_STATUS\r
-EFIAPI \r
+EFIAPI\r
PeiServicesFfsGetFileInfo (\r
IN CONST EFI_PEI_FILE_HANDLE FileHandle,\r
OUT EFI_FV_FILE_INFO *FileInfo\r
}\r
\r
/**\r
- This service is a wrapper for the PEI Service FfsFindByName(), except the pointer to the PEI Services \r
- Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface \r
- Specification for details. \r
+ This service is a wrapper for the PEI Service FfsFindByName(), except the pointer to the PEI Services\r
+ Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface\r
+ Specification for details.\r
\r
@param FileName A pointer to the name of the file to\r
find within the firmware volume.\r
@param VolumeHandle The firmware volume to search FileHandle\r
Upon exit, points to the found file's\r
handle or NULL if it could not be found.\r
- @param FileHandle The pointer to found file handle \r
+ @param FileHandle The pointer to found file handle\r
\r
@retval EFI_SUCCESS File was found.\r
\r
\r
\r
/**\r
- This service is a wrapper for the PEI Service FfsGetVolumeInfo(), except the pointer to the PEI Services \r
- Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface \r
- Specification for details. \r
+ This service is a wrapper for the PEI Service FfsGetVolumeInfo(), except the pointer to the PEI Services\r
+ Table has been removed. See the Platform Initialization Pre-EFI Initialization Core Interface\r
+ Specification for details.\r
\r
@param VolumeHandle Handle of the volume.\r
\r
information.\r
\r
@retval EFI_SUCCESS File information returned.\r
- \r
+\r
@retval EFI_INVALID_PARAMETER If FileHandle does not\r
represent a valid file.\r
- \r
+\r
@retval EFI_INVALID_PARAMETER If FileInfo is NULL.\r
\r
**/\r
EFIAPI\r
InternalPeiServicesInstallFvInfoPpi (\r
IN BOOLEAN InstallFvInfoPpi,\r
- IN CONST EFI_GUID *FvFormat, OPTIONAL\r
+ IN CONST EFI_GUID *FvFormat OPTIONAL,\r
IN CONST VOID *FvInfo,\r
IN UINT32 FvInfoSize,\r
- IN CONST EFI_GUID *ParentFvName, OPTIONAL\r
- IN CONST EFI_GUID *ParentFileName, OPTIONAL\r
+ IN CONST EFI_GUID *ParentFvName OPTIONAL,\r
+ IN CONST EFI_GUID *ParentFileName OPTIONAL,\r
IN UINT32 AuthenticationStatus\r
)\r
{\r
- EFI_STATUS Status; \r
+ EFI_STATUS Status;\r
EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *FvInfoPpi;\r
EFI_PEI_PPI_DESCRIPTOR *FvInfoPpiDescriptor;\r
EFI_GUID *ParentFvNameValue;\r
VOID\r
EFIAPI\r
PeiServicesInstallFvInfoPpi (\r
- IN CONST EFI_GUID *FvFormat, OPTIONAL\r
+ IN CONST EFI_GUID *FvFormat OPTIONAL,\r
IN CONST VOID *FvInfo,\r
IN UINT32 FvInfoSize,\r
- IN CONST EFI_GUID *ParentFvName, OPTIONAL\r
+ IN CONST EFI_GUID *ParentFvName OPTIONAL,\r
IN CONST EFI_GUID *ParentFileName OPTIONAL\r
)\r
{\r
VOID\r
EFIAPI\r
PeiServicesInstallFvInfo2Ppi (\r
- IN CONST EFI_GUID *FvFormat, OPTIONAL\r
+ IN CONST EFI_GUID *FvFormat OPTIONAL,\r
IN CONST VOID *FvInfo,\r
IN UINT32 FvInfoSize,\r
- IN CONST EFI_GUID *ParentFvName, OPTIONAL\r
- IN CONST EFI_GUID *ParentFileName, OPTIONAL\r
+ IN CONST EFI_GUID *ParentFvName OPTIONAL,\r
+ IN CONST EFI_GUID *ParentFileName OPTIONAL,\r
IN UINT32 AuthenticationStatus\r
)\r
{\r
InternalPeiServicesInstallFvInfoPpi (FALSE, FvFormat, FvInfo, FvInfoSize, ParentFvName, ParentFileName, AuthenticationStatus);\r
}\r
\r
+/**\r
+ Resets the entire platform.\r
+\r
+ @param[in] ResetType The type of reset to perform.\r
+ @param[in] ResetStatus The status code for the reset.\r
+ @param[in] DataSize The size, in bytes, of ResetData.\r
+ @param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or EfiResetShutdown\r
+ the data buffer starts with a Null-terminated string, optionally\r
+ followed by additional binary data. The string is a description\r
+ that the caller may use to further indicate the reason for the\r
+ system reset.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+PeiServicesResetSystem2 (\r
+ IN EFI_RESET_TYPE ResetType,\r
+ IN EFI_STATUS ResetStatus,\r
+ IN UINTN DataSize,\r
+ IN VOID *ResetData OPTIONAL\r
+ )\r
+{\r
+ (*GetPeiServicesTablePointer())->ResetSystem2 (ResetType, ResetStatus, DataSize, ResetData);\r
+}\r