b6d47a83 |
1 | /** @file\r |
2 | When installed, the Framework MP Services Protocol produces a collection of \r |
3 | services that are needed for MP management, such as initialization and management \r |
4 | of application processors. \r |
5 | \r |
6 | @par Note: \r |
7 | This protocol has been deprecated and has been replaced by the MP Services \r |
8 | Protocol from the UEFI Platform Initialization Specification 1.2, Volume 2:\r |
9 | Driver Execution Environment Core Interface.\r |
10 | \r |
11 | The MP Services Protocol provides a generalized way of performing following tasks:\r |
12 | - Retrieving information of multi-processor environment and MP-related status of\r |
13 | specific processors.\r |
14 | - Dispatching user-provided function to APs.\r |
15 | - Maintain MP-related processor status.\r |
16 | \r |
17 | The MP Services Protocol must be produced on any system with more than one logical\r |
18 | processor.\r |
19 | \r |
20 | The Protocol is available only during boot time.\r |
21 | \r |
22 | MP Services Protocol is hardware-independent. Most of the logic of this protocol\r |
23 | is architecturally neutral. It abstracts the multi-processor environment and \r |
24 | status of processors, and provides interfaces to retrieve information, maintain, \r |
25 | and dispatch.\r |
26 | \r |
27 | MP Services Protocol may be consumed by ACPI module. The ACPI module may use this \r |
28 | protocol to retrieve data that are needed for an MP platform and report them to OS.\r |
29 | MP Services Protocol may also be used to program and configure processors, such \r |
30 | as MTRR synchronization for memory space attributes setting in DXE Services.\r |
31 | MP Services Protocol may be used by non-CPU DXE drivers to speed up platform boot \r |
32 | by taking advantage of the processing capabilities of the APs, for example, using \r |
33 | APs to help test system memory in parallel with other device initialization.\r |
34 | Diagnostics applications may also use this protocol for multi-processor.\r |
35 | \r |
36 | Copyright (c) 1999 - 2002, 2009, Intel Corporation.<BR>\r |
37 | All rights reserved. This program and the accompanying materials\r |
38 | are licensed and made available under the terms and conditions of the BSD License\r |
39 | which accompanies this distribution. The full text of the license may be found at<BR>\r |
40 | http://opensource.org/licenses/bsd-license.php\r |
41 | \r |
42 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r |
43 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r |
44 | \r |
45 | --*/\r |
46 | \r |
47 | #ifndef _FRAMEWORK_MP_SERVICE_PROTOCOL_H_\r |
48 | #define _FRAMEWORK_MP_SERVICE_PROTOCOL_H_\r |
49 | \r |
50 | ///\r |
51 | /// Global ID for the FRAMEWORK_EFI_MP_SERVICES_PROTOCOL\r |
52 | ///\r |
53 | #define FRAMEWORK_EFI_MP_SERVICES_PROTOCOL_GUID \\r |
54 | { \\r |
55 | 0xf33261e7, 0x23cb, 0x11d5, {0xbd, 0x5c, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \\r |
56 | }\r |
57 | \r |
58 | ///\r |
59 | /// Forward declaration for the EFI_MP_SERVICES_PROTOCOL\r |
60 | ///\r |
61 | typedef struct _FRAMEWORK_EFI_MP_SERVICES_PROTOCOL FRAMEWORK_EFI_MP_SERVICES_PROTOCOL;\r |
62 | \r |
63 | ///\r |
64 | /// Fixed delivery mode that may be used as the DeliveryMode parameter in SendIpi() \r |
65 | ///\r |
66 | #define DELIVERY_MODE_FIXED 0x0\r |
67 | \r |
68 | ///\r |
69 | /// Lowest priority delivery mode that may be used as the DeliveryMode parameter in SendIpi() \r |
70 | ///\r |
71 | #define DELIVERY_MODE_LOWEST_PRIORITY 0x1\r |
72 | \r |
73 | ///\r |
74 | /// SMI delivery mode that may be used as the DeliveryMode parameter in SendIpi() \r |
75 | ///\r |
76 | #define DELIVERY_MODE_SMI 0x2\r |
77 | \r |
78 | ///\r |
79 | /// Remote read delivery mode that may be used as the DeliveryMode parameter in SendIpi() \r |
80 | ///\r |
81 | #define DELIVERY_MODE_REMOTE_READ 0x3\r |
82 | \r |
83 | ///\r |
84 | /// NMI delivery mode that may be used as the DeliveryMode parameter in SendIpi() \r |
85 | ///\r |
86 | #define DELIVERY_MODE_NMI 0x4\r |
87 | \r |
88 | ///\r |
89 | /// INIT delivery mode that may be used as the DeliveryMode parameter in SendIpi() \r |
90 | ///\r |
91 | #define DELIVERY_MODE_INIT 0x5\r |
92 | \r |
93 | ///\r |
94 | /// Startup IPI delivery mode that may be used as the DeliveryMode parameter in SendIpi() \r |
95 | ///\r |
96 | #define DELIVERY_MODE_SIPI 0x6\r |
97 | \r |
98 | ///\r |
99 | /// The DeliveryMode parameter in SendIpi() bust be less than this maximum value\r |
100 | ///\r |
101 | #define DELIVERY_MODE_MAX 0x7\r |
102 | \r |
103 | ///\r |
104 | /// IPF specific value for the state field of the Self Test State Parameter\r |
105 | ///\r |
106 | #define EFI_MP_HEALTH_FLAGS_STATUS_HEALTHY 0x0\r |
107 | \r |
108 | ///\r |
109 | /// IPF specific value for the state field of the Self Test State Parameter\r |
110 | ///\r |
111 | #define EFI_MP_HEALTH_FLAGS_STATUS_PERFORMANCE_RESTRICTED 0x1\r |
112 | \r |
113 | ///\r |
114 | /// IPF specific value for the state field of the Self Test State Parameter\r |
115 | ///\r |
116 | #define EFI_MP_HEALTH_FLAGS_STATUS_FUNCTIONALLY_RESTRICTED 0x2\r |
117 | \r |
118 | typedef union {\r |
119 | ///\r |
120 | /// Bitfield structure for the IPF Self Test State Parameter \r |
121 | ///\r |
122 | struct {\r |
123 | UINT32 Status:2;\r |
124 | UINT32 Tested:1;\r |
125 | UINT32 Reserved1:13;\r |
126 | UINT32 VirtualMemoryUnavailable:1;\r |
127 | UINT32 Ia32ExecutionUnavailable:1;\r |
128 | UINT32 FloatingPointUnavailable:1;\r |
129 | UINT32 MiscFeaturesUnavailable:1;\r |
130 | UINT32 Reserved2:12;\r |
131 | } Bits;\r |
132 | ///\r |
133 | /// IA32 and X64 BIST data of the processor\r |
134 | ///\r |
135 | UINT32 Uint32;\r |
136 | } EFI_MP_HEALTH_FLAGS;\r |
137 | \r |
138 | typedef struct {\r |
139 | ///\r |
140 | /// @par IA32, X64:\r |
141 | /// BIST (built-in self test) data of the processor.\r |
142 | ///\r |
143 | /// @par IPF:\r |
144 | /// Lower 32 bits of self test state parameter. For definition of self test \r |
145 | /// state parameter, please refer to Intel(R) Itanium(R) Architecture Software \r |
1910fbaf |
146 | /// Developer's Manual, Volume 2: System Architecture.\r |
b6d47a83 |
147 | ///\r |
148 | EFI_MP_HEALTH_FLAGS Flags;\r |
149 | ///\r |
150 | /// @par IA32, X64:\r |
151 | /// Not used.\r |
152 | ///\r |
153 | /// @par IPF:\r |
154 | /// Higher 32 bits of self test state parameter.\r |
155 | ///\r |
156 | UINT32 TestStatus;\r |
157 | } EFI_MP_HEALTH;\r |
158 | \r |
159 | typedef enum {\r |
160 | EfiCpuAP = 0, ///< The CPU is an AP (Application Processor)\r |
161 | EfiCpuBSP, ///< The CPU is the BSP (Boot-Strap Processor)\r |
162 | EfiCpuDesignationMaximum\r |
163 | } EFI_CPU_DESIGNATION;\r |
164 | \r |
165 | typedef struct {\r |
166 | ///\r |
167 | /// @par IA32, X64:\r |
168 | /// The lower 8 bits contains local APIC ID, and higher bits are reserved.\r |
169 | ///\r |
170 | /// @par IPF:\r |
171 | /// The lower 16 bits contains id/eid as physical address of local SAPIC \r |
172 | /// unit, and higher bits are reserved.\r |
173 | ///\r |
174 | UINT32 ApicID;\r |
175 | ///\r |
176 | /// This field indicates whether the processor is enabled. If the value is \r |
177 | /// TRUE, then the processor is enabled. Otherwise, it is disabled.\r |
178 | ///\r |
179 | BOOLEAN Enabled;\r |
180 | ///\r |
181 | /// This field indicates whether the processor is playing the role of BSP.\r |
182 | /// If the value is EfiCpuAP, then the processor is AP. If the value is \r |
183 | /// EfiCpuBSP, then the processor is BSP.\r |
184 | ///\r |
185 | EFI_CPU_DESIGNATION Designation;\r |
186 | ///\r |
187 | /// @par IA32, X64:\r |
188 | /// The Flags field of this EFI_MP_HEALTH data structure holds BIST (built-in \r |
189 | /// self test) data of the processor. The TestStatus field is not used, and \r |
190 | /// the value is always zero.\r |
191 | ///\r |
192 | /// @par IPF:\r |
193 | /// Bit format of this field is the same as the definition of self-test state \r |
108854b2 |
194 | Content-type: text/html
git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h
500 - Internal Server Error
Malformed UTF-8 character (fatal) at (eval 6) line 1, <$fd> line 420.