]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Pi/PiMultiPhase.h
MdePkg/ProcessorBind: add defines for page allocation granularity
[mirror_edk2.git] / MdePkg / Include / Pi / PiMultiPhase.h
index bbba442b214f692229944fe414594a47e6519ed2..169258caa89d906fd74e864b80661f370ccf6247 100644 (file)
 /** @file\r
   Include file matches things in PI for multiple module types.\r
 \r
-  Copyright (c) 2006 - 2008, 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 - 2015, 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
+  These elements are defined in UEFI Platform Initialization Specification 1.2.\r
 \r
 **/\r
 \r
 #ifndef __PI_MULTIPHASE_H__\r
 #define __PI_MULTIPHASE_H__\r
 \r
-#include <Uefi/UefiMultiPhase.h>\r
-\r
 #include <Pi/PiFirmwareVolume.h>\r
 #include <Pi/PiFirmwareFile.h>\r
 #include <Pi/PiBootMode.h>\r
-\r
 #include <Pi/PiHob.h>\r
 #include <Pi/PiDependency.h>\r
+#include <Pi/PiStatusCode.h>\r
+#include <Pi/PiS3BootScript.h>\r
+\r
+/**\r
+  Produces an error code in the range reserved for use by the Platform Initialization\r
+  Architecture Specification.\r
 \r
+  The supported 32-bit range is 0xA0000000-0xBFFFFFFF \r
+  The supported 64-bit range is 0xA000000000000000-0xBFFFFFFFFFFFFFFF \r
 \r
-#define EFI_NOT_AVAILABLE_YET   EFIERR (32)\r
+  @param  StatusCode    The status code value to convert into a warning code.  \r
+                        StatusCode must be in the range 0x00000000..0x1FFFFFFF.\r
+\r
+  @return The value specified by StatusCode in the PI reserved range.\r
+\r
+**/\r
+#define DXE_ERROR(StatusCode)  (MAX_BIT | (MAX_BIT >> 2) | StatusCode)\r
 \r
 ///\r
-/// Status Code Type Definition\r
+/// If this value is returned by an EFI image, then the image should be unloaded.\r
 ///\r
-typedef UINT32  EFI_STATUS_CODE_TYPE;\r
-\r
-//\r
-// A Status Code Type is made up of the code type and severity\r
-// All values masked by EFI_STATUS_CODE_RESERVED_MASK are\r
-// reserved for use by this specification.\r
-//\r
-#define EFI_STATUS_CODE_TYPE_MASK     0x000000FF\r
-#define EFI_STATUS_CODE_SEVERITY_MASK 0xFF000000\r
-#define EFI_STATUS_CODE_RESERVED_MASK 0x00FFFF00\r
-\r
-//\r
-// Definition of code types, all other values masked by\r
-// EFI_STATUS_CODE_TYPE_MASK are reserved for use by\r
-// this specification.\r
-//\r
-#define EFI_PROGRESS_CODE             0x00000001\r
-#define EFI_ERROR_CODE                0x00000002\r
-#define EFI_DEBUG_CODE                0x00000003\r
-\r
-//\r
-// Definitions of severities, all other values masked by\r
-// EFI_STATUS_CODE_SEVERITY_MASK are reserved for use by\r
-// this specification.\r
-// Uncontained errors are major errors that could not contained\r
-// to the specific component that is reporting the error\r
-// For example, if a memory error was not detected early enough,\r
-// the bad data could be consumed by other drivers.\r
-//\r
-#define EFI_ERROR_MINOR               0x40000000\r
-#define EFI_ERROR_MAJOR               0x80000000\r
-#define EFI_ERROR_UNRECOVERED         0x90000000\r
-#define EFI_ERROR_UNCONTAINED         0xa0000000\r
+#define EFI_REQUEST_UNLOAD_IMAGE  DXE_ERROR (1)\r
 \r
 ///\r
-/// Status Code Value Definition\r
+/// If this value is returned by an API, it means the capability is not yet \r
+/// installed/available/ready to use.\r
 ///\r
-typedef UINT32 EFI_STATUS_CODE_VALUE;\r
+#define EFI_NOT_AVAILABLE_YET     DXE_ERROR (2)\r
 \r
-//\r
-// A Status Code Value is made up of the class, subclass, and\r
-// an operation.\r
-//\r
-#define EFI_STATUS_CODE_CLASS_MASK      0xFF000000\r
-#define EFI_STATUS_CODE_SUBCLASS_MASK   0x00FF0000\r
-#define EFI_STATUS_CODE_OPERATION_MASK  0x0000FFFF\r
+///\r
+/// Success and warning codes reserved for use by PI.\r
+/// Supported 32-bit range is 0x20000000-0x3fffffff.\r
+/// Supported 64-bit range is 0x2000000000000000-0x3fffffffffffffff.\r
+///\r
+#define PI_ENCODE_WARNING(a)                ((MAX_BIT >> 2) | (a))\r
 \r
 ///\r
-/// Definition of Status Code extended data header.\r
-/// The data will follow HeaderSize bytes from the beginning of\r
-/// the structure and is Size bytes long.\r
+/// Error codes reserved for use by PI.\r
+/// Supported 32-bit range is 0xa0000000-0xbfffffff.\r
+/// Supported 64-bit range is 0xa000000000000000-0xbfffffffffffffff.\r
 ///\r
-typedef struct {\r
-  UINT16    HeaderSize;\r
-  UINT16    Size;\r
-  EFI_GUID  Type;\r
-} EFI_STATUS_CODE_DATA;\r
+#define PI_ENCODE_ERROR(a)                  (MAX_BIT | (MAX_BIT >> 2) | (a))\r
 \r
+/// \r
+/// Return status codes defined in SMM CIS.\r
+/// \r
+#define EFI_INTERRUPT_PENDING               PI_ENCODE_ERROR (0)\r
 \r
-//\r
-// Bit values for Authentication Status\r
-//\r
+#define EFI_WARN_INTERRUPT_SOURCE_PENDING   PI_ENCODE_WARNING (0)\r
+#define EFI_WARN_INTERRUPT_SOURCE_QUIESCED  PI_ENCODE_WARNING (1)\r
+\r
+///\r
+/// Bitmask of values for Authentication Status.\r
+/// Authentication Status is returned from EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL \r
+/// and the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI\r
+///\r
+/// xx00 Image was not signed.\r
+/// xxx1 Platform security policy override. Assumes the same meaning as 0010 (the image was signed, the\r
+///      signature was tested, and the signature passed authentication test).\r
+/// 0010 Image was signed, the signature was tested, and the signature passed authentication test.\r
+/// 0110 Image was signed and the signature was not tested.\r
+/// 1010 Image was signed, the signature was tested, and the signature failed the authentication test.\r
+///\r
+///@{\r
 #define EFI_AUTH_STATUS_PLATFORM_OVERRIDE   0x01\r
 #define EFI_AUTH_STATUS_IMAGE_SIGNED        0x02\r
 #define EFI_AUTH_STATUS_NOT_TESTED          0x04\r
 #define EFI_AUTH_STATUS_TEST_FAILED         0x08\r
 #define EFI_AUTH_STATUS_ALL                 0x0f\r
+///@}\r
+\r
+///\r
+/// SMRAM states and capabilities\r
+///\r
+#define EFI_SMRAM_OPEN                  0x00000001\r
+#define EFI_SMRAM_CLOSED                0x00000002\r
+#define EFI_SMRAM_LOCKED                0x00000004\r
+#define EFI_CACHEABLE                   0x00000008\r
+#define EFI_ALLOCATED                   0x00000010\r
+#define EFI_NEEDS_TESTING               0x00000020\r
+#define EFI_NEEDS_ECC_INITIALIZATION    0x00000040\r
+\r
+///\r
+/// Structure describing a SMRAM region and its accessibility attributes.\r
+///\r
+typedef struct {\r
+  ///\r
+  /// Designates the physical address of the SMRAM in memory. This view of memory is \r
+  /// the same as seen by I/O-based agents, for example, but it may not be the address seen \r
+  /// by the processors.\r
+  ///\r
+  EFI_PHYSICAL_ADDRESS  PhysicalStart;\r
+  ///\r
+  /// Designates the address of the SMRAM, as seen by software executing on the \r
+  /// processors. This address may or may not match PhysicalStart.\r
+  ///\r
+  EFI_PHYSICAL_ADDRESS  CpuStart;       \r
+  ///\r
+  /// Describes the number of bytes in the SMRAM region.\r
+  ///\r
+  UINT64                PhysicalSize;\r
+  ///\r
+  /// Describes the accessibility attributes of the SMRAM.  These attributes include the \r
+  /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical \r
+  /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC \r
+  /// initialization).\r
+  ///\r
+  UINT64                RegionState;\r
+} EFI_SMRAM_DESCRIPTOR;\r
+\r
+typedef enum {\r
+  EFI_PCD_TYPE_8,\r
+  EFI_PCD_TYPE_16,\r
+  EFI_PCD_TYPE_32,\r
+  EFI_PCD_TYPE_64,\r
+  EFI_PCD_TYPE_BOOL,\r
+  EFI_PCD_TYPE_PTR\r
+} EFI_PCD_TYPE;\r
+\r
+typedef struct {\r
+  ///\r
+  /// The returned information associated with the requested TokenNumber. If\r
+  /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.\r
+  ///\r
+  EFI_PCD_TYPE      PcdType;\r
+  ///\r
+  /// The size of the data in bytes associated with the TokenNumber specified. If\r
+  /// TokenNumber is 0, then PcdSize is set 0.\r
+  ///\r
+  UINTN             PcdSize;\r
+  ///\r
+  /// The null-terminated ASCII string associated with a given token. If the\r
+  /// TokenNumber specified was 0, then this field corresponds to the null-terminated\r
+  /// ASCII string associated with the token's namespace Guid. If NULL, there is no\r
+  /// name associated with this request.\r
+  ///\r
+  CHAR8             *PcdName;\r
+} EFI_PCD_INFO;\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