xref: /freebsd/sys/contrib/edk2/Include/Pi/PiStatusCode.h (revision f439973d6726c3be929c8fb3b1545b8b1744abc3)
1*f439973dSWarner Losh /** @file
2*f439973dSWarner Losh   StatusCode related definitions in PI.
3*f439973dSWarner Losh 
4*f439973dSWarner Losh Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
5*f439973dSWarner Losh Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
6*f439973dSWarner Losh SPDX-License-Identifier: BSD-2-Clause-Patent
7*f439973dSWarner Losh 
8*f439973dSWarner Losh   @par Revision Reference:
9*f439973dSWarner Losh   These status codes are defined in UEFI Platform Initialization Specification 1.2,
10*f439973dSWarner Losh   Volume 3: Shared Architectural Elements.
11*f439973dSWarner Losh 
12*f439973dSWarner Losh **/
13*f439973dSWarner Losh 
14*f439973dSWarner Losh #ifndef __PI_STATUS_CODE_H__
15*f439973dSWarner Losh #define __PI_STATUS_CODE_H__
16*f439973dSWarner Losh 
17*f439973dSWarner Losh //
18*f439973dSWarner Losh // Required for IA32, X64, IPF, ARM and EBC defines for CPU exception types
19*f439973dSWarner Losh //
20*f439973dSWarner Losh #include <Protocol/DebugSupport.h>
21*f439973dSWarner Losh 
22*f439973dSWarner Losh ///
23*f439973dSWarner Losh /// Status Code Type Definition.
24*f439973dSWarner Losh ///
25*f439973dSWarner Losh typedef UINT32 EFI_STATUS_CODE_TYPE;
26*f439973dSWarner Losh 
27*f439973dSWarner Losh ///
28*f439973dSWarner Losh /// A Status Code Type is made up of the code type and severity.
29*f439973dSWarner Losh /// All values masked by EFI_STATUS_CODE_RESERVED_MASK are
30*f439973dSWarner Losh /// reserved for use by this specification.
31*f439973dSWarner Losh ///
32*f439973dSWarner Losh ///@{
33*f439973dSWarner Losh #define EFI_STATUS_CODE_TYPE_MASK      0x000000FF
34*f439973dSWarner Losh #define EFI_STATUS_CODE_SEVERITY_MASK  0xFF000000
35*f439973dSWarner Losh #define EFI_STATUS_CODE_RESERVED_MASK  0x00FFFF00
36*f439973dSWarner Losh ///@}
37*f439973dSWarner Losh 
38*f439973dSWarner Losh ///
39*f439973dSWarner Losh /// Definition of code types. All other values masked by
40*f439973dSWarner Losh /// EFI_STATUS_CODE_TYPE_MASK are reserved for use by
41*f439973dSWarner Losh /// this specification.
42*f439973dSWarner Losh ///
43*f439973dSWarner Losh ///@{
44*f439973dSWarner Losh #define EFI_PROGRESS_CODE  0x00000001
45*f439973dSWarner Losh #define EFI_ERROR_CODE     0x00000002
46*f439973dSWarner Losh #define EFI_DEBUG_CODE     0x00000003
47*f439973dSWarner Losh ///@}
48*f439973dSWarner Losh 
49*f439973dSWarner Losh ///
50*f439973dSWarner Losh /// Definitions of severities, all other values masked by
51*f439973dSWarner Losh /// EFI_STATUS_CODE_SEVERITY_MASK are reserved for use by
52*f439973dSWarner Losh /// this specification.
53*f439973dSWarner Losh /// Uncontained errors are major errors that could not contained
54*f439973dSWarner Losh /// to the specific component that is reporting the error.
55*f439973dSWarner Losh /// For example, if a memory error was not detected early enough,
56*f439973dSWarner Losh /// the bad data could be consumed by other drivers.
57*f439973dSWarner Losh ///
58*f439973dSWarner Losh ///@{
59*f439973dSWarner Losh #define EFI_ERROR_MINOR        0x40000000
60*f439973dSWarner Losh #define EFI_ERROR_MAJOR        0x80000000
61*f439973dSWarner Losh #define EFI_ERROR_UNRECOVERED  0x90000000
62*f439973dSWarner Losh #define EFI_ERROR_UNCONTAINED  0xa0000000
63*f439973dSWarner Losh ///@}
64*f439973dSWarner Losh 
65*f439973dSWarner Losh ///
66*f439973dSWarner Losh /// Status Code Value Definition.
67*f439973dSWarner Losh ///
68*f439973dSWarner Losh typedef UINT32 EFI_STATUS_CODE_VALUE;
69*f439973dSWarner Losh 
70*f439973dSWarner Losh ///
71*f439973dSWarner Losh /// A Status Code Value is made up of the class, subclass, and
72*f439973dSWarner Losh /// an operation.
73*f439973dSWarner Losh ///
74*f439973dSWarner Losh ///@{
75*f439973dSWarner Losh #define EFI_STATUS_CODE_CLASS_MASK      0xFF000000
76*f439973dSWarner Losh #define EFI_STATUS_CODE_SUBCLASS_MASK   0x00FF0000
77*f439973dSWarner Losh #define EFI_STATUS_CODE_OPERATION_MASK  0x0000FFFF
78*f439973dSWarner Losh ///@}
79*f439973dSWarner Losh 
80*f439973dSWarner Losh ///
81*f439973dSWarner Losh /// Definition of Status Code extended data header.
82*f439973dSWarner Losh /// The data will follow HeaderSize bytes from the beginning of
83*f439973dSWarner Losh /// the structure and is Size bytes long.
84*f439973dSWarner Losh ///
85*f439973dSWarner Losh typedef struct {
86*f439973dSWarner Losh   ///
87*f439973dSWarner Losh   /// The size of the structure. This is specified to enable future expansion.
88*f439973dSWarner Losh   ///
89*f439973dSWarner Losh   UINT16      HeaderSize;
90*f439973dSWarner Losh   ///
91*f439973dSWarner Losh   /// The size of the data in bytes. This does not include the size of the header structure.
92*f439973dSWarner Losh   ///
93*f439973dSWarner Losh   UINT16      Size;
94*f439973dSWarner Losh   ///
95*f439973dSWarner Losh   /// The GUID defining the type of the data.
96*f439973dSWarner Losh   ///
97*f439973dSWarner Losh   EFI_GUID    Type;
98*f439973dSWarner Losh } EFI_STATUS_CODE_DATA;
99*f439973dSWarner Losh 
100*f439973dSWarner Losh ///
101*f439973dSWarner Losh /// General partitioning scheme for Progress and Error Codes are:
102*f439973dSWarner Losh ///   - 0x0000-0x0FFF    Shared by all sub-classes in a given class.
103*f439973dSWarner Losh ///   - 0x1000-0x7FFF    Subclass Specific.
104*f439973dSWarner Losh ///   - 0x8000-0xFFFF    OEM specific.
105*f439973dSWarner Losh ///@{
106*f439973dSWarner Losh #define EFI_SUBCLASS_SPECIFIC  0x1000
107*f439973dSWarner Losh #define EFI_OEM_SPECIFIC       0x8000
108*f439973dSWarner Losh ///@}
109*f439973dSWarner Losh 
110*f439973dSWarner Losh ///
111*f439973dSWarner Losh /// Debug Code definitions for all classes and subclass.
112*f439973dSWarner Losh /// Only one debug code is defined at this point and should
113*f439973dSWarner Losh /// be used for anything that is sent to the debug stream.
114*f439973dSWarner Losh ///
115*f439973dSWarner Losh ///@{
116*f439973dSWarner Losh #define EFI_DC_UNSPECIFIED  0x0
117*f439973dSWarner Losh ///@}
118*f439973dSWarner Losh 
119*f439973dSWarner Losh ///
120*f439973dSWarner Losh /// Class definitions.
121*f439973dSWarner Losh /// Values of 4-127 are reserved for future use by this specification.
122*f439973dSWarner Losh /// Values in the range 127-255 are reserved for OEM use.
123*f439973dSWarner Losh ///
124*f439973dSWarner Losh ///@{
125*f439973dSWarner Losh #define EFI_COMPUTING_UNIT  0x00000000
126*f439973dSWarner Losh #define EFI_PERIPHERAL      0x01000000
127*f439973dSWarner Losh #define EFI_IO_BUS          0x02000000
128*f439973dSWarner Losh #define EFI_SOFTWARE        0x03000000
129*f439973dSWarner Losh ///@}
130*f439973dSWarner Losh 
131*f439973dSWarner Losh ///
132*f439973dSWarner Losh /// Computing Unit Subclass definitions.
133*f439973dSWarner Losh /// Values of 8-127 are reserved for future use by this specification.
134*f439973dSWarner Losh /// Values of 128-255 are reserved for OEM use.
135*f439973dSWarner Losh ///
136*f439973dSWarner Losh ///@{
137*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_UNSPECIFIED         (EFI_COMPUTING_UNIT | 0x00000000)
138*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_HOST_PROCESSOR      (EFI_COMPUTING_UNIT | 0x00010000)
139*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_FIRMWARE_PROCESSOR  (EFI_COMPUTING_UNIT | 0x00020000)
140*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_IO_PROCESSOR        (EFI_COMPUTING_UNIT | 0x00030000)
141*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_CACHE               (EFI_COMPUTING_UNIT | 0x00040000)
142*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_MEMORY              (EFI_COMPUTING_UNIT | 0x00050000)
143*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_CHIPSET             (EFI_COMPUTING_UNIT | 0x00060000)
144*f439973dSWarner Losh #define EFI_COMPUTING_UNIT_MANAGEABILITY       (EFI_COMPUTING_UNIT | 0x00070000)
145*f439973dSWarner Losh ///@}
146*f439973dSWarner Losh 
147*f439973dSWarner Losh ///
148*f439973dSWarner Losh /// Computing Unit Class Progress Code definitions.
149*f439973dSWarner Losh /// These are shared by all subclasses.
150*f439973dSWarner Losh ///
151*f439973dSWarner Losh ///@{
152*f439973dSWarner Losh #define EFI_CU_PC_INIT_BEGIN  0x00000000
153*f439973dSWarner Losh #define EFI_CU_PC_INIT_END    0x00000001
154*f439973dSWarner Losh ///@}
155*f439973dSWarner Losh 
156*f439973dSWarner Losh //
157*f439973dSWarner Losh // Computing Unit Unspecified Subclass Progress Code definitions.
158*f439973dSWarner Losh //
159*f439973dSWarner Losh 
160*f439973dSWarner Losh ///
161*f439973dSWarner Losh /// Computing Unit Host Processor Subclass Progress Code definitions.
162*f439973dSWarner Losh ///@{
163*f439973dSWarner Losh #define EFI_CU_HP_PC_POWER_ON_INIT           (EFI_SUBCLASS_SPECIFIC | 0x00000000)
164*f439973dSWarner Losh #define EFI_CU_HP_PC_CACHE_INIT              (EFI_SUBCLASS_SPECIFIC | 0x00000001)
165*f439973dSWarner Losh #define EFI_CU_HP_PC_RAM_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000002)
166*f439973dSWarner Losh #define EFI_CU_HP_PC_MEMORY_CONTROLLER_INIT  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
167*f439973dSWarner Losh #define EFI_CU_HP_PC_IO_INIT                 (EFI_SUBCLASS_SPECIFIC | 0x00000004)
168*f439973dSWarner Losh #define EFI_CU_HP_PC_BSP_SELECT              (EFI_SUBCLASS_SPECIFIC | 0x00000005)
169*f439973dSWarner Losh #define EFI_CU_HP_PC_BSP_RESELECT            (EFI_SUBCLASS_SPECIFIC | 0x00000006)
170*f439973dSWarner Losh #define EFI_CU_HP_PC_AP_INIT                 (EFI_SUBCLASS_SPECIFIC | 0x00000007)
171*f439973dSWarner Losh #define EFI_CU_HP_PC_SMM_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000008)
172*f439973dSWarner Losh ///@}
173*f439973dSWarner Losh 
174*f439973dSWarner Losh //
175*f439973dSWarner Losh // Computing Unit Firmware Processor Subclass Progress Code definitions.
176*f439973dSWarner Losh //
177*f439973dSWarner Losh 
178*f439973dSWarner Losh //
179*f439973dSWarner Losh // Computing Unit IO Processor Subclass Progress Code definitions.
180*f439973dSWarner Losh //
181*f439973dSWarner Losh 
182*f439973dSWarner Losh ///
183*f439973dSWarner Losh /// Computing Unit Cache Subclass Progress Code definitions.
184*f439973dSWarner Losh ///
185*f439973dSWarner Losh ///@{
186*f439973dSWarner Losh #define EFI_CU_CACHE_PC_PRESENCE_DETECT  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
187*f439973dSWarner Losh #define EFI_CU_CACHE_PC_CONFIGURATION    (EFI_SUBCLASS_SPECIFIC | 0x00000001)
188*f439973dSWarner Losh ///@}
189*f439973dSWarner Losh 
190*f439973dSWarner Losh ///
191*f439973dSWarner Losh /// Computing Unit Memory Subclass Progress Code definitions.
192*f439973dSWarner Losh ///
193*f439973dSWarner Losh ///@{
194*f439973dSWarner Losh #define EFI_CU_MEMORY_PC_SPD_READ         (EFI_SUBCLASS_SPECIFIC | 0x00000000)
195*f439973dSWarner Losh #define EFI_CU_MEMORY_PC_PRESENCE_DETECT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
196*f439973dSWarner Losh #define EFI_CU_MEMORY_PC_TIMING           (EFI_SUBCLASS_SPECIFIC | 0x00000002)
197*f439973dSWarner Losh #define EFI_CU_MEMORY_PC_CONFIGURING      (EFI_SUBCLASS_SPECIFIC | 0x00000003)
198*f439973dSWarner Losh #define EFI_CU_MEMORY_PC_OPTIMIZING       (EFI_SUBCLASS_SPECIFIC | 0x00000004)
199*f439973dSWarner Losh #define EFI_CU_MEMORY_PC_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000005)
200*f439973dSWarner Losh #define EFI_CU_MEMORY_PC_TEST             (EFI_SUBCLASS_SPECIFIC | 0x00000006)
201*f439973dSWarner Losh ///@}
202*f439973dSWarner Losh 
203*f439973dSWarner Losh //
204*f439973dSWarner Losh // Computing Unit Chipset Subclass Progress Code definitions.
205*f439973dSWarner Losh //
206*f439973dSWarner Losh 
207*f439973dSWarner Losh ///
208*f439973dSWarner Losh /// South Bridge initialization prior to memory detection.
209*f439973dSWarner Losh ///
210*f439973dSWarner Losh #define EFI_CHIPSET_PC_PEI_CAR_SB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000000)
211*f439973dSWarner Losh 
212*f439973dSWarner Losh ///
213*f439973dSWarner Losh /// North Bridge initialization prior to memory detection.
214*f439973dSWarner Losh ///
215*f439973dSWarner Losh #define EFI_CHIPSET_PC_PEI_CAR_NB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000001)
216*f439973dSWarner Losh 
217*f439973dSWarner Losh ///
218*f439973dSWarner Losh /// South Bridge initialization after memory detection.
219*f439973dSWarner Losh ///
220*f439973dSWarner Losh #define EFI_CHIPSET_PC_PEI_MEM_SB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000002)
221*f439973dSWarner Losh 
222*f439973dSWarner Losh ///
223*f439973dSWarner Losh /// North Bridge initialization after memory detection.
224*f439973dSWarner Losh ///
225*f439973dSWarner Losh #define EFI_CHIPSET_PC_PEI_MEM_NB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000003)
226*f439973dSWarner Losh 
227*f439973dSWarner Losh ///
228*f439973dSWarner Losh /// PCI Host Bridge DXE initialization.
229*f439973dSWarner Losh ///
230*f439973dSWarner Losh #define EFI_CHIPSET_PC_DXE_HB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000004)
231*f439973dSWarner Losh 
232*f439973dSWarner Losh ///
233*f439973dSWarner Losh /// North Bridge DXE initialization.
234*f439973dSWarner Losh ///
235*f439973dSWarner Losh #define EFI_CHIPSET_PC_DXE_NB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000005)
236*f439973dSWarner Losh 
237*f439973dSWarner Losh ///
238*f439973dSWarner Losh /// North Bridge specific SMM initialization in DXE.
239*f439973dSWarner Losh ///
240*f439973dSWarner Losh #define EFI_CHIPSET_PC_DXE_NB_SMM_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000006)
241*f439973dSWarner Losh 
242*f439973dSWarner Losh ///
243*f439973dSWarner Losh /// Initialization of the South Bridge specific UEFI Runtime Services.
244*f439973dSWarner Losh ///
245*f439973dSWarner Losh #define EFI_CHIPSET_PC_DXE_SB_RT_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000007)
246*f439973dSWarner Losh 
247*f439973dSWarner Losh ///
248*f439973dSWarner Losh /// South Bridge DXE initialization
249*f439973dSWarner Losh ///
250*f439973dSWarner Losh #define EFI_CHIPSET_PC_DXE_SB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000008)
251*f439973dSWarner Losh 
252*f439973dSWarner Losh ///
253*f439973dSWarner Losh /// South Bridge specific SMM initialization in DXE.
254*f439973dSWarner Losh ///
255*f439973dSWarner Losh #define EFI_CHIPSET_PC_DXE_SB_SMM_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000009)
256*f439973dSWarner Losh 
257*f439973dSWarner Losh ///
258*f439973dSWarner Losh /// Initialization of the South Bridge devices.
259*f439973dSWarner Losh ///
260*f439973dSWarner Losh #define EFI_CHIPSET_PC_DXE_SB_DEVICES_INIT  (EFI_SUBCLASS_SPECIFIC|0x0000000a)
261*f439973dSWarner Losh 
262*f439973dSWarner Losh ///
263*f439973dSWarner Losh /// Computing Unit Class Error Code definitions.
264*f439973dSWarner Losh /// These are shared by all subclasses.
265*f439973dSWarner Losh ///
266*f439973dSWarner Losh ///@{
267*f439973dSWarner Losh #define EFI_CU_EC_NON_SPECIFIC    0x00000000
268*f439973dSWarner Losh #define EFI_CU_EC_DISABLED        0x00000001
269*f439973dSWarner Losh #define EFI_CU_EC_NOT_SUPPORTED   0x00000002
270*f439973dSWarner Losh #define EFI_CU_EC_NOT_DETECTED    0x00000003
271*f439973dSWarner Losh #define EFI_CU_EC_NOT_CONFIGURED  0x00000004
272*f439973dSWarner Losh ///@}
273*f439973dSWarner Losh 
274*f439973dSWarner Losh //
275*f439973dSWarner Losh // Computing Unit Unspecified Subclass Error Code definitions.
276*f439973dSWarner Losh //
277*f439973dSWarner Losh 
278*f439973dSWarner Losh ///
279*f439973dSWarner Losh /// Computing Unit Host Processor Subclass Error Code definitions.
280*f439973dSWarner Losh ///
281*f439973dSWarner Losh ///@{
282*f439973dSWarner Losh #define EFI_CU_HP_EC_INVALID_TYPE         (EFI_SUBCLASS_SPECIFIC | 0x00000000)
283*f439973dSWarner Losh #define EFI_CU_HP_EC_INVALID_SPEED        (EFI_SUBCLASS_SPECIFIC | 0x00000001)
284*f439973dSWarner Losh #define EFI_CU_HP_EC_MISMATCH             (EFI_SUBCLASS_SPECIFIC | 0x00000002)
285*f439973dSWarner Losh #define EFI_CU_HP_EC_TIMER_EXPIRED        (EFI_SUBCLASS_SPECIFIC | 0x00000003)
286*f439973dSWarner Losh #define EFI_CU_HP_EC_SELF_TEST            (EFI_SUBCLASS_SPECIFIC | 0x00000004)
287*f439973dSWarner Losh #define EFI_CU_HP_EC_INTERNAL             (EFI_SUBCLASS_SPECIFIC | 0x00000005)
288*f439973dSWarner Losh #define EFI_CU_HP_EC_THERMAL              (EFI_SUBCLASS_SPECIFIC | 0x00000006)
289*f439973dSWarner Losh #define EFI_CU_HP_EC_LOW_VOLTAGE          (EFI_SUBCLASS_SPECIFIC | 0x00000007)
290*f439973dSWarner Losh #define EFI_CU_HP_EC_HIGH_VOLTAGE         (EFI_SUBCLASS_SPECIFIC | 0x00000008)
291*f439973dSWarner Losh #define EFI_CU_HP_EC_CACHE                (EFI_SUBCLASS_SPECIFIC | 0x00000009)
292*f439973dSWarner Losh #define EFI_CU_HP_EC_MICROCODE_UPDATE     (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
293*f439973dSWarner Losh #define EFI_CU_HP_EC_CORRECTABLE          (EFI_SUBCLASS_SPECIFIC | 0x0000000B)
294*f439973dSWarner Losh #define EFI_CU_HP_EC_UNCORRECTABLE        (EFI_SUBCLASS_SPECIFIC | 0x0000000C)
295*f439973dSWarner Losh #define EFI_CU_HP_EC_NO_MICROCODE_UPDATE  (EFI_SUBCLASS_SPECIFIC | 0x0000000D)
296*f439973dSWarner Losh ///@}
297*f439973dSWarner Losh 
298*f439973dSWarner Losh ///
299*f439973dSWarner Losh /// Computing Unit Firmware Processor Subclass Error Code definitions.
300*f439973dSWarner Losh ///
301*f439973dSWarner Losh ///@{
302*f439973dSWarner Losh #define EFI_CU_FP_EC_HARD_FAIL   (EFI_SUBCLASS_SPECIFIC | 0x00000000)
303*f439973dSWarner Losh #define EFI_CU_FP_EC_SOFT_FAIL   (EFI_SUBCLASS_SPECIFIC | 0x00000001)
304*f439973dSWarner Losh #define EFI_CU_FP_EC_COMM_ERROR  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
305*f439973dSWarner Losh ///@}
306*f439973dSWarner Losh 
307*f439973dSWarner Losh //
308*f439973dSWarner Losh // Computing Unit IO Processor Subclass Error Code definitions.
309*f439973dSWarner Losh //
310*f439973dSWarner Losh 
311*f439973dSWarner Losh ///
312*f439973dSWarner Losh /// Computing Unit Cache Subclass Error Code definitions.
313*f439973dSWarner Losh ///
314*f439973dSWarner Losh ///@{
315*f439973dSWarner Losh #define EFI_CU_CACHE_EC_INVALID_TYPE   (EFI_SUBCLASS_SPECIFIC | 0x00000000)
316*f439973dSWarner Losh #define EFI_CU_CACHE_EC_INVALID_SPEED  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
317*f439973dSWarner Losh #define EFI_CU_CACHE_EC_INVALID_SIZE   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
318*f439973dSWarner Losh #define EFI_CU_CACHE_EC_MISMATCH       (EFI_SUBCLASS_SPECIFIC | 0x00000003)
319*f439973dSWarner Losh ///@}
320*f439973dSWarner Losh 
321*f439973dSWarner Losh ///
322*f439973dSWarner Losh /// Computing Unit Memory Subclass Error Code definitions.
323*f439973dSWarner Losh ///
324*f439973dSWarner Losh ///@{
325*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_INVALID_TYPE    (EFI_SUBCLASS_SPECIFIC | 0x00000000)
326*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_INVALID_SPEED   (EFI_SUBCLASS_SPECIFIC | 0x00000001)
327*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_CORRECTABLE     (EFI_SUBCLASS_SPECIFIC | 0x00000002)
328*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_UNCORRECTABLE   (EFI_SUBCLASS_SPECIFIC | 0x00000003)
329*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_SPD_FAIL        (EFI_SUBCLASS_SPECIFIC | 0x00000004)
330*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_INVALID_SIZE    (EFI_SUBCLASS_SPECIFIC | 0x00000005)
331*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_MISMATCH        (EFI_SUBCLASS_SPECIFIC | 0x00000006)
332*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_S3_RESUME_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000007)
333*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_UPDATE_FAIL     (EFI_SUBCLASS_SPECIFIC | 0x00000008)
334*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_NONE_DETECTED   (EFI_SUBCLASS_SPECIFIC | 0x00000009)
335*f439973dSWarner Losh #define EFI_CU_MEMORY_EC_NONE_USEFUL     (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
336*f439973dSWarner Losh ///@}
337*f439973dSWarner Losh 
338*f439973dSWarner Losh ///
339*f439973dSWarner Losh /// Computing Unit Chipset Subclass Error Code definitions.
340*f439973dSWarner Losh ///
341*f439973dSWarner Losh ///@{
342*f439973dSWarner Losh #define EFI_CHIPSET_EC_BAD_BATTERY      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
343*f439973dSWarner Losh #define EFI_CHIPSET_EC_DXE_NB_ERROR     (EFI_SUBCLASS_SPECIFIC | 0x00000001)
344*f439973dSWarner Losh #define EFI_CHIPSET_EC_DXE_SB_ERROR     (EFI_SUBCLASS_SPECIFIC | 0x00000002)
345*f439973dSWarner Losh #define EFI_CHIPSET_EC_INTRUDER_DETECT  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
346*f439973dSWarner Losh ///@}
347*f439973dSWarner Losh 
348*f439973dSWarner Losh ///
349*f439973dSWarner Losh /// Computing Unit Manageability Subclass Error Code definitions.
350*f439973dSWarner Losh /// The detail information is reported by REPORT_STATUS_CODE_WITH_EXTENDED_DATA
351*f439973dSWarner Losh //  with ASCII string in EFI_STATUS_CODE_STRING_DATA.
352*f439973dSWarner Losh ///@{
353*f439973dSWarner Losh #define EFI_MANAGEABILITY_EC_REDFISH_COMMUNICATION_ERROR         (EFI_SUBCLASS_SPECIFIC | 0x00000000)
354*f439973dSWarner Losh #define EFI_MANAGEABILITY_EC_REDFISH_HOST_INTERFACE_ERROR        (EFI_SUBCLASS_SPECIFIC | 0x00000001)
355*f439973dSWarner Losh #define EFI_MANAGEABILITY_EC_REDFISH_BOOTSTRAP_CREDENTIAL_ERROR  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
356*f439973dSWarner Losh ///@}
357*f439973dSWarner Losh 
358*f439973dSWarner Losh ///
359*f439973dSWarner Losh /// Peripheral Subclass definitions.
360*f439973dSWarner Losh /// Values of 12-127 are reserved for future use by this specification.
361*f439973dSWarner Losh /// Values of 128-255 are reserved for OEM use.
362*f439973dSWarner Losh ///
363*f439973dSWarner Losh ///@{
364*f439973dSWarner Losh #define EFI_PERIPHERAL_UNSPECIFIED      (EFI_PERIPHERAL | 0x00000000)
365*f439973dSWarner Losh #define EFI_PERIPHERAL_KEYBOARD         (EFI_PERIPHERAL | 0x00010000)
366*f439973dSWarner Losh #define EFI_PERIPHERAL_MOUSE            (EFI_PERIPHERAL | 0x00020000)
367*f439973dSWarner Losh #define EFI_PERIPHERAL_LOCAL_CONSOLE    (EFI_PERIPHERAL | 0x00030000)
368*f439973dSWarner Losh #define EFI_PERIPHERAL_REMOTE_CONSOLE   (EFI_PERIPHERAL | 0x00040000)
369*f439973dSWarner Losh #define EFI_PERIPHERAL_SERIAL_PORT      (EFI_PERIPHERAL | 0x00050000)
370*f439973dSWarner Losh #define EFI_PERIPHERAL_PARALLEL_PORT    (EFI_PERIPHERAL | 0x00060000)
371*f439973dSWarner Losh #define EFI_PERIPHERAL_FIXED_MEDIA      (EFI_PERIPHERAL | 0x00070000)
372*f439973dSWarner Losh #define EFI_PERIPHERAL_REMOVABLE_MEDIA  (EFI_PERIPHERAL | 0x00080000)
373*f439973dSWarner Losh #define EFI_PERIPHERAL_AUDIO_INPUT      (EFI_PERIPHERAL | 0x00090000)
374*f439973dSWarner Losh #define EFI_PERIPHERAL_AUDIO_OUTPUT     (EFI_PERIPHERAL | 0x000A0000)
375*f439973dSWarner Losh #define EFI_PERIPHERAL_LCD_DEVICE       (EFI_PERIPHERAL | 0x000B0000)
376*f439973dSWarner Losh #define EFI_PERIPHERAL_NETWORK          (EFI_PERIPHERAL | 0x000C0000)
377*f439973dSWarner Losh #define EFI_PERIPHERAL_DOCKING          (EFI_PERIPHERAL | 0x000D0000)
378*f439973dSWarner Losh #define EFI_PERIPHERAL_TPM              (EFI_PERIPHERAL | 0x000E0000)
379*f439973dSWarner Losh ///@}
380*f439973dSWarner Losh 
381*f439973dSWarner Losh ///
382*f439973dSWarner Losh /// Peripheral Class Progress Code definitions.
383*f439973dSWarner Losh /// These are shared by all subclasses.
384*f439973dSWarner Losh ///
385*f439973dSWarner Losh ///@{
386*f439973dSWarner Losh #define EFI_P_PC_INIT             0x00000000
387*f439973dSWarner Losh #define EFI_P_PC_RESET            0x00000001
388*f439973dSWarner Losh #define EFI_P_PC_DISABLE          0x00000002
389*f439973dSWarner Losh #define EFI_P_PC_PRESENCE_DETECT  0x00000003
390*f439973dSWarner Losh #define EFI_P_PC_ENABLE           0x00000004
391*f439973dSWarner Losh #define EFI_P_PC_RECONFIG         0x00000005
392*f439973dSWarner Losh #define EFI_P_PC_DETECTED         0x00000006
393*f439973dSWarner Losh #define EFI_P_PC_REMOVED          0x00000007
394*f439973dSWarner Losh ///@}
395*f439973dSWarner Losh 
396*f439973dSWarner Losh //
397*f439973dSWarner Losh // Peripheral Class Unspecified Subclass Progress Code definitions.
398*f439973dSWarner Losh //
399*f439973dSWarner Losh 
400*f439973dSWarner Losh ///
401*f439973dSWarner Losh /// Peripheral Class Keyboard Subclass Progress Code definitions.
402*f439973dSWarner Losh ///
403*f439973dSWarner Losh ///@{
404*f439973dSWarner Losh #define EFI_P_KEYBOARD_PC_CLEAR_BUFFER  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
405*f439973dSWarner Losh #define EFI_P_KEYBOARD_PC_SELF_TEST     (EFI_SUBCLASS_SPECIFIC | 0x00000001)
406*f439973dSWarner Losh ///@}
407*f439973dSWarner Losh 
408*f439973dSWarner Losh ///
409*f439973dSWarner Losh /// Peripheral Class Mouse Subclass Progress Code definitions.
410*f439973dSWarner Losh ///
411*f439973dSWarner Losh ///@{
412*f439973dSWarner Losh #define EFI_P_MOUSE_PC_SELF_TEST  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
413*f439973dSWarner Losh ///@}
414*f439973dSWarner Losh 
415*f439973dSWarner Losh //
416*f439973dSWarner Losh // Peripheral Class Local Console Subclass Progress Code definitions.
417*f439973dSWarner Losh //
418*f439973dSWarner Losh 
419*f439973dSWarner Losh //
420*f439973dSWarner Losh // Peripheral Class Remote Console Subclass Progress Code definitions.
421*f439973dSWarner Losh //
422*f439973dSWarner Losh 
423*f439973dSWarner Losh ///
424*f439973dSWarner Losh /// Peripheral Class Serial Port Subclass Progress Code definitions.
425*f439973dSWarner Losh ///
426*f439973dSWarner Losh ///@{
427*f439973dSWarner Losh #define EFI_P_SERIAL_PORT_PC_CLEAR_BUFFER  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
428*f439973dSWarner Losh ///@}
429*f439973dSWarner Losh 
430*f439973dSWarner Losh //
431*f439973dSWarner Losh // Peripheral Class Parallel Port Subclass Progress Code definitions.
432*f439973dSWarner Losh //
433*f439973dSWarner Losh 
434*f439973dSWarner Losh //
435*f439973dSWarner Losh // Peripheral Class Fixed Media Subclass Progress Code definitions.
436*f439973dSWarner Losh //
437*f439973dSWarner Losh 
438*f439973dSWarner Losh //
439*f439973dSWarner Losh // Peripheral Class Removable Media Subclass Progress Code definitions.
440*f439973dSWarner Losh //
441*f439973dSWarner Losh 
442*f439973dSWarner Losh //
443*f439973dSWarner Losh // Peripheral Class Audio Input Subclass Progress Code definitions.
444*f439973dSWarner Losh //
445*f439973dSWarner Losh 
446*f439973dSWarner Losh //
447*f439973dSWarner Losh // Peripheral Class Audio Output Subclass Progress Code definitions.
448*f439973dSWarner Losh //
449*f439973dSWarner Losh 
450*f439973dSWarner Losh //
451*f439973dSWarner Losh // Peripheral Class LCD Device Subclass Progress Code definitions.
452*f439973dSWarner Losh //
453*f439973dSWarner Losh 
454*f439973dSWarner Losh //
455*f439973dSWarner Losh // Peripheral Class Network Subclass Progress Code definitions.
456*f439973dSWarner Losh //
457*f439973dSWarner Losh 
458*f439973dSWarner Losh ///
459*f439973dSWarner Losh /// Peripheral Class Error Code definitions.
460*f439973dSWarner Losh /// These are shared by all subclasses.
461*f439973dSWarner Losh ///
462*f439973dSWarner Losh ///@{
463*f439973dSWarner Losh #define EFI_P_EC_NON_SPECIFIC       0x00000000
464*f439973dSWarner Losh #define EFI_P_EC_DISABLED           0x00000001
465*f439973dSWarner Losh #define EFI_P_EC_NOT_SUPPORTED      0x00000002
466*f439973dSWarner Losh #define EFI_P_EC_NOT_DETECTED       0x00000003
467*f439973dSWarner Losh #define EFI_P_EC_NOT_CONFIGURED     0x00000004
468*f439973dSWarner Losh #define EFI_P_EC_INTERFACE_ERROR    0x00000005
469*f439973dSWarner Losh #define EFI_P_EC_CONTROLLER_ERROR   0x00000006
470*f439973dSWarner Losh #define EFI_P_EC_INPUT_ERROR        0x00000007
471*f439973dSWarner Losh #define EFI_P_EC_OUTPUT_ERROR       0x00000008
472*f439973dSWarner Losh #define EFI_P_EC_RESOURCE_CONFLICT  0x00000009
473*f439973dSWarner Losh ///@}
474*f439973dSWarner Losh 
475*f439973dSWarner Losh //
476*f439973dSWarner Losh // Peripheral Class Unspecified Subclass Error Code definitions.
477*f439973dSWarner Losh //
478*f439973dSWarner Losh 
479*f439973dSWarner Losh ///
480*f439973dSWarner Losh /// Peripheral Class Keyboard Subclass Error Code definitions.
481*f439973dSWarner Losh ///
482*f439973dSWarner Losh ///@{
483*f439973dSWarner Losh #define EFI_P_KEYBOARD_EC_LOCKED       (EFI_SUBCLASS_SPECIFIC | 0x00000000)
484*f439973dSWarner Losh #define EFI_P_KEYBOARD_EC_STUCK_KEY    (EFI_SUBCLASS_SPECIFIC | 0x00000001)
485*f439973dSWarner Losh #define EFI_P_KEYBOARD_EC_BUFFER_FULL  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
486*f439973dSWarner Losh ///@}
487*f439973dSWarner Losh 
488*f439973dSWarner Losh ///
489*f439973dSWarner Losh /// Peripheral Class Mouse Subclass Error Code definitions.
490*f439973dSWarner Losh ///
491*f439973dSWarner Losh ///@{
492*f439973dSWarner Losh #define EFI_P_MOUSE_EC_LOCKED  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
493*f439973dSWarner Losh ///@}
494*f439973dSWarner Losh 
495*f439973dSWarner Losh //
496*f439973dSWarner Losh // Peripheral Class Local Console Subclass Error Code definitions.
497*f439973dSWarner Losh //
498*f439973dSWarner Losh 
499*f439973dSWarner Losh //
500*f439973dSWarner Losh // Peripheral Class Remote Console Subclass Error Code definitions.
501*f439973dSWarner Losh //
502*f439973dSWarner Losh 
503*f439973dSWarner Losh //
504*f439973dSWarner Losh // Peripheral Class Serial Port Subclass Error Code definitions.
505*f439973dSWarner Losh //
506*f439973dSWarner Losh 
507*f439973dSWarner Losh //
508*f439973dSWarner Losh // Peripheral Class Parallel Port Subclass Error Code definitions.
509*f439973dSWarner Losh //
510*f439973dSWarner Losh 
511*f439973dSWarner Losh //
512*f439973dSWarner Losh // Peripheral Class Fixed Media Subclass Error Code definitions.
513*f439973dSWarner Losh //
514*f439973dSWarner Losh 
515*f439973dSWarner Losh //
516*f439973dSWarner Losh // Peripheral Class Removable Media Subclass Error Code definitions.
517*f439973dSWarner Losh //
518*f439973dSWarner Losh 
519*f439973dSWarner Losh //
520*f439973dSWarner Losh // Peripheral Class Audio Input Subclass Error Code definitions.
521*f439973dSWarner Losh //
522*f439973dSWarner Losh 
523*f439973dSWarner Losh //
524*f439973dSWarner Losh // Peripheral Class Audio Output Subclass Error Code definitions.
525*f439973dSWarner Losh //
526*f439973dSWarner Losh 
527*f439973dSWarner Losh //
528*f439973dSWarner Losh // Peripheral Class LCD Device Subclass Error Code definitions.
529*f439973dSWarner Losh //
530*f439973dSWarner Losh 
531*f439973dSWarner Losh //
532*f439973dSWarner Losh // Peripheral Class Network Subclass Error Code definitions.
533*f439973dSWarner Losh //
534*f439973dSWarner Losh 
535*f439973dSWarner Losh ///
536*f439973dSWarner Losh /// IO Bus Subclass definitions.
537*f439973dSWarner Losh /// Values of 14-127 are reserved for future use by this specification.
538*f439973dSWarner Losh /// Values of 128-255 are reserved for OEM use.
539*f439973dSWarner Losh ///
540*f439973dSWarner Losh ///@{
541*f439973dSWarner Losh #define EFI_IO_BUS_UNSPECIFIED  (EFI_IO_BUS | 0x00000000)
542*f439973dSWarner Losh #define EFI_IO_BUS_PCI          (EFI_IO_BUS | 0x00010000)
543*f439973dSWarner Losh #define EFI_IO_BUS_USB          (EFI_IO_BUS | 0x00020000)
544*f439973dSWarner Losh #define EFI_IO_BUS_IBA          (EFI_IO_BUS | 0x00030000)
545*f439973dSWarner Losh #define EFI_IO_BUS_AGP          (EFI_IO_BUS | 0x00040000)
546*f439973dSWarner Losh #define EFI_IO_BUS_PC_CARD      (EFI_IO_BUS | 0x00050000)
547*f439973dSWarner Losh #define EFI_IO_BUS_LPC          (EFI_IO_BUS | 0x00060000)
548*f439973dSWarner Losh #define EFI_IO_BUS_SCSI         (EFI_IO_BUS | 0x00070000)
549*f439973dSWarner Losh #define EFI_IO_BUS_ATA_ATAPI    (EFI_IO_BUS | 0x00080000)
550*f439973dSWarner Losh #define EFI_IO_BUS_FC           (EFI_IO_BUS | 0x00090000)
551*f439973dSWarner Losh #define EFI_IO_BUS_IP_NETWORK   (EFI_IO_BUS | 0x000A0000)
552*f439973dSWarner Losh #define EFI_IO_BUS_SMBUS        (EFI_IO_BUS | 0x000B0000)
553*f439973dSWarner Losh #define EFI_IO_BUS_I2C          (EFI_IO_BUS | 0x000C0000)
554*f439973dSWarner Losh ///@}
555*f439973dSWarner Losh 
556*f439973dSWarner Losh ///
557*f439973dSWarner Losh /// IO Bus Class Progress Code definitions.
558*f439973dSWarner Losh /// These are shared by all subclasses.
559*f439973dSWarner Losh ///
560*f439973dSWarner Losh ///@{
561*f439973dSWarner Losh #define EFI_IOB_PC_INIT      0x00000000
562*f439973dSWarner Losh #define EFI_IOB_PC_RESET     0x00000001
563*f439973dSWarner Losh #define EFI_IOB_PC_DISABLE   0x00000002
564*f439973dSWarner Losh #define EFI_IOB_PC_DETECT    0x00000003
565*f439973dSWarner Losh #define EFI_IOB_PC_ENABLE    0x00000004
566*f439973dSWarner Losh #define EFI_IOB_PC_RECONFIG  0x00000005
567*f439973dSWarner Losh #define EFI_IOB_PC_HOTPLUG   0x00000006
568*f439973dSWarner Losh ///@}
569*f439973dSWarner Losh 
570*f439973dSWarner Losh //
571*f439973dSWarner Losh // IO Bus Class Unspecified Subclass Progress Code definitions.
572*f439973dSWarner Losh //
573*f439973dSWarner Losh 
574*f439973dSWarner Losh ///
575*f439973dSWarner Losh /// IO Bus Class PCI Subclass Progress Code definitions.
576*f439973dSWarner Losh ///
577*f439973dSWarner Losh ///@{
578*f439973dSWarner Losh #define EFI_IOB_PCI_BUS_ENUM   (EFI_SUBCLASS_SPECIFIC | 0x00000000)
579*f439973dSWarner Losh #define EFI_IOB_PCI_RES_ALLOC  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
580*f439973dSWarner Losh #define EFI_IOB_PCI_HPC_INIT   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
581*f439973dSWarner Losh ///@}
582*f439973dSWarner Losh 
583*f439973dSWarner Losh //
584*f439973dSWarner Losh // IO Bus Class USB Subclass Progress Code definitions.
585*f439973dSWarner Losh //
586*f439973dSWarner Losh 
587*f439973dSWarner Losh //
588*f439973dSWarner Losh // IO Bus Class IBA Subclass Progress Code definitions.
589*f439973dSWarner Losh //
590*f439973dSWarner Losh 
591*f439973dSWarner Losh //
592*f439973dSWarner Losh // IO Bus Class AGP Subclass Progress Code definitions.
593*f439973dSWarner Losh //
594*f439973dSWarner Losh 
595*f439973dSWarner Losh //
596*f439973dSWarner Losh // IO Bus Class PC Card Subclass Progress Code definitions.
597*f439973dSWarner Losh //
598*f439973dSWarner Losh 
599*f439973dSWarner Losh //
600*f439973dSWarner Losh // IO Bus Class LPC Subclass Progress Code definitions.
601*f439973dSWarner Losh //
602*f439973dSWarner Losh 
603*f439973dSWarner Losh //
604*f439973dSWarner Losh // IO Bus Class SCSI Subclass Progress Code definitions.
605*f439973dSWarner Losh //
606*f439973dSWarner Losh 
607*f439973dSWarner Losh //
608*f439973dSWarner Losh // IO Bus Class ATA/ATAPI Subclass Progress Code definitions.
609*f439973dSWarner Losh //
610*f439973dSWarner Losh #define EFI_IOB_ATA_BUS_SMART_ENABLE          (EFI_SUBCLASS_SPECIFIC | 0x00000000)
611*f439973dSWarner Losh #define EFI_IOB_ATA_BUS_SMART_DISABLE         (EFI_SUBCLASS_SPECIFIC | 0x00000001)
612*f439973dSWarner Losh #define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
613*f439973dSWarner Losh #define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
614*f439973dSWarner Losh //
615*f439973dSWarner Losh // IO Bus Class FC Subclass Progress Code definitions.
616*f439973dSWarner Losh //
617*f439973dSWarner Losh 
618*f439973dSWarner Losh //
619*f439973dSWarner Losh // IO Bus Class IP Network Subclass Progress Code definitions.
620*f439973dSWarner Losh //
621*f439973dSWarner Losh 
622*f439973dSWarner Losh //
623*f439973dSWarner Losh // IO Bus Class SMBUS Subclass Progress Code definitions.
624*f439973dSWarner Losh //
625*f439973dSWarner Losh 
626*f439973dSWarner Losh //
627*f439973dSWarner Losh // IO Bus Class I2C Subclass Progress Code definitions.
628*f439973dSWarner Losh //
629*f439973dSWarner Losh 
630*f439973dSWarner Losh ///
631*f439973dSWarner Losh /// IO Bus Class Error Code definitions.
632*f439973dSWarner Losh /// These are shared by all subclasses.
633*f439973dSWarner Losh ///
634*f439973dSWarner Losh ///@{
635*f439973dSWarner Losh #define EFI_IOB_EC_NON_SPECIFIC       0x00000000
636*f439973dSWarner Losh #define EFI_IOB_EC_DISABLED           0x00000001
637*f439973dSWarner Losh #define EFI_IOB_EC_NOT_SUPPORTED      0x00000002
638*f439973dSWarner Losh #define EFI_IOB_EC_NOT_DETECTED       0x00000003
639*f439973dSWarner Losh #define EFI_IOB_EC_NOT_CONFIGURED     0x00000004
640*f439973dSWarner Losh #define EFI_IOB_EC_INTERFACE_ERROR    0x00000005
641*f439973dSWarner Losh #define EFI_IOB_EC_CONTROLLER_ERROR   0x00000006
642*f439973dSWarner Losh #define EFI_IOB_EC_READ_ERROR         0x00000007
643*f439973dSWarner Losh #define EFI_IOB_EC_WRITE_ERROR        0x00000008
644*f439973dSWarner Losh #define EFI_IOB_EC_RESOURCE_CONFLICT  0x00000009
645*f439973dSWarner Losh ///@}
646*f439973dSWarner Losh 
647*f439973dSWarner Losh //
648*f439973dSWarner Losh // IO Bus Class Unspecified Subclass Error Code definitions.
649*f439973dSWarner Losh //
650*f439973dSWarner Losh 
651*f439973dSWarner Losh ///
652*f439973dSWarner Losh /// IO Bus Class PCI Subclass Error Code definitions.
653*f439973dSWarner Losh ///
654*f439973dSWarner Losh ///@{
655*f439973dSWarner Losh #define EFI_IOB_PCI_EC_PERR  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
656*f439973dSWarner Losh #define EFI_IOB_PCI_EC_SERR  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
657*f439973dSWarner Losh ///@}
658*f439973dSWarner Losh 
659*f439973dSWarner Losh //
660*f439973dSWarner Losh // IO Bus Class USB Subclass Error Code definitions.
661*f439973dSWarner Losh //
662*f439973dSWarner Losh 
663*f439973dSWarner Losh //
664*f439973dSWarner Losh // IO Bus Class IBA Subclass Error Code definitions.
665*f439973dSWarner Losh //
666*f439973dSWarner Losh 
667*f439973dSWarner Losh //
668*f439973dSWarner Losh // IO Bus Class AGP Subclass Error Code definitions.
669*f439973dSWarner Losh //
670*f439973dSWarner Losh 
671*f439973dSWarner Losh //
672*f439973dSWarner Losh // IO Bus Class PC Card Subclass Error Code definitions.
673*f439973dSWarner Losh //
674*f439973dSWarner Losh 
675*f439973dSWarner Losh //
676*f439973dSWarner Losh // IO Bus Class LPC Subclass Error Code definitions.
677*f439973dSWarner Losh //
678*f439973dSWarner Losh 
679*f439973dSWarner Losh //
680*f439973dSWarner Losh // IO Bus Class SCSI Subclass Error Code definitions.
681*f439973dSWarner Losh //
682*f439973dSWarner Losh 
683*f439973dSWarner Losh //
684*f439973dSWarner Losh // IO Bus Class ATA/ATAPI Subclass Error Code definitions.
685*f439973dSWarner Losh //
686*f439973dSWarner Losh #define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
687*f439973dSWarner Losh #define EFI_IOB_ATA_BUS_SMART_DISABLED      (EFI_SUBCLASS_SPECIFIC | 0x00000001)
688*f439973dSWarner Losh 
689*f439973dSWarner Losh //
690*f439973dSWarner Losh // IO Bus Class FC Subclass Error Code definitions.
691*f439973dSWarner Losh //
692*f439973dSWarner Losh 
693*f439973dSWarner Losh //
694*f439973dSWarner Losh // IO Bus Class IP Network Subclass Error Code definitions.
695*f439973dSWarner Losh //
696*f439973dSWarner Losh 
697*f439973dSWarner Losh //
698*f439973dSWarner Losh // IO Bus Class SMBUS Subclass Error Code definitions.
699*f439973dSWarner Losh //
700*f439973dSWarner Losh 
701*f439973dSWarner Losh //
702*f439973dSWarner Losh // IO Bus Class I2C Subclass Error Code definitions.
703*f439973dSWarner Losh //
704*f439973dSWarner Losh 
705*f439973dSWarner Losh ///
706*f439973dSWarner Losh /// Software Subclass definitions.
707*f439973dSWarner Losh /// Values of 14-127 are reserved for future use by this specification.
708*f439973dSWarner Losh /// Values of 128-255 are reserved for OEM use.
709*f439973dSWarner Losh ///
710*f439973dSWarner Losh ///@{
711*f439973dSWarner Losh #define EFI_SOFTWARE_UNSPECIFIED          (EFI_SOFTWARE | 0x00000000)
712*f439973dSWarner Losh #define EFI_SOFTWARE_SEC                  (EFI_SOFTWARE | 0x00010000)
713*f439973dSWarner Losh #define EFI_SOFTWARE_PEI_CORE             (EFI_SOFTWARE | 0x00020000)
714*f439973dSWarner Losh #define EFI_SOFTWARE_PEI_MODULE           (EFI_SOFTWARE | 0x00030000)
715*f439973dSWarner Losh #define EFI_SOFTWARE_DXE_CORE             (EFI_SOFTWARE | 0x00040000)
716*f439973dSWarner Losh #define EFI_SOFTWARE_DXE_BS_DRIVER        (EFI_SOFTWARE | 0x00050000)
717*f439973dSWarner Losh #define EFI_SOFTWARE_DXE_RT_DRIVER        (EFI_SOFTWARE | 0x00060000)
718*f439973dSWarner Losh #define EFI_SOFTWARE_SMM_DRIVER           (EFI_SOFTWARE | 0x00070000)
719*f439973dSWarner Losh #define EFI_SOFTWARE_EFI_APPLICATION      (EFI_SOFTWARE | 0x00080000)
720*f439973dSWarner Losh #define EFI_SOFTWARE_EFI_OS_LOADER        (EFI_SOFTWARE | 0x00090000)
721*f439973dSWarner Losh #define EFI_SOFTWARE_RT                   (EFI_SOFTWARE | 0x000A0000)
722*f439973dSWarner Losh #define EFI_SOFTWARE_AL                   (EFI_SOFTWARE | 0x000B0000)
723*f439973dSWarner Losh #define EFI_SOFTWARE_EBC_EXCEPTION        (EFI_SOFTWARE | 0x000C0000)
724*f439973dSWarner Losh #define EFI_SOFTWARE_IA32_EXCEPTION       (EFI_SOFTWARE | 0x000D0000)
725*f439973dSWarner Losh #define EFI_SOFTWARE_IPF_EXCEPTION        (EFI_SOFTWARE | 0x000E0000)
726*f439973dSWarner Losh #define EFI_SOFTWARE_PEI_SERVICE          (EFI_SOFTWARE | 0x000F0000)
727*f439973dSWarner Losh #define EFI_SOFTWARE_EFI_BOOT_SERVICE     (EFI_SOFTWARE | 0x00100000)
728*f439973dSWarner Losh #define EFI_SOFTWARE_EFI_RUNTIME_SERVICE  (EFI_SOFTWARE | 0x00110000)
729*f439973dSWarner Losh #define EFI_SOFTWARE_EFI_DXE_SERVICE      (EFI_SOFTWARE | 0x00120000)
730*f439973dSWarner Losh #define EFI_SOFTWARE_X64_EXCEPTION        (EFI_SOFTWARE | 0x00130000)
731*f439973dSWarner Losh #define EFI_SOFTWARE_ARM_EXCEPTION        (EFI_SOFTWARE | 0x00140000)
732*f439973dSWarner Losh 
733*f439973dSWarner Losh ///@}
734*f439973dSWarner Losh 
735*f439973dSWarner Losh ///
736*f439973dSWarner Losh /// Software Class Progress Code definitions.
737*f439973dSWarner Losh /// These are shared by all subclasses.
738*f439973dSWarner Losh ///
739*f439973dSWarner Losh ///@{
740*f439973dSWarner Losh #define EFI_SW_PC_INIT                0x00000000
741*f439973dSWarner Losh #define EFI_SW_PC_LOAD                0x00000001
742*f439973dSWarner Losh #define EFI_SW_PC_INIT_BEGIN          0x00000002
743*f439973dSWarner Losh #define EFI_SW_PC_INIT_END            0x00000003
744*f439973dSWarner Losh #define EFI_SW_PC_AUTHENTICATE_BEGIN  0x00000004
745*f439973dSWarner Losh #define EFI_SW_PC_AUTHENTICATE_END    0x00000005
746*f439973dSWarner Losh #define EFI_SW_PC_INPUT_WAIT          0x00000006
747*f439973dSWarner Losh #define EFI_SW_PC_USER_SETUP          0x00000007
748*f439973dSWarner Losh ///@}
749*f439973dSWarner Losh 
750*f439973dSWarner Losh //
751*f439973dSWarner Losh // Software Class Unspecified Subclass Progress Code definitions.
752*f439973dSWarner Losh //
753*f439973dSWarner Losh 
754*f439973dSWarner Losh ///
755*f439973dSWarner Losh /// Software Class SEC Subclass Progress Code definitions.
756*f439973dSWarner Losh ///
757*f439973dSWarner Losh ///@{
758*f439973dSWarner Losh #define EFI_SW_SEC_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
759*f439973dSWarner Losh #define EFI_SW_SEC_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
760*f439973dSWarner Losh ///@}
761*f439973dSWarner Losh 
762*f439973dSWarner Losh ///
763*f439973dSWarner Losh /// Software Class PEI Core Subclass Progress Code definitions.
764*f439973dSWarner Losh ///
765*f439973dSWarner Losh ///@{
766*f439973dSWarner Losh #define EFI_SW_PEI_CORE_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
767*f439973dSWarner Losh #define EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
768*f439973dSWarner Losh #define EFI_SW_PEI_CORE_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
769*f439973dSWarner Losh ///@}
770*f439973dSWarner Losh 
771*f439973dSWarner Losh ///
772*f439973dSWarner Losh /// Software Class PEI Module Subclass Progress Code definitions.
773*f439973dSWarner Losh ///
774*f439973dSWarner Losh ///@{
775*f439973dSWarner Losh #define EFI_SW_PEI_PC_RECOVERY_BEGIN  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
776*f439973dSWarner Losh #define EFI_SW_PEI_PC_CAPSULE_LOAD    (EFI_SUBCLASS_SPECIFIC | 0x00000001)
777*f439973dSWarner Losh #define EFI_SW_PEI_PC_CAPSULE_START   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
778*f439973dSWarner Losh #define EFI_SW_PEI_PC_RECOVERY_USER   (EFI_SUBCLASS_SPECIFIC | 0x00000003)
779*f439973dSWarner Losh #define EFI_SW_PEI_PC_RECOVERY_AUTO   (EFI_SUBCLASS_SPECIFIC | 0x00000004)
780*f439973dSWarner Losh #define EFI_SW_PEI_PC_S3_BOOT_SCRIPT  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
781*f439973dSWarner Losh #define EFI_SW_PEI_PC_OS_WAKE         (EFI_SUBCLASS_SPECIFIC | 0x00000006)
782*f439973dSWarner Losh #define EFI_SW_PEI_PC_S3_STARTED      (EFI_SUBCLASS_SPECIFIC | 0x00000007)
783*f439973dSWarner Losh ///@}
784*f439973dSWarner Losh 
785*f439973dSWarner Losh ///
786*f439973dSWarner Losh /// Software Class DXE Core Subclass Progress Code definitions.
787*f439973dSWarner Losh ///
788*f439973dSWarner Losh ///@{
789*f439973dSWarner Losh #define EFI_SW_DXE_CORE_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
790*f439973dSWarner Losh #define EFI_SW_DXE_CORE_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
791*f439973dSWarner Losh #define EFI_SW_DXE_CORE_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
792*f439973dSWarner Losh #define EFI_SW_DXE_CORE_PC_START_DRIVER     (EFI_SUBCLASS_SPECIFIC | 0x00000003)
793*f439973dSWarner Losh #define EFI_SW_DXE_CORE_PC_ARCH_READY       (EFI_SUBCLASS_SPECIFIC | 0x00000004)
794*f439973dSWarner Losh ///@}
795*f439973dSWarner Losh 
796*f439973dSWarner Losh ///
797*f439973dSWarner Losh /// Software Class DXE BS Driver Subclass Progress Code definitions.
798*f439973dSWarner Losh ///
799*f439973dSWarner Losh ///@{
800*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000000)
801*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT           (EFI_SUBCLASS_SPECIFIC | 0x00000001)
802*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT             (EFI_SUBCLASS_SPECIFIC | 0x00000002)
803*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_EXIT_BOOT_SERVICES_EVENT      (EFI_SUBCLASS_SPECIFIC | 0x00000003)
804*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT  (EFI_SUBCLASS_SPECIFIC | 0x00000004)
805*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_VARIABLE_SERVICES_INIT        (EFI_SUBCLASS_SPECIFIC | 0x00000005)
806*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_VARIABLE_RECLAIM              (EFI_SUBCLASS_SPECIFIC | 0x00000006)
807*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_ATTEMPT_BOOT_ORDER_EVENT      (EFI_SUBCLASS_SPECIFIC | 0x00000007)
808*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_CONFIG_RESET                  (EFI_SUBCLASS_SPECIFIC | 0x00000008)
809*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_CSM_INIT                      (EFI_SUBCLASS_SPECIFIC | 0x00000009)
810*f439973dSWarner Losh ///@}
811*f439973dSWarner Losh 
812*f439973dSWarner Losh //
813*f439973dSWarner Losh // Software Class SMM Driver Subclass Progress Code definitions.
814*f439973dSWarner Losh //
815*f439973dSWarner Losh 
816*f439973dSWarner Losh //
817*f439973dSWarner Losh // Software Class EFI Application Subclass Progress Code definitions.
818*f439973dSWarner Losh //
819*f439973dSWarner Losh 
820*f439973dSWarner Losh //
821*f439973dSWarner Losh // Software Class EFI OS Loader Subclass Progress Code definitions.
822*f439973dSWarner Losh //
823*f439973dSWarner Losh 
824*f439973dSWarner Losh ///
825*f439973dSWarner Losh /// Software Class EFI RT Subclass Progress Code definitions.
826*f439973dSWarner Losh ///
827*f439973dSWarner Losh ///@{
828*f439973dSWarner Losh #define EFI_SW_RT_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
829*f439973dSWarner Losh #define EFI_SW_RT_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
830*f439973dSWarner Losh #define EFI_SW_RT_PC_RETURN_TO_LAST   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
831*f439973dSWarner Losh ///@}
832*f439973dSWarner Losh 
833*f439973dSWarner Losh //
834*f439973dSWarner Losh // Software Class X64 Exception Subclass Progress Code definitions.
835*f439973dSWarner Losh //
836*f439973dSWarner Losh 
837*f439973dSWarner Losh //
838*f439973dSWarner Losh // Software Class ARM Exception Subclass Progress Code definitions.
839*f439973dSWarner Losh //
840*f439973dSWarner Losh 
841*f439973dSWarner Losh //
842*f439973dSWarner Losh // Software Class EBC Exception Subclass Progress Code definitions.
843*f439973dSWarner Losh //
844*f439973dSWarner Losh 
845*f439973dSWarner Losh //
846*f439973dSWarner Losh // Software Class IA32 Exception Subclass Progress Code definitions.
847*f439973dSWarner Losh //
848*f439973dSWarner Losh 
849*f439973dSWarner Losh //
850*f439973dSWarner Losh // Software Class X64 Exception Subclass Progress Code definitions.
851*f439973dSWarner Losh //
852*f439973dSWarner Losh 
853*f439973dSWarner Losh //
854*f439973dSWarner Losh // Software Class IPF Exception Subclass Progress Code definitions.
855*f439973dSWarner Losh //
856*f439973dSWarner Losh 
857*f439973dSWarner Losh ///
858*f439973dSWarner Losh /// Software Class PEI Services Subclass Progress Code definitions.
859*f439973dSWarner Losh ///
860*f439973dSWarner Losh ///@{
861*f439973dSWarner Losh #define EFI_SW_PS_PC_INSTALL_PPI              (EFI_SUBCLASS_SPECIFIC | 0x00000000)
862*f439973dSWarner Losh #define EFI_SW_PS_PC_REINSTALL_PPI            (EFI_SUBCLASS_SPECIFIC | 0x00000001)
863*f439973dSWarner Losh #define EFI_SW_PS_PC_LOCATE_PPI               (EFI_SUBCLASS_SPECIFIC | 0x00000002)
864*f439973dSWarner Losh #define EFI_SW_PS_PC_NOTIFY_PPI               (EFI_SUBCLASS_SPECIFIC | 0x00000003)
865*f439973dSWarner Losh #define EFI_SW_PS_PC_GET_BOOT_MODE            (EFI_SUBCLASS_SPECIFIC | 0x00000004)
866*f439973dSWarner Losh #define EFI_SW_PS_PC_SET_BOOT_MODE            (EFI_SUBCLASS_SPECIFIC | 0x00000005)
867*f439973dSWarner Losh #define EFI_SW_PS_PC_GET_HOB_LIST             (EFI_SUBCLASS_SPECIFIC | 0x00000006)
868*f439973dSWarner Losh #define EFI_SW_PS_PC_CREATE_HOB               (EFI_SUBCLASS_SPECIFIC | 0x00000007)
869*f439973dSWarner Losh #define EFI_SW_PS_PC_FFS_FIND_NEXT_VOLUME     (EFI_SUBCLASS_SPECIFIC | 0x00000008)
870*f439973dSWarner Losh #define EFI_SW_PS_PC_FFS_FIND_NEXT_FILE       (EFI_SUBCLASS_SPECIFIC | 0x00000009)
871*f439973dSWarner Losh #define EFI_SW_PS_PC_FFS_FIND_SECTION_DATA    (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
872*f439973dSWarner Losh #define EFI_SW_PS_PC_INSTALL_PEI_MEMORY       (EFI_SUBCLASS_SPECIFIC | 0x0000000B)
873*f439973dSWarner Losh #define EFI_SW_PS_PC_ALLOCATE_PAGES           (EFI_SUBCLASS_SPECIFIC | 0x0000000C)
874*f439973dSWarner Losh #define EFI_SW_PS_PC_ALLOCATE_POOL            (EFI_SUBCLASS_SPECIFIC | 0x0000000D)
875*f439973dSWarner Losh #define EFI_SW_PS_PC_COPY_MEM                 (EFI_SUBCLASS_SPECIFIC | 0x0000000E)
876*f439973dSWarner Losh #define EFI_SW_PS_PC_SET_MEM                  (EFI_SUBCLASS_SPECIFIC | 0x0000000F)
877*f439973dSWarner Losh #define EFI_SW_PS_PC_RESET_SYSTEM             (EFI_SUBCLASS_SPECIFIC | 0x00000010)
878*f439973dSWarner Losh #define EFI_SW_PS_PC_FFS_FIND_FILE_BY_NAME    (EFI_SUBCLASS_SPECIFIC | 0x00000013)
879*f439973dSWarner Losh #define EFI_SW_PS_PC_FFS_GET_FILE_INFO        (EFI_SUBCLASS_SPECIFIC | 0x00000014)
880*f439973dSWarner Losh #define EFI_SW_PS_PC_FFS_GET_VOLUME_INFO      (EFI_SUBCLASS_SPECIFIC | 0x00000015)
881*f439973dSWarner Losh #define EFI_SW_PS_PC_FFS_REGISTER_FOR_SHADOW  (EFI_SUBCLASS_SPECIFIC | 0x00000016)
882*f439973dSWarner Losh ///@}
883*f439973dSWarner Losh 
884*f439973dSWarner Losh ///
885*f439973dSWarner Losh /// Software Class EFI Boot Services Subclass Progress Code definitions.
886*f439973dSWarner Losh ///
887*f439973dSWarner Losh ///@{
888*f439973dSWarner Losh #define EFI_SW_BS_PC_RAISE_TPL                      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
889*f439973dSWarner Losh #define EFI_SW_BS_PC_RESTORE_TPL                    (EFI_SUBCLASS_SPECIFIC | 0x00000001)
890*f439973dSWarner Losh #define EFI_SW_BS_PC_ALLOCATE_PAGES                 (EFI_SUBCLASS_SPECIFIC | 0x00000002)
891*f439973dSWarner Losh #define EFI_SW_BS_PC_FREE_PAGES                     (EFI_SUBCLASS_SPECIFIC | 0x00000003)
892*f439973dSWarner Losh #define EFI_SW_BS_PC_GET_MEMORY_MAP                 (EFI_SUBCLASS_SPECIFIC | 0x00000004)
893*f439973dSWarner Losh #define EFI_SW_BS_PC_ALLOCATE_POOL                  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
894*f439973dSWarner Losh #define EFI_SW_BS_PC_FREE_POOL                      (EFI_SUBCLASS_SPECIFIC | 0x00000006)
895*f439973dSWarner Losh #define EFI_SW_BS_PC_CREATE_EVENT                   (EFI_SUBCLASS_SPECIFIC | 0x00000007)
896*f439973dSWarner Losh #define EFI_SW_BS_PC_SET_TIMER                      (EFI_SUBCLASS_SPECIFIC | 0x00000008)
897*f439973dSWarner Losh #define EFI_SW_BS_PC_WAIT_FOR_EVENT                 (EFI_SUBCLASS_SPECIFIC | 0x00000009)
898*f439973dSWarner Losh #define EFI_SW_BS_PC_SIGNAL_EVENT                   (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
899*f439973dSWarner Losh #define EFI_SW_BS_PC_CLOSE_EVENT                    (EFI_SUBCLASS_SPECIFIC | 0x0000000B)
900*f439973dSWarner Losh #define EFI_SW_BS_PC_CHECK_EVENT                    (EFI_SUBCLASS_SPECIFIC | 0x0000000C)
901*f439973dSWarner Losh #define EFI_SW_BS_PC_INSTALL_PROTOCOL_INTERFACE     (EFI_SUBCLASS_SPECIFIC | 0x0000000D)
902*f439973dSWarner Losh #define EFI_SW_BS_PC_REINSTALL_PROTOCOL_INTERFACE   (EFI_SUBCLASS_SPECIFIC | 0x0000000E)
903*f439973dSWarner Losh #define EFI_SW_BS_PC_UNINSTALL_PROTOCOL_INTERFACE   (EFI_SUBCLASS_SPECIFIC | 0x0000000F)
904*f439973dSWarner Losh #define EFI_SW_BS_PC_HANDLE_PROTOCOL                (EFI_SUBCLASS_SPECIFIC | 0x00000010)
905*f439973dSWarner Losh #define EFI_SW_BS_PC_PC_HANDLE_PROTOCOL             (EFI_SUBCLASS_SPECIFIC | 0x00000011)
906*f439973dSWarner Losh #define EFI_SW_BS_PC_REGISTER_PROTOCOL_NOTIFY       (EFI_SUBCLASS_SPECIFIC | 0x00000012)
907*f439973dSWarner Losh #define EFI_SW_BS_PC_LOCATE_HANDLE                  (EFI_SUBCLASS_SPECIFIC | 0x00000013)
908*f439973dSWarner Losh #define EFI_SW_BS_PC_INSTALL_CONFIGURATION_TABLE    (EFI_SUBCLASS_SPECIFIC | 0x00000014)
909*f439973dSWarner Losh #define EFI_SW_BS_PC_LOAD_IMAGE                     (EFI_SUBCLASS_SPECIFIC | 0x00000015)
910*f439973dSWarner Losh #define EFI_SW_BS_PC_START_IMAGE                    (EFI_SUBCLASS_SPECIFIC | 0x00000016)
911*f439973dSWarner Losh #define EFI_SW_BS_PC_EXIT                           (EFI_SUBCLASS_SPECIFIC | 0x00000017)
912*f439973dSWarner Losh #define EFI_SW_BS_PC_UNLOAD_IMAGE                   (EFI_SUBCLASS_SPECIFIC | 0x00000018)
913*f439973dSWarner Losh #define EFI_SW_BS_PC_EXIT_BOOT_SERVICES             (EFI_SUBCLASS_SPECIFIC | 0x00000019)
914*f439973dSWarner Losh #define EFI_SW_BS_PC_GET_NEXT_MONOTONIC_COUNT       (EFI_SUBCLASS_SPECIFIC | 0x0000001A)
915*f439973dSWarner Losh #define EFI_SW_BS_PC_STALL                          (EFI_SUBCLASS_SPECIFIC | 0x0000001B)
916*f439973dSWarner Losh #define EFI_SW_BS_PC_SET_WATCHDOG_TIMER             (EFI_SUBCLASS_SPECIFIC | 0x0000001C)
917*f439973dSWarner Losh #define EFI_SW_BS_PC_CONNECT_CONTROLLER             (EFI_SUBCLASS_SPECIFIC | 0x0000001D)
918*f439973dSWarner Losh #define EFI_SW_BS_PC_DISCONNECT_CONTROLLER          (EFI_SUBCLASS_SPECIFIC | 0x0000001E)
919*f439973dSWarner Losh #define EFI_SW_BS_PC_OPEN_PROTOCOL                  (EFI_SUBCLASS_SPECIFIC | 0x0000001F)
920*f439973dSWarner Losh #define EFI_SW_BS_PC_CLOSE_PROTOCOL                 (EFI_SUBCLASS_SPECIFIC | 0x00000020)
921*f439973dSWarner Losh #define EFI_SW_BS_PC_OPEN_PROTOCOL_INFORMATION      (EFI_SUBCLASS_SPECIFIC | 0x00000021)
922*f439973dSWarner Losh #define EFI_SW_BS_PC_PROTOCOLS_PER_HANDLE           (EFI_SUBCLASS_SPECIFIC | 0x00000022)
923*f439973dSWarner Losh #define EFI_SW_BS_PC_LOCATE_HANDLE_BUFFER           (EFI_SUBCLASS_SPECIFIC | 0x00000023)
924*f439973dSWarner Losh #define EFI_SW_BS_PC_LOCATE_PROTOCOL                (EFI_SUBCLASS_SPECIFIC | 0x00000024)
925*f439973dSWarner Losh #define EFI_SW_BS_PC_INSTALL_MULTIPLE_INTERFACES    (EFI_SUBCLASS_SPECIFIC | 0x00000025)
926*f439973dSWarner Losh #define EFI_SW_BS_PC_UNINSTALL_MULTIPLE_INTERFACES  (EFI_SUBCLASS_SPECIFIC | 0x00000026)
927*f439973dSWarner Losh #define EFI_SW_BS_PC_CALCULATE_CRC_32               (EFI_SUBCLASS_SPECIFIC | 0x00000027)
928*f439973dSWarner Losh #define EFI_SW_BS_PC_COPY_MEM                       (EFI_SUBCLASS_SPECIFIC | 0x00000028)
929*f439973dSWarner Losh #define EFI_SW_BS_PC_SET_MEM                        (EFI_SUBCLASS_SPECIFIC | 0x00000029)
930*f439973dSWarner Losh #define EFI_SW_BS_PC_CREATE_EVENT_EX                (EFI_SUBCLASS_SPECIFIC | 0x0000002A)
931*f439973dSWarner Losh ///@}
932*f439973dSWarner Losh 
933*f439973dSWarner Losh ///
934*f439973dSWarner Losh /// Software Class EFI Runtime Services Subclass Progress Code definitions.
935*f439973dSWarner Losh ///
936*f439973dSWarner Losh ///@{
937*f439973dSWarner Losh #define EFI_SW_RS_PC_GET_TIME                       (EFI_SUBCLASS_SPECIFIC | 0x00000000)
938*f439973dSWarner Losh #define EFI_SW_RS_PC_SET_TIME                       (EFI_SUBCLASS_SPECIFIC | 0x00000001)
939*f439973dSWarner Losh #define EFI_SW_RS_PC_GET_WAKEUP_TIME                (EFI_SUBCLASS_SPECIFIC | 0x00000002)
940*f439973dSWarner Losh #define EFI_SW_RS_PC_SET_WAKEUP_TIME                (EFI_SUBCLASS_SPECIFIC | 0x00000003)
941*f439973dSWarner Losh #define EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP        (EFI_SUBCLASS_SPECIFIC | 0x00000004)
942*f439973dSWarner Losh #define EFI_SW_RS_PC_CONVERT_POINTER                (EFI_SUBCLASS_SPECIFIC | 0x00000005)
943*f439973dSWarner Losh #define EFI_SW_RS_PC_GET_VARIABLE                   (EFI_SUBCLASS_SPECIFIC | 0x00000006)
944*f439973dSWarner Losh #define EFI_SW_RS_PC_GET_NEXT_VARIABLE_NAME         (EFI_SUBCLASS_SPECIFIC | 0x00000007)
945*f439973dSWarner Losh #define EFI_SW_RS_PC_SET_VARIABLE                   (EFI_SUBCLASS_SPECIFIC | 0x00000008)
946*f439973dSWarner Losh #define EFI_SW_RS_PC_GET_NEXT_HIGH_MONOTONIC_COUNT  (EFI_SUBCLASS_SPECIFIC | 0x00000009)
947*f439973dSWarner Losh #define EFI_SW_RS_PC_RESET_SYSTEM                   (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
948*f439973dSWarner Losh #define EFI_SW_RS_PC_UPDATE_CAPSULE                 (EFI_SUBCLASS_SPECIFIC | 0x0000000B)
949*f439973dSWarner Losh #define EFI_SW_RS_PC_QUERY_CAPSULE_CAPABILITIES     (EFI_SUBCLASS_SPECIFIC | 0x0000000C)
950*f439973dSWarner Losh #define EFI_SW_RS_PC_QUERY_VARIABLE_INFO            (EFI_SUBCLASS_SPECIFIC | 0x0000000D)
951*f439973dSWarner Losh ///@}
952*f439973dSWarner Losh 
953*f439973dSWarner Losh ///
954*f439973dSWarner Losh /// Software Class EFI DXE Services Subclass Progress Code definitions
955*f439973dSWarner Losh ///
956*f439973dSWarner Losh ///@{
957*f439973dSWarner Losh #define EFI_SW_DS_PC_ADD_MEMORY_SPACE             (EFI_SUBCLASS_SPECIFIC | 0x00000000)
958*f439973dSWarner Losh #define EFI_SW_DS_PC_ALLOCATE_MEMORY_SPACE        (EFI_SUBCLASS_SPECIFIC | 0x00000001)
959*f439973dSWarner Losh #define EFI_SW_DS_PC_FREE_MEMORY_SPACE            (EFI_SUBCLASS_SPECIFIC | 0x00000002)
960*f439973dSWarner Losh #define EFI_SW_DS_PC_REMOVE_MEMORY_SPACE          (EFI_SUBCLASS_SPECIFIC | 0x00000003)
961*f439973dSWarner Losh #define EFI_SW_DS_PC_GET_MEMORY_SPACE_DESCRIPTOR  (EFI_SUBCLASS_SPECIFIC | 0x00000004)
962*f439973dSWarner Losh #define EFI_SW_DS_PC_SET_MEMORY_SPACE_ATTRIBUTES  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
963*f439973dSWarner Losh #define EFI_SW_DS_PC_GET_MEMORY_SPACE_MAP         (EFI_SUBCLASS_SPECIFIC | 0x00000006)
964*f439973dSWarner Losh #define EFI_SW_DS_PC_ADD_IO_SPACE                 (EFI_SUBCLASS_SPECIFIC | 0x00000007)
965*f439973dSWarner Losh #define EFI_SW_DS_PC_ALLOCATE_IO_SPACE            (EFI_SUBCLASS_SPECIFIC | 0x00000008)
966*f439973dSWarner Losh #define EFI_SW_DS_PC_FREE_IO_SPACE                (EFI_SUBCLASS_SPECIFIC | 0x00000009)
967*f439973dSWarner Losh #define EFI_SW_DS_PC_REMOVE_IO_SPACE              (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
968*f439973dSWarner Losh #define EFI_SW_DS_PC_GET_IO_SPACE_DESCRIPTOR      (EFI_SUBCLASS_SPECIFIC | 0x0000000B)
969*f439973dSWarner Losh #define EFI_SW_DS_PC_GET_IO_SPACE_MAP             (EFI_SUBCLASS_SPECIFIC | 0x0000000C)
970*f439973dSWarner Losh #define EFI_SW_DS_PC_DISPATCH                     (EFI_SUBCLASS_SPECIFIC | 0x0000000D)
971*f439973dSWarner Losh #define EFI_SW_DS_PC_SCHEDULE                     (EFI_SUBCLASS_SPECIFIC | 0x0000000E)
972*f439973dSWarner Losh #define EFI_SW_DS_PC_TRUST                        (EFI_SUBCLASS_SPECIFIC | 0x0000000F)
973*f439973dSWarner Losh #define EFI_SW_DS_PC_PROCESS_FIRMWARE_VOLUME      (EFI_SUBCLASS_SPECIFIC | 0x00000010)
974*f439973dSWarner Losh ///@}
975*f439973dSWarner Losh 
976*f439973dSWarner Losh ///
977*f439973dSWarner Losh /// Software Class Error Code definitions.
978*f439973dSWarner Losh /// These are shared by all subclasses.
979*f439973dSWarner Losh ///
980*f439973dSWarner Losh ///@{
981*f439973dSWarner Losh #define EFI_SW_EC_NON_SPECIFIC             0x00000000
982*f439973dSWarner Losh #define EFI_SW_EC_LOAD_ERROR               0x00000001
983*f439973dSWarner Losh #define EFI_SW_EC_INVALID_PARAMETER        0x00000002
984*f439973dSWarner Losh #define EFI_SW_EC_UNSUPPORTED              0x00000003
985*f439973dSWarner Losh #define EFI_SW_EC_INVALID_BUFFER           0x00000004
986*f439973dSWarner Losh #define EFI_SW_EC_OUT_OF_RESOURCES         0x00000005
987*f439973dSWarner Losh #define EFI_SW_EC_ABORTED                  0x00000006
988*f439973dSWarner Losh #define EFI_SW_EC_ILLEGAL_SOFTWARE_STATE   0x00000007
989*f439973dSWarner Losh #define EFI_SW_EC_ILLEGAL_HARDWARE_STATE   0x00000008
990*f439973dSWarner Losh #define EFI_SW_EC_START_ERROR              0x00000009
991*f439973dSWarner Losh #define EFI_SW_EC_BAD_DATE_TIME            0x0000000A
992*f439973dSWarner Losh #define EFI_SW_EC_CFG_INVALID              0x0000000B
993*f439973dSWarner Losh #define EFI_SW_EC_CFG_CLR_REQUEST          0x0000000C
994*f439973dSWarner Losh #define EFI_SW_EC_CFG_DEFAULT              0x0000000D
995*f439973dSWarner Losh #define EFI_SW_EC_PWD_INVALID              0x0000000E
996*f439973dSWarner Losh #define EFI_SW_EC_PWD_CLR_REQUEST          0x0000000F
997*f439973dSWarner Losh #define EFI_SW_EC_PWD_CLEARED              0x00000010
998*f439973dSWarner Losh #define EFI_SW_EC_EVENT_LOG_FULL           0x00000011
999*f439973dSWarner Losh #define EFI_SW_EC_WRITE_PROTECTED          0x00000012
1000*f439973dSWarner Losh #define EFI_SW_EC_FV_CORRUPTED             0x00000013
1001*f439973dSWarner Losh #define EFI_SW_EC_INCONSISTENT_MEMORY_MAP  0x00000014
1002*f439973dSWarner Losh ///@}
1003*f439973dSWarner Losh 
1004*f439973dSWarner Losh //
1005*f439973dSWarner Losh // Software Class Unspecified Subclass Error Code definitions.
1006*f439973dSWarner Losh //
1007*f439973dSWarner Losh 
1008*f439973dSWarner Losh //
1009*f439973dSWarner Losh // Software Class SEC Subclass Error Code definitions.
1010*f439973dSWarner Losh //
1011*f439973dSWarner Losh 
1012*f439973dSWarner Losh ///
1013*f439973dSWarner Losh /// Software Class PEI Core Subclass Error Code definitions.
1014*f439973dSWarner Losh ///
1015*f439973dSWarner Losh ///@{
1016*f439973dSWarner Losh #define EFI_SW_PEI_CORE_EC_DXE_CORRUPT           (EFI_SUBCLASS_SPECIFIC | 0x00000000)
1017*f439973dSWarner Losh #define EFI_SW_PEI_CORE_EC_DXEIPL_NOT_FOUND      (EFI_SUBCLASS_SPECIFIC | 0x00000001)
1018*f439973dSWarner Losh #define EFI_SW_PEI_CORE_EC_MEMORY_NOT_INSTALLED  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
1019*f439973dSWarner Losh ///@}
1020*f439973dSWarner Losh 
1021*f439973dSWarner Losh ///
1022*f439973dSWarner Losh /// Software Class PEI Module Subclass Error Code definitions.
1023*f439973dSWarner Losh ///
1024*f439973dSWarner Losh ///@{
1025*f439973dSWarner Losh #define EFI_SW_PEI_EC_NO_RECOVERY_CAPSULE         (EFI_SUBCLASS_SPECIFIC | 0x00000000)
1026*f439973dSWarner Losh #define EFI_SW_PEI_EC_INVALID_CAPSULE_DESCRIPTOR  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
1027*f439973dSWarner Losh #define EFI_SW_PEI_EC_S3_RESUME_PPI_NOT_FOUND     (EFI_SUBCLASS_SPECIFIC | 0x00000002)
1028*f439973dSWarner Losh #define EFI_SW_PEI_EC_S3_BOOT_SCRIPT_ERROR        (EFI_SUBCLASS_SPECIFIC | 0x00000003)
1029*f439973dSWarner Losh #define EFI_SW_PEI_EC_S3_OS_WAKE_ERROR            (EFI_SUBCLASS_SPECIFIC | 0x00000004)
1030*f439973dSWarner Losh #define EFI_SW_PEI_EC_S3_RESUME_FAILED            (EFI_SUBCLASS_SPECIFIC | 0x00000005)
1031*f439973dSWarner Losh #define EFI_SW_PEI_EC_RECOVERY_PPI_NOT_FOUND      (EFI_SUBCLASS_SPECIFIC | 0x00000006)
1032*f439973dSWarner Losh #define EFI_SW_PEI_EC_RECOVERY_FAILED             (EFI_SUBCLASS_SPECIFIC | 0x00000007)
1033*f439973dSWarner Losh #define EFI_SW_PEI_EC_S3_RESUME_ERROR             (EFI_SUBCLASS_SPECIFIC | 0x00000008)
1034*f439973dSWarner Losh #define EFI_SW_PEI_EC_INVALID_CAPSULE             (EFI_SUBCLASS_SPECIFIC | 0x00000009)
1035*f439973dSWarner Losh ///@}
1036*f439973dSWarner Losh 
1037*f439973dSWarner Losh ///
1038*f439973dSWarner Losh /// Software Class DXE Foundation Subclass Error Code definitions.
1039*f439973dSWarner Losh ///
1040*f439973dSWarner Losh ///@{
1041*f439973dSWarner Losh #define EFI_SW_DXE_CORE_EC_NO_ARCH  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
1042*f439973dSWarner Losh ///@}
1043*f439973dSWarner Losh 
1044*f439973dSWarner Losh ///
1045*f439973dSWarner Losh /// Software Class DXE Boot Service Driver Subclass Error Code definitions.
1046*f439973dSWarner Losh ///
1047*f439973dSWarner Losh ///@{
1048*f439973dSWarner Losh #define EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE   (EFI_SUBCLASS_SPECIFIC | 0x00000000)
1049*f439973dSWarner Losh #define EFI_SW_DXE_BS_EC_INVALID_PASSWORD        (EFI_SUBCLASS_SPECIFIC | 0x00000001)
1050*f439973dSWarner Losh #define EFI_SW_DXE_BS_EC_BOOT_OPTION_LOAD_ERROR  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
1051*f439973dSWarner Losh #define EFI_SW_DXE_BS_EC_BOOT_OPTION_FAILED      (EFI_SUBCLASS_SPECIFIC | 0x00000003)
1052*f439973dSWarner Losh #define EFI_SW_DXE_BS_EC_INVALID_IDE_PASSWORD    (EFI_SUBCLASS_SPECIFIC | 0x00000004)
1053*f439973dSWarner Losh ///@}
1054*f439973dSWarner Losh 
1055*f439973dSWarner Losh //
1056*f439973dSWarner Losh // Software Class DXE Runtime Service Driver Subclass Error Code definitions.
1057*f439973dSWarner Losh //
1058*f439973dSWarner Losh 
1059*f439973dSWarner Losh //
1060*f439973dSWarner Losh // Software Class SMM Driver Subclass Error Code definitions.
1061*f439973dSWarner Losh //
1062*f439973dSWarner Losh 
1063*f439973dSWarner Losh //
1064*f439973dSWarner Losh // Software Class EFI Application Subclass Error Code definitions.
1065*f439973dSWarner Losh //
1066*f439973dSWarner Losh 
1067*f439973dSWarner Losh //
1068*f439973dSWarner Losh // Software Class EFI OS Loader Subclass Error Code definitions.
1069*f439973dSWarner Losh //
1070*f439973dSWarner Losh 
1071*f439973dSWarner Losh //
1072*f439973dSWarner Losh // Software Class EFI RT Subclass Error Code definitions.
1073*f439973dSWarner Losh //
1074*f439973dSWarner Losh 
1075*f439973dSWarner Losh //
1076*f439973dSWarner Losh // Software Class EFI AL Subclass Error Code definitions.
1077*f439973dSWarner Losh //
1078*f439973dSWarner Losh 
1079*f439973dSWarner Losh ///
1080*f439973dSWarner Losh /// Software Class EBC Exception Subclass Error Code definitions.
1081*f439973dSWarner Losh /// These exceptions are derived from the debug protocol definitions in the EFI
1082*f439973dSWarner Losh /// specification.
1083*f439973dSWarner Losh ///
1084*f439973dSWarner Losh ///@{
1085*f439973dSWarner Losh #define EFI_SW_EC_EBC_UNDEFINED             0x00000000
1086*f439973dSWarner Losh #define EFI_SW_EC_EBC_DIVIDE_ERROR          EXCEPT_EBC_DIVIDE_ERROR
1087*f439973dSWarner Losh #define EFI_SW_EC_EBC_DEBUG                 EXCEPT_EBC_DEBUG
1088*f439973dSWarner Losh #define EFI_SW_EC_EBC_BREAKPOINT            EXCEPT_EBC_BREAKPOINT
1089*f439973dSWarner Losh #define EFI_SW_EC_EBC_OVERFLOW              EXCEPT_EBC_OVERFLOW
1090*f439973dSWarner Losh #define EFI_SW_EC_EBC_INVALID_OPCODE        EXCEPT_EBC_INVALID_OPCODE
1091*f439973dSWarner Losh #define EFI_SW_EC_EBC_STACK_FAULT           EXCEPT_EBC_STACK_FAULT
1092*f439973dSWarner Losh #define EFI_SW_EC_EBC_ALIGNMENT_CHECK       EXCEPT_EBC_ALIGNMENT_CHECK
1093*f439973dSWarner Losh #define EFI_SW_EC_EBC_INSTRUCTION_ENCODING  EXCEPT_EBC_INSTRUCTION_ENCODING
1094*f439973dSWarner Losh #define EFI_SW_EC_EBC_BAD_BREAK             EXCEPT_EBC_BAD_BREAK
1095*f439973dSWarner Losh #define EFI_SW_EC_EBC_STEP                  EXCEPT_EBC_STEP
1096*f439973dSWarner Losh ///@}
1097*f439973dSWarner Losh 
1098*f439973dSWarner Losh ///
1099*f439973dSWarner Losh /// Software Class IA32 Exception Subclass Error Code definitions.
1100*f439973dSWarner Losh /// These exceptions are derived from the debug protocol definitions in the EFI
1101*f439973dSWarner Losh /// specification.
1102*f439973dSWarner Losh ///
1103*f439973dSWarner Losh ///@{
1104*f439973dSWarner Losh #define EFI_SW_EC_IA32_DIVIDE_ERROR     EXCEPT_IA32_DIVIDE_ERROR
1105*f439973dSWarner Losh #define EFI_SW_EC_IA32_DEBUG            EXCEPT_IA32_DEBUG
1106*f439973dSWarner Losh #define EFI_SW_EC_IA32_NMI              EXCEPT_IA32_NMI
1107*f439973dSWarner Losh #define EFI_SW_EC_IA32_BREAKPOINT       EXCEPT_IA32_BREAKPOINT
1108*f439973dSWarner Losh #define EFI_SW_EC_IA32_OVERFLOW         EXCEPT_IA32_OVERFLOW
1109*f439973dSWarner Losh #define EFI_SW_EC_IA32_BOUND            EXCEPT_IA32_BOUND
1110*f439973dSWarner Losh #define EFI_SW_EC_IA32_INVALID_OPCODE   EXCEPT_IA32_INVALID_OPCODE
1111*f439973dSWarner Losh #define EFI_SW_EC_IA32_DOUBLE_FAULT     EXCEPT_IA32_DOUBLE_FAULT
1112*f439973dSWarner Losh #define EFI_SW_EC_IA32_INVALID_TSS      EXCEPT_IA32_INVALID_TSS
1113*f439973dSWarner Losh #define EFI_SW_EC_IA32_SEG_NOT_PRESENT  EXCEPT_IA32_SEG_NOT_PRESENT
1114*f439973dSWarner Losh #define EFI_SW_EC_IA32_STACK_FAULT      EXCEPT_IA32_STACK_FAULT
1115*f439973dSWarner Losh #define EFI_SW_EC_IA32_GP_FAULT         EXCEPT_IA32_GP_FAULT
1116*f439973dSWarner Losh #define EFI_SW_EC_IA32_PAGE_FAULT       EXCEPT_IA32_PAGE_FAULT
1117*f439973dSWarner Losh #define EFI_SW_EC_IA32_FP_ERROR         EXCEPT_IA32_FP_ERROR
1118*f439973dSWarner Losh #define EFI_SW_EC_IA32_ALIGNMENT_CHECK  EXCEPT_IA32_ALIGNMENT_CHECK
1119*f439973dSWarner Losh #define EFI_SW_EC_IA32_MACHINE_CHECK    EXCEPT_IA32_MACHINE_CHECK
1120*f439973dSWarner Losh #define EFI_SW_EC_IA32_SIMD             EXCEPT_IA32_SIMD
1121*f439973dSWarner Losh ///@}
1122*f439973dSWarner Losh 
1123*f439973dSWarner Losh ///
1124*f439973dSWarner Losh /// Software Class IPF Exception Subclass Error Code definitions.
1125*f439973dSWarner Losh /// These exceptions are derived from the debug protocol definitions in the EFI
1126*f439973dSWarner Losh /// specification.
1127*f439973dSWarner Losh ///
1128*f439973dSWarner Losh ///@{
1129*f439973dSWarner Losh #define EFI_SW_EC_IPF_ALT_DTLB            EXCEPT_IPF_ALT_DTLB
1130*f439973dSWarner Losh #define EFI_SW_EC_IPF_DNESTED_TLB         EXCEPT_IPF_DNESTED_TLB
1131*f439973dSWarner Losh #define EFI_SW_EC_IPF_BREAKPOINT          EXCEPT_IPF_BREAKPOINT
1132*f439973dSWarner Losh #define EFI_SW_EC_IPF_EXTERNAL_INTERRUPT  EXCEPT_IPF_EXTERNAL_INTERRUPT
1133*f439973dSWarner Losh #define EFI_SW_EC_IPF_GEN_EXCEPT          EXCEPT_IPF_GEN_EXCEPT
1134*f439973dSWarner Losh #define EFI_SW_EC_IPF_NAT_CONSUMPTION     EXCEPT_IPF_NAT_CONSUMPTION
1135*f439973dSWarner Losh #define EFI_SW_EC_IPF_DEBUG_EXCEPT        EXCEPT_IPF_DEBUG_EXCEPT
1136*f439973dSWarner Losh #define EFI_SW_EC_IPF_UNALIGNED_ACCESS    EXCEPT_IPF_UNALIGNED_ACCESS
1137*f439973dSWarner Losh #define EFI_SW_EC_IPF_FP_FAULT            EXCEPT_IPF_FP_FAULT
1138*f439973dSWarner Losh #define EFI_SW_EC_IPF_FP_TRAP             EXCEPT_IPF_FP_TRAP
1139*f439973dSWarner Losh #define EFI_SW_EC_IPF_TAKEN_BRANCH        EXCEPT_IPF_TAKEN_BRANCH
1140*f439973dSWarner Losh #define EFI_SW_EC_IPF_SINGLE_STEP         EXCEPT_IPF_SINGLE_STEP
1141*f439973dSWarner Losh ///@}
1142*f439973dSWarner Losh 
1143*f439973dSWarner Losh ///
1144*f439973dSWarner Losh /// Software Class PEI Service Subclass Error Code definitions.
1145*f439973dSWarner Losh ///
1146*f439973dSWarner Losh ///@{
1147*f439973dSWarner Losh #define EFI_SW_PS_EC_RESET_NOT_AVAILABLE     (EFI_SUBCLASS_SPECIFIC | 0x00000000)
1148*f439973dSWarner Losh #define EFI_SW_PS_EC_MEMORY_INSTALLED_TWICE  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
1149*f439973dSWarner Losh ///@}
1150*f439973dSWarner Losh 
1151*f439973dSWarner Losh //
1152*f439973dSWarner Losh // Software Class EFI Boot Service Subclass Error Code definitions.
1153*f439973dSWarner Losh //
1154*f439973dSWarner Losh 
1155*f439973dSWarner Losh //
1156*f439973dSWarner Losh // Software Class EFI Runtime Service Subclass Error Code definitions.
1157*f439973dSWarner Losh //
1158*f439973dSWarner Losh 
1159*f439973dSWarner Losh ///
1160*f439973dSWarner Losh /// Software Class EFI DXE Service Subclass Error Code definitions.
1161*f439973dSWarner Losh ///
1162*f439973dSWarner Losh ///@{
1163*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
1164*f439973dSWarner Losh #define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD        (EFI_SUBCLASS_SPECIFIC | 0x00000006)
1165*f439973dSWarner Losh ///@}
1166*f439973dSWarner Losh 
1167*f439973dSWarner Losh ///
1168*f439973dSWarner Losh /// Software Class DXE RT Driver Subclass Progress Code definitions.
1169*f439973dSWarner Losh ///
1170*f439973dSWarner Losh ///@{
1171*f439973dSWarner Losh #define EFI_SW_DXE_RT_PC_S0  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
1172*f439973dSWarner Losh #define EFI_SW_DXE_RT_PC_S1  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
1173*f439973dSWarner Losh #define EFI_SW_DXE_RT_PC_S2  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
1174*f439973dSWarner Losh #define EFI_SW_DXE_RT_PC_S3  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
1175*f439973dSWarner Losh #define EFI_SW_DXE_RT_PC_S4  (EFI_SUBCLASS_SPECIFIC | 0x00000004)
1176*f439973dSWarner Losh #define EFI_SW_DXE_RT_PC_S5  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
1177*f439973dSWarner Losh ///@}
1178*f439973dSWarner Losh 
1179*f439973dSWarner Losh ///
1180*f439973dSWarner Losh /// Software Class X64 Exception Subclass Error Code definitions.
1181*f439973dSWarner Losh /// These exceptions are derived from the debug protocol
1182*f439973dSWarner Losh /// definitions in the EFI specification.
1183*f439973dSWarner Losh ///
1184*f439973dSWarner Losh ///@{
1185*f439973dSWarner Losh #define EFI_SW_EC_X64_DIVIDE_ERROR     EXCEPT_X64_DIVIDE_ERROR
1186*f439973dSWarner Losh #define EFI_SW_EC_X64_DEBUG            EXCEPT_X64_DEBUG
1187*f439973dSWarner Losh #define EFI_SW_EC_X64_NMI              EXCEPT_X64_NMI
1188*f439973dSWarner Losh #define EFI_SW_EC_X64_BREAKPOINT       EXCEPT_X64_BREAKPOINT
1189*f439973dSWarner Losh #define EFI_SW_EC_X64_OVERFLOW         EXCEPT_X64_OVERFLOW
1190*f439973dSWarner Losh #define EFI_SW_EC_X64_BOUND            EXCEPT_X64_BOUND
1191*f439973dSWarner Losh #define EFI_SW_EC_X64_INVALID_OPCODE   EXCEPT_X64_INVALID_OPCODE
1192*f439973dSWarner Losh #define EFI_SW_EC_X64_DOUBLE_FAULT     EXCEPT_X64_DOUBLE_FAULT
1193*f439973dSWarner Losh #define EFI_SW_EC_X64_INVALID_TSS      EXCEPT_X64_INVALID_TSS
1194*f439973dSWarner Losh #define EFI_SW_EC_X64_SEG_NOT_PRESENT  EXCEPT_X64_SEG_NOT_PRESENT
1195*f439973dSWarner Losh #define EFI_SW_EC_X64_STACK_FAULT      EXCEPT_X64_STACK_FAULT
1196*f439973dSWarner Losh #define EFI_SW_EC_X64_GP_FAULT         EXCEPT_X64_GP_FAULT
1197*f439973dSWarner Losh #define EFI_SW_EC_X64_PAGE_FAULT       EXCEPT_X64_PAGE_FAULT
1198*f439973dSWarner Losh #define EFI_SW_EC_X64_FP_ERROR         EXCEPT_X64_FP_ERROR
1199*f439973dSWarner Losh #define EFI_SW_EC_X64_ALIGNMENT_CHECK  EXCEPT_X64_ALIGNMENT_CHECK
1200*f439973dSWarner Losh #define EFI_SW_EC_X64_MACHINE_CHECK    EXCEPT_X64_MACHINE_CHECK
1201*f439973dSWarner Losh #define EFI_SW_EC_X64_SIMD             EXCEPT_X64_SIMD
1202*f439973dSWarner Losh ///@}
1203*f439973dSWarner Losh 
1204*f439973dSWarner Losh ///
1205*f439973dSWarner Losh /// Software Class ARM Exception Subclass Error Code definitions.
1206*f439973dSWarner Losh /// These exceptions are derived from the debug protocol
1207*f439973dSWarner Losh /// definitions in the EFI specification.
1208*f439973dSWarner Losh ///
1209*f439973dSWarner Losh ///@{
1210*f439973dSWarner Losh #define EFI_SW_EC_ARM_RESET                  EXCEPT_ARM_RESET
1211*f439973dSWarner Losh #define EFI_SW_EC_ARM_UNDEFINED_INSTRUCTION  EXCEPT_ARM_UNDEFINED_INSTRUCTION
1212*f439973dSWarner Losh #define EFI_SW_EC_ARM_SOFTWARE_INTERRUPT     EXCEPT_ARM_SOFTWARE_INTERRUPT
1213*f439973dSWarner Losh #define EFI_SW_EC_ARM_PREFETCH_ABORT         EXCEPT_ARM_PREFETCH_ABORT
1214*f439973dSWarner Losh #define EFI_SW_EC_ARM_DATA_ABORT             EXCEPT_ARM_DATA_ABORT
1215*f439973dSWarner Losh #define EFI_SW_EC_ARM_RESERVED               EXCEPT_ARM_RESERVED
1216*f439973dSWarner Losh #define EFI_SW_EC_ARM_IRQ                    EXCEPT_ARM_IRQ
1217*f439973dSWarner Losh #define EFI_SW_EC_ARM_FIQ                    EXCEPT_ARM_FIQ
1218*f439973dSWarner Losh ///@}
1219*f439973dSWarner Losh 
1220*f439973dSWarner Losh #endif
1221