]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/McaInitPmi.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Protocol / McaInitPmi.h
CommitLineData
41335d22 1/** @file\r
2 MCA/PMI/INIT Protocol as defined in PI Specification VOLUME 4.\r
3\r
4 This protocol provides services to handle Machine Checks (MCA),\r
5 Initialization (INIT) events, and Platform Management Interrupt (PMI) events\r
6 on an Intel Itanium Processor Family based system.\r
7\r
9095d37b 8 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
9344f092 9 SPDX-License-Identifier: BSD-2-Clause-Patent\r
41335d22 10\r
11**/\r
12\r
13#ifndef __MCA_INIT_PMI_PROTOCOL_H__\r
14#define __MCA_INIT_PMI_PROTOCOL_H__\r
15\r
16///\r
17/// Global ID for the MCA/PMI/INIT Protocol.\r
18///\r
19#define EFI_SAL_MCA_INIT_PMI_PROTOCOL_GUID \\r
20 { 0xb60dc6e8, 0x3b6f, 0x11d5, {0xaf, 0x9, 0x0, 0xa0, 0xc9, 0x44, 0xa0, 0x5b} }\r
21\r
22\r
23///\r
24/// Declare forward reference for the Timer Architectural Protocol\r
25///\r
26typedef struct _EFI_SAL_MCA_INIT_PMI_PROTOCOL EFI_SAL_MCA_INIT_PMI_PROTOCOL;\r
27\r
28#pragma pack(1)\r
29///\r
30/// MCA Records Structure\r
31///\r
32typedef struct {\r
33 UINT64 First : 1;\r
34 UINT64 Last : 1;\r
35 UINT64 EntryCount : 16;\r
36 UINT64 DispatchedCount : 16;\r
37 UINT64 Reserved : 30;\r
38} SAL_MCA_COUNT_STRUCTURE;\r
39\r
40#pragma pack()\r
41\r
42/**\r
43 Prototype of MCA handler.\r
44\r
45 @param ModuleGlobal The context of MCA Handler\r
46 @param ProcessorStateParameters The processor state parameters (PSP)\r
47 @param MinstateBase Base address of the min-state\r
48 @param RendezvouseStateInformation Rendezvous state information to be passed to\r
49 the OS on OS MCA entry\r
50 @param CpuIndex Index of the logical processor\r
51 @param McaCountStructure Pointer to the MCA records structure\r
52 @param CorrectedMachineCheck This flag is set to TRUE is the MCA has been\r
53 corrected by the handler or by a previous handler\r
54\r
55 @retval EFI_SUCCESS Handler successfully returned\r
56\r
57**/\r
58typedef\r
59EFI_STATUS\r
a1749b80 60(EFIAPI *EFI_SAL_MCA_HANDLER)(\r
41335d22 61 IN VOID *ModuleGlobal,\r
62 IN UINT64 ProcessorStateParameters,\r
63 IN EFI_PHYSICAL_ADDRESS MinstateBase,\r
64 IN UINT64 RendezvouseStateInformation,\r
65 IN UINT64 CpuIndex,\r
66 IN SAL_MCA_COUNT_STRUCTURE *McaCountStructure,\r
67 OUT BOOLEAN *CorrectedMachineCheck\r
68 );\r
69\r
70/**\r
71 Prototype of INIT handler.\r
72\r
73 @param ModuleGlobal The context of INIT Handler\r
74 @param ProcessorStateParameters The processor state parameters (PSP)\r
75 @param MinstateBase Base address of the min-state\r
76 @param McaInProgress This flag indicates if an MCA is in progress\r
77 @param CpuIndex Index of the logical processor\r
78 @param McaCountStructure Pointer to the MCA records structure\r
79 @param DumpSwitchPressed This flag indicates the crash dump switch has been pressed\r
80\r
81 @retval EFI_SUCCESS Handler successfully returned\r
82\r
83**/\r
84typedef\r
85EFI_STATUS\r
a1749b80 86(EFIAPI *EFI_SAL_INIT_HANDLER)(\r
41335d22 87 IN VOID *ModuleGlobal,\r
88 IN UINT64 ProcessorStateParameters,\r
89 IN EFI_PHYSICAL_ADDRESS MinstateBase,\r
90 IN BOOLEAN McaInProgress,\r
91 IN UINT64 CpuIndex,\r
92 IN SAL_MCA_COUNT_STRUCTURE *McaCountStructure,\r
93 OUT BOOLEAN *DumpSwitchPressed\r
94 );\r
95\r
96/**\r
97 Prototype of PMI handler\r
98\r
99 @param ModuleGlobal The context of PMI Handler\r
100 @param CpuIndex Index of the logical processor\r
101 @param PmiVector The PMI vector number as received from the PALE_PMI exit state (GR24)\r
102\r
103 @retval EFI_SUCCESS Handler successfully returned\r
104\r
105**/\r
106typedef\r
107EFI_STATUS\r
a1749b80 108(EFIAPI *EFI_SAL_PMI_HANDLER)(\r
41335d22 109 IN VOID *ModuleGlobal,\r
110 IN UINT64 CpuIndex,\r
111 IN UINT64 PmiVector\r
112 );\r
113\r
114/**\r
115 Register a MCA handler with the MCA dispatcher.\r
116\r
117 @param This The EFI_SAL_MCA_INIT_PMI_PROTOCOL instance\r
118 @param McaHandler The MCA handler to register\r
119 @param ModuleGlobal The context of MCA Handler\r
120 @param MakeFirst This flag specifies the handler should be made first in the list\r
121 @param MakeLast This flag specifies the handler should be made last in the list\r
122\r
123 @retval EFI_SUCCESS MCA Handle was registered\r
124 @retval EFI_OUT_OF_RESOURCES No more resources to register an MCA handler\r
125 @retval EFI_INVALID_PARAMETER Invalid parameters were passed\r
126\r
127**/\r
128typedef\r
129EFI_STATUS\r
a1749b80 130(EFIAPI *EFI_SAL_REGISTER_MCA_HANDLER)(\r
41335d22 131 IN EFI_SAL_MCA_INIT_PMI_PROTOCOL *This,\r
132 IN EFI_SAL_MCA_HANDLER McaHandler,\r
133 IN VOID *ModuleGlobal,\r
134 IN BOOLEAN MakeFirst,\r
135 IN BOOLEAN MakeLast\r
136 );\r
137\r
138/**\r
139 Register an INIT handler with the INIT dispatcher.\r
140\r
141 @param This The EFI_SAL_MCA_INIT_PMI_PROTOCOL instance\r
142 @param InitHandler The INIT handler to register\r
143 @param ModuleGlobal The context of INIT Handler\r
144 @param MakeFirst This flag specifies the handler should be made first in the list\r
145 @param MakeLast This flag specifies the handler should be made last in the list\r
146\r
147 @retval EFI_SUCCESS INIT Handle was registered\r
148 @retval EFI_OUT_OF_RESOURCES No more resources to register an INIT handler\r
149 @retval EFI_INVALID_PARAMETER Invalid parameters were passed\r
150\r
151**/\r
152typedef\r
153EFI_STATUS\r
a1749b80 154(EFIAPI *EFI_SAL_REGISTER_INIT_HANDLER)(\r
41335d22 155 IN EFI_SAL_MCA_INIT_PMI_PROTOCOL *This,\r
156 IN EFI_SAL_INIT_HANDLER InitHandler,\r
157 IN VOID *ModuleGlobal,\r
158 IN BOOLEAN MakeFirst,\r
159 IN BOOLEAN MakeLast\r
160 );\r
161\r
162/**\r
163 Register a PMI handler with the PMI dispatcher.\r
164\r
165 @param This The EFI_SAL_MCA_INIT_PMI_PROTOCOL instance\r
166 @param PmiHandler The PMI handler to register\r
167 @param ModuleGlobal The context of PMI Handler\r
168 @param MakeFirst This flag specifies the handler should be made first in the list\r
169 @param MakeLast This flag specifies the handler should be made last in the list\r
170\r
171 @retval EFI_SUCCESS PMI Handle was registered\r
172 @retval EFI_OUT_OF_RESOURCES No more resources to register an PMI handler\r
173 @retval EFI_INVALID_PARAMETER Invalid parameters were passed\r
174\r
175**/\r
176typedef\r
177EFI_STATUS\r
a1749b80 178(EFIAPI *EFI_SAL_REGISTER_PMI_HANDLER)(\r
41335d22 179 IN EFI_SAL_MCA_INIT_PMI_PROTOCOL *This,\r
180 IN EFI_SAL_PMI_HANDLER PmiHandler,\r
181 IN VOID *ModuleGlobal,\r
182 IN BOOLEAN MakeFirst,\r
183 IN BOOLEAN MakeLast\r
184 );\r
185\r
186///\r
187/// This protocol is used to register MCA, INIT and PMI handlers with their respective dispatcher\r
188///\r
189struct _EFI_SAL_MCA_INIT_PMI_PROTOCOL {\r
190 EFI_SAL_REGISTER_MCA_HANDLER RegisterMcaHandler;\r
191 EFI_SAL_REGISTER_INIT_HANDLER RegisterInitHandler;\r
192 EFI_SAL_REGISTER_PMI_HANDLER RegisterPmiHandler;\r
193 BOOLEAN McaInProgress; ///< Whether MCA handler is in progress\r
194 BOOLEAN InitInProgress; ///< Whether Init handler is in progress\r
195 BOOLEAN PmiInProgress; ///< Whether Pmi handler is in progress\r
196};\r
197\r
198extern EFI_GUID gEfiSalMcaInitPmiProtocolGuid;\r
199\r
200#endif\r
201\r