]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Include/Protocol/FrameworkMpService.h
clean up non-English characters.
[mirror_edk2.git] / IntelFrameworkPkg / Include / Protocol / FrameworkMpService.h
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.
CommitLineData
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
61typedef 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
118typedef 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
138typedef 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
159typedef 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
165typedef 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