+/*++\r
+\r
+Copyright (c) 2004 - 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ DataHubSubClassProcessor.h\r
+\r
+Abstract:\r
+\r
+ Definitions for processor sub class data records\r
+\r
+Revision History\r
+\r
+--*/\r
+\r
+#ifndef _DATAHUB_SUBCLASS_PROCESSOR_H_\r
+#define _DATAHUB_SUBCLASS_PROCESSOR_H_\r
+\r
+#define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000\r
+\r
+#define EFI_PROCESSOR_SUBCLASS_GUID \\r
+ { 0x26fdeb7e, 0xb8af, 0x4ccf, 0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 }\r
+\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
+\r
+typedef STRING_REF EFI_PROCESSOR_VERSION_DATA;\r
+\r
+typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA;\r
+\r
+typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
+\r
+typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA;\r
+\r
+typedef struct {\r
+ UINT32 ProcessorSteppingId:4;\r
+ UINT32 ProcessorModel: 4;\r
+ UINT32 ProcessorFamily: 4;\r
+ UINT32 ProcessorType: 2;\r
+ UINT32 ProcessorReserved1: 2;\r
+ UINT32 ProcessorXModel: 4;\r
+ UINT32 ProcessorXFamily: 8;\r
+ UINT32 ProcessorReserved2: 4;\r
+} EFI_PROCESSOR_SIGNATURE;\r
+\r
+typedef struct {\r
+ UINT32 ProcessorBrandIndex :8;\r
+ UINT32 ProcessorClflush :8;\r
+ UINT32 ProcessorReserved :8;\r
+ UINT32 ProcessorDfltApicId :8;\r
+} EFI_PROCESSOR_MISC_INFO;\r
+\r
+typedef struct {\r
+ UINT32 ProcessorFpu: 1;\r
+ UINT32 ProcessorVme: 1;\r
+ UINT32 ProcessorDe: 1;\r
+ UINT32 ProcessorPse: 1;\r
+ UINT32 ProcessorTsc: 1;\r
+ UINT32 ProcessorMsr: 1;\r
+ UINT32 ProcessorPae: 1;\r
+ UINT32 ProcessorMce: 1;\r
+ UINT32 ProcessorCx8: 1;\r
+ UINT32 ProcessorApic: 1;\r
+ UINT32 ProcessorReserved1: 1;\r
+ UINT32 ProcessorSep: 1;\r
+ UINT32 ProcessorMtrr: 1;\r
+ UINT32 ProcessorPge: 1;\r
+ UINT32 ProcessorMca: 1;\r
+ UINT32 ProcessorCmov: 1;\r
+ UINT32 ProcessorPat: 1;\r
+ UINT32 ProcessorPse36: 1;\r
+ UINT32 ProcessorPsn: 1;\r
+ UINT32 ProcessorClfsh: 1;\r
+ UINT32 ProcessorReserved2: 1;\r
+ UINT32 ProcessorDs: 1;\r
+ UINT32 ProcessorAcpi: 1;\r
+ UINT32 ProcessorMmx: 1;\r
+ UINT32 ProcessorFxsr: 1;\r
+ UINT32 ProcessorSse: 1;\r
+ UINT32 ProcessorSse2: 1;\r
+ UINT32 ProcessorSs: 1;\r
+ UINT32 ProcessorReserved3: 1;\r
+ UINT32 ProcessorTm: 1;\r
+ UINT32 ProcessorReserved4: 2;\r
+} EFI_PROCESSOR_FEATURE_FLAGS;\r
+\r
+typedef struct {\r
+ EFI_PROCESSOR_SIGNATURE Signature;\r
+ EFI_PROCESSOR_MISC_INFO MiscInfo;\r
+ UINT32 Reserved;\r
+ EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;\r
+} EFI_PROCESSOR_ID_DATA;\r
+\r
+typedef enum {\r
+ EfiProcessorOther = 1,\r
+ EfiProcessorUnknown = 2,\r
+ EfiCentralProcessor = 3,\r
+ EfiMathProcessor = 4,\r
+ EfiDspProcessor = 5,\r
+ EfiVideoProcessor = 6\r
+} EFI_PROCESSOR_TYPE_DATA;\r
+\r
+typedef enum {\r
+ EfiProcessorFamilyOther = 1, \r
+ EfiProcessorFamilyUnknown = 2,\r
+ EfiProcessorFamily8086 = 3, \r
+ EfiProcessorFamily80286 = 4,\r
+ EfiProcessorFamilyIntel386 = 5, \r
+ EfiProcessorFamilyIntel486 = 6,\r
+ EfiProcessorFamily8087 = 7,\r
+ EfiProcessorFamily80287 = 8,\r
+ EfiProcessorFamily80387 = 9, \r
+ EfiProcessorFamily80487 = 0x0A,\r
+ EfiProcessorFamilyPentium = 0x0B, \r
+ EfiProcessorFamilyPentiumPro = 0x0C,\r
+ EfiProcessorFamilyPentiumII = 0x0D,\r
+ EfiProcessorFamilyPentiumMMX = 0x0E,\r
+ EfiProcessorFamilyCeleron = 0x0F,\r
+ EfiProcessorFamilyPentiumIIXeon = 0x10,\r
+ EfiProcessorFamilyPentiumIII = 0x11, \r
+ EfiProcessorFamilyM1 = 0x12,\r
+ EfiProcessorFamilyM2 = 0x13,\r
+ EfiProcessorFamilyM1Reserved2 = 0x14,\r
+ EfiProcessorFamilyM1Reserved3 = 0x15,\r
+ EfiProcessorFamilyM1Reserved4 = 0x16,\r
+ EfiProcessorFamilyM1Reserved5 = 0x17,\r
+ EfiProcessorFamilyAmdDuron = 0x18,\r
+ EfiProcessorFamilyK5 = 0x19, \r
+ EfiProcessorFamilyK6 = 0x1A,\r
+ EfiProcessorFamilyK6_2 = 0x1B,\r
+ EfiProcessorFamilyK6_3 = 0x1C,\r
+ EfiProcessorFamilyAmdAthlon = 0x1D,\r
+ EfiProcessorFamilyK6_2Plus = 0x1E,\r
+ EfiProcessorFamilyK5Reserved6 = 0x1F,\r
+ EfiProcessorFamilyPowerPC = 0x20,\r
+ EfiProcessorFamilyPowerPC601 = 0x21,\r
+ EfiProcessorFamilyPowerPC603 = 0x22,\r
+ EfiProcessorFamilyPowerPC603Plus = 0x23,\r
+ EfiProcessorFamilyPowerPC604 = 0x24,\r
+ EfiProcessorFamilyPowerPC620 = 0x25,\r
+ EfiProcessorFamilyPowerPC704 = 0x26,\r
+ EfiProcessorFamilyPowerPC750 = 0x27,\r
+ EfiProcessorFamilyAlpha2 = 0x30,\r
+ EfiProcessorFamilyAlpha21064 = 0x31,\r
+ EfiProcessorFamilyAlpha21066 = 0x32,\r
+ EfiProcessorFamilyAlpha21164 = 0x33,\r
+ EfiProcessorFamilyAlpha21164PC = 0x34,\r
+ EfiProcessorFamilyAlpha21164a = 0x35,\r
+ EfiProcessorFamilyAlpha21264 = 0x36,\r
+ EfiProcessorFamilyAlpha21364 = 0x37,\r
+ EfiProcessorFamilyMips = 0x40,\r
+ EfiProcessorFamilyMIPSR4000 = 0x41,\r
+ EfiProcessorFamilyMIPSR4200 = 0x42,\r
+ EfiProcessorFamilyMIPSR4400 = 0x43,\r
+ EfiProcessorFamilyMIPSR4600 = 0x44,\r
+ EfiProcessorFamilyMIPSR10000 = 0x45,\r
+ EfiProcessorFamilySparc = 0x50,\r
+ EfiProcessorFamilySuperSparc = 0x51,\r
+ EfiProcessorFamilymicroSparcII = 0x52,\r
+ EfiProcessorFamilymicroSparcIIep = 0x53,\r
+ EfiProcessorFamilyUltraSparc = 0x54,\r
+ EfiProcessorFamilyUltraSparcII = 0x55,\r
+ EfiProcessorFamilyUltraSparcIIi = 0x56,\r
+ EfiProcessorFamilyUltraSparcIII = 0x57,\r
+ EfiProcessorFamilyUltraSparcIIIi = 0x58,\r
+ EfiProcessorFamily68040 = 0x60,\r
+ EfiProcessorFamily68xxx = 0x61,\r
+ EfiProcessorFamily68000 = 0x62,\r
+ EfiProcessorFamily68010 = 0x63,\r
+ EfiProcessorFamily68020 = 0x64,\r
+ EfiProcessorFamily68030 = 0x65,\r
+ EfiProcessorFamilyHobbit = 0x70,\r
+ EfiProcessorFamilyCrusoeTM5000 = 0x78,\r
+ EfiProcessorFamilyCrusoeTM3000 = 0x79,\r
+ EfiProcessorFamilyWeitek = 0x80,\r
+ EfiProcessorFamilyItanium = 0x82,\r
+ EfiProcessorFamilyAmdAthlon64 = 0x83,\r
+ EfiProcessorFamilyAmdOpteron = 0x84,\r
+ EfiProcessorFamilyPARISC = 0x90,\r
+ EfiProcessorFamilyPaRisc8500 = 0x91,\r
+ EfiProcessorFamilyPaRisc8000 = 0x92,\r
+ EfiProcessorFamilyPaRisc7300LC = 0x93,\r
+ EfiProcessorFamilyPaRisc7200 = 0x94,\r
+ EfiProcessorFamilyPaRisc7100LC = 0x95,\r
+ EfiProcessorFamilyPaRisc7100 = 0x96,\r
+ EfiProcessorFamilyV30 = 0xA0,\r
+ EfiProcessorFamilyPentiumIIIXeon = 0xB0,\r
+ EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
+ EfiProcessorFamilyPentium4 = 0xB2,\r
+ EfiProcessorFamilyIntelXeon = 0xB3,\r
+ EfiProcessorFamilyAS400 = 0xB4,\r
+ EfiProcessorFamilyIntelXeonMP = 0xB5,\r
+ EfiProcessorFamilyAMDAthlonXP = 0xB6,\r
+ EfiProcessorFamilyAMDAthlonMP = 0xB7,\r
+ EfiProcessorFamilyIntelItanium2 = 0xB8,\r
+ EfiProcessorFamilyIntelPentiumM = 0xB9,\r
+ EfiProcessorFamilyIntelCeleronD = 0xBA,\r
+ EfiProcessorFamilyIntelPentiumD = 0xBB,\r
+ EfiProcessorFamilyIntelPentiumEx = 0xBC,\r
+ EfiProcessorFamilyIBM390 = 0xC8,\r
+ EfiProcessorFamilyG4 = 0xC9,\r
+ EfiProcessorFamilyG5 = 0xCA,\r
+ EfiProcessorFamilyi860 = 0xFA,\r
+ EfiProcessorFamilyi960 = 0xFB\r
+} EFI_PROCESSOR_FAMILY_DATA;\r
+\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;\r
+\r
+typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
+\r
+typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;\r
+\r
+typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
+\r
+typedef enum {\r
+ EfiProcessorIa32Microcode = 1,\r
+ EfiProcessorIpfPalAMicrocode = 2,\r
+ EfiProcessorIpfPalBMicrocode = 3\r
+} EFI_PROCESSOR_MICROCODE_TYPE;\r
+\r
+typedef struct {\r
+ EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType;\r
+ UINT32 ProcessorMicrocodeRevisionNumber;\r
+} EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
+\r
+typedef struct {\r
+ UINT32 CpuStatus :3;\r
+ UINT32 Reserved1 :3;\r
+ UINT32 SocketPopulated :1;\r
+ UINT32 Reserved2 :1;\r
+ UINT32 ApicEnable :1;\r
+ UINT32 BootApplicationProcessor :1;\r
+ UINT32 Reserved3 :22;\r
+} EFI_PROCESSOR_STATUS_DATA;\r
+\r
+typedef enum {\r
+ EfiCpuStatusUnknown = 0,\r
+ EfiCpuStatusEnabled = 1,\r
+ EfiCpuStatusDisabledByUser = 2,\r
+ EfiCpuStatusDisabledbyBios = 3,\r
+ EfiCpuStatusIdle = 4,\r
+ EfiCpuStatusOther = 7\r
+} EFI_CPU_STATUS;\r
+\r
+typedef enum {\r
+ EfiProcessorSocketOther = 1,\r
+ EfiProcessorSocketUnknown = 2,\r
+ EfiProcessorSocketDaughterBoard = 3,\r
+ EfiProcessorSocketZIF = 4,\r
+ EfiProcessorSocketReplacePiggyBack = 5,\r
+ EfiProcessorSocketNone = 6,\r
+ EfiProcessorSocketLIF = 7,\r
+ EfiProcessorSocketSlot1 = 8,\r
+ EfiProcessorSocketSlot2 = 9,\r
+ EfiProcessorSocket370Pin = 0xA,\r
+ EfiProcessorSocketSlotA = 0xB,\r
+ EfiProcessorSocketSlotM = 0xC,\r
+ EfiProcessorSocket423 = 0xD,\r
+ EfiProcessorSocketA462 = 0xE,\r
+ EfiProcessorSocket478 = 0xF,\r
+ EfiProcessorSocket754 = 0x10,\r
+ EfiProcessorSocket940 = 0x11,\r
+ EfiProcessorSocket939 = 0x12,\r
+ EfiProcessorSocketmPGA604 = 0x13,\r
+ EfiProcessorSocketLGA771 = 0x14,\r
+ EfiProcessorSocketLGA775 = 0x15\r
+} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
+\r
+typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;\r
+\r
+typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;\r
+\r
+typedef enum {\r
+ EfiProcessorHealthy = 1,\r
+ EfiProcessorPerfRestricted = 2,\r
+ EfiProcessorFuncRestricted = 3\r
+} EFI_PROCESSOR_HEALTH_STATUS; \r
+\r
+typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
+\r
+typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
+\r
+typedef enum {\r
+ ProcessorCoreFrequencyRecordType = 1,\r
+ ProcessorFsbFrequencyRecordType = 2,\r
+ ProcessorVersionRecordType = 3,\r
+ ProcessorManufacturerRecordType = 4,\r
+ ProcessorSerialNumberRecordType = 5,\r
+ ProcessorIdRecordType = 6,\r
+ ProcessorTypeRecordType = 7,\r
+ ProcessorFamilyRecordType = 8,\r
+ ProcessorVoltageRecordType = 9,\r
+ ProcessorApicBaseAddressRecordType = 10,\r
+ ProcessorApicIdRecordType = 11,\r
+ ProcessorApicVersionNumberRecordType = 12,\r
+ CpuUcodeRevisionDataRecordType = 13,\r
+ ProcessorStatusRecordType = 14,\r
+ ProcessorSocketTypeRecordType = 15,\r
+ ProcessorSocketNameRecordType = 16,\r
+ CacheAssociationRecordType = 17,\r
+ ProcessorMaxCoreFrequencyRecordType = 18,\r
+ ProcessorAssetTagRecordType = 19,\r
+ ProcessorMaxFsbFrequencyRecordType = 20,\r
+ ProcessorPackageNumberRecordType = 21,\r
+ ProcessorCoreFrequencyListRecordType = 22,\r
+ ProcessorFsbFrequencyListRecordType = 23,\r
+ ProcessorHealthStatusRecordType = 24\r
+} EFI_CPU_VARIABLE_RECORD_TYPE;\r
+\r
+typedef union {\r
+ EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;\r
+ EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList;\r
+ EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber;\r
+ EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency;\r
+ EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency;\r
+ EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency;\r
+ EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency;\r
+ EFI_PROCESSOR_VERSION_DATA ProcessorVersion;\r
+ EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer;\r
+ EFI_PROCESSOR_ID_DATA ProcessorId;\r
+ EFI_PROCESSOR_TYPE_DATA ProcessorType;\r
+ EFI_PROCESSOR_FAMILY_DATA ProcessorFamily;\r
+ EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage;\r
+ EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase;\r
+ EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId;\r
+ EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber;\r
+ EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData;\r
+ EFI_PROCESSOR_STATUS_DATA ProcessorStatus;\r
+ EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType;\r
+ EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName;\r
+ EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag;\r
+ EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus;\r
+ EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber;\r
+} EFI_CPU_VARIABLE_RECORD;\r
+\r
+typedef struct {\r
+ EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
+ EFI_CPU_VARIABLE_RECORD VariableRecord;\r
+} EFI_CPU_DATA_RECORD;\r
+\r
+#endif\r