1 /*++
2 
3 Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution.  The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8 
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 
12 Module Name:
13 
14   DataHubSubClassProcessor.h
15 
16 Abstract:
17 
18   Definitions for processor sub class data records
19 
20 Revision History
21 
22 --*/
23 
24 #ifndef _DATAHUB_SUBCLASS_PROCESSOR_H_
25 #define _DATAHUB_SUBCLASS_PROCESSOR_H_
26 
27 #define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000
28 
29 #define EFI_PROCESSOR_SUBCLASS_GUID \
30   { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7} }
31 
32 
33 typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;
34 
35 typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;
36 
37 typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_CORE_FREQUENCY_DATA;
38 
39 typedef EFI_EXP_BASE10_DATA  *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;
40 
41 typedef EFI_EXP_BASE10_DATA  *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;
42 
43 typedef EFI_EXP_BASE10_DATA   EFI_PROCESSOR_FSB_FREQUENCY_DATA;
44 
45 typedef STRING_REF            EFI_PROCESSOR_VERSION_DATA;
46 
47 typedef STRING_REF            EFI_PROCESSOR_MANUFACTURER_DATA;
48 
49 typedef STRING_REF            EFI_PROCESSOR_SERIAL_NUMBER_DATA;
50 
51 typedef STRING_REF            EFI_PROCESSOR_ASSET_TAG_DATA;
52 
53 typedef STRING_REF            EFI_PROCESSOR_PART_NUMBER_DATA;
54 
55 typedef struct {
56   UINT32  ProcessorSteppingId:4;
57   UINT32  ProcessorModel:     4;
58   UINT32  ProcessorFamily:    4;
59   UINT32  ProcessorType:      2;
60   UINT32  ProcessorReserved1: 2;
61   UINT32  ProcessorXModel:    4;
62   UINT32  ProcessorXFamily:   8;
63   UINT32  ProcessorReserved2: 4;
64 } EFI_PROCESSOR_SIGNATURE;
65 
66 typedef struct {
67   UINT32  ProcessorBrandIndex :8;
68   UINT32  ProcessorClflush    :8;
69   UINT32  ProcessorReserved   :8;
70   UINT32  ProcessorDfltApicId :8;
71 } EFI_PROCESSOR_MISC_INFO;
72 
73 typedef struct {
74   UINT32  ProcessorFpu:       1;
75   UINT32  ProcessorVme:       1;
76   UINT32  ProcessorDe:        1;
77   UINT32  ProcessorPse:       1;
78   UINT32  ProcessorTsc:       1;
79   UINT32  ProcessorMsr:       1;
80   UINT32  ProcessorPae:       1;
81   UINT32  ProcessorMce:       1;
82   UINT32  ProcessorCx8:       1;
83   UINT32  ProcessorApic:      1;
84   UINT32  ProcessorReserved1: 1;
85   UINT32  ProcessorSep:       1;
86   UINT32  ProcessorMtrr:      1;
87   UINT32  ProcessorPge:       1;
88   UINT32  ProcessorMca:       1;
89   UINT32  ProcessorCmov:      1;
90   UINT32  ProcessorPat:       1;
91   UINT32  ProcessorPse36:     1;
92   UINT32  ProcessorPsn:       1;
93   UINT32  ProcessorClfsh:     1;
94   UINT32  ProcessorReserved2: 1;
95   UINT32  ProcessorDs:        1;
96   UINT32  ProcessorAcpi:      1;
97   UINT32  ProcessorMmx:       1;
98   UINT32  ProcessorFxsr:      1;
99   UINT32  ProcessorSse:       1;
100   UINT32  ProcessorSse2:      1;
101   UINT32  ProcessorSs:        1;
102   UINT32  ProcessorReserved3: 1;
103   UINT32  ProcessorTm:        1;
104   UINT32  ProcessorReserved4: 2;
105 } EFI_PROCESSOR_FEATURE_FLAGS;
106 
107 typedef struct {
108   EFI_PROCESSOR_SIGNATURE     Signature;
109   EFI_PROCESSOR_MISC_INFO     MiscInfo;
110   UINT32                      Reserved;
111   EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;
112 } EFI_PROCESSOR_ID_DATA;
113 
114 typedef enum {
115   EfiProcessorOther = 1,
116   EfiProcessorUnknown = 2,
117   EfiCentralProcessor = 3,
118   EfiMathProcessor = 4,
119   EfiDspProcessor = 5,
120   EfiVideoProcessor = 6
121 } EFI_PROCESSOR_TYPE_DATA;
122 
123 typedef enum {
124   EfiProcessorFamilyOther        = 1,
125   EfiProcessorFamilyUnknown      = 2,
126   EfiProcessorFamily8086         = 3,
127   EfiProcessorFamily80286        = 4,
128   EfiProcessorFamilyIntel386     = 5,
129   EfiProcessorFamilyIntel486     = 6,
130   EfiProcessorFamily8087         = 7,
131   EfiProcessorFamily80287        = 8,
132   EfiProcessorFamily80387        = 9,
133   EfiProcessorFamily80487        = 0x0A,
134   EfiProcessorFamilyPentium      = 0x0B,
135   EfiProcessorFamilyPentiumPro   = 0x0C,
136   EfiProcessorFamilyPentiumII    = 0x0D,
137   EfiProcessorFamilyPentiumMMX   = 0x0E,
138   EfiProcessorFamilyCeleron      = 0x0F,
139   EfiProcessorFamilyPentiumIIXeon = 0x10,
140   EfiProcessorFamilyPentiumIII   = 0x11,
141   EfiProcessorFamilyM1           = 0x12,
142   EfiProcessorFamilyM2           = 0x13,
143   EfiProcessorFamilyM1Reserved2 = 0x14,
144   EfiProcessorFamilyM1Reserved3  = 0x15,
145   EfiProcessorFamilyM1Reserved4  = 0x16,
146   EfiProcessorFamilyM1Reserved5  = 0x17,
147   EfiProcessorFamilyAmdDuron     = 0x18,
148   EfiProcessorFamilyK5           = 0x19,
149   EfiProcessorFamilyK6           = 0x1A,
150   EfiProcessorFamilyK6_2         = 0x1B,
151   EfiProcessorFamilyK6_3         = 0x1C,
152   EfiProcessorFamilyAmdAthlon    = 0x1D,
153   EfiProcessorFamilyK6_2Plus     = 0x1E,
154   EfiProcessorFamilyK5Reserved6  = 0x1F,
155   EfiProcessorFamilyPowerPC      = 0x20,
156   EfiProcessorFamilyPowerPC601   = 0x21,
157   EfiProcessorFamilyPowerPC603   = 0x22,
158   EfiProcessorFamilyPowerPC603Plus = 0x23,
159   EfiProcessorFamilyPowerPC604   = 0x24,
160   EfiProcessorFamilyPowerPC620   = 0x25,
161   EfiProcessorFamilyPowerPC704   = 0x26,
162   EfiProcessorFamilyPowerPC750   = 0x27,
163   EfiProcessorFamilyIntelCoreDuo = 0x28,
164   EfiProcessorFamilyIntelCoreDuoMobile = 0x29,
165   EfiProcessorFamilyIntelCoreSoloMobile = 0x2A,
166   EfiProcessorFamilyIntelAtom    = 0x2B,
167   EfiProcessorFamilyAlpha2       = 0x30,
168   EfiProcessorFamilyAlpha21064   = 0x31,
169   EfiProcessorFamilyAlpha21066   = 0x32,
170   EfiProcessorFamilyAlpha21164   = 0x33,
171   EfiProcessorFamilyAlpha21164PC = 0x34,
172   EfiProcessorFamilyAlpha21164a  = 0x35,
173   EfiProcessorFamilyAlpha21264   = 0x36,
174   EfiProcessorFamilyAlpha21364   = 0x37,
175   EfiProcessorFamilyMips         = 0x40,
176   EfiProcessorFamilyMIPSR4000    = 0x41,
177   EfiProcessorFamilyMIPSR4200    = 0x42,
178   EfiProcessorFamilyMIPSR4400    = 0x43,
179   EfiProcessorFamilyMIPSR4600    = 0x44,
180   EfiProcessorFamilyMIPSR10000   = 0x45,
181   EfiProcessorFamilySparc        = 0x50,
182   EfiProcessorFamilySuperSparc   = 0x51,
183   EfiProcessorFamilymicroSparcII = 0x52,
184   EfiProcessorFamilymicroSparcIIep = 0x53,
185   EfiProcessorFamilyUltraSparc   = 0x54,
186   EfiProcessorFamilyUltraSparcII = 0x55,
187   EfiProcessorFamilyUltraSparcIIi = 0x56,
188   EfiProcessorFamilyUltraSparcIII = 0x57,
189   EfiProcessorFamilyUltraSparcIIIi = 0x58,
190   EfiProcessorFamily68040        = 0x60,
191   EfiProcessorFamily68xxx        = 0x61,
192   EfiProcessorFamily68000        = 0x62,
193   EfiProcessorFamily68010        = 0x63,
194   EfiProcessorFamily68020        = 0x64,
195   EfiProcessorFamily68030        = 0x65,
196   EfiProcessorFamilyHobbit       = 0x70,
197   EfiProcessorFamilyCrusoeTM5000 = 0x78,
198   EfiProcessorFamilyCrusoeTM3000 = 0x79,
199   EfiProcessorFamilyEfficeonTM8000 = 0x7A,
200   EfiProcessorFamilyWeitek       = 0x80,
201   EfiProcessorFamilyItanium      = 0x82,
202   EfiProcessorFamilyAmdAthlon64  = 0x83,
203   EfiProcessorFamilyAmdOpteron   = 0x84,
204   EfiProcessorFamilyAmdSempron   = 0x85,
205   EfiProcessorFamilyAmdTurion64Mobile = 0x86,
206   EfiProcessorFamilyDualCoreAmdOpteron = 0x87,
207   EfiProcessorFamilyAmdAthlon64X2DualCore = 0x88,
208   EfiProcessorFamilyAmdTurion64X2Mobile   = 0x89,
209   EfiProcessorFamilyQuadCoreAmdOpteron = 0x8A,
210   EfiProcessorFamilyThirdGenerationAmdOpteron = 0x8B,
211   EfiProcessorFamilyAmdPhenomFxQuadCore = 0x8C,
212   EfiProcessorFamilyAmdPhenomX4QuadCore = 0x8D,
213   EfiProcessorFamilyAmdPhenomX2DualCore = 0x8E,
214   EfiProcessorFamilyAmdAthlonX2DualCore = 0x8F,
215   EfiProcessorFamilyPARISC       = 0x90,
216   EfiProcessorFamilyPaRisc8500   = 0x91,
217   EfiProcessorFamilyPaRisc8000   = 0x92,
218   EfiProcessorFamilyPaRisc7300LC = 0x93,
219   EfiProcessorFamilyPaRisc7200   = 0x94,
220   EfiProcessorFamilyPaRisc7100LC = 0x95,
221   EfiProcessorFamilyPaRisc7100   = 0x96,
222   EfiProcessorFamilyV30          = 0xA0,
223   EfiProcessorFamilyQuadCoreIntelXeon3200Series  = 0xA1,
224   EfiProcessorFamilyDualCoreIntelXeon3000Series  = 0xA2,
225   EfiProcessorFamilyQuadCoreIntelXeon5300Series  = 0xA3,
226   EfiProcessorFamilyDualCoreIntelXeon5100Series  = 0xA4,
227   EfiProcessorFamilyDualCoreIntelXeon5000Series  = 0xA5,
228   EfiProcessorFamilyDualCoreIntelXeonLV          = 0xA6,
229   EfiProcessorFamilyDualCoreIntelXeonULV         = 0xA7,
230   EfiProcessorFamilyDualCoreIntelXeon7100Series  = 0xA8,
231   EfiProcessorFamilyQuadCoreIntelXeon5400Series  = 0xA9,
232   EfiProcessorFamilyQuadCoreIntelXeon            = 0xAA,
233   EfiProcessorFamilyDualCoreIntelXeon5200Series  = 0xAB,
234   EfiProcessorFamilyDualCoreIntelXeon7200Series  = 0xAC,
235   EfiProcessorFamilyQuadCoreIntelXeon7300Series  = 0xAD,
236   EfiProcessorFamilyQuadCoreIntelXeon7400Series  = 0xAE,
237   EfiProcessorFamilyMultiCoreIntelXeon7400Series = 0xAF,
238   EfiProcessorFamilyPentiumIIIXeon = 0xB0,
239   EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,
240   EfiProcessorFamilyPentium4     = 0xB2,
241   EfiProcessorFamilyIntelXeon    = 0xB3,
242   EfiProcessorFamilyAS400        = 0xB4,
243   EfiProcessorFamilyIntelXeonMP  = 0xB5,
244   EfiProcessorFamilyAMDAthlonXP = 0xB6,
245   EfiProcessorFamilyAMDAthlonMP = 0xB7,
246   EfiProcessorFamilyIntelItanium2 = 0xB8,
247   EfiProcessorFamilyIntelPentiumM = 0xB9,
248   EfiProcessorFamilyIntelCeleronD = 0xBA,
249   EfiProcessorFamilyIntelPentiumD = 0xBB,
250   EfiProcessorFamilyIntelPentiumEx = 0xBC,
251   EfiProcessorFamilyIntelCoreSolo  = 0xBD,  // SMBIOS spec 2.6 correct this value
252   EfiProcessorFamilyReserved       = 0xBE,
253   EfiProcessorFamilyIntelCore2     = 0xBF,
254   EfiProcessorFamilyIntelCore2Solo          = 0xC0,
255   EfiProcessorFamilyIntelCore2Extreme       = 0xC1,
256   EfiProcessorFamilyIntelCore2Quad          = 0xC2,
257   EfiProcessorFamilyIntelCore2ExtremeMobile = 0xC3,
258   EfiProcessorFamilyIntelCore2DuoMobile     = 0xC4,
259   EfiProcessorFamilyIntelCore2SoloMobile    = 0xC5,
260   EfiProcessorFamilyIntelCoreI7             = 0xC6,
261   EfiProcessorFamilyDualCoreIntelCeleron    = 0xC7,
262   EfiProcessorFamilyIBM390       = 0xC8,
263   EfiProcessorFamilyG4           = 0xC9,
264   EfiProcessorFamilyG5           = 0xCA,
265   EfiProcessorFamilyG6           = 0xCB,
266   EfiProcessorFamilyzArchitectur = 0xCC,
267   EfiProcessorFamilyViaC7M      = 0xD2,
268   EfiProcessorFamilyViaC7D      = 0xD3,
269   EfiProcessorFamilyViaC7       = 0xD4,
270   EfiProcessorFamilyViaEden     = 0xD5,
271   EfiProcessorFamilyMultiCoreIntelXeon           = 0xD6,
272   EfiProcessorFamilyDualCoreIntelXeon3Series     = 0xD7,
273   EfiProcessorFamilyQuadCoreIntelXeon3Series     = 0xD8,
274   EfiProcessorFamilyDualCoreIntelXeon5Series     = 0xDA,
275   EfiProcessorFamilyQuadCoreIntelXeon5Series     = 0xDB,
276   EfiProcessorFamilyDualCoreIntelXeon7Series     = 0xDD,
277   EfiProcessorFamilyQuadCoreIntelXeon7Series     = 0xDE,
278   EfiProcessorFamilyMultiCoreIntelXeon7Series    = 0xDF,
279   EfiProcessorFamilyEmbeddedAmdOpteronQuadCore   = 0xE6,
280   EfiProcessorFamilyAmdPhenomTripleCore          = 0xE7,
281   EfiProcessorFamilyAmdTurionUltraDualCoreMobile = 0xE8,
282   EfiProcessorFamilyAmdTurionDualCoreMobile      = 0xE9,
283   EfiProcessorFamilyAmdAthlonDualCore            = 0xEA,
284   EfiProcessorFamilyAmdSempronSI                 = 0xEB,
285   EfiProcessorFamilyi860         = 0xFA,
286   EfiProcessorFamilyi960         = 0xFB,
287   EfiProcessorFamilyIndicatorFamily2    = 0xFE
288 } EFI_PROCESSOR_FAMILY_DATA;
289 
290 typedef enum {
291   EfiProcessorFamilySh3           = 0x104,
292   EfiProcessorFamilySh4           = 0x105,
293   EfiProcessorFamilyArm           = 0x118,
294   EfiProcessorFamilyStrongArm     = 0x119,
295   EfiProcessorFamily6x86          = 0x12C,
296   EfiProcessorFamilyMediaGx       = 0x12D,
297   EfiProcessorFamilyMii           = 0x12E,
298   EfiProcessorFamilyWinChip       = 0x140,
299   EfiProcessorFamilyDsp           = 0x15E,
300   EfiProcessorFamilyVideo         = 0x1F4
301 } EFI_PROCESSOR_FAMILY2_DATA;
302 
303 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;
304 
305 typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;
306 
307 typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;
308 
309 typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;
310 
311 typedef enum {
312   EfiProcessorIa32Microcode = 1,
313   EfiProcessorIpfPalAMicrocode = 2,
314   EfiProcessorIpfPalBMicrocode = 3
315 } EFI_PROCESSOR_MICROCODE_TYPE;
316 
317 typedef struct {
318   EFI_PROCESSOR_MICROCODE_TYPE  ProcessorMicrocodeType;
319   UINT32                        ProcessorMicrocodeRevisionNumber;
320 } EFI_PROCESSOR_MICROCODE_REVISION_DATA;
321 
322 typedef struct {
323   UINT32      CpuStatus       :3;
324   UINT32      Reserved1        :3;
325   UINT32      SocketPopulated     :1;
326   UINT32      Reserved2        :1;
327   UINT32      ApicEnable        :1;
328   UINT32      BootApplicationProcessor  :1;
329   UINT32      Reserved3        :22;
330 } EFI_PROCESSOR_STATUS_DATA;
331 
332 typedef enum {
333   EfiCpuStatusUnknown = 0,
334   EfiCpuStatusEnabled = 1,
335   EfiCpuStatusDisabledByUser = 2,
336   EfiCpuStatusDisabledbyBios = 3,
337   EfiCpuStatusIdle = 4,
338   EfiCpuStatusOther = 7
339 } EFI_CPU_STATUS;
340 
341 typedef enum {
342   EfiProcessorSocketOther = 1,
343   EfiProcessorSocketUnknown = 2,
344   EfiProcessorSocketDaughterBoard = 3,
345   EfiProcessorSocketZIF = 4,
346   EfiProcessorSocketReplacePiggyBack = 5,
347   EfiProcessorSocketNone = 6,
348   EfiProcessorSocketLIF = 7,
349   EfiProcessorSocketSlot1 = 8,
350   EfiProcessorSocketSlot2 = 9,
351   EfiProcessorSocket370Pin = 0xA,
352   EfiProcessorSocketSlotA = 0xB,
353   EfiProcessorSocketSlotM = 0xC,
354   EfiProcessorSocket423 = 0xD,
355   EfiProcessorSocketA462 = 0xE,
356   EfiProcessorSocket478 = 0xF,
357   EfiProcessorSocket754 = 0x10,
358   EfiProcessorSocket940 = 0x11,
359   EfiProcessorSocket939 = 0x12,
360   EfiProcessorSocketmPGA604 = 0x13,
361   EfiProcessorSocketLGA771 = 0x14,
362   EfiProcessorSocketLGA775 = 0x15,
363   EfiProcessorSocketS1 = 0x16,
364   EfiProcessorSocketAm2 = 0x17,
365   EfiProcessorSocketF   = 0x18,
366   EfiProcessorSocketLGA1366 = 0x19
367 } EFI_PROCESSOR_SOCKET_TYPE_DATA;
368 
369 typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;
370 
371 typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;
372 
373 typedef enum {
374   EfiProcessorHealthy = 1,
375   EfiProcessorPerfRestricted = 2,
376   EfiProcessorFuncRestricted = 3
377 } EFI_PROCESSOR_HEALTH_STATUS;
378 
379 typedef UINTN   EFI_PROCESSOR_PACKAGE_NUMBER_DATA;
380 
381 typedef UINT8   EFI_PROCESSOR_CORE_COUNT_DATA;
382 typedef UINT8   EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA;
383 typedef UINT8   EFI_PROCESSOR_THREAD_COUNT_DATA;
384 
385 typedef struct {
386   UINT16  Reserved              :1;
387   UINT16  Unknown               :1;
388   UINT16  Capable64Bit          :1;
389   UINT16  Reserved2             :13;
390 } EFI_PROCESSOR_CHARACTERISTICS_DATA;
391 
392 typedef struct {
393   EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;
394   EFI_PROCESSOR_TYPE_DATA                 ProcessorType;
395   EFI_PROCESSOR_FAMILY_DATA               ProcessorFamily;
396   EFI_PROCESSOR_MANUFACTURER_DATA         ProcessorManufacturer;
397   EFI_PROCESSOR_ID_DATA                   ProcessorId;
398   EFI_PROCESSOR_VERSION_DATA              ProcessorVersion;
399   EFI_PROCESSOR_VOLTAGE_DATA              ProcessorVoltage;
400   EFI_PROCESSOR_FSB_FREQUENCY_DATA        ProcessorFsbFrequency;
401   EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA   ProcessorMaxCoreFrequency;
402   EFI_PROCESSOR_CORE_FREQUENCY_DATA       ProcessorCoreFrequency;
403   EFI_PROCESSOR_STATUS_DATA               ProcessorStatus;
404   EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;
405   EFI_CACHE_ASSOCIATION_DATA              ProcessorL1LinkData;
406   EFI_CACHE_ASSOCIATION_DATA              ProcessorL2LinkData;
407   EFI_CACHE_ASSOCIATION_DATA              ProcessorL3LinkData;
408   EFI_PROCESSOR_SERIAL_NUMBER_DATA        ProcessorSerialNumber;
409   EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;
410   EFI_PROCESSOR_PART_NUMBER_DATA          ProcessorPartNumber;
411   EFI_PROCESSOR_CORE_COUNT_DATA           ProcessorCoreCount;
412   EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA   ProcessorEnabledCoreCount;
413   EFI_PROCESSOR_THREAD_COUNT_DATA         ProcessorThreadCount;
414   EFI_PROCESSOR_CHARACTERISTICS_DATA      ProcessorCharacteristics;
415   EFI_PROCESSOR_FAMILY2_DATA              ProcessorFamily2;
416 } EFI_PROCESSOR_SOCKET_DATA;
417 
418 typedef enum {
419   ProcessorCoreFrequencyRecordType = 1,
420   ProcessorFsbFrequencyRecordType = 2,
421   ProcessorVersionRecordType = 3,
422   ProcessorManufacturerRecordType = 4,
423   ProcessorSerialNumberRecordType = 5,
424   ProcessorIdRecordType = 6,
425   ProcessorTypeRecordType = 7,
426   ProcessorFamilyRecordType = 8,
427   ProcessorVoltageRecordType = 9,
428   ProcessorApicBaseAddressRecordType = 10,
429   ProcessorApicIdRecordType = 11,
430   ProcessorApicVersionNumberRecordType = 12,
431   CpuUcodeRevisionDataRecordType = 13,
432   ProcessorStatusRecordType = 14,
433   ProcessorSocketTypeRecordType = 15,
434   ProcessorSocketNameRecordType = 16,
435   CacheAssociationRecordType = 17,
436   ProcessorMaxCoreFrequencyRecordType = 18,
437   ProcessorAssetTagRecordType = 19,
438   ProcessorMaxFsbFrequencyRecordType = 20,
439   ProcessorPackageNumberRecordType = 21,
440   ProcessorCoreFrequencyListRecordType = 22,
441   ProcessorFsbFrequencyListRecordType  = 23,
442   ProcessorHealthStatusRecordType  = 24,
443   ProcessorCoreCountRecordType = 25,
444   ProcessorEnabledCoreCountRecordType = 26,
445   ProcessorThreadCountRecordType = 27,
446   ProcessorCharacteristicsRecordType = 28,
447   ProcessorFamily2RecordType = 29,
448   ProcessorPartNumberRecordType = 30,
449   ProcessorSocketRecordType = 31
450 } EFI_CPU_VARIABLE_RECORD_TYPE;
451 
452 typedef union {
453   EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA  ProcessorCoreFrequencyList;
454   EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA   ProcessorFsbFrequencyList;
455   EFI_PROCESSOR_SERIAL_NUMBER_DATA        ProcessorSerialNumber;
456   EFI_PROCESSOR_CORE_FREQUENCY_DATA       ProcessorCoreFrequency;
457   EFI_PROCESSOR_FSB_FREQUENCY_DATA        ProcessorFsbFrequency;
458   EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA   ProcessorMaxCoreFrequency;
459   EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA    ProcessorMaxFsbFrequency;
460   EFI_PROCESSOR_VERSION_DATA              ProcessorVersion;
461   EFI_PROCESSOR_MANUFACTURER_DATA         ProcessorManufacturer;
462   EFI_PROCESSOR_ID_DATA                   ProcessorId;
463   EFI_PROCESSOR_TYPE_DATA                 ProcessorType;
464   EFI_PROCESSOR_FAMILY_DATA               ProcessorFamily;
465   EFI_PROCESSOR_VOLTAGE_DATA              ProcessorVoltage;
466   EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA    ProcessorApicBase;
467   EFI_PROCESSOR_APIC_ID_DATA              ProcessorApicId;
468   EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA  ProcessorApicVersionNumber;
469   EFI_PROCESSOR_MICROCODE_REVISION_DATA   CpuUcodeRevisionData;
470   EFI_PROCESSOR_STATUS_DATA               ProcessorStatus;
471   EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;
472   EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;
473   EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;
474   EFI_PROCESSOR_PART_NUMBER_DATA          ProcessorPartNumber;
475   EFI_PROCESSOR_HEALTH_STATUS             ProcessorHealthStatus;
476   EFI_PROCESSOR_PACKAGE_NUMBER_DATA       ProcessorPackageNumber;
477   EFI_PROCESSOR_CORE_COUNT_DATA           ProcessorCoreCount;
478   EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA   ProcessorEnabledCoreCount;
479   EFI_PROCESSOR_THREAD_COUNT_DATA         ProcessorThreadCount;
480   EFI_PROCESSOR_CHARACTERISTICS_DATA      ProcessorCharacteristics;
481   EFI_PROCESSOR_FAMILY2_DATA              ProcessorFamily2;
482   EFI_PROCESSOR_SOCKET_DATA               ProcessorSocket;
483 } EFI_CPU_VARIABLE_RECORD;
484 
485 typedef struct {
486   EFI_SUBCLASS_TYPE1_HEADER      DataRecordHeader;
487   EFI_CPU_VARIABLE_RECORD        VariableRecord;
488 } EFI_CPU_DATA_RECORD;
489 
490 #endif
491