MdePkg PiPeiCis.h: Add FreePages definition
authorStar Zeng <star.zeng@intel.com>
Thu, 23 Feb 2017 09:24:18 +0000 (17:24 +0800)
committerStar Zeng <star.zeng@intel.com>
Mon, 4 Sep 2017 05:45:45 +0000 (13:45 +0800)
Follow PI 1.6 spec to add FreePages definition and comments for
AllocatePages that will support pre permanent memory page allocation.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
MdePkg/Include/Pi/PiPeiCis.h

index eda814a8701a2001853682de970bcc72909ac0f9..aebe3eacf442e84eaff7774b531aa6420eaba9d4 100644 (file)
@@ -452,6 +452,11 @@ EFI_STATUS
   The purpose of the service is to publish an interface that allows \r
   PEIMs to allocate memory ranges that are managed by the PEI Foundation.\r
 \r
+  Prior to InstallPeiMemory() being called, PEI will allocate pages from the heap.\r
+  After InstallPeiMemory() is called, PEI will allocate pages within the region\r
+  of memory provided by InstallPeiMemory() service in a best-effort fashion.\r
+  Location-specific allocations are not managed by the PEI foundation code.\r
+\r
   @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
   @param  MemoryType       The type of memory to allocate.\r
   @param  Pages            The number of contiguous 4 KB pages to allocate.\r
@@ -474,6 +479,27 @@ EFI_STATUS
   OUT EFI_PHYSICAL_ADDRESS      *Memory\r
   );\r
 \r
+/**\r
+  Frees memory pages.\r
+\r
+  @param[in] PeiServices        An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
+  @param[in] Memory             The base physical address of the pages to be freed.\r
+  @param[in] Pages              The number of contiguous 4 KB 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
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_PEI_FREE_PAGES) (\r
+  IN CONST EFI_PEI_SERVICES     **PeiServices,\r
+  IN EFI_PHYSICAL_ADDRESS       Memory,\r
+  IN UINTN                      Pages\r
+  );\r
+\r
 /**\r
   The purpose of this service is to publish an interface that \r
   allows PEIMs to allocate memory ranges that are managed by the PEI Foundation.\r
@@ -929,6 +955,7 @@ struct _EFI_PEI_SERVICES {
   EFI_PEI_FFS_FIND_SECTION_DATA3  FindSectionData3;\r
   EFI_PEI_FFS_GET_FILE_INFO2      FfsGetFileInfo2;\r
   EFI_PEI_RESET2_SYSTEM           ResetSystem2;\r
+  EFI_PEI_FREE_PAGES              FreePages;\r
 };\r
 \r
 \r