]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Pi/PiDxeCis.h
MdePkg: Updates to PI 1.7 Revision numbers
[mirror_edk2.git] / MdePkg / Include / Pi / PiDxeCis.h
index 9bcfecc046498f9c6fd784add41616c418a0cef7..1682211d92af9a2ff2929c3195705c7b7f60194a 100644 (file)
@@ -1,17 +1,11 @@
 /** @file\r
   Include file matches things in PI.\r
 \r
-Copyright (c) 2006 - 2013, 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
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
   @par Revision Reference:\r
-  PI Version 1.2\r
+  PI Version 1.7\r
 \r
 **/\r
 \r
@@ -48,6 +42,20 @@ 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
@@ -75,7 +83,7 @@ typedef enum {
 \r
 ///\r
 /// The type of allocation to perform.\r
-/// \r
+///\r
 typedef enum {\r
   ///\r
   /// The GCD memory space map is searched from the lowest address up to the highest address\r
@@ -83,22 +91,22 @@ typedef enum {
   ///\r
   EfiGcdAllocateAnySearchBottomUp,\r
   ///\r
-  /// The GCD memory space map is searched from the lowest address up \r
+  /// The GCD memory space map is searched from the lowest address up\r
   /// to the specified MaxAddress looking for unallocated memory ranges.\r
   ///\r
   EfiGcdAllocateMaxAddressSearchBottomUp,\r
   ///\r
-  /// The GCD memory space map is checked to see if the memory range starting \r
+  /// The GCD memory space map is checked to see if the memory range starting\r
   /// at the specified Address is available.\r
   ///\r
   EfiGcdAllocateAddress,\r
   ///\r
-  /// The GCD memory space map is searched from the highest address down to the lowest address \r
+  /// The GCD memory space map is searched from the highest address down to the lowest address\r
   /// looking for unallocated memory ranges.\r
   ///\r
   EfiGcdAllocateAnySearchTopDown,\r
   ///\r
-  /// The GCD memory space map is searched from the specified MaxAddress \r
+  /// The GCD memory space map is searched from the specified MaxAddress\r
   /// down to the lowest address looking for unallocated memory ranges.\r
   ///\r
   EfiGcdAllocateMaxAddressSearchTopDown,\r
@@ -107,35 +115,35 @@ typedef enum {
 \r
 ///\r
 /// EFI_GCD_MEMORY_SPACE_DESCRIPTOR.\r
-/// \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
-  /// \r
+  ///\r
   EFI_PHYSICAL_ADDRESS  BaseAddress;\r
 \r
   ///\r
   /// The number of bytes in the memory region.\r
-  /// \r
+  ///\r
   UINT64                Length;\r
 \r
   ///\r
   /// The bit mask of attributes that the memory region is capable of supporting. The bit\r
   /// mask of available attributes is defined in the GetMemoryMap() function description\r
   /// in the UEFI 2.0 specification.\r
-  /// \r
+  ///\r
   UINT64                Capabilities;\r
   ///\r
   /// The bit mask of attributes that the memory region is currently using. The bit mask of\r
   /// available attributes is defined in GetMemoryMap().\r
-  /// \r
+  ///\r
   UINT64                Attributes;\r
   ///\r
   /// Type of the memory region. Type EFI_GCD_MEMORY_TYPE is defined in the\r
   /// AddMemorySpace() function description.\r
-  /// \r
+  ///\r
   EFI_GCD_MEMORY_TYPE   GcdMemoryType;\r
 \r
   ///\r
@@ -143,7 +151,7 @@ typedef struct {
   /// PhysicalStart and NumberOfBytes. If this field is NULL, then the memory\r
   /// resource is not currently allocated. Type EFI_HANDLE is defined in\r
   /// InstallProtocolInterface() in the UEFI 2.0 specification.\r
-  /// \r
+  ///\r
   EFI_HANDLE            ImageHandle;\r
 \r
   ///\r
@@ -152,19 +160,19 @@ typedef struct {
   /// field is NULL, then the memory resource is not associated with a device that is\r
   /// described by a device handle. Type EFI_HANDLE is defined in\r
   /// InstallProtocolInterface() in the UEFI 2.0 specification.\r
-  /// \r
+  ///\r
   EFI_HANDLE            DeviceHandle;\r
 } EFI_GCD_MEMORY_SPACE_DESCRIPTOR;\r
 \r
 ///\r
 /// EFI_GCD_IO_SPACE_DESCRIPTOR.\r
-/// \r
+///\r
 typedef struct {\r
   ///\r
   /// Physical address of the first byte in the I/O region. Type\r
   /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function\r
   /// description in the UEFI 2.0 specification.\r
-  /// \r
+  ///\r
   EFI_PHYSICAL_ADDRESS  BaseAddress;\r
 \r
   ///\r
@@ -172,18 +180,18 @@ typedef struct {
   ///\r
   UINT64                Length;\r
 \r
-  /// \r
+  ///\r
   /// Type of the I/O region. Type EFI_GCD_IO_TYPE is defined in the\r
   /// AddIoSpace() function description.\r
-  /// \r
+  ///\r
   EFI_GCD_IO_TYPE       GcdIoType;\r
 \r
-  /// \r
+  ///\r
   /// The image handle of the agent that allocated the I/O resource described by\r
   /// PhysicalStart and NumberOfBytes. If this field is NULL, then the I/O\r
   /// resource is not currently allocated. Type EFI_HANDLE is defined in\r
   /// InstallProtocolInterface() in the UEFI 2.0 specification.\r
-  /// \r
+  ///\r
   EFI_HANDLE            ImageHandle;\r
 \r
   ///\r
@@ -192,7 +200,7 @@ typedef struct {
   /// the I/O resource is not associated with a device that is described by a device handle.\r
   /// Type EFI_HANDLE is defined in InstallProtocolInterface() in the UEFI\r
   /// 2.0 specification.\r
-  /// \r
+  ///\r
   EFI_HANDLE            DeviceHandle;\r
 } EFI_GCD_IO_SPACE_DESCRIPTOR;\r
 \r
@@ -206,7 +214,7 @@ typedef struct {
                            of the memory resource being added.\r
   @param  Length           The size, in bytes, of the memory resource that\r
                            is being added.\r
-  @param  Capabilities     The bit mask of attributes that the memory \r
+  @param  Capabilities     The bit mask of attributes that the memory\r
                            resource region supports.\r
 \r
   @retval EFI_SUCCESS            The memory resource was added to the global\r
@@ -214,13 +222,13 @@ typedef struct {
   @retval EFI_INVALID_PARAMETER  GcdMemoryType is invalid.\r
   @retval EFI_INVALID_PARAMETER  Length is zero.\r
   @retval EFI_OUT_OF_RESOURCES   There are not enough system resources to add\r
-                                 the memory resource to the global coherency \r
+                                 the memory resource to the global coherency\r
                                  domain of the processor.\r
   @retval EFI_UNSUPPORTED        The processor does not support one or more bytes\r
-                                 of the memory resource range specified by \r
+                                 of the memory resource range specified by\r
                                  BaseAddress and Length.\r
   @retval EFI_ACCESS_DENIED      One or more bytes of the memory resource range\r
-                                 specified by BaseAddress and Length conflicts \r
+                                 specified by BaseAddress and Length conflicts\r
                                  with a memory resource range that was previously\r
                                  added to the global coherency domain of the processor.\r
   @retval EFI_ACCESS_DENIED      One or more bytes of the memory resource range\r
@@ -248,7 +256,7 @@ EFI_STATUS
   @param  Length           The size in bytes of the memory resource range that\r
                            is being allocated.\r
   @param  BaseAddress      A pointer to a physical address to allocate.\r
-  @param  Imagehandle      The image handle of the agent that is allocating \r
+  @param  Imagehandle      The image handle of the agent that is allocating\r
                            the memory resource.\r
   @param  DeviceHandle     The device handle for which the memory resource\r
                            is being allocated.\r
@@ -288,7 +296,7 @@ EFI_STATUS
 \r
   @retval EFI_SUCCESS           The memory resource was freed from the global coherency domain of\r
                                 the processor.\r
-  @retval EFI_INVALID_PARAMETER Length is zero.   \r
+  @retval EFI_INVALID_PARAMETER Length is zero.\r
   @retval EFI_UNSUPPORTED       The processor does not support one or more bytes of the memory\r
                                 resource range specified by BaseAddress and Length.\r
   @retval EFI_NOT_FOUND         The memory resource range specified by BaseAddress and\r
@@ -313,7 +321,7 @@ EFI_STATUS
 \r
   @retval EFI_SUCCESS           The memory resource was removed from the global coherency\r
                                 domain of the processor.\r
-  @retval EFI_INVALID_PARAMETER Length is zero. \r
+  @retval EFI_INVALID_PARAMETER Length is zero.\r
   @retval EFI_UNSUPPORTED       The processor does not support one or more bytes of the memory\r
                                 resource range specified by BaseAddress and Length.\r
   @retval EFI_NOT_FOUND         One or more bytes of the memory resource range specified by\r
@@ -360,12 +368,12 @@ EFI_STATUS
   @param  Attributes       The bit mask of attributes to set for the memory region.\r
 \r
   @retval EFI_SUCCESS           The attributes were set for the memory region.\r
-  @retval EFI_INVALID_PARAMETER Length is zero. \r
+  @retval EFI_INVALID_PARAMETER Length is zero.\r
   @retval EFI_UNSUPPORTED       The processor does not support one or more bytes of the memory\r
                                 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
@@ -380,6 +388,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
@@ -571,8 +604,8 @@ EFI_STATUS
 /**\r
   Loads and executed DXE drivers from firmware volumes.\r
 \r
-  The Dispatch() function searches for DXE drivers in firmware volumes that have been \r
-  installed since the last time the Dispatch() service was called. It then evaluates \r
+  The Dispatch() function searches for DXE drivers in firmware volumes that have been\r
+  installed since the last time the Dispatch() service was called. It then evaluates\r
   the dependency expressions of all the DXE drivers and loads and executes those DXE\r
   drivers whose dependency expression evaluate to TRUE. This service must interact with\r
   the Security Architectural Protocol to authenticate DXE drivers before they are executed.\r
@@ -640,7 +673,7 @@ EFI_STATUS
   @retval EFI_VOLUME_CORRUPTED The firmware volume described by FirmwareVolumeHeader\r
                                and Size is corrupted.\r
   @retval EFI_OUT_OF_RESOURCES There are not enough system resources available to produce the\r
-                               EFI_FIRMWARE_VOLUME_PROTOCOL and EFI_DEVICE_PATH_PROTOCOL \r
+                               EFI_FIRMWARE_VOLUME_PROTOCOL and EFI_DEVICE_PATH_PROTOCOL\r
                                for the firmware volume described by FirmwareVolumeHeader and Size.\r
 \r
 **/\r
@@ -657,7 +690,7 @@ EFI_STATUS
 //\r
 #define DXE_SERVICES_SIGNATURE            0x565245535f455844ULL\r
 #define DXE_SPECIFICATION_MAJOR_REVISION  1\r
-#define DXE_SPECIFICATION_MINOR_REVISION  30\r
+#define DXE_SPECIFICATION_MINOR_REVISION  70\r
 #define DXE_SERVICES_REVISION             ((DXE_SPECIFICATION_MAJOR_REVISION<<16) | (DXE_SPECIFICATION_MINOR_REVISION))\r
 \r
 typedef struct {\r
@@ -694,23 +727,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
-  The 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  The 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