]>
Commit | Line | Data |
---|---|---|
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 | |
146 |