1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
|
//**********************************************************************
//**********************************************************************
//** **
//** (C)Copyright 1985-2009, American Megatrends, Inc. **
//** **
//** All Rights Reserved. **
//** **
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
//** **
//** Phone: (770)-246-8600 **
//** **
//**********************************************************************
//**********************************************************************
//**********************************************************************
// $Header: /Alaska/BIN/Core/Include/AmiHobs.h 24 11/14/11 3:17p Artems $
//
// $Revision: 24 $
//
// $Date: 11/14/11 3:17p $
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Core/Include/AmiHobs.h $
//
// 24 11/14/11 3:17p Artems
// Defined Extended errors for security recovery capsule check
//
// 23 5/13/11 3:45p Artems
// Added fields to Recovery Hob structure to report flash update status
//
// 22 11/16/10 12:43p Artems
// EIP 46175 Updated AMI_SMBIOS_MEMORY_INFO_HOB structure proposed layout
//
// 21 9/22/10 4:38p Artems
// EIP 33629 - introduce AMI_SMBIOS_MEMORY_INFO_HOB
//
// 20 1/05/10 10:36a Markw
// Create AMI_RESET_TYPE_HOB.
//
// 19 5/08/09 12:23a Felixp
// Ifrastructure to simplify ROM layout customization(EIP 18426).
// ROM_LAYOUT_HOB and RECOVERY_IMAGE_HOB are added.
//
// 18 1/16/09 10:00a Felixp
// SmBus HOB added
//
// 17 5/05/08 4:26p Felixp
// PEI Performance HOB added
//
// 15 8/10/07 2:11p Markw
// Added additional feature flags and include to CpuHobs.h.
//
// 12 4/01/07 2:00p Felixp
// AMI_CAPSULE_HOB added.
//
// 11 10/04/06 4:16p Markw
// Added TsegLength.
//
// 10 5/02/06 6:42p Markw
// Use common features between CPUs.
//
// 8 1/13/06 2:21p Markw
// Added Cpu Disable flag and EIST info to CPU Hob.
//
// 7 6/16/05 10:44a Felixp
// PEIM_LOAD_HOB added. (used by PEIMs to reguest reallocation to RAM,
// once memory is detected)
//
// 6 5/04/05 12:46p Markw
// Added cache line size to CPU hob.
//
// 5 4/28/05 5:59p Markw
// Added Hob to keep track of Reserved IGD memory.
//
// 4 2/25/05 9:23a Sivagarn
// Included Physical CPU count in CPUINFO HOB
//
// 3 2/25/05 8:06a Sivagarn
// Included CPU revision field in CPU Info hob
//
// 3 2/16/05 4:15p Sivagarn
// Changed the data format for physical address
//
// 2 2/10/05 10:36a Sivagarn
// Updated CPUInfo structure & HOB
//
// 4 1/18/05 3:21p Felixp
// PrintDebugMessage renamed to Trace
//
// 3 1/12/05 5:22p Markw
// Changed cpu info hob guid.
//
// 2 1/12/05 3:00p Markw
// Replaced APIC HOB with CPUINFO HOB.
//
// 2 10/22/04 10:32a Felixp
// PEIM_HOB added
//
// 1 10/13/04 2:24p Markw
//
//**********************************************************************
//<AMI_FHDR_START>
//
// Name: AmiHob.h
//
// Description:
// Definitions of AMI specific Hobs
//
//<AMI_FHDR_END>
//**********************************************************************
#ifndef __AMIHOBS_H__
#define __AMIHOBS_H__
#include <pei.h>
#include <hob.h>
#include <CpuHobs.h>
#pragma pack(push,1)
// {39E8CDA1-6A35-4cdd-A902-D1A795F70380}
#define AMI_RESET_TYPE_HOB_GUID \
{0x39e8cda1, 0x6a35, 0x4cdd, 0xa9, 0x2, 0xd1, 0xa7, 0x95, 0xf7, 0x3, 0x80}
//Not all reset types are available on all systems.
//Not all reset types may be reported.
#define AMI_HOB_RESET_TYPE_POWER_ON 0
#define AMI_HOB_RESET_TYPE_CPU 1
#define AMI_HOB_RESET_TYPE_WARM 2
#define AMI_HOB_RESET_TYPE_HARD 3
#define AMI_HOB_RESET_TYPE_POWER_GOOD 4
typedef struct {
EFI_HOB_GUID_TYPE EfiHobGuidType;
UINT8 ResetType;
} AMI_RESET_TYPE_HOB;
////////////////////////////////////////////////////////////////////////
//HOB to report Apic Ids
//This is a EFI_HOB_TYPE_GUID_EXTENSION.
#define AMI_CPUINFO_HOB_GUID \
{0x2e547cb5,0x40f8,0x4f3e,0x8a,0xf4,0x19,0x52,0xaa,0xd5,0x5a,0xc}
typedef struct {
UINT64 SmrrSupport:1;
UINT64 Reserved:63;
} ADDITIONAL_FEATURE_FLAGS;
typedef struct {
UINT32 FeatureEcx;
UINT32 FeatureEdx;
UINT32 ExtFeatureEax;
UINT32 ExtFeatureEbx;
UINT32 ExtFeatureEcx;
UINT32 ExtFeatureEdx;
ADDITIONAL_FEATURE_FLAGS Flags;
} CPU_FEATURES;
typedef struct {
BOOLEAN Valid;
BOOLEAN Disabled;
UINT32 CpuSignature;
UINT64 CpuFeatureInfo;
UINT32 CpuRevision; // Specific to the CPU brand
UINT32 BIST;
UINT8 ApicId;
UINT8 ApicEId;
UINT8 ApicVer;
BOOLEAN EistEnable;
UINT8 BusRatioMax;
UINT8 BusRatioMin;
UINT8 VidMax;
UINT8 VidMin;
UINT8 BusRatioMinStep;
} CPUINFO;
// SmramCap field values
#define SMRAM_ASEG_SUPPORTED 0x01 // Bit 0
#define SMRAM_TSEG_SUPPORTED 0x02 // BIT 1
#define SMRAM_HSEG_SUPPORTED 0x04 // BIT 2
typedef struct {
EFI_HOB_GUID_TYPE EfiHobGuidType;
UINT8 CpuCount;
UINT8 BspNo;
UINT8 NodeCount; // Physical CPU count
UINT32 SmramCap;
EFI_PHYSICAL_ADDRESS TsegAddress;
UINT32 TsegSize;
UINT16 CacheLineSize; // (Bytes)
CPU_FEATURES CpuFeatures;
CPUINFO Cpuinfo[1]; //This must be last in structure.
} CPUINFO_HOB;
////////////////////////////////////////////////////////////////////////
//AB1BBFF5-2655-4e78-B442-0D264844B428
#define SMM_HOB_GUID \
{0xab1bbff5,0x2655,0x4e78,0xb4,0x42,0xd,0x26,0x48,0x44,0xb4,0x28}
typedef struct {
EFI_HOB_GUID_TYPE EfiHobGuidType;
UINT32 Tseg;
UINT32 TsegLength;
UINT32 ManagedMemStart;
UINT32 ManagedMemSize;
UINT32 IedStart;
UINT32 IedSize;
UINT16 NumCpus;
UINT16 Bsp;
UINT32 SmmBase[1];
} SMM_HOB;
////////////////////////////////////////////////////////////////////////
// GUIDED NB HOB
// {E7D449D9-1FFC-4eed-8D5D-7A53A4F8FB9A}
#define AMI_NB_INFO_HOB_GUID \
{0xe7d449d9,0x1ffc,0x4eed,0x8d,0x5d,0x7a,0x53,0xa4,0xf8,0xfb,0x9a}
typedef struct {
EFI_HOB_GUID_TYPE EfiHobGuidType;
UINT32 ReservedIgdFrameBufferSize;
} NB_INFO_HOB;
////////////////////////////////////////////////////////////////////////
//GUIDed HOB to pass the code pointer from PEI to DXE
// {F4491BA4-7672-486f-B4D7-99899D22DA57}
#define AMI_PEIM_HOB_GUID \
{ 0xf4491ba4, 0x7672, 0x486f, { 0xb4, 0xd7, 0x99, 0x89, 0x9d, 0x22, 0xda, 0x57 } }
typedef struct {
EFI_HOB_GUID_TYPE Header;
EFI_IMAGE_ENTRY_POINT DxeEntryPoint;
} PEIM_HOB;
//GUIDed HOB to notify core that PEIM has to be reallocated to RAM once it's available
// {EC9C36FD-1642-4b84-91FA-919C2D066FB4}
#define AMI_PEIM_LOAD_HOB_GUID \
{ 0xec9c36fd, 0x1642, 0x4b84, { 0x91, 0xfa, 0x91, 0x9c, 0x2d, 0x6, 0x6f, 0xb4 } }
typedef struct {
EFI_HOB_GUID_TYPE Header;
VOID *pFfsHeader;
EFI_PEIM_ENTRY_POINT EntryPoint, InMemEntryPoint;
} PEIM_LOAD_HOB;
//GUIDed Hob for Capsule, that should be populated via System table
// {BF66FDF7-F64C-4b11-8AB7-F843AA2A8BEA}
#define AMI_CAPSULE_HOB_GUID \
{ 0xbf66fdf7, 0xf64c, 0x4b11, { 0x8a, 0xb7, 0xf8, 0x43, 0xaa, 0x2a, 0x8b, 0xea } }
typedef struct {
EFI_HOB_GUID_TYPE Header;
EFI_GUID CapsuleGuid;
EFI_PHYSICAL_ADDRESS CapsuleData;
UINT64 CapsuleLength;
} AMI_CAPSULE_HOB;
//GUIDed Hob used for PEI performance measurements
#define EFI_PEI_PERFORMANCE_HOB_GUID \
{0x10f432de, 0xdeec, 0x4631, 0x80, 0xcd, 0x47, 0xf6, 0x5d, 0x8f, 0x80, 0xbb}
#define PEI_PERF_MAX_DESC_STRING 8
typedef struct {
UINT64 StartTimeCount;
UINT64 StopTimeCount;
EFI_GUID Name;
UINT16 DescriptionString[PEI_PERF_MAX_DESC_STRING];
} PEI_PERFORMANCE_MEASURE_LOG_ENTRY;
typedef struct {
UINT32 NumberOfEntries;
UINT32 Reserved;
PEI_PERFORMANCE_MEASURE_LOG_ENTRY Log[1];
} EFI_HOB_GUID_DATA_PERFORMANCE_LOG;
//GUIDed Hob to pass SM Bus ArpMap
// {017CB4B7-B80C-4040-B6C8-EA982BBB25B7}
#define AMI_SMBUS_HOB_GUID \
{ 0x17cb4b7, 0xb80c, 0x4040, { 0xb6, 0xc8, 0xea, 0x98, 0x2b, 0xbb, 0x25, 0xb7 } }
typedef struct {
EFI_HOB_GUID_TYPE Header;
UINT8 BoardReservedAddressCount;
UINT32 BoardReservedAddressList;
UINT8 ArpDeviceCount;
UINT8 ArpDeviceList[1];
} AMI_SMBUS_HOB;
//ROM Layout GUIDed HOB
// {D7642443-87B7-4832-9607-0E1EA81C1D86}
#define AMI_ROM_LAYOUT_HOB_GUID { 0xd7642443, 0x87b7, 0x4832, { 0x96, 0x7, 0xe, 0x1e, 0xa8, 0x1c, 0x1d, 0x86 } }
typedef struct {
EFI_HOB_GUID_TYPE Header;
//ROM_AREA RomLayout[];
} ROM_LAYOUT_HOB;
//GUIDed HOB used to describe location of the Recovery image
// {DAC3CB98-2295-412e-826D-FDEEA320CF31}
#define AMI_RECOVERY_IMAGE_HOB_GUID \
{ 0xdac3cb98, 0x2295, 0x412e, { 0x82, 0x6d, 0xfd, 0xee, 0xa3, 0x20, 0xcf, 0x31 } }
//Extended security errors definitions
typedef enum {
InvalidHeader = 1,
InvalidSignature,
IvalidPlatformKey,
InvalidFwVersion,
MaxError
} EXTENDED_SECURITY_ERRORS;
typedef struct {
EFI_HOB_GUID_TYPE Header;
EFI_PHYSICAL_ADDRESS Address;
UINT8 Status; // Generic EFI_STATUS
UINT32 FailedStage; // Extended Security Error
} RECOVERY_IMAGE_HOB;
//GUIDed HOB used to pass SMBIOS memory related data to DXE SMBIOS driver
// {7D6B8734-B754-443f-B588-7743843AD3F1}
#define AMI_SMBIOS_MEMORY_INFO_HOB_GUID \
{ 0x7d6b8734, 0xb754, 0x443f, { 0xb5, 0x88, 0x77, 0x43, 0x84, 0x3a, 0xd3, 0xf1 } }
typedef struct {
EFI_HOB_GUID_TYPE Header;
// MEM_SPD_DATA SpdDataArray[NO_OF_PHYSICAL_MEMORY_ARRAY][MAX_NUMBER_OF_MEM_MODULE];
} AMI_SMBIOS_MEMORY_INFO_HOB;
#pragma pack(pop)
/****** DO NOT WRITE BELOW THIS LINE *******/
#ifdef __cplusplus
}
#endif
#endif
//**********************************************************************
//**********************************************************************
//** **
//** (C)Copyright 1985-2009, American Megatrends, Inc. **
//** **
//** All Rights Reserved. **
//** **
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
//** **
//** Phone: (770)-246-8600 **
//** **
//**********************************************************************
//**********************************************************************
|