]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Pi/PiDxeCis.h
MdePkg/Include/Pi: Modify specification number encoding
[mirror_edk2.git] / MdePkg / Include / Pi / PiDxeCis.h
index b83c4f84b40e24687148a5ac83e55936d1cb71c7..c081d047b35fe9ae6e21fb8b382206d356ba02b2 100644 (file)
@@ -1,17 +1,17 @@
 /** @file\r
   Include file matches things in PI.\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation                                                         \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
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+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
+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
 \r
   @par Revision Reference:\r
-  PI Version 1.0\r
+  PI Version 1.6\r
 \r
 **/\r
 \r
@@ -22,7 +22,7 @@
 #include <Pi/PiMultiPhase.h>\r
 \r
 ///\r
-/// Global Coherencey Domain types - Memory type\r
+/// Global Coherencey Domain types - Memory type.\r
 ///\r
 typedef enum {\r
   ///\r
@@ -48,11 +48,25 @@ typedef enum {
   /// access I/O devices in the platform.\r
   ///\r
   EfiGcdMemoryTypeMemoryMappedIo,\r
+  ///\r
+  /// A memory region that is visible to the boot processor. \r
+  /// This memory supports byte-addressable non-volatility. \r
+  ///\r
+  EfiGcdMemoryTypePersistent,\r
+  //\r
+  // Keep original one for the compatibility.\r
+  //\r
+  EfiGcdMemoryTypePersistentMemory = EfiGcdMemoryTypePersistent,\r
+  ///\r
+  /// A memory region that provides higher reliability relative to other memory in the\r
+  /// system. If all memory has the same reliability, then this bit is not used.\r
+  ///\r
+  EfiGcdMemoryTypeMoreReliable,\r
   EfiGcdMemoryTypeMaximum\r
 } EFI_GCD_MEMORY_TYPE;\r
 \r
 ///\r
-/// Global Coherencey Domain types - IO type\r
+/// Global Coherencey Domain types - IO type.\r
 ///\r
 typedef enum {\r
   ///\r
@@ -106,13 +120,13 @@ typedef enum {
 } EFI_GCD_ALLOCATE_TYPE;\r
 \r
 ///\r
-/// EFI_GCD_MEMORY_SPACE_DESCRIPTOR\r
+/// EFI_GCD_MEMORY_SPACE_DESCRIPTOR.\r
 /// \r
 typedef struct {\r
   ///\r
   /// The physical address of the first byte in the memory region. Type\r
   /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function\r
-  /// description in the UEFI 2.0 specification\r
+  /// description in the UEFI 2.0 specification.\r
   /// \r
   EFI_PHYSICAL_ADDRESS  BaseAddress;\r
 \r
@@ -134,7 +148,7 @@ typedef struct {
   UINT64                Attributes;\r
   ///\r
   /// Type of the memory region. Type EFI_GCD_MEMORY_TYPE is defined in the\r
-  /// AddMemorySpace() function description\r
+  /// AddMemorySpace() function description.\r
   /// \r
   EFI_GCD_MEMORY_TYPE   GcdMemoryType;\r
 \r
@@ -157,7 +171,7 @@ typedef struct {
 } EFI_GCD_MEMORY_SPACE_DESCRIPTOR;\r
 \r
 ///\r
-/// EFI_GCD_IO_SPACE_DESCRIPTOR\r
+/// EFI_GCD_IO_SPACE_DESCRIPTOR.\r
 /// \r
 typedef struct {\r
   ///\r
@@ -225,7 +239,7 @@ typedef struct {
                                  added to the global coherency domain of the processor.\r
   @retval EFI_ACCESS_DENIED      One or more bytes of the memory resource range\r
                                  specified by BaseAddress and Length was allocated\r
-                                 in a prior call to AllocateMemorySpace()..\r
+                                 in a prior call to AllocateMemorySpace().\r
 \r
 **/\r
 typedef\r
@@ -365,11 +379,12 @@ EFI_STATUS
                                 resource range specified by BaseAddress and Length.\r
   @retval EFI_UNSUPPORTED       The bit mask of attributes is not support for the memory resource\r
                                 range specified by BaseAddress and Length.\r
-  @retval EFI_ACCESS_DEFINED    The attributes for the memory resource range specified by\r
+  @retval EFI_ACCESS_DENIED     The attributes for the memory resource range specified by\r
                                 BaseAddress and Length cannot be modified.\r
   @retval EFI_OUT_OF_RESOURCES  There are not enough system resources to modify the attributes of\r
                                 the memory resource range.\r
-\r
+  @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is\r
+                                not available yet.\r
 **/\r
 typedef\r
 EFI_STATUS\r
@@ -379,6 +394,31 @@ EFI_STATUS
   IN UINT64                       Attributes\r
   );\r
 \r
+/**\r
+  Modifies the capabilities for a memory region in the global coherency domain of the\r
+  processor.\r
+\r
+  @param  BaseAddress      The physical address that is the start address of a memory region.\r
+  @param  Length           The size in bytes of the memory region.\r
+  @param  Capabilities     The bit mask of capabilities that the memory region supports.\r
+\r
+  @retval EFI_SUCCESS           The capabilities were set for the memory region.\r
+  @retval EFI_INVALID_PARAMETER Length is zero.\r
+  @retval EFI_UNSUPPORTED       The capabilities specified by Capabilities do not include the\r
+                                memory region attributes currently in use.\r
+  @retval EFI_ACCESS_DENIED     The capabilities for the memory resource range specified by\r
+                                BaseAddress and Length cannot be modified.\r
+  @retval EFI_OUT_OF_RESOURCES  There are not enough system resources to modify the capabilities\r
+                                of the memory resource range.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SET_MEMORY_SPACE_CAPABILITIES) (\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length,\r
+  IN UINT64                Capabilities\r
+  );\r
+\r
 /**\r
   Returns a map of the memory resources in the global coherency domain of the\r
   processor.\r
@@ -580,7 +620,7 @@ EFI_STATUS
   @retval EFI_SUCCESS         One or more DXE driver were dispatched.\r
   @retval EFI_NOT_FOUND       No DXE drivers were dispatched.\r
   @retval EFI_ALREADY_STARTED An attempt is being made to start the DXE Dispatcher recursively.\r
-                              Thus no action was taken.\r
+                              Thus, no action was taken.\r
 \r
 **/\r
 typedef\r
@@ -654,8 +694,10 @@ EFI_STATUS
 //\r
 // DXE Services Table\r
 //\r
-#define DXE_SERVICES_SIGNATURE  0x565245535f455844ULL\r
-#define DXE_SERVICES_REVISION   ((1<<16) | (00))\r
+#define DXE_SERVICES_SIGNATURE            0x565245535f455844ULL\r
+#define DXE_SPECIFICATION_MAJOR_REVISION  1\r
+#define DXE_SPECIFICATION_MINOR_REVISION  60\r
+#define DXE_SERVICES_REVISION             ((DXE_SPECIFICATION_MAJOR_REVISION<<16) | (DXE_SPECIFICATION_MINOR_REVISION))\r
 \r
 typedef struct {\r
   ///\r
@@ -691,23 +733,12 @@ typedef struct {
   // Service to process a single firmware volume found in a capsule\r
   //\r
   EFI_PROCESS_FIRMWARE_VOLUME     ProcessFirmwareVolume;\r
+  //\r
+  // Extensions to Global Coherency Domain Services\r
+  //\r
+  EFI_SET_MEMORY_SPACE_CAPABILITIES SetMemorySpaceCapabilities;\r
 } DXE_SERVICES;\r
 \r
 typedef DXE_SERVICES EFI_DXE_SERVICES;\r
 \r
-\r
-/**\r
-  Function prototype for invoking a function on an Application Processor.\r
-\r
-  This definition is used by the UEFI MP Serices Protocol, and the\r
-  PI SMM System Table.\r
-\r
-  @param[in,out] Buffer  Pointer to private data buffer.\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_AP_PROCEDURE)(\r
-  IN OUT VOID  *Buffer\r
-  );\r
-\r
 #endif\r