13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++
23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3f57387d54bd8f2c0261834b2ad16155f1db63291hhtianCopyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>
4f57387d54bd8f2c0261834b2ad16155f1db63291hhtianThis program and the accompanying materials
53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangare licensed and made available under the terms and conditions of the BSD License
63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangwhich accompanies this distribution.  The full text of the license may be found at
73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanghttp://opensource.org/licenses/bsd-license.php
83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangModule Name:
133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  StatusCodeDataTypeId.h
153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangAbstract:
173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  GUID used to identify id for the caller who is initiating the Status Code.
193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/
213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#ifndef _STATUS_CODE_DATA_TYPE_ID_H__
233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define _STATUS_CODE_DATA_TYPE_ID_H__
243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "EfiStatusCode.h"
273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include EFI_PROTOCOL_DEFINITION (DebugSupport)
282c40a813fc32c5c9aa204b10b037c48f42fe6422qwang#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
292c40a813fc32c5c9aa204b10b037c48f42fe6422qwang#include EFI_PROTOCOL_DEFINITION (HiiDatabase)
302c40a813fc32c5c9aa204b10b037c48f42fe6422qwang#else
313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include EFI_PROTOCOL_DEFINITION (Hii)
322c40a813fc32c5c9aa204b10b037c48f42fe6422qwang#endif
333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// The size of string
353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_MAX_STRING_SIZE  150
373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// This is the max data size including all the headers which can be passed
403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// as Status Code data. This data should be multiple of 8 byte
413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// to avoid any kind of boundary issue. Also, sum of this data size (inclusive
423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// of size of EFI_STATUS_CODE_DATA should not exceed the max record size of
433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// data hub
443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_MAX_SIZE 200
463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// String Data Type defintion. This is part of Status Code Specification
493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_TYPE_STRING_GUID \
513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
527ccf38a33e1e227131c170a621d183b3bacef148qhuang    0x92D11080, 0x496F, 0x4D95, {0xBE, 0x7E, 0x03, 0x74, 0x88, 0x38, 0x2B, 0x0A} \
533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiStatusCodeDataTypeStringGuid;
563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// This GUID indicates that the format of the accompanying data depends
593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// upon the Status Code Value, but follows this Specification
603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_SPECIFIC_DATA_GUID \
623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
637ccf38a33e1e227131c170a621d183b3bacef148qhuang    0x335984bd, 0xe805, 0x409a, {0xb8, 0xf8, 0xd2, 0x7e, 0xce, 0x5f, 0xf7, 0xa6} \
643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiStatusCodeSpecificDataGuid;
673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack(1)
693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef enum {
713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EfiStringAscii,
723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EfiStringUnicode,
733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EfiStringToken
743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_STRING_TYPE;
753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// HII string token
783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_HII_HANDLE Handle;
813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangSTRING_REF Token;
823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_STATUS_CODE_STRING_TOKEN;
833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef union {
853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangCHAR8   *Ascii;
863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangCHAR16  *Unicode;
873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS_CODE_STRING_TOKEN Hii;
883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_STATUS_CODE_STRING;
893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA   DataHeader;
923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STRING_TYPE        StringType;
933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_STRING String;
943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_STATUS_CODE_STRING_DATA;
953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack()
973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Debug Assert Data. This is part of Status Code Specification
993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_TYPE_ASSERT_GUID \
1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
1027ccf38a33e1e227131c170a621d183b3bacef148qhuang    0xDA571595, 0x4D99, 0x487C, {0x82, 0x7C, 0x26, 0x22, 0x67, 0x7D, 0x33, 0x07} \
1033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
1043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiStatusCodeDataTypeAssertGuid;
1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Exception Data type (CPU REGS)
1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_TYPE_EXCEPTION_HANDLER_GUID \
1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
1127ccf38a33e1e227131c170a621d183b3bacef148qhuang    0x3BC2BD12, 0xAD2E, 0x11D5, {0x87, 0xDD, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9} \
1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiStatusCodeDataTypeExceptionHandlerGuid;
1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Debug DataType defintions. User Defined Data Types.
1193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID \
1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
1227ccf38a33e1e227131c170a621d183b3bacef148qhuang    0x9A4E9246, 0xD553, 0x11D5, {0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xb9} \
1233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack(1)
1263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
1283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32  ErrorLevel;
1293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  //
1303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  // 12 * sizeof (UINT64) Var Arg stack
1313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  //
1323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  // ascii DEBUG () Format string
1333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  //
1343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_DEBUG_INFO;
1353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack()
1373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiStatusCodeDataTypeDebugGuid;
1393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Progress Code. User Defined Data Type Guid.
1423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_TYPE_ERROR_GUID \
1443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
1457ccf38a33e1e227131c170a621d183b3bacef148qhuang    0xAB359CE3, 0x99B3, 0xAE18, {0xC8, 0x9D, 0x95, 0xD3, 0xB0, 0x72, 0xE1, 0x9B} \
1463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
1473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiStatusCodeDataTypeErrorGuid;
1493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// declaration for EFI_EXP_DATA. This may change
1523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef UINTN   EFI_EXP_DATA;
1543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Voltage Extended Error Data
1573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
1593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
1603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_EXP_DATA          Voltage;
1613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_EXP_DATA          Threshold;
1623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;
1633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Microcode Update Extended Error Data
1663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
1683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
1693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32                Version;
1703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;
1713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Asynchronous Timer Extended Error Data
1743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
1763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
1773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_EXP_DATA          TimerLimit;
1783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;
1793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Host Processor Mismatch Extended Error Data
1823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
1843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
1853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32                Instance;
1863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT16                Attributes;
1873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA;
1883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES
1913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// All other attributes are reserved for future use and
1923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// must be initialized to 0.
1933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_SPEED       0x0001
1953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED   0x0002
1963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_FAMILY      0x0004
1973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_MODEL       0x0008
1983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_STEPPING    0x0010
1993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE  0x0020
2003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_OEM1        0x1000
2013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_OEM2        0x2000
2023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_OEM3        0x4000
2033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_COMPUTING_UNIT_MISMATCH_OEM4        0x8000
2043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Thermal Extended Error Data
2073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
2093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
2103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_EXP_DATA          Temperature;
2113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_EXP_DATA          Threshold;
2123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA;
2133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Processor Disabled Extended Error Data
2163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
2183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
2193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32                Cause;
2203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  BOOLEAN               SoftwareDisabled;
2213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;
2223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef enum {
2243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EfiInitCacheDataOnly,
2253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EfiInitCacheInstrOnly,
2263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EfiInitCacheBoth,
2273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EfiInitCacheUnspecified
2283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_INIT_CACHE_TYPE;
2293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Embedded cache init extended data
2323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
2343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
2353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32                Level;
2363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_INIT_CACHE_TYPE   Type;
2373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_CACHE_INIT_DATA;
2383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Memory Extended Error Data
2413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Memory Error Granularity Definition
2443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef UINT8 EFI_MEMORY_ERROR_GRANULARITY;
2463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Memory Error Operation Definition
2493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef UINT8 EFI_MEMORY_ERROR_OPERATION;
2513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
2533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA          DataHeader;
2543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_MEMORY_ERROR_GRANULARITY  Granularity;
2553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_MEMORY_ERROR_OPERATION    Operation;
2563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINTN                         Syndrome;
2573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PHYSICAL_ADDRESS          Address;
2583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINTN                         Resolution;
2593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_MEMORY_EXTENDED_ERROR_DATA;
2603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Memory Error Granularities
2633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_ERROR_OTHER      0x01
2653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_ERROR_UNKNOWN    0x02
2663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_ERROR_DEVICE     0x03
2673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_ERROR_PARTITION  0x04
2683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Memory Error Operations
2713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_OPERATION_OTHER          0x01
2733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_OPERATION_UNKNOWN        0x02
2743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_OPERATION_READ           0x03
2753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_OPERATION_WRITE          0x04
2763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MEMORY_OPERATION_PARTIAL_WRITE  0x05
2773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Define shorthands to describe Group Operations
2803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Many memory init operations are essentially group
2813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// operations.
2823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// A shorthand to describe that the operation is performed
2833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// on multiple devices within the array
2843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION  0xfffe
2863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// A shorthand to describe that the operation is performed // on all devices within the array
2883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff
2903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// A shorthand to describe that the operation is performed // on multiple arrays
2923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe
2943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// A shorthand to describe that the operation is performed // on all the arrays
2963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_ALL_MEMORY_ARRAY_OPERATION  0xffff
2983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// DIMM number
3013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack(1)
3033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
3053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT16                Array;
3063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT16                Device;
3073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_STATUS_CODE_DIMM_NUMBER;
3083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack()
3093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Memory Module Mismatch Extended Error Data
3113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA        DataHeader;
3143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DIMM_NUMBER Instance;
3153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA;
3163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Memory Range Extended Data
3193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
3223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PHYSICAL_ADDRESS  Start;
3233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PHYSICAL_ADDRESS  Length;
3243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_MEMORY_RANGE_EXTENDED_DATA;
3253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Device handle Extended Data. Used for many
3283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// errors and progress codes to point to the device.
3293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
3323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_HANDLE            Handle;
3333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_DEVICE_HANDLE_EXTENDED_DATA;
3343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Resource Allocation Failure Extended Error Data
3373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA      DataHeader;
3403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
3413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32                    Bar;
3423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  VOID                      *ReqRes;
3433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  VOID                      *AllocRes;
3443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;
3453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Extended Error Data for Assert
3483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA        DataHeader;
3513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32                      LineNumber;
3523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32                      FileNameSize;
3533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_STRING_DATA *FileName;
3543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_DEBUG_ASSERT_DATA;
3553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// System Context Data EBC/IA32/IPF
3583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef union {
3603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_SYSTEM_CONTEXT_EBC  SystemContextEbc;
3613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32;
3623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_SYSTEM_CONTEXT_IPF  SystemContextIpf;
3633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT;
3643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA                  DataHeader;
3673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT  Context;
3683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA;
3693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Legacy Oprom extended data
3723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
3743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_STATUS_CODE_DATA  DataHeader;
3753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_HANDLE            DeviceHandle;
3763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PHYSICAL_ADDRESS  RomImageBase;
3773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_LEGACY_OPROM_EXTENDED_DATA;
3783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Progress Code. User Defined Data Type Guid.
3813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_STATUS_CODE_DATA_TYPE_PROGRESS_CODE_GUID \
3833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  { \
3847ccf38a33e1e227131c170a621d183b3bacef148qhuang    0xA356AB39, 0x35C4, 0x35DA, {0xB3, 0x7A, 0xF8, 0xEA, 0x9E, 0x8B, 0x36, 0xA3} \
3853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  }
3863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiStatusCodeDataTypeProgressCodeGuid;
3883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif
390