]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - MdePkg/Include/Pi/PiMultiPhase.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Pi / PiMultiPhase.h
... / ...
CommitLineData
1/** @file\r
2 Include file matches things in PI for multiple module types.\r
3\r
4Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
5SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
7 @par Revision Reference:\r
8 These elements are defined in UEFI Platform Initialization Specification 1.2.\r
9\r
10**/\r
11\r
12#ifndef __PI_MULTIPHASE_H__\r
13#define __PI_MULTIPHASE_H__\r
14\r
15#include <Pi/PiFirmwareVolume.h>\r
16#include <Pi/PiFirmwareFile.h>\r
17#include <Pi/PiBootMode.h>\r
18#include <Pi/PiHob.h>\r
19#include <Pi/PiDependency.h>\r
20#include <Pi/PiStatusCode.h>\r
21#include <Pi/PiS3BootScript.h>\r
22\r
23/**\r
24 Produces an error code in the range reserved for use by the Platform Initialization\r
25 Architecture Specification.\r
26\r
27 The supported 32-bit range is 0xA0000000-0xBFFFFFFF\r
28 The supported 64-bit range is 0xA000000000000000-0xBFFFFFFFFFFFFFFF\r
29\r
30 @param StatusCode The status code value to convert into a warning code.\r
31 StatusCode must be in the range 0x00000000..0x1FFFFFFF.\r
32\r
33 @return The value specified by StatusCode in the PI reserved range.\r
34\r
35**/\r
36#define DXE_ERROR(StatusCode) (MAX_BIT | (MAX_BIT >> 2) | StatusCode)\r
37\r
38///\r
39/// If this value is returned by an EFI image, then the image should be unloaded.\r
40///\r
41#define EFI_REQUEST_UNLOAD_IMAGE DXE_ERROR (1)\r
42\r
43///\r
44/// If this value is returned by an API, it means the capability is not yet\r
45/// installed/available/ready to use.\r
46///\r
47#define EFI_NOT_AVAILABLE_YET DXE_ERROR (2)\r
48\r
49///\r
50/// Success and warning codes reserved for use by PI.\r
51/// Supported 32-bit range is 0x20000000-0x3fffffff.\r
52/// Supported 64-bit range is 0x2000000000000000-0x3fffffffffffffff.\r
53///\r
54#define PI_ENCODE_WARNING(a) ((MAX_BIT >> 2) | (a))\r
55\r
56///\r
57/// Error codes reserved for use by PI.\r
58/// Supported 32-bit range is 0xa0000000-0xbfffffff.\r
59/// Supported 64-bit range is 0xa000000000000000-0xbfffffffffffffff.\r
60///\r
61#define PI_ENCODE_ERROR(a) (MAX_BIT | (MAX_BIT >> 2) | (a))\r
62\r
63///\r
64/// Return status codes defined in SMM CIS.\r
65///\r
66#define EFI_INTERRUPT_PENDING PI_ENCODE_ERROR (0)\r
67\r
68#define EFI_WARN_INTERRUPT_SOURCE_PENDING PI_ENCODE_WARNING (0)\r
69#define EFI_WARN_INTERRUPT_SOURCE_QUIESCED PI_ENCODE_WARNING (1)\r
70\r
71///\r
72/// Bitmask of values for Authentication Status.\r
73/// Authentication Status is returned from EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL\r
74/// and the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI\r
75///\r
76/// xx00 Image was not signed.\r
77/// xxx1 Platform security policy override. Assumes the same meaning as 0010 (the image was signed, the\r
78/// signature was tested, and the signature passed authentication test).\r
79/// 0010 Image was signed, the signature was tested, and the signature passed authentication test.\r
80/// 0110 Image was signed and the signature was not tested.\r
81/// 1010 Image was signed, the signature was tested, and the signature failed the authentication test.\r
82///\r
83///@{\r
84#define EFI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01\r
85#define EFI_AUTH_STATUS_IMAGE_SIGNED 0x02\r
86#define EFI_AUTH_STATUS_NOT_TESTED 0x04\r
87#define EFI_AUTH_STATUS_TEST_FAILED 0x08\r
88#define EFI_AUTH_STATUS_ALL 0x0f\r
89///@}\r
90\r
91///\r
92/// MMRAM states and capabilities\r
93///\r
94#define EFI_MMRAM_OPEN 0x00000001\r
95#define EFI_MMRAM_CLOSED 0x00000002\r
96#define EFI_MMRAM_LOCKED 0x00000004\r
97#define EFI_CACHEABLE 0x00000008\r
98#define EFI_ALLOCATED 0x00000010\r
99#define EFI_NEEDS_TESTING 0x00000020\r
100#define EFI_NEEDS_ECC_INITIALIZATION 0x00000040\r
101\r
102#define EFI_SMRAM_OPEN EFI_MMRAM_OPEN\r
103#define EFI_SMRAM_CLOSED EFI_MMRAM_CLOSED\r
104#define EFI_SMRAM_LOCKED EFI_MMRAM_LOCKED\r
105\r
106///\r
107/// Structure describing a MMRAM region and its accessibility attributes.\r
108///\r
109typedef struct {\r
110 ///\r
111 /// Designates the physical address of the MMRAM in memory. This view of memory is\r
112 /// the same as seen by I/O-based agents, for example, but it may not be the address seen\r
113 /// by the processors.\r
114 ///\r
115 EFI_PHYSICAL_ADDRESS PhysicalStart;\r
116 ///\r
117 /// Designates the address of the MMRAM, as seen by software executing on the\r
118 /// processors. This address may or may not match PhysicalStart.\r
119 ///\r
120 EFI_PHYSICAL_ADDRESS CpuStart;\r
121 ///\r
122 /// Describes the number of bytes in the MMRAM region.\r
123 ///\r
124 UINT64 PhysicalSize;\r
125 ///\r
126 /// Describes the accessibility attributes of the MMRAM. These attributes include the\r
127 /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical\r
128 /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC\r
129 /// initialization).\r
130 ///\r
131 UINT64 RegionState;\r
132} EFI_MMRAM_DESCRIPTOR;\r
133\r
134typedef EFI_MMRAM_DESCRIPTOR EFI_SMRAM_DESCRIPTOR;\r
135\r
136typedef enum {\r
137 EFI_PCD_TYPE_8,\r
138 EFI_PCD_TYPE_16,\r
139 EFI_PCD_TYPE_32,\r
140 EFI_PCD_TYPE_64,\r
141 EFI_PCD_TYPE_BOOL,\r
142 EFI_PCD_TYPE_PTR\r
143} EFI_PCD_TYPE;\r
144\r
145typedef struct {\r
146 ///\r
147 /// The returned information associated with the requested TokenNumber. If\r
148 /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.\r
149 ///\r
150 EFI_PCD_TYPE PcdType;\r
151 ///\r
152 /// The size of the data in bytes associated with the TokenNumber specified. If\r
153 /// TokenNumber is 0, then PcdSize is set 0.\r
154 ///\r
155 UINTN PcdSize;\r
156 ///\r
157 /// The null-terminated ASCII string associated with a given token. If the\r
158 /// TokenNumber specified was 0, then this field corresponds to the null-terminated\r
159 /// ASCII string associated with the token's namespace Guid. If NULL, there is no\r
160 /// name associated with this request.\r
161 ///\r
162 CHAR8 *PcdName;\r
163} EFI_PCD_INFO;\r
164\r
165/**\r
166 The function prototype for invoking a function on an Application Processor.\r
167\r
168 This definition is used by the UEFI MP Serices Protocol, and the\r
169 PI SMM System Table.\r
170\r
171 @param[in,out] Buffer The pointer to private data buffer.\r
172**/\r
173typedef\r
174VOID\r
175(EFIAPI *EFI_AP_PROCEDURE)(\r
176 IN OUT VOID *Buffer\r
177 );\r
178\r
179#endif\r