]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/DxeIplPeim/DxeIpl.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Core / DxeIplPeim / DxeIpl.h
index 839cd30d9e48b487feacf32ad138297ba4a4280e..2f015befceca66375f9393928714c55beb626afb 100644 (file)
@@ -1,15 +1,9 @@
 /** @file\r
   Master header file for DxeIpl PEIM. All source files in this module should\r
-  include this file for common defininitions.\r
+  include this file for common definitions.\r
 \r
-Copyright (c) 2006 - 2008, Intel Corporation. <BR>\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
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -24,6 +18,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Ppi/Decompress.h>\r
 #include <Ppi/FirmwareVolumeInfo.h>\r
 #include <Ppi/GuidedSectionExtraction.h>\r
+#include <Ppi/LoadFile.h>\r
+#include <Ppi/S3Resume2.h>\r
+#include <Ppi/RecoveryModule.h>\r
+#include <Ppi/CapsuleOnDisk.h>\r
+#include <Ppi/VectorHandoffInfo.h>\r
 \r
 #include <Guid/MemoryTypeInformation.h>\r
 #include <Guid/MemoryAllocationHob.h>\r
@@ -35,129 +34,90 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/HobLib.h>\r
 #include <Library/PeiServicesLib.h>\r
 #include <Library/ReportStatusCodeLib.h>\r
-#include <Library/CacheMaintenanceLib.h>\r
 #include <Library/UefiDecompressLib.h>\r
 #include <Library/ExtractGuidedSectionLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/PcdLib.h>\r
-#include <Library/PeCoffLib.h>\r
-#include <Library/S3Lib.h>\r
-#include <Library/RecoveryLib.h>\r
+#include <Library/DebugAgentLib.h>\r
+#include <Library/PeiServicesTablePointerLib.h>\r
+#include <Library/PerformanceLib.h>\r
 \r
 #define STACK_SIZE      0x20000\r
 #define BSP_STORE_SIZE  0x4000\r
 \r
-\r
-//\r
-// This macro aligns the ActualSize with a given alignment and is used to \r
-// calculate the size an image occupies.\r
-//\r
-#define GET_OCCUPIED_SIZE(ActualSize, Alignment) ((ActualSize + (Alignment - 1)) & ~(Alignment - 1))\r
-\r
-//\r
-// Indicate whether DxeIpl has been shadowed to memory.\r
-//\r
-extern BOOLEAN gInMemory;\r
-\r
 //\r
-// This PPI is installed to indicate the end of the PEI usage of memory \r
+// This PPI is installed to indicate the end of the PEI usage of memory\r
 //\r
-extern CONST EFI_PEI_PPI_DESCRIPTOR gEndOfPeiSignalPpi;\r
-\r
-\r
+extern CONST EFI_PEI_PPI_DESCRIPTOR  gEndOfPeiSignalPpi;\r
 \r
 /**\r
-   Loads and relocates a PE/COFF image into memory.\r
+   This function installs the PPIs that require permanent memory.\r
+\r
+   @param  PeiServices      Indirect reference to the PEI Services Table.\r
+   @param  NotifyDescriptor Address of the notification descriptor data structure.\r
+   @param  Ppi              Address of the PPI that was installed.\r
 \r
-   @param FileHandle        The image file handle\r
-   @param ImageAddress      The base address of the relocated PE/COFF image\r
-   @param ImageSize         The size of the relocated PE/COFF image\r
-   @param EntryPoint        The entry point of the relocated PE/COFF image\r
-   \r
-   @return EFI_SUCCESS           The file was loaded and relocated\r
-   @return EFI_OUT_OF_RESOURCES  There was not enough memory to load and relocate the PE/COFF file\r
+   @return EFI_SUCCESS      The PPIs were installed successfully.\r
+   @return Others           Some error occurs during the execution of this function.\r
 \r
 **/\r
 EFI_STATUS\r
-PeiLoadFile (\r
-  IN  EFI_PEI_FILE_HANDLE                       FileHandle,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *ImageAddress,\r
-  OUT UINT64                                    *ImageSize,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *EntryPoint\r
+EFIAPI\r
+InstallIplPermanentMemoryPpis (\r
+  IN EFI_PEI_SERVICES           **PeiServices,\r
+  IN EFI_PEI_NOTIFY_DESCRIPTOR  *NotifyDescriptor,\r
+  IN VOID                       *Ppi\r
   );\r
 \r
-\r
-\r
 /**\r
    Searches DxeCore in all firmware Volumes and loads the first\r
    instance that contains DxeCore.\r
 \r
    @return FileHandle of DxeCore to load DxeCore.\r
-   \r
+\r
 **/\r
 EFI_PEI_FILE_HANDLE\r
 DxeIplFindDxeCore (\r
   VOID\r
   );\r
 \r
-\r
 /**\r
-   This function simply retrieves the function pointer of ImageRead in\r
-   ImageContext structure.\r
-    \r
-   @param ImageContext       A pointer to the structure of \r
-                             PE_COFF_LOADER_IMAGE_CONTEXT\r
-   \r
-   @retval EFI_SUCCESS       This function always return EFI_SUCCESS.\r
-\r
-**/\r
-EFI_STATUS\r
-GetImageReadFunction (\r
-  IN      PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
-  );\r
-\r
+   Main entry point to last PEIM\r
 \r
-/**\r
-   Main entry point to last PEIM \r
-    \r
    @param This          Entry point for DXE IPL PPI\r
    @param PeiServices   General purpose services available to every PEIM.\r
    @param HobList       Address to the Pei HOB list\r
-   \r
-   @return EFI_SUCCESS              DXE core was successfully loaded. \r
+\r
+   @return EFI_SUCCESS              DXE core was successfully loaded.\r
    @return EFI_OUT_OF_RESOURCES     There are not enough resources to load DXE core.\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 DxeLoadCore (\r
-  IN CONST EFI_DXE_IPL_PPI *This,\r
-  IN EFI_PEI_SERVICES      **PeiServices,\r
-  IN EFI_PEI_HOB_POINTERS  HobList\r
+  IN CONST EFI_DXE_IPL_PPI  *This,\r
+  IN EFI_PEI_SERVICES       **PeiServices,\r
+  IN EFI_PEI_HOB_POINTERS   HobList\r
   );\r
 \r
-\r
-\r
 /**\r
    Transfers control to DxeCore.\r
 \r
    This function performs a CPU architecture specific operations to execute\r
    the entry point of DxeCore with the parameters of HobList.\r
-   It also intalls EFI_END_OF_PEI_PPI to signal the end of PEI phase.\r
+   It also installs EFI_END_OF_PEI_PPI to signal the end of PEI phase.\r
 \r
-   @param DxeCoreEntryPoint         The entrypoint of DxeCore.\r
+   @param DxeCoreEntryPoint         The entry point of DxeCore.\r
    @param HobList                   The start of HobList passed to DxeCore.\r
 \r
 **/\r
 VOID\r
 HandOffToDxeCore (\r
-  IN EFI_PHYSICAL_ADDRESS   DxeCoreEntryPoint,\r
-  IN EFI_PEI_HOB_POINTERS   HobList\r
+  IN EFI_PHYSICAL_ADDRESS  DxeCoreEntryPoint,\r
+  IN EFI_PEI_HOB_POINTERS  HobList\r
   );\r
 \r
-\r
-\r
 /**\r
    Updates the Stack HOB passed to DXE phase.\r
 \r
@@ -170,8 +130,8 @@ HandOffToDxeCore (
 **/\r
 VOID\r
 UpdateStackHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
 /**\r
@@ -205,7 +165,7 @@ UpdateStackHob (
                                 output buffer. If the input\r
                                 section's GuidedSectionHeader.\r
                                 Attributes field has the\r
-                                EFI_GUIDED_SECTION_AUTH_STATUS_VALID \r
+                                EFI_GUIDED_SECTION_AUTH_STATUS_VALID\r
                                 bit as clear,\r
                                 AuthenticationStatus must return\r
                                 zero. These bits reflect the\r
@@ -215,36 +175,36 @@ UpdateStackHob (
                                 EFI_SUCCESS, the value of\r
                                 AuthenticationStatus is\r
                                 undefined.\r
-  \r
+\r
   @retval EFI_SUCCESS           The InputSection was\r
                                 successfully processed and the\r
                                 section contents were returned.\r
-  \r
+\r
   @retval EFI_OUT_OF_RESOURCES  The system has insufficient\r
                                 resources to process the request.\r
-  \r
+\r
   @retval EFI_INVALID_PARAMETER The GUID in InputSection does\r
                                 not match this instance of the\r
                                 GUIDed Section Extraction PPI.\r
 \r
 **/\r
 EFI_STATUS\r
+EFIAPI\r
 CustomGuidedSectionExtract (\r
-  IN CONST  EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This,\r
-  IN CONST  VOID                                  *InputSection,\r
-  OUT       VOID                                  **OutputBuffer,\r
-  OUT       UINTN                                 *OutputSize,\r
-  OUT       UINT32                                *AuthenticationStatus\r
+  IN CONST  EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI  *This,\r
+  IN CONST  VOID                                   *InputSection,\r
+  OUT       VOID                                   **OutputBuffer,\r
+  OUT       UINTN                                  *OutputSize,\r
+  OUT       UINT32                                 *AuthenticationStatus\r
   );\r
 \r
-\r
 /**\r
    Decompresses a section to the output buffer.\r
 \r
-   This function lookes up the compression type field in the input section and\r
+   This function looks up the compression type field in the input section and\r
    applies the appropriate compression algorithm to compress the section to a\r
    callee allocated buffer.\r
-    \r
+\r
    @param  This                  Points to this instance of the\r
                                  EFI_PEI_DECOMPRESS_PEI PPI.\r
    @param  CompressionSection    Points to the compressed section.\r
@@ -252,36 +212,19 @@ CustomGuidedSectionExtract (
                                  sections.\r
    @param  OutputSize            Holds the returned size of the decompress\r
                                  section streams.\r
-   \r
+\r
    @retval EFI_SUCCESS           The section was decompressed successfully.\r
                                  OutputBuffer contains the resulting data and\r
                                  OutputSize contains the resulting size.\r
 \r
-**/\r
-EFI_STATUS\r
-EFIAPI \r
-Decompress (\r
-  IN CONST  EFI_PEI_DECOMPRESS_PPI  *This,\r
-  IN CONST  EFI_COMPRESSION_SECTION *CompressionSection,\r
-  OUT       VOID                    **OutputBuffer,\r
-  OUT       UINTN                   *OutputSize\r
-  );\r
-\r
-/**\r
-  Initializes the Dxe Ipl PPI\r
-\r
-  @param  FfsHandle   The handle of FFS file.\r
-  @param  PeiServices General purpose services available to\r
-                      every PEIM.\r
-  @return EFI_SUCESS\r
-\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-PeimInitializeDxeIpl (\r
-  IN       EFI_PEI_FILE_HANDLE       FfsHandle,\r
-  IN CONST EFI_PEI_SERVICES          **PeiServices\r
+Decompress (\r
+  IN CONST  EFI_PEI_DECOMPRESS_PPI   *This,\r
+  IN CONST  EFI_COMPRESSION_SECTION  *CompressionSection,\r
+  OUT       VOID                     **OutputBuffer,\r
+  OUT       UINTN                    *OutputSize\r
   );\r
 \r
-\r
 #endif\r