TianoCore EDK2 master
Loading...
Searching...
No Matches
SmBios.h
Go to the documentation of this file.
1
15#ifndef __SMBIOS_STANDARD_H__
16#define __SMBIOS_STANDARD_H__
17
23#define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
24
31#define SMBIOS_HANDLE_PI_RESERVED 0xFFFE
32
39#define SMBIOS_HANDLE_INVALID 0xFFFF
40
47#define SMBIOS_STRING_MAX_LENGTH 64
48
49//
50// The length of the entire structure table (including all strings) must be reported
51// in the Structure Table Length field of the SMBIOS Structure Table Entry Point,
52// which is a WORD field limited to 65,535 bytes.
53//
54#define SMBIOS_TABLE_MAX_LENGTH 0xFFFF
55
56//
57// For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes.
58//
59#define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF
60
66#define SMBIOS_ANCHOR_STRING "_SM_"
67#define SMBIOS_ANCHOR_STRING_LENGTH 4
69
75#define SMBIOS_3_0_ANCHOR_STRING "_SM3_"
76#define SMBIOS_3_0_ANCHOR_STRING_LENGTH 5
78
79//
80// SMBIOS type macros which is according to SMBIOS 3.3.0 specification.
81//
82#define SMBIOS_TYPE_BIOS_INFORMATION 0
83#define SMBIOS_TYPE_SYSTEM_INFORMATION 1
84#define SMBIOS_TYPE_BASEBOARD_INFORMATION 2
85#define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3
86#define SMBIOS_TYPE_PROCESSOR_INFORMATION 4
87#define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5
88#define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6
89#define SMBIOS_TYPE_CACHE_INFORMATION 7
90#define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8
91#define SMBIOS_TYPE_SYSTEM_SLOTS 9
92#define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10
93#define SMBIOS_TYPE_OEM_STRINGS 11
94#define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12
95#define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13
96#define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14
97#define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15
98#define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16
99#define SMBIOS_TYPE_MEMORY_DEVICE 17
100#define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18
101#define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19
102#define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20
103#define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21
104#define SMBIOS_TYPE_PORTABLE_BATTERY 22
105#define SMBIOS_TYPE_SYSTEM_RESET 23
106#define SMBIOS_TYPE_HARDWARE_SECURITY 24
107#define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25
108#define SMBIOS_TYPE_VOLTAGE_PROBE 26
109#define SMBIOS_TYPE_COOLING_DEVICE 27
110#define SMBIOS_TYPE_TEMPERATURE_PROBE 28
111#define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29
112#define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30
113#define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31
114#define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32
115#define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33
116#define SMBIOS_TYPE_MANAGEMENT_DEVICE 34
117#define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35
118#define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36
119#define SMBIOS_TYPE_MEMORY_CHANNEL 37
120#define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38
121#define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39
122#define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40
123#define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41
124#define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42
125#define SMBIOS_TYPE_TPM_DEVICE 43
126#define SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION 44
127#define SMBIOS_TYPE_FIRMWARE_INVENTORY_INFORMATION 45
128#define SMBIOS_TYPE_STRING_PROPERTY_INFORMATION 46
129
135#define SMBIOS_TYPE_INACTIVE 0x007E
136
141#define SMBIOS_TYPE_END_OF_TABLE 0x007F
142
143#define SMBIOS_OEM_BEGIN 128
144#define SMBIOS_OEM_END 255
145
150typedef UINT8 SMBIOS_TYPE;
151
162typedef UINT16 SMBIOS_HANDLE;
163
167#pragma pack(1)
168typedef struct {
169 UINT8 AnchorString[SMBIOS_ANCHOR_STRING_LENGTH];
170 UINT8 EntryPointStructureChecksum;
171 UINT8 EntryPointLength;
172 UINT8 MajorVersion;
173 UINT8 MinorVersion;
174 UINT16 MaxStructureSize;
175 UINT8 EntryPointRevision;
176 UINT8 FormattedArea[5];
177 UINT8 IntermediateAnchorString[5];
178 UINT8 IntermediateChecksum;
179 UINT16 TableLength;
180 UINT32 TableAddress;
181 UINT16 NumberOfSmbiosStructures;
182 UINT8 SmbiosBcdRevision;
184
185typedef struct {
186 UINT8 AnchorString[SMBIOS_3_0_ANCHOR_STRING_LENGTH];
187 UINT8 EntryPointStructureChecksum;
188 UINT8 EntryPointLength;
189 UINT8 MajorVersion;
190 UINT8 MinorVersion;
191 UINT8 DocRev;
192 UINT8 EntryPointRevision;
193 UINT8 Reserved;
194 UINT32 TableMaximumSize;
195 UINT64 TableAddress;
197
201typedef struct {
202 SMBIOS_TYPE Type;
203 UINT8 Length;
204 SMBIOS_HANDLE Handle;
206
219
224typedef struct {
225 UINT32 Reserved : 2;
226 UINT32 Unknown : 1;
227 UINT32 BiosCharacteristicsNotSupported : 1;
228 UINT32 IsaIsSupported : 1;
229 UINT32 McaIsSupported : 1;
230 UINT32 EisaIsSupported : 1;
231 UINT32 PciIsSupported : 1;
232 UINT32 PcmciaIsSupported : 1;
233 UINT32 PlugAndPlayIsSupported : 1;
234 UINT32 ApmIsSupported : 1;
235 UINT32 BiosIsUpgradable : 1;
236 UINT32 BiosShadowingAllowed : 1;
237 UINT32 VlVesaIsSupported : 1;
238 UINT32 EscdSupportIsAvailable : 1;
239 UINT32 BootFromCdIsSupported : 1;
240 UINT32 SelectableBootIsSupported : 1;
241 UINT32 RomBiosIsSocketed : 1;
242 UINT32 BootFromPcmciaIsSupported : 1;
243 UINT32 EDDSpecificationIsSupported : 1;
244 UINT32 JapaneseNecFloppyIsSupported : 1;
245 UINT32 JapaneseToshibaFloppyIsSupported : 1;
246 UINT32 Floppy525_360IsSupported : 1;
247 UINT32 Floppy525_12IsSupported : 1;
248 UINT32 Floppy35_720IsSupported : 1;
249 UINT32 Floppy35_288IsSupported : 1;
250 UINT32 PrintScreenIsSupported : 1;
251 UINT32 Keyboard8042IsSupported : 1;
252 UINT32 SerialIsSupported : 1;
253 UINT32 PrinterIsSupported : 1;
254 UINT32 CgaMonoIsSupported : 1;
255 UINT32 NecPc98 : 1;
256 UINT32 ReservedForVendor : 32;
259
265typedef struct {
266 UINT8 AcpiIsSupported : 1;
267 UINT8 UsbLegacyIsSupported : 1;
268 UINT8 AgpIsSupported : 1;
269 UINT8 I2OBootIsSupported : 1;
270 UINT8 Ls120BootIsSupported : 1;
271 UINT8 AtapiZipDriveBootIsSupported : 1;
272 UINT8 Boot1394IsSupported : 1;
273 UINT8 SmartBatteryIsSupported : 1;
275
281typedef struct {
282 UINT8 BiosBootSpecIsSupported : 1;
283 UINT8 FunctionKeyNetworkBootIsSupported : 1;
284 UINT8 TargetContentDistributionEnabled : 1;
285 UINT8 UefiSpecificationSupported : 1;
286 UINT8 VirtualMachineSupported : 1;
287 UINT8 ManufacturingModeSupported : 1;
288 UINT8 ManufacturingModeEnabled : 1;
289 UINT8 ExtensionByte2Reserved : 1;
291
295typedef struct {
296 MBCE_BIOS_RESERVED BiosReserved;
297 MBCE_SYSTEM_RESERVED SystemReserved;
299
303typedef struct {
304 UINT16 Size : 14;
305 UINT16 Unit : 2;
307
311typedef struct {
313 SMBIOS_TABLE_STRING Vendor;
314 SMBIOS_TABLE_STRING BiosVersion;
315 UINT16 BiosSegment;
316 SMBIOS_TABLE_STRING BiosReleaseDate;
317 UINT8 BiosSize;
318 MISC_BIOS_CHARACTERISTICS BiosCharacteristics;
319 UINT8 BIOSCharacteristicsExtensionBytes[2];
320 UINT8 SystemBiosMajorRelease;
321 UINT8 SystemBiosMinorRelease;
322 UINT8 EmbeddedControllerFirmwareMajorRelease;
323 UINT8 EmbeddedControllerFirmwareMinorRelease;
324 //
325 // Add for smbios 3.1.0
326 //
327 EXTENDED_BIOS_ROM_SIZE ExtendedBiosSize;
329
333typedef enum {
334 SystemWakeupTypeReserved = 0x00,
335 SystemWakeupTypeOther = 0x01,
336 SystemWakeupTypeUnknown = 0x02,
337 SystemWakeupTypeApmTimer = 0x03,
338 SystemWakeupTypeModemRing = 0x04,
339 SystemWakeupTypeLanRemote = 0x05,
340 SystemWakeupTypePowerSwitch = 0x06,
341 SystemWakeupTypePciPme = 0x07,
342 SystemWakeupTypeAcPowerRestored = 0x08
344
353typedef struct {
355 SMBIOS_TABLE_STRING Manufacturer;
356 SMBIOS_TABLE_STRING ProductName;
357 SMBIOS_TABLE_STRING Version;
358 SMBIOS_TABLE_STRING SerialNumber;
359 GUID Uuid;
361 SMBIOS_TABLE_STRING SKUNumber;
362 SMBIOS_TABLE_STRING Family;
364
368typedef struct {
369 UINT8 Motherboard : 1;
370 UINT8 RequiresDaughterCard : 1;
371 UINT8 Removable : 1;
372 UINT8 Replaceable : 1;
373 UINT8 HotSwappable : 1;
374 UINT8 Reserved : 3;
376
380typedef enum {
381 BaseBoardTypeUnknown = 0x1,
382 BaseBoardTypeOther = 0x2,
383 BaseBoardTypeServerBlade = 0x3,
384 BaseBoardTypeConnectivitySwitch = 0x4,
385 BaseBoardTypeSystemManagementModule = 0x5,
386 BaseBoardTypeProcessorModule = 0x6,
387 BaseBoardTypeIOModule = 0x7,
388 BaseBoardTypeMemoryModule = 0x8,
389 BaseBoardTypeDaughterBoard = 0x9,
390 BaseBoardTypeMotherBoard = 0xA,
391 BaseBoardTypeProcessorMemoryModule = 0xB,
392 BaseBoardTypeProcessorIOModule = 0xC,
393 BaseBoardTypeInterconnectBoard = 0xD
395
402typedef struct {
404 SMBIOS_TABLE_STRING Manufacturer;
405 SMBIOS_TABLE_STRING ProductName;
406 SMBIOS_TABLE_STRING Version;
407 SMBIOS_TABLE_STRING SerialNumber;
408 SMBIOS_TABLE_STRING AssetTag;
409 BASE_BOARD_FEATURE_FLAGS FeatureFlag;
410 SMBIOS_TABLE_STRING LocationInChassis;
411 UINT16 ChassisHandle;
412 UINT8 BoardType;
413 UINT8 NumberOfContainedObjectHandles;
414 UINT16 ContainedObjectHandles[1];
416
420typedef enum {
421 MiscChassisTypeOther = 0x01,
422 MiscChassisTypeUnknown = 0x02,
423 MiscChassisTypeDeskTop = 0x03,
424 MiscChassisTypeLowProfileDesktop = 0x04,
425 MiscChassisTypePizzaBox = 0x05,
426 MiscChassisTypeMiniTower = 0x06,
427 MiscChassisTypeTower = 0x07,
428 MiscChassisTypePortable = 0x08,
429 MiscChassisTypeLapTop = 0x09,
430 MiscChassisTypeNotebook = 0x0A,
431 MiscChassisTypeHandHeld = 0x0B,
432 MiscChassisTypeDockingStation = 0x0C,
433 MiscChassisTypeAllInOne = 0x0D,
434 MiscChassisTypeSubNotebook = 0x0E,
435 MiscChassisTypeSpaceSaving = 0x0F,
436 MiscChassisTypeLunchBox = 0x10,
437 MiscChassisTypeMainServerChassis = 0x11,
438 MiscChassisTypeExpansionChassis = 0x12,
439 MiscChassisTypeSubChassis = 0x13,
440 MiscChassisTypeBusExpansionChassis = 0x14,
441 MiscChassisTypePeripheralChassis = 0x15,
442 MiscChassisTypeRaidChassis = 0x16,
443 MiscChassisTypeRackMountChassis = 0x17,
444 MiscChassisTypeSealedCasePc = 0x18,
445 MiscChassisMultiSystemChassis = 0x19,
446 MiscChassisCompactPCI = 0x1A,
447 MiscChassisAdvancedTCA = 0x1B,
448 MiscChassisBlade = 0x1C,
449 MiscChassisBladeEnclosure = 0x1D,
450 MiscChassisTablet = 0x1E,
451 MiscChassisConvertible = 0x1F,
452 MiscChassisDetachable = 0x20,
453 MiscChassisIoTGateway = 0x21,
454 MiscChassisEmbeddedPc = 0x22,
455 MiscChassisMiniPc = 0x23,
456 MiscChassisStickPc = 0x24
458
462typedef enum {
463 ChassisStateOther = 0x01,
464 ChassisStateUnknown = 0x02,
465 ChassisStateSafe = 0x03,
466 ChassisStateWarning = 0x04,
467 ChassisStateCritical = 0x05,
468 ChassisStateNonRecoverable = 0x06
470
474typedef enum {
475 ChassisSecurityStatusOther = 0x01,
476 ChassisSecurityStatusUnknown = 0x02,
477 ChassisSecurityStatusNone = 0x03,
478 ChassisSecurityStatusExternalInterfaceLockedOut = 0x04,
479 ChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05
481
485typedef struct {
486 UINT8 ContainedElementType;
487 UINT8 ContainedElementMinimum;
488 UINT8 ContainedElementMaximum;
490
494
498typedef enum {
499 ChassisHeightUnspecified = 0x00,
502
507typedef enum {
508 ChassisRackTypeUnspecified = 0x00,
509 ChassisRackTypeOU = 0x01,
511
518typedef struct {
520 SMBIOS_TABLE_STRING Manufacturer;
521 UINT8 Type;
522 SMBIOS_TABLE_STRING Version;
523 SMBIOS_TABLE_STRING SerialNumber;
524 SMBIOS_TABLE_STRING AssetTag;
529 UINT8 OemDefined[4];
530 UINT8 Height;
531 UINT8 NumberofPowerCords;
532 UINT8 ContainedElementCount;
533 UINT8 ContainedElementRecordLength;
534 //
535 // Can have 0 to (ContainedElementCount * ContainedElementRecordLength) contained elements
536 //
537 CONTAINED_ELEMENT ContainedElements[1];
538 //
539 // Add for smbios 2.7
540 //
541 // Since ContainedElements has a variable number of entries, must not define SKUNumber in
542 // the structure. Need to reference it by starting at offset 0x15 and adding
543 // (ContainedElementCount(n) * ContainedElementRecordLength(m)) bytes.
544 //
545 // SMBIOS_TABLE_STRING SKUNumber; ///< SMBIOS spec 2.7+ Offset 15h+(n*m)
546 // UINT8 RackType; ///< SMBIOS spec 3.9+ Offset 16h+(n*m) CR251
547 // UINT8 RackHeight; ///< SMBIOS spec 3.9+ Offset 17h+(n*m) CR251
549
553typedef enum {
554 ProcessorOther = 0x01,
555 ProcessorUnknown = 0x02,
556 CentralProcessor = 0x03,
557 MathProcessor = 0x04,
558 DspProcessor = 0x05,
559 VideoProcessor = 0x06
561
565typedef enum {
566 ProcessorFamilyOther = 0x01,
567 ProcessorFamilyUnknown = 0x02,
568 ProcessorFamily8086 = 0x03,
569 ProcessorFamily80286 = 0x04,
570 ProcessorFamilyIntel386 = 0x05,
571 ProcessorFamilyIntel486 = 0x06,
572 ProcessorFamily8087 = 0x07,
573 ProcessorFamily80287 = 0x08,
574 ProcessorFamily80387 = 0x09,
575 ProcessorFamily80487 = 0x0A,
576 ProcessorFamilyPentium = 0x0B,
577 ProcessorFamilyPentiumPro = 0x0C,
578 ProcessorFamilyPentiumII = 0x0D,
579 ProcessorFamilyPentiumMMX = 0x0E,
580 ProcessorFamilyCeleron = 0x0F,
581 ProcessorFamilyPentiumIIXeon = 0x10,
582 ProcessorFamilyPentiumIII = 0x11,
583 ProcessorFamilyM1 = 0x12,
584 ProcessorFamilyM2 = 0x13,
585 ProcessorFamilyIntelCeleronM = 0x14,
586 ProcessorFamilyIntelPentium4Ht = 0x15,
587 ProcessorFamilyIntel = 0x16,
588 ProcessorFamilyAmdDuron = 0x18,
589 ProcessorFamilyK5 = 0x19,
590 ProcessorFamilyK6 = 0x1A,
591 ProcessorFamilyK6_2 = 0x1B,
592 ProcessorFamilyK6_3 = 0x1C,
593 ProcessorFamilyAmdAthlon = 0x1D,
594 ProcessorFamilyAmd29000 = 0x1E,
595 ProcessorFamilyK6_2Plus = 0x1F,
596 ProcessorFamilyPowerPC = 0x20,
597 ProcessorFamilyPowerPC601 = 0x21,
598 ProcessorFamilyPowerPC603 = 0x22,
599 ProcessorFamilyPowerPC603Plus = 0x23,
600 ProcessorFamilyPowerPC604 = 0x24,
601 ProcessorFamilyPowerPC620 = 0x25,
602 ProcessorFamilyPowerPCx704 = 0x26,
603 ProcessorFamilyPowerPC750 = 0x27,
604 ProcessorFamilyIntelCoreDuo = 0x28,
605 ProcessorFamilyIntelCoreDuoMobile = 0x29,
606 ProcessorFamilyIntelCoreSoloMobile = 0x2A,
607 ProcessorFamilyIntelAtom = 0x2B,
608 ProcessorFamilyIntelCoreM = 0x2C,
609 ProcessorFamilyIntelCorem3 = 0x2D,
610 ProcessorFamilyIntelCorem5 = 0x2E,
611 ProcessorFamilyIntelCorem7 = 0x2F,
612 ProcessorFamilyAlpha = 0x30,
613 ProcessorFamilyAlpha21064 = 0x31,
614 ProcessorFamilyAlpha21066 = 0x32,
615 ProcessorFamilyAlpha21164 = 0x33,
616 ProcessorFamilyAlpha21164PC = 0x34,
617 ProcessorFamilyAlpha21164a = 0x35,
618 ProcessorFamilyAlpha21264 = 0x36,
619 ProcessorFamilyAlpha21364 = 0x37,
620 ProcessorFamilyAmdTurionIIUltraDualCoreMobileM = 0x38,
621 ProcessorFamilyAmdTurionIIDualCoreMobileM = 0x39,
622 ProcessorFamilyAmdAthlonIIDualCoreM = 0x3A,
623 ProcessorFamilyAmdOpteron6100Series = 0x3B,
624 ProcessorFamilyAmdOpteron4100Series = 0x3C,
625 ProcessorFamilyAmdOpteron6200Series = 0x3D,
626 ProcessorFamilyAmdOpteron4200Series = 0x3E,
627 ProcessorFamilyAmdFxSeries = 0x3F,
628 ProcessorFamilyMips = 0x40,
629 ProcessorFamilyMIPSR4000 = 0x41,
630 ProcessorFamilyMIPSR4200 = 0x42,
631 ProcessorFamilyMIPSR4400 = 0x43,
632 ProcessorFamilyMIPSR4600 = 0x44,
633 ProcessorFamilyMIPSR10000 = 0x45,
634 ProcessorFamilyAmdCSeries = 0x46,
635 ProcessorFamilyAmdESeries = 0x47,
637 ProcessorFamilyAmdGSeries = 0x49,
638 ProcessorFamilyAmdZSeries = 0x4A,
639 ProcessorFamilyAmdRSeries = 0x4B,
640 ProcessorFamilyAmdOpteron4300 = 0x4C,
641 ProcessorFamilyAmdOpteron6300 = 0x4D,
642 ProcessorFamilyAmdOpteron3300 = 0x4E,
643 ProcessorFamilyAmdFireProSeries = 0x4F,
644 ProcessorFamilySparc = 0x50,
645 ProcessorFamilySuperSparc = 0x51,
646 ProcessorFamilymicroSparcII = 0x52,
647 ProcessorFamilymicroSparcIIep = 0x53,
648 ProcessorFamilyUltraSparc = 0x54,
649 ProcessorFamilyUltraSparcII = 0x55,
650 ProcessorFamilyUltraSparcIii = 0x56,
651 ProcessorFamilyUltraSparcIII = 0x57,
652 ProcessorFamilyUltraSparcIIIi = 0x58,
653 ProcessorFamily68040 = 0x60,
654 ProcessorFamily68xxx = 0x61,
655 ProcessorFamily68000 = 0x62,
656 ProcessorFamily68010 = 0x63,
657 ProcessorFamily68020 = 0x64,
658 ProcessorFamily68030 = 0x65,
659 ProcessorFamilyAmdAthlonX4QuadCore = 0x66,
660 ProcessorFamilyAmdOpteronX1000Series = 0x67,
661 ProcessorFamilyAmdOpteronX2000Series = 0x68,
662 ProcessorFamilyAmdOpteronASeries = 0x69,
663 ProcessorFamilyAmdOpteronX3000Series = 0x6A,
664 ProcessorFamilyAmdZen = 0x6B,
665 ProcessorFamilyHobbit = 0x70,
666 ProcessorFamilyCrusoeTM5000 = 0x78,
667 ProcessorFamilyCrusoeTM3000 = 0x79,
668 ProcessorFamilyEfficeonTM8000 = 0x7A,
669 ProcessorFamilyWeitek = 0x80,
670 ProcessorFamilyItanium = 0x82,
671 ProcessorFamilyAmdAthlon64 = 0x83,
672 ProcessorFamilyAmdOpteron = 0x84,
673 ProcessorFamilyAmdSempron = 0x85,
674 ProcessorFamilyAmdTurion64Mobile = 0x86,
675 ProcessorFamilyDualCoreAmdOpteron = 0x87,
676 ProcessorFamilyAmdAthlon64X2DualCore = 0x88,
677 ProcessorFamilyAmdTurion64X2Mobile = 0x89,
678 ProcessorFamilyQuadCoreAmdOpteron = 0x8A,
679 ProcessorFamilyThirdGenerationAmdOpteron = 0x8B,
680 ProcessorFamilyAmdPhenomFxQuadCore = 0x8C,
681 ProcessorFamilyAmdPhenomX4QuadCore = 0x8D,
682 ProcessorFamilyAmdPhenomX2DualCore = 0x8E,
683 ProcessorFamilyAmdAthlonX2DualCore = 0x8F,
684 ProcessorFamilyPARISC = 0x90,
685 ProcessorFamilyPaRisc8500 = 0x91,
686 ProcessorFamilyPaRisc8000 = 0x92,
687 ProcessorFamilyPaRisc7300LC = 0x93,
688 ProcessorFamilyPaRisc7200 = 0x94,
689 ProcessorFamilyPaRisc7100LC = 0x95,
690 ProcessorFamilyPaRisc7100 = 0x96,
691 ProcessorFamilyV30 = 0xA0,
692 ProcessorFamilyQuadCoreIntelXeon3200Series = 0xA1,
693 ProcessorFamilyDualCoreIntelXeon3000Series = 0xA2,
694 ProcessorFamilyQuadCoreIntelXeon5300Series = 0xA3,
695 ProcessorFamilyDualCoreIntelXeon5100Series = 0xA4,
696 ProcessorFamilyDualCoreIntelXeon5000Series = 0xA5,
697 ProcessorFamilyDualCoreIntelXeonLV = 0xA6,
698 ProcessorFamilyDualCoreIntelXeonULV = 0xA7,
699 ProcessorFamilyDualCoreIntelXeon7100Series = 0xA8,
700 ProcessorFamilyQuadCoreIntelXeon5400Series = 0xA9,
701 ProcessorFamilyQuadCoreIntelXeon = 0xAA,
702 ProcessorFamilyDualCoreIntelXeon5200Series = 0xAB,
703 ProcessorFamilyDualCoreIntelXeon7200Series = 0xAC,
704 ProcessorFamilyQuadCoreIntelXeon7300Series = 0xAD,
705 ProcessorFamilyQuadCoreIntelXeon7400Series = 0xAE,
706 ProcessorFamilyMultiCoreIntelXeon7400Series = 0xAF,
707 ProcessorFamilyPentiumIIIXeon = 0xB0,
708 ProcessorFamilyPentiumIIISpeedStep = 0xB1,
709 ProcessorFamilyPentium4 = 0xB2,
710 ProcessorFamilyIntelXeon = 0xB3,
711 ProcessorFamilyAS400 = 0xB4,
712 ProcessorFamilyIntelXeonMP = 0xB5,
713 ProcessorFamilyAMDAthlonXP = 0xB6,
714 ProcessorFamilyAMDAthlonMP = 0xB7,
715 ProcessorFamilyIntelItanium2 = 0xB8,
716 ProcessorFamilyIntelPentiumM = 0xB9,
717 ProcessorFamilyIntelCeleronD = 0xBA,
718 ProcessorFamilyIntelPentiumD = 0xBB,
719 ProcessorFamilyIntelPentiumEx = 0xBC,
721 ProcessorFamilyReserved = 0xBE,
722 ProcessorFamilyIntelCore2 = 0xBF,
723 ProcessorFamilyIntelCore2Solo = 0xC0,
724 ProcessorFamilyIntelCore2Extreme = 0xC1,
725 ProcessorFamilyIntelCore2Quad = 0xC2,
726 ProcessorFamilyIntelCore2ExtremeMobile = 0xC3,
727 ProcessorFamilyIntelCore2DuoMobile = 0xC4,
728 ProcessorFamilyIntelCore2SoloMobile = 0xC5,
729 ProcessorFamilyIntelCoreI7 = 0xC6,
730 ProcessorFamilyDualCoreIntelCeleron = 0xC7,
731 ProcessorFamilyIBM390 = 0xC8,
732 ProcessorFamilyG4 = 0xC9,
733 ProcessorFamilyG5 = 0xCA,
734 ProcessorFamilyG6 = 0xCB,
735 ProcessorFamilyzArchitecture = 0xCC,
736 ProcessorFamilyIntelCoreI5 = 0xCD,
737 ProcessorFamilyIntelCoreI3 = 0xCE,
738 ProcessorFamilyIntelCoreI9 = 0xCF,
739 ProcessorFamilyIntelXeonD = 0xD0,
741 ProcessorFamilyViaC7D = 0xD3,
742 ProcessorFamilyViaC7 = 0xD4,
743 ProcessorFamilyViaEden = 0xD5,
744 ProcessorFamilyMultiCoreIntelXeon = 0xD6,
745 ProcessorFamilyDualCoreIntelXeon3Series = 0xD7,
746 ProcessorFamilyQuadCoreIntelXeon3Series = 0xD8,
747 ProcessorFamilyViaNano = 0xD9,
748 ProcessorFamilyDualCoreIntelXeon5Series = 0xDA,
749 ProcessorFamilyQuadCoreIntelXeon5Series = 0xDB,
750 ProcessorFamilyDualCoreIntelXeon7Series = 0xDD,
751 ProcessorFamilyQuadCoreIntelXeon7Series = 0xDE,
752 ProcessorFamilyMultiCoreIntelXeon7Series = 0xDF,
753 ProcessorFamilyMultiCoreIntelXeon3400Series = 0xE0,
754 ProcessorFamilyAmdOpteron3000Series = 0xE4,
755 ProcessorFamilyAmdSempronII = 0xE5,
756 ProcessorFamilyEmbeddedAmdOpteronQuadCore = 0xE6,
757 ProcessorFamilyAmdPhenomTripleCore = 0xE7,
758 ProcessorFamilyAmdTurionUltraDualCoreMobile = 0xE8,
759 ProcessorFamilyAmdTurionDualCoreMobile = 0xE9,
760 ProcessorFamilyAmdAthlonDualCore = 0xEA,
761 ProcessorFamilyAmdSempronSI = 0xEB,
762 ProcessorFamilyAmdPhenomII = 0xEC,
763 ProcessorFamilyAmdAthlonII = 0xED,
764 ProcessorFamilySixCoreAmdOpteron = 0xEE,
765 ProcessorFamilyAmdSempronM = 0xEF,
766 ProcessorFamilyi860 = 0xFA,
767 ProcessorFamilyi960 = 0xFB,
768 ProcessorFamilyIndicatorFamily2 = 0xFE,
769 ProcessorFamilyReserved1 = 0xFF
771
775typedef enum {
776 ProcessorFamilyARMv7 = 0x0100,
777 ProcessorFamilyARMv8 = 0x0101,
778 ProcessorFamilyARMv9 = 0x0102,
779 ProcessorFamilySH3 = 0x0104,
780 ProcessorFamilySH4 = 0x0105,
781 ProcessorFamilyARM = 0x0118,
782 ProcessorFamilyStrongARM = 0x0119,
783 ProcessorFamily6x86 = 0x012C,
784 ProcessorFamilyMediaGX = 0x012D,
785 ProcessorFamilyMII = 0x012E,
786 ProcessorFamilyWinChip = 0x0140,
787 ProcessorFamilyDSP = 0x015E,
788 ProcessorFamilyVideoProcessor = 0x01F4,
789 ProcessorFamilyRiscvRV32 = 0x0200,
790 ProcessorFamilyRiscVRV64 = 0x0201,
791 ProcessorFamilyRiscVRV128 = 0x0202,
792 ProcessorFamilyLoongArch = 0x0258,
793 ProcessorFamilyLoongson1 = 0x0259,
794 ProcessorFamilyLoongson2 = 0x025A,
795 ProcessorFamilyLoongson3 = 0x025B,
796 ProcessorFamilyLoongson2K = 0x025C,
797 ProcessorFamilyLoongson3A = 0x025D,
798 ProcessorFamilyLoongson3B = 0x025E,
799 ProcessorFamilyLoongson3C = 0x025F,
800 ProcessorFamilyLoongson3D = 0x0260,
801 ProcessorFamilyLoongson3E = 0x0261,
802 ProcessorFamilyDualCoreLoongson2K = 0x0262,
803 ProcessorFamilyQuadCoreLoongson3A = 0x026C,
804 ProcessorFamilyMultiCoreLoongson3A = 0x026D,
805 ProcessorFamilyQuadCoreLoongson3B = 0x026E,
806 ProcessorFamilyMultiCoreLoongson3B = 0x026F,
807 ProcessorFamilyMultiCoreLoongson3C = 0x0270,
808 ProcessorFamilyMultiCoreLoongson3D = 0x0271,
809 ProcessorFamilyIntelCore3 = 0x0300,
810 ProcessorFamilyIntelCore5 = 0x0301,
811 ProcessorFamilyIntelCore7 = 0x0302,
812 ProcessorFamilyIntelCore9 = 0x0303,
813 ProcessorFamilyIntelCoreUltra3 = 0x0304,
814 ProcessorFamilyIntelCoreUltra5 = 0x0305,
815 ProcessorFamilyIntelCoreUltra7 = 0x0306,
816 ProcessorFamilyIntelCoreUltra9 = 0x0307
818
822typedef struct {
823 UINT8 ProcessorVoltageCapability5V : 1;
824 UINT8 ProcessorVoltageCapability3_3V : 1;
825 UINT8 ProcessorVoltageCapability2_9V : 1;
828 UINT8 ProcessorVoltageIndicateLegacy : 1;
830
834typedef enum {
835 ProcessorUpgradeOther = 0x01,
836 ProcessorUpgradeUnknown = 0x02,
837 ProcessorUpgradeDaughterBoard = 0x03,
838 ProcessorUpgradeZIFSocket = 0x04,
840 ProcessorUpgradeNone = 0x06,
841 ProcessorUpgradeLIFSocket = 0x07,
842 ProcessorUpgradeSlot1 = 0x08,
843 ProcessorUpgradeSlot2 = 0x09,
844 ProcessorUpgrade370PinSocket = 0x0A,
845 ProcessorUpgradeSlotA = 0x0B,
846 ProcessorUpgradeSlotM = 0x0C,
847 ProcessorUpgradeSocket423 = 0x0D,
849 ProcessorUpgradeSocket478 = 0x0F,
850 ProcessorUpgradeSocket754 = 0x10,
851 ProcessorUpgradeSocket940 = 0x11,
852 ProcessorUpgradeSocket939 = 0x12,
853 ProcessorUpgradeSocketmPGA604 = 0x13,
854 ProcessorUpgradeSocketLGA771 = 0x14,
855 ProcessorUpgradeSocketLGA775 = 0x15,
856 ProcessorUpgradeSocketS1 = 0x16,
857 ProcessorUpgradeAM2 = 0x17,
858 ProcessorUpgradeF1207 = 0x18,
859 ProcessorSocketLGA1366 = 0x19,
860 ProcessorUpgradeSocketG34 = 0x1A,
861 ProcessorUpgradeSocketAM3 = 0x1B,
862 ProcessorUpgradeSocketC32 = 0x1C,
863 ProcessorUpgradeSocketLGA1156 = 0x1D,
864 ProcessorUpgradeSocketLGA1567 = 0x1E,
865 ProcessorUpgradeSocketPGA988A = 0x1F,
866 ProcessorUpgradeSocketBGA1288 = 0x20,
867 ProcessorUpgradeSocketrPGA988B = 0x21,
868 ProcessorUpgradeSocketBGA1023 = 0x22,
869 ProcessorUpgradeSocketBGA1224 = 0x23,
871 ProcessorUpgradeSocketLGA1356 = 0x25,
872 ProcessorUpgradeSocketLGA2011 = 0x26,
873 ProcessorUpgradeSocketFS1 = 0x27,
874 ProcessorUpgradeSocketFS2 = 0x28,
875 ProcessorUpgradeSocketFM1 = 0x29,
876 ProcessorUpgradeSocketFM2 = 0x2A,
877 ProcessorUpgradeSocketLGA2011_3 = 0x2B,
878 ProcessorUpgradeSocketLGA1356_3 = 0x2C,
879 ProcessorUpgradeSocketLGA1150 = 0x2D,
880 ProcessorUpgradeSocketBGA1168 = 0x2E,
881 ProcessorUpgradeSocketBGA1234 = 0x2F,
882 ProcessorUpgradeSocketBGA1364 = 0x30,
883 ProcessorUpgradeSocketAM4 = 0x31,
884 ProcessorUpgradeSocketLGA1151 = 0x32,
885 ProcessorUpgradeSocketBGA1356 = 0x33,
886 ProcessorUpgradeSocketBGA1440 = 0x34,
887 ProcessorUpgradeSocketBGA1515 = 0x35,
888 ProcessorUpgradeSocketLGA3647_1 = 0x36,
889 ProcessorUpgradeSocketSP3 = 0x37,
890 ProcessorUpgradeSocketSP3r2 = 0x38,
891 ProcessorUpgradeSocketLGA2066 = 0x39,
892 ProcessorUpgradeSocketBGA1392 = 0x3A,
893 ProcessorUpgradeSocketBGA1510 = 0x3B,
894 ProcessorUpgradeSocketBGA1528 = 0x3C,
895 ProcessorUpgradeSocketLGA4189 = 0x3D,
896 ProcessorUpgradeSocketLGA1200 = 0x3E,
897 ProcessorUpgradeSocketLGA4677 = 0x3F,
898 ProcessorUpgradeSocketLGA1700 = 0x40,
899 ProcessorUpgradeSocketBGA1744 = 0x41,
900 ProcessorUpgradeSocketBGA1781 = 0x42,
901 ProcessorUpgradeSocketBGA1211 = 0x43,
902 ProcessorUpgradeSocketBGA2422 = 0x44,
903 ProcessorUpgradeSocketLGA1211 = 0x45,
904 ProcessorUpgradeSocketLGA2422 = 0x46,
905 ProcessorUpgradeSocketLGA5773 = 0x47,
906 ProcessorUpgradeSocketBGA5773 = 0x48,
907 ProcessorUpgradeSocketAM5 = 0x49,
908 ProcessorUpgradeSocketSP5 = 0x4A,
909 ProcessorUpgradeSocketSP6 = 0x4B,
910 ProcessorUpgradeSocketBGA883 = 0x4C,
911 ProcessorUpgradeSocketBGA1190 = 0x4D,
912 ProcessorUpgradeSocketBGA4129 = 0x4E,
913 ProcessorUpgradeSocketLGA4710 = 0x4F,
914 ProcessorUpgradeSocketLGA7529 = 0x50,
915 ProcessorUpgradeSocketBGA1964 = 0x51,
916 ProcessorUpgradeSocketBGA1792 = 0x52,
917 ProcessorUpgradeSocketBGA2049 = 0x53,
918 ProcessorUpgradeSocketBGA2551 = 0x54,
919 ProcessorUpgradeSocketLGA1851 = 0x55,
920 ProcessorUpgradeSocketBGA2114 = 0x56,
921 ProcessorUpgradeSocketBGA2833 = 0x57,
922 ProcessorUpgradeInvalid = 0xFF
924
928typedef struct {
929 UINT32 ProcessorSteppingId : 4;
930 UINT32 ProcessorModel : 4;
931 UINT32 ProcessorFamily : 4;
932 UINT32 ProcessorType : 2;
933 UINT32 ProcessorReserved1 : 2;
934 UINT32 ProcessorXModel : 4;
935 UINT32 ProcessorXFamily : 8;
936 UINT32 ProcessorReserved2 : 4;
938
939typedef struct {
940 UINT32 ProcessorFpu : 1;
941 UINT32 ProcessorVme : 1;
942 UINT32 ProcessorDe : 1;
943 UINT32 ProcessorPse : 1;
944 UINT32 ProcessorTsc : 1;
945 UINT32 ProcessorMsr : 1;
946 UINT32 ProcessorPae : 1;
947 UINT32 ProcessorMce : 1;
948 UINT32 ProcessorCx8 : 1;
949 UINT32 ProcessorApic : 1;
950 UINT32 ProcessorReserved1 : 1;
951 UINT32 ProcessorSep : 1;
952 UINT32 ProcessorMtrr : 1;
953 UINT32 ProcessorPge : 1;
954 UINT32 ProcessorMca : 1;
955 UINT32 ProcessorCmov : 1;
956 UINT32 ProcessorPat : 1;
957 UINT32 ProcessorPse36 : 1;
958 UINT32 ProcessorPsn : 1;
959 UINT32 ProcessorClfsh : 1;
960 UINT32 ProcessorReserved2 : 1;
961 UINT32 ProcessorDs : 1;
962 UINT32 ProcessorAcpi : 1;
963 UINT32 ProcessorMmx : 1;
964 UINT32 ProcessorFxsr : 1;
965 UINT32 ProcessorSse : 1;
966 UINT32 ProcessorSse2 : 1;
967 UINT32 ProcessorSs : 1;
968 UINT32 ProcessorReserved3 : 1;
969 UINT32 ProcessorTm : 1;
970 UINT32 ProcessorReserved4 : 2;
972
973typedef struct {
974 UINT16 ProcessorReserved1 : 1;
975 UINT16 ProcessorUnknown : 1;
976 UINT16 Processor64BitCapable : 1;
977 UINT16 ProcessorMultiCore : 1;
978 UINT16 ProcessorHardwareThread : 1;
979 UINT16 ProcessorExecuteProtection : 1;
980 UINT16 ProcessorEnhancedVirtualization : 1;
981 UINT16 ProcessorPowerPerformanceCtrl : 1;
982 UINT16 Processor128BitCapable : 1;
983 UINT16 ProcessorArm64SocId : 1;
984 UINT16 ProcessorReserved2 : 6;
986
990typedef union {
991 struct {
992 UINT8 CpuStatus : 3;
993 UINT8 Reserved1 : 3;
994 UINT8 SocketPopulated : 1;
995 UINT8 Reserved2 : 1;
996 } Bits;
997 UINT8 Data;
999
1000#ifdef MDE_CPU_AARCH64
1001// This structure assumes Arm64 SoC ID is supported
1002typedef struct {
1003 UINT16 SocId;
1004 UINT8 SipId;
1005 UINT8 SipBankIndex;
1006 UINT32 SocRevision;
1008#elif defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
1009typedef struct {
1010 PROCESSOR_SIGNATURE Signature;
1011 PROCESSOR_FEATURE_FLAGS FeatureFlags;
1013#else
1014// Please define PROCESSOR_ID_DATA for your architecture
1015typedef struct {
1016 PROCESSOR_SIGNATURE Signature;
1017 PROCESSOR_FEATURE_FLAGS FeatureFlags;
1019#endif
1020
1030typedef struct {
1031 SMBIOS_STRUCTURE Hdr;
1032 SMBIOS_TABLE_STRING Socket;
1035 SMBIOS_TABLE_STRING ProcessorManufacturer;
1036 PROCESSOR_ID_DATA ProcessorId;
1037 SMBIOS_TABLE_STRING ProcessorVersion;
1038 PROCESSOR_VOLTAGE Voltage;
1039 UINT16 ExternalClock;
1040 UINT16 MaxSpeed;
1041 UINT16 CurrentSpeed;
1042 UINT8 Status;
1044 UINT16 L1CacheHandle;
1045 UINT16 L2CacheHandle;
1046 UINT16 L3CacheHandle;
1047 SMBIOS_TABLE_STRING SerialNumber;
1048 SMBIOS_TABLE_STRING AssetTag;
1049 SMBIOS_TABLE_STRING PartNumber;
1050 //
1051 // Add for smbios 2.5
1052 //
1053 UINT8 CoreCount;
1054 UINT8 EnabledCoreCount;
1055 UINT8 ThreadCount;
1056 UINT16 ProcessorCharacteristics;
1057 //
1058 // Add for smbios 2.6
1059 //
1060 UINT16 ProcessorFamily2;
1061 //
1062 // Add for smbios 3.0
1063 //
1064 UINT16 CoreCount2;
1065 UINT16 EnabledCoreCount2;
1066 UINT16 ThreadCount2;
1067 //
1068 // Add for smbios 3.6
1069 //
1070 UINT16 ThreadEnabled;
1071 //
1072 // Add for smbios 3.8
1073 //
1074 SMBIOS_TABLE_STRING SocketType;
1076
1080typedef enum {
1081 ErrorDetectingMethodOther = 0x01,
1082 ErrorDetectingMethodUnknown = 0x02,
1083 ErrorDetectingMethodNone = 0x03,
1084 ErrorDetectingMethodParity = 0x04,
1085 ErrorDetectingMethod32Ecc = 0x05,
1086 ErrorDetectingMethod64Ecc = 0x06,
1087 ErrorDetectingMethod128Ecc = 0x07,
1088 ErrorDetectingMethodCrc = 0x08
1090
1094typedef struct {
1095 UINT8 Other : 1;
1096 UINT8 Unknown : 1;
1097 UINT8 None : 1;
1098 UINT8 SingleBitErrorCorrect : 1;
1099 UINT8 DoubleBitErrorCorrect : 1;
1100 UINT8 ErrorScrubbing : 1;
1101 UINT8 Reserved : 2;
1103
1107typedef enum {
1108 MemoryInterleaveOther = 0x01,
1109 MemoryInterleaveUnknown = 0x02,
1110 MemoryInterleaveOneWay = 0x03,
1111 MemoryInterleaveTwoWay = 0x04,
1112 MemoryInterleaveFourWay = 0x05,
1113 MemoryInterleaveEightWay = 0x06,
1114 MemoryInterleaveSixteenWay = 0x07
1116
1120typedef struct {
1121 UINT16 Other : 1;
1122 UINT16 Unknown : 1;
1123 UINT16 SeventyNs : 1;
1124 UINT16 SixtyNs : 1;
1125 UINT16 FiftyNs : 1;
1126 UINT16 Reserved : 11;
1128
1141typedef struct {
1142 SMBIOS_STRUCTURE Hdr;
1144 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability;
1147 UINT8 MaxMemoryModuleSize;
1148 MEMORY_SPEED_TYPE SupportSpeed;
1149 UINT16 SupportMemoryType;
1150 UINT8 MemoryModuleVoltage;
1151 UINT8 AssociatedMemorySlotNum;
1152 UINT16 MemoryModuleConfigHandles[1];
1154
1158typedef struct {
1159 UINT16 Other : 1;
1160 UINT16 Unknown : 1;
1161 UINT16 Standard : 1;
1162 UINT16 FastPageMode : 1;
1163 UINT16 Edo : 1;
1164 UINT16 Parity : 1;
1165 UINT16 Ecc : 1;
1166 UINT16 Simm : 1;
1167 UINT16 Dimm : 1;
1168 UINT16 BurstEdo : 1;
1169 UINT16 Sdram : 1;
1170 UINT16 Reserved : 5;
1172
1176typedef struct {
1178 UINT8 SingleOrDoubleBank : 1;
1180
1192typedef struct {
1193 SMBIOS_STRUCTURE Hdr;
1194 SMBIOS_TABLE_STRING SocketDesignation;
1195 UINT8 BankConnections;
1196 UINT8 CurrentSpeed;
1197 MEMORY_CURRENT_TYPE CurrentMemoryType;
1198 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize;
1200 UINT8 ErrorStatus;
1202
1206typedef struct {
1207 UINT16 CacheLevel : 3;
1208 UINT16 CacheSocketed : 1;
1209 UINT16 Reserved : 1;
1210 UINT16 Location : 2;
1211 UINT16 Enabled : 1;
1212 UINT16 OperationMode : 2;
1213 UINT16 Reserved2 : 6;
1215
1219typedef struct {
1220 UINT16 Size : 15;
1221 UINT16 Granularity64K : 1;
1223
1225#define SMBIOS_CACHE_SIZE_MAX_SIZE_1K_GRANULARITY 32767
1227#define SMBIOS_CACHE_SIZE_MAX_SIZE_64K_GRANULARITY (32767 * 64)
1228
1232typedef struct {
1233 UINT32 Size : 31;
1234 UINT32 Granularity64K : 1;
1236
1240typedef struct {
1241 UINT16 Other : 1;
1242 UINT16 Unknown : 1;
1243 UINT16 NonBurst : 1;
1244 UINT16 Burst : 1;
1245 UINT16 PipelineBurst : 1;
1246 UINT16 Synchronous : 1;
1247 UINT16 Asynchronous : 1;
1248 UINT16 Reserved : 9;
1250
1254typedef enum {
1255 CacheErrorOther = 0x01,
1256 CacheErrorUnknown = 0x02,
1257 CacheErrorNone = 0x03,
1258 CacheErrorParity = 0x04,
1260 CacheErrorMultiBit = 0x06
1262
1266typedef enum {
1267 CacheTypeOther = 0x01,
1268 CacheTypeUnknown = 0x02,
1269 CacheTypeInstruction = 0x03,
1270 CacheTypeData = 0x04,
1271 CacheTypeUnified = 0x05
1273
1277typedef enum {
1278 CacheAssociativityOther = 0x01,
1279 CacheAssociativityUnknown = 0x02,
1280 CacheAssociativityDirectMapped = 0x03,
1281 CacheAssociativity2Way = 0x04,
1282 CacheAssociativity4Way = 0x05,
1283 CacheAssociativityFully = 0x06,
1284 CacheAssociativity8Way = 0x07,
1285 CacheAssociativity16Way = 0x08,
1286 CacheAssociativity12Way = 0x09,
1287 CacheAssociativity24Way = 0x0A,
1288 CacheAssociativity32Way = 0x0B,
1289 CacheAssociativity48Way = 0x0C,
1290 CacheAssociativity64Way = 0x0D,
1291 CacheAssociativity20Way = 0x0E
1293
1302typedef struct {
1303 SMBIOS_STRUCTURE Hdr;
1304 SMBIOS_TABLE_STRING SocketDesignation;
1305 UINT16 CacheConfiguration;
1306 SMBIOS_CACHE_SIZE MaximumCacheSize;
1307 SMBIOS_CACHE_SIZE InstalledSize;
1308 CACHE_SRAM_TYPE_DATA SupportedSRAMType;
1309 CACHE_SRAM_TYPE_DATA CurrentSRAMType;
1310 UINT8 CacheSpeed;
1314 //
1315 // Add for smbios 3.1.0
1316 //
1317 SMBIOS_CACHE_SIZE_2 MaximumCacheSize2;
1318 SMBIOS_CACHE_SIZE_2 InstalledSize2;
1320
1324typedef enum {
1325 PortConnectorTypeNone = 0x00,
1326 PortConnectorTypeCentronics = 0x01,
1327 PortConnectorTypeMiniCentronics = 0x02,
1328 PortConnectorTypeProprietary = 0x03,
1329 PortConnectorTypeDB25Male = 0x04,
1330 PortConnectorTypeDB25Female = 0x05,
1331 PortConnectorTypeDB15Male = 0x06,
1332 PortConnectorTypeDB15Female = 0x07,
1333 PortConnectorTypeDB9Male = 0x08,
1334 PortConnectorTypeDB9Female = 0x09,
1335 PortConnectorTypeRJ11 = 0x0A,
1336 PortConnectorTypeRJ45 = 0x0B,
1337 PortConnectorType50PinMiniScsi = 0x0C,
1338 PortConnectorTypeMiniDin = 0x0D,
1339 PortConnectorTypeMicroDin = 0x0E,
1340 PortConnectorTypePS2 = 0x0F,
1341 PortConnectorTypeInfrared = 0x10,
1342 PortConnectorTypeHpHil = 0x11,
1343 PortConnectorTypeUsb = 0x12,
1344 PortConnectorTypeSsaScsi = 0x13,
1345 PortConnectorTypeCircularDin8Male = 0x14,
1346 PortConnectorTypeCircularDin8Female = 0x15,
1347 PortConnectorTypeOnboardIde = 0x16,
1348 PortConnectorTypeOnboardFloppy = 0x17,
1349 PortConnectorType9PinDualInline = 0x18,
1350 PortConnectorType25PinDualInline = 0x19,
1351 PortConnectorType50PinDualInline = 0x1A,
1352 PortConnectorType68PinDualInline = 0x1B,
1353 PortConnectorTypeOnboardSoundInput = 0x1C,
1354 PortConnectorTypeMiniCentronicsType14 = 0x1D,
1355 PortConnectorTypeMiniCentronicsType26 = 0x1E,
1356 PortConnectorTypeHeadPhoneMiniJack = 0x1F,
1357 PortConnectorTypeBNC = 0x20,
1358 PortConnectorType1394 = 0x21,
1359 PortConnectorTypeSasSata = 0x22,
1360 PortConnectorTypeUsbTypeC = 0x23,
1361 PortConnectorTypePC98 = 0xA0,
1362 PortConnectorTypePC98Hireso = 0xA1,
1363 PortConnectorTypePCH98 = 0xA2,
1364 PortConnectorTypePC98Note = 0xA3,
1365 PortConnectorTypePC98Full = 0xA4,
1366 PortConnectorTypeOther = 0xFF
1368
1372typedef enum {
1373 PortTypeNone = 0x00,
1374 PortTypeParallelXtAtCompatible = 0x01,
1375 PortTypeParallelPortPs2 = 0x02,
1376 PortTypeParallelPortEcp = 0x03,
1377 PortTypeParallelPortEpp = 0x04,
1378 PortTypeParallelPortEcpEpp = 0x05,
1379 PortTypeSerialXtAtCompatible = 0x06,
1380 PortTypeSerial16450Compatible = 0x07,
1381 PortTypeSerial16550Compatible = 0x08,
1382 PortTypeSerial16550ACompatible = 0x09,
1383 PortTypeScsi = 0x0A,
1384 PortTypeMidi = 0x0B,
1385 PortTypeJoyStick = 0x0C,
1386 PortTypeKeyboard = 0x0D,
1387 PortTypeMouse = 0x0E,
1388 PortTypeSsaScsi = 0x0F,
1389 PortTypeUsb = 0x10,
1390 PortTypeFireWire = 0x11,
1391 PortTypePcmciaTypeI = 0x12,
1392 PortTypePcmciaTypeII = 0x13,
1393 PortTypePcmciaTypeIII = 0x14,
1394 PortTypeCardBus = 0x15,
1395 PortTypeAccessBusPort = 0x16,
1396 PortTypeScsiII = 0x17,
1397 PortTypeScsiWide = 0x18,
1398 PortTypePC98 = 0x19,
1399 PortTypePC98Hireso = 0x1A,
1400 PortTypePCH98 = 0x1B,
1401 PortTypeVideoPort = 0x1C,
1402 PortTypeAudioPort = 0x1D,
1403 PortTypeModemPort = 0x1E,
1404 PortTypeNetworkPort = 0x1F,
1405 PortTypeSata = 0x20,
1406 PortTypeSas = 0x21,
1408 PortTypeThunderbolt = 0x23,
1409 PortType8251Compatible = 0xA0,
1410 PortType8251FifoCompatible = 0xA1,
1411 PortTypeOther = 0xFF
1413
1421typedef struct {
1422 SMBIOS_STRUCTURE Hdr;
1423 SMBIOS_TABLE_STRING InternalReferenceDesignator;
1425 SMBIOS_TABLE_STRING ExternalReferenceDesignator;
1427 UINT8 PortType;
1429
1433typedef enum {
1434 SlotTypeOther = 0x01,
1435 SlotTypeUnknown = 0x02,
1436 SlotTypeIsa = 0x03,
1437 SlotTypeMca = 0x04,
1438 SlotTypeEisa = 0x05,
1439 SlotTypePci = 0x06,
1440 SlotTypePcmcia = 0x07,
1441 SlotTypeVlVesa = 0x08,
1442 SlotTypeProprietary = 0x09,
1443 SlotTypeProcessorCardSlot = 0x0A,
1444 SlotTypeProprietaryMemoryCardSlot = 0x0B,
1445 SlotTypeIORiserCardSlot = 0x0C,
1446 SlotTypeNuBus = 0x0D,
1447 SlotTypePci66MhzCapable = 0x0E,
1448 SlotTypeAgp = 0x0F,
1449 SlotTypeApg2X = 0x10,
1450 SlotTypeAgp4X = 0x11,
1451 SlotTypePciX = 0x12,
1452 SlotTypeAgp8X = 0x13,
1453 SlotTypeM2Socket1_DP = 0x14,
1454 SlotTypeM2Socket1_SD = 0x15,
1455 SlotTypeM2Socket2 = 0x16,
1456 SlotTypeM2Socket3 = 0x17,
1457 SlotTypeMxmTypeI = 0x18,
1458 SlotTypeMxmTypeII = 0x19,
1459 SlotTypeMxmTypeIIIStandard = 0x1A,
1460 SlotTypeMxmTypeIIIHe = 0x1B,
1461 SlotTypeMxmTypeIV = 0x1C,
1462 SlotTypeMxm30TypeA = 0x1D,
1463 SlotTypeMxm30TypeB = 0x1E,
1464 SlotTypePciExpressGen2Sff_8639 = 0x1F,
1465 SlotTypePciExpressGen3Sff_8639 = 0x20,
1473 SlotTypeOCPNICPriorto30 = 0x28,
1474 SlotTypeCXLFlexbus10 = 0x30,
1475 SlotTypePC98C20 = 0xA0,
1476 SlotTypePC98C24 = 0xA1,
1477 SlotTypePC98E = 0xA2,
1478 SlotTypePC98LocalBus = 0xA3,
1479 SlotTypePC98Card = 0xA4,
1480 SlotTypePciExpress = 0xA5,
1481 SlotTypePciExpressX1 = 0xA6,
1482 SlotTypePciExpressX2 = 0xA7,
1483 SlotTypePciExpressX4 = 0xA8,
1484 SlotTypePciExpressX8 = 0xA9,
1485 SlotTypePciExpressX16 = 0xAA,
1486 SlotTypePciExpressGen2 = 0xAB,
1487 SlotTypePciExpressGen2X1 = 0xAC,
1488 SlotTypePciExpressGen2X2 = 0xAD,
1489 SlotTypePciExpressGen2X4 = 0xAE,
1490 SlotTypePciExpressGen2X8 = 0xAF,
1491 SlotTypePciExpressGen2X16 = 0xB0,
1492 SlotTypePciExpressGen3 = 0xB1,
1493 SlotTypePciExpressGen3X1 = 0xB2,
1494 SlotTypePciExpressGen3X2 = 0xB3,
1495 SlotTypePciExpressGen3X4 = 0xB4,
1496 SlotTypePciExpressGen3X8 = 0xB5,
1497 SlotTypePciExpressGen3X16 = 0xB6,
1498 SlotTypePciExpressGen4 = 0xB8,
1499 SlotTypePciExpressGen4X1 = 0xB9,
1500 SlotTypePciExpressGen4X2 = 0xBA,
1501 SlotTypePciExpressGen4X4 = 0xBB,
1502 SlotTypePciExpressGen4X8 = 0xBC,
1503 SlotTypePciExpressGen4X16 = 0xBD,
1504 SlotTypePCIExpressGen5 = 0xBE,
1505 SlotTypePCIExpressGen5X1 = 0xBF,
1506 SlotTypePCIExpressGen5X2 = 0xC0,
1507 SlotTypePCIExpressGen5X4 = 0xC1,
1508 SlotTypePCIExpressGen5X8 = 0xC2,
1509 SlotTypePCIExpressGen5X16 = 0xC3,
1510 SlotTypePCIExpressGen6andBeyond = 0xC4,
1511 SlotTypeEnterpriseandDatacenter1UE1FormFactorSlot = 0xC5,
1512 SlotTypeEnterpriseandDatacenter3E3FormFactorSlot = 0xC6
1514
1518typedef enum {
1519 SlotDataBusWidthOther = 0x01,
1520 SlotDataBusWidthUnknown = 0x02,
1521 SlotDataBusWidth8Bit = 0x03,
1522 SlotDataBusWidth16Bit = 0x04,
1523 SlotDataBusWidth32Bit = 0x05,
1524 SlotDataBusWidth64Bit = 0x06,
1525 SlotDataBusWidth128Bit = 0x07,
1532 SlotDataBusWidth32X = 0x0E
1534
1538typedef enum {
1539 SlotPhysicalWidthOther = 0x01,
1540 SlotPhysicalWidthUnknown = 0x02,
1541 SlotPhysicalWidth8Bit = 0x03,
1542 SlotPhysicalWidth16Bit = 0x04,
1543 SlotPhysicalWidth32Bit = 0x05,
1544 SlotPhysicalWidth64Bit = 0x06,
1545 SlotPhysicalWidth128Bit = 0x07,
1552 SlotPhysicalWidth32X = 0x0E
1554
1558typedef enum {
1559 Others = 0x00,
1560 Gen1 = 0x01,
1561 Gen2 = 0x01,
1562 Gen3 = 0x03,
1563 Gen4 = 0x04,
1564 Gen5 = 0x05,
1565 Gen6 = 0x06
1567
1571typedef enum {
1572 SlotUsageOther = 0x01,
1573 SlotUsageUnknown = 0x02,
1574 SlotUsageAvailable = 0x03,
1575 SlotUsageInUse = 0x04,
1576 SlotUsageUnavailable = 0x05
1578
1582typedef enum {
1583 SlotLengthOther = 0x01,
1584 SlotLengthUnknown = 0x02,
1585 SlotLengthShort = 0x03,
1586 SlotLengthLong = 0x04
1588
1592typedef struct {
1593 UINT8 CharacteristicsUnknown : 1;
1594 UINT8 Provides50Volts : 1;
1595 UINT8 Provides33Volts : 1;
1596 UINT8 SharedSlot : 1;
1597 UINT8 PcCard16Supported : 1;
1598 UINT8 CardBusSupported : 1;
1599 UINT8 ZoomVideoSupported : 1;
1600 UINT8 ModemRingResumeSupported : 1;
1605typedef struct {
1606 UINT8 PmeSignalSupported : 1;
1607 UINT8 HotPlugDevicesSupported : 1;
1608 UINT8 SmbusSignalSupported : 1;
1609 UINT8 BifurcationSupported : 1;
1610 UINT8 AsyncSurpriseRemoval : 1;
1611 UINT8 FlexbusSlotCxl10Capable : 1;
1612 UINT8 FlexbusSlotCxl20Capable : 1;
1613 UINT8 FlexbusSlotCxl30Capable : 1;
1615
1619typedef enum {
1620 SlotHeightNone = 0x00,
1621 SlotHeightOther = 0x01,
1622 SlotHeightUnknown = 0x02,
1623 SlotHeightFullHeight = 0x03,
1624 SlotHeightLowProfile = 0x04
1626
1630typedef struct {
1631 UINT16 SegmentGroupNum;
1632 UINT8 BusNum;
1633 UINT8 DevFuncNum;
1634 UINT8 DataBusWidth;
1636
1644typedef struct {
1645 SMBIOS_STRUCTURE Hdr;
1646 SMBIOS_TABLE_STRING SlotDesignation;
1647 UINT8 SlotType;
1651 UINT16 SlotID;
1652 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1;
1653 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2;
1654 //
1655 // Add for smbios 2.6
1656 //
1657 UINT16 SegmentGroupNum;
1658 UINT8 BusNum;
1659 UINT8 DevFuncNum;
1660 //
1661 // Add for smbios 3.2
1662 //
1663 UINT8 DataBusWidth;
1664 UINT8 PeerGroupingCount;
1665 MISC_SLOT_PEER_GROUP PeerGroups[1];
1666 //
1667 // Since PeerGroups has a variable number of entries, must not define new
1668 // fields in the structure. Remaining fields can be referenced using
1669 // SMBIOS_TABLE_TYPE9_EXTENDED structure
1670 //
1672
1676typedef struct {
1677 //
1678 // Add for smbios 3.4
1679 //
1680 UINT8 SlotInformation;
1681 UINT8 SlotPhysicalWidth;
1682 UINT16 SlotPitch;
1683 //
1684 // Add for smbios 3.5
1685 //
1688
1692typedef enum {
1693 OnBoardDeviceTypeOther = 0x01,
1694 OnBoardDeviceTypeUnknown = 0x02,
1695 OnBoardDeviceTypeVideo = 0x03,
1696 OnBoardDeviceTypeScsiController = 0x04,
1697 OnBoardDeviceTypeEthernet = 0x05,
1698 OnBoardDeviceTypeTokenRing = 0x06,
1699 OnBoardDeviceTypeSound = 0x07,
1700 OnBoardDeviceTypePATAController = 0x08,
1701 OnBoardDeviceTypeSATAController = 0x09,
1702 OnBoardDeviceTypeSASController = 0x0A
1704
1708typedef struct {
1711 SMBIOS_TABLE_STRING DescriptionString;
1713
1724typedef struct {
1725 SMBIOS_STRUCTURE Hdr;
1726 DEVICE_STRUCT Device[1];
1728
1734typedef struct {
1735 SMBIOS_STRUCTURE Hdr;
1736 UINT8 StringCount;
1738
1744typedef struct {
1745 SMBIOS_STRUCTURE Hdr;
1746 UINT8 StringCount;
1748
1754typedef struct {
1755 SMBIOS_STRUCTURE Hdr;
1756 UINT8 InstallableLanguages;
1757 UINT8 Flags;
1758 UINT8 Reserved[15];
1759 SMBIOS_TABLE_STRING CurrentLanguages;
1761
1765typedef struct {
1766 UINT8 ItemType;
1767 UINT16 ItemHandle;
1768} GROUP_STRUCT;
1769
1777typedef struct {
1778 SMBIOS_STRUCTURE Hdr;
1779 SMBIOS_TABLE_STRING GroupName;
1780 GROUP_STRUCT Group[1];
1782
1786typedef enum {
1787 EventLogTypeReserved = 0x00,
1788 EventLogTypeSingleBitECC = 0x01,
1789 EventLogTypeMultiBitECC = 0x02,
1790 EventLogTypeParityMemErr = 0x03,
1791 EventLogTypeBusTimeOut = 0x04,
1792 EventLogTypeIOChannelCheck = 0x05,
1793 EventLogTypeSoftwareNMI = 0x06,
1794 EventLogTypePOSTMemResize = 0x07,
1795 EventLogTypePOSTErr = 0x08,
1796 EventLogTypePCIParityErr = 0x09,
1797 EventLogTypePCISystemErr = 0x0A,
1798 EventLogTypeCPUFailure = 0x0B,
1799 EventLogTypeEISATimeOut = 0x0C,
1800 EventLogTypeMemLogDisabled = 0x0D,
1801 EventLogTypeLoggingDisabled = 0x0E,
1802 EventLogTypeSysLimitExce = 0x10,
1803 EventLogTypeAsyncHWTimer = 0x11,
1804 EventLogTypeSysConfigInfo = 0x12,
1805 EventLogTypeHDInfo = 0x13,
1806 EventLogTypeSysReconfig = 0x14,
1807 EventLogTypeUncorrectCPUErr = 0x15,
1808 EventLogTypeAreaResetAndClr = 0x16,
1809 EventLogTypeSystemBoot = 0x17,
1812 EventLogTypeEndOfLog = 0xFF
1814
1818typedef enum {
1819 EventLogVariableNone = 0x00,
1820 EventLogVariableHandle = 0x01,
1821 EventLogVariableMutilEvent = 0x02,
1822 EventLogVariableMutilEventHandle = 0x03,
1823 EventLogVariablePOSTResultBitmap = 0x04,
1824 EventLogVariableSysManagementType = 0x05,
1825 EventLogVariableMutliEventSysManagmentType = 0x06,
1826 EventLogVariableUnused = 0x07,
1827 EventLogVariableOEMAssigned = 0x80
1829
1833typedef struct {
1834 UINT8 LogType;
1835 UINT8 DataFormatType;
1837
1846typedef struct {
1847 SMBIOS_STRUCTURE Hdr;
1848 UINT16 LogAreaLength;
1849 UINT16 LogHeaderStartOffset;
1850 UINT16 LogDataStartOffset;
1851 UINT8 AccessMethod;
1852 UINT8 LogStatus;
1853 UINT32 LogChangeToken;
1854 UINT32 AccessMethodAddress;
1855 UINT8 LogHeaderFormat;
1856 UINT8 NumberOfSupportedLogTypeDescriptors;
1857 UINT8 LengthOfLogTypeDescriptor;
1858 EVENT_LOG_TYPE EventLogTypeDescriptors[1];
1860
1864typedef enum {
1865 MemoryArrayLocationOther = 0x01,
1866 MemoryArrayLocationUnknown = 0x02,
1867 MemoryArrayLocationSystemBoard = 0x03,
1868 MemoryArrayLocationIsaAddonCard = 0x04,
1869 MemoryArrayLocationEisaAddonCard = 0x05,
1870 MemoryArrayLocationPciAddonCard = 0x06,
1871 MemoryArrayLocationMcaAddonCard = 0x07,
1872 MemoryArrayLocationPcmciaAddonCard = 0x08,
1873 MemoryArrayLocationProprietaryAddonCard = 0x09,
1874 MemoryArrayLocationNuBus = 0x0A,
1875 MemoryArrayLocationPc98C20AddonCard = 0xA0,
1876 MemoryArrayLocationPc98C24AddonCard = 0xA1,
1877 MemoryArrayLocationPc98EAddonCard = 0xA2,
1878 MemoryArrayLocationPc98LocalBusAddonCard = 0xA3,
1879 MemoryArrayLocationCXLAddonCard = 0xA4
1881
1885typedef enum {
1886 MemoryArrayUseOther = 0x01,
1887 MemoryArrayUseUnknown = 0x02,
1888 MemoryArrayUseSystemMemory = 0x03,
1889 MemoryArrayUseVideoMemory = 0x04,
1890 MemoryArrayUseFlashMemory = 0x05,
1891 MemoryArrayUseNonVolatileRam = 0x06,
1892 MemoryArrayUseCacheMemory = 0x07
1894
1898typedef enum {
1899 MemoryErrorCorrectionOther = 0x01,
1900 MemoryErrorCorrectionUnknown = 0x02,
1901 MemoryErrorCorrectionNone = 0x03,
1902 MemoryErrorCorrectionParity = 0x04,
1903 MemoryErrorCorrectionSingleBitEcc = 0x05,
1904 MemoryErrorCorrectionMultiBitEcc = 0x06,
1905 MemoryErrorCorrectionCrc = 0x07
1907
1914typedef struct {
1915 SMBIOS_STRUCTURE Hdr;
1916 UINT8 Location;
1917 UINT8 Use;
1919 UINT32 MaximumCapacity;
1920 UINT16 MemoryErrorInformationHandle;
1921 UINT16 NumberOfMemoryDevices;
1922 //
1923 // Add for smbios 2.7
1924 //
1925 UINT64 ExtendedMaximumCapacity;
1927
1931typedef enum {
1932 MemoryFormFactorOther = 0x01,
1933 MemoryFormFactorUnknown = 0x02,
1934 MemoryFormFactorSimm = 0x03,
1935 MemoryFormFactorSip = 0x04,
1936 MemoryFormFactorChip = 0x05,
1937 MemoryFormFactorDip = 0x06,
1938 MemoryFormFactorZip = 0x07,
1939 MemoryFormFactorProprietaryCard = 0x08,
1940 MemoryFormFactorDimm = 0x09,
1941 MemoryFormFactorTsop = 0x0A,
1942 MemoryFormFactorRowOfChips = 0x0B,
1943 MemoryFormFactorRimm = 0x0C,
1944 MemoryFormFactorSodimm = 0x0D,
1945 MemoryFormFactorSrimm = 0x0E,
1946 MemoryFormFactorFbDimm = 0x0F,
1947 MemoryFormFactorDie = 0x10,
1948 MemoryFormFactorCamm = 0x11,
1952
1956typedef enum {
1957 MemoryTypeOther = 0x01,
1958 MemoryTypeUnknown = 0x02,
1959 MemoryTypeDram = 0x03,
1960 MemoryTypeEdram = 0x04,
1961 MemoryTypeVram = 0x05,
1962 MemoryTypeSram = 0x06,
1963 MemoryTypeRam = 0x07,
1964 MemoryTypeRom = 0x08,
1965 MemoryTypeFlash = 0x09,
1966 MemoryTypeEeprom = 0x0A,
1967 MemoryTypeFeprom = 0x0B,
1968 MemoryTypeEprom = 0x0C,
1969 MemoryTypeCdram = 0x0D,
1970 MemoryType3Dram = 0x0E,
1971 MemoryTypeSdram = 0x0F,
1972 MemoryTypeSgram = 0x10,
1973 MemoryTypeRdram = 0x11,
1974 MemoryTypeDdr = 0x12,
1975 MemoryTypeDdr2 = 0x13,
1976 MemoryTypeDdr2FbDimm = 0x14,
1977 MemoryTypeDdr3 = 0x18,
1978 MemoryTypeFbd2 = 0x19,
1979 MemoryTypeDdr4 = 0x1A,
1980 MemoryTypeLpddr = 0x1B,
1981 MemoryTypeLpddr2 = 0x1C,
1982 MemoryTypeLpddr3 = 0x1D,
1983 MemoryTypeLpddr4 = 0x1E,
1984 MemoryTypeLogicalNonVolatileDevice = 0x1F,
1985 MemoryTypeHBM = 0x20,
1986 MemoryTypeHBM2 = 0x21,
1987 MemoryTypeDdr5 = 0x22,
1988 MemoryTypeLpddr5 = 0x23,
1989 MemoryTypeHBM3 = 0x24,
1990 MemoryTypeMrDimm = 0x25
1992
1996typedef struct {
1997 UINT16 Reserved : 1;
1998 UINT16 Other : 1;
1999 UINT16 Unknown : 1;
2000 UINT16 FastPaged : 1;
2001 UINT16 StaticColumn : 1;
2002 UINT16 PseudoStatic : 1;
2003 UINT16 Rambus : 1;
2004 UINT16 Synchronous : 1;
2005 UINT16 Cmos : 1;
2006 UINT16 Edo : 1;
2007 UINT16 WindowDram : 1;
2008 UINT16 CacheDram : 1;
2009 UINT16 Nonvolatile : 1;
2010 UINT16 Registered : 1;
2011 UINT16 Unbuffered : 1;
2012 UINT16 LrDimm : 1;
2014
2018typedef enum {
2019 MemoryTechnologyOther = 0x01,
2020 MemoryTechnologyUnknown = 0x02,
2021 MemoryTechnologyDram = 0x03,
2022 MemoryTechnologyNvdimmN = 0x04,
2023 MemoryTechnologyNvdimmF = 0x05,
2024 MemoryTechnologyNvdimmP = 0x06,
2025 //
2026 // This definition is updated to represent Intel
2027 // Optane DC Persistent Memory in SMBIOS spec 3.4.0
2028 //
2029 MemoryTechnologyIntelOptanePersistentMemory = 0x07,
2032
2036typedef union {
2040 struct {
2041 UINT16 Reserved : 1;
2042 UINT16 Other : 1;
2043 UINT16 Unknown : 1;
2044 UINT16 VolatileMemory : 1;
2045 UINT16 ByteAccessiblePersistentMemory : 1;
2046 UINT16 BlockAccessiblePersistentMemory : 1;
2047 UINT16 Reserved2 : 10;
2048 } Bits;
2052 UINT16 Uint16;
2054
2064typedef struct {
2065 SMBIOS_STRUCTURE Hdr;
2066 UINT16 MemoryArrayHandle;
2067 UINT16 MemoryErrorInformationHandle;
2068 UINT16 TotalWidth;
2069 UINT16 DataWidth;
2070 UINT16 Size;
2072 UINT8 DeviceSet;
2073 SMBIOS_TABLE_STRING DeviceLocator;
2074 SMBIOS_TABLE_STRING BankLocator;
2076 MEMORY_DEVICE_TYPE_DETAIL TypeDetail;
2077 UINT16 Speed;
2078 SMBIOS_TABLE_STRING Manufacturer;
2079 SMBIOS_TABLE_STRING SerialNumber;
2080 SMBIOS_TABLE_STRING AssetTag;
2081 SMBIOS_TABLE_STRING PartNumber;
2082 //
2083 // Add for smbios 2.6
2084 //
2085 UINT8 Attributes;
2086 //
2087 // Add for smbios 2.7
2088 //
2089 UINT32 ExtendedSize;
2090 //
2091 // Keep using name "ConfiguredMemoryClockSpeed" for compatibility
2092 // although this field is renamed from "Configured Memory Clock Speed"
2093 // to "Configured Memory Speed" in smbios 3.2.0.
2094 //
2095 UINT16 ConfiguredMemoryClockSpeed;
2096 //
2097 // Add for smbios 2.8.0
2098 //
2099 UINT16 MinimumVoltage;
2100 UINT16 MaximumVoltage;
2101 UINT16 ConfiguredVoltage;
2102 //
2103 // Add for smbios 3.2.0
2104 //
2106 MEMORY_DEVICE_OPERATING_MODE_CAPABILITY MemoryOperatingModeCapability;
2107 SMBIOS_TABLE_STRING FirmwareVersion;
2108 UINT16 ModuleManufacturerID;
2109 UINT16 ModuleProductID;
2110 UINT16 MemorySubsystemControllerManufacturerID;
2111 UINT16 MemorySubsystemControllerProductID;
2112 UINT64 NonVolatileSize;
2113 UINT64 VolatileSize;
2114 UINT64 CacheSize;
2115 UINT64 LogicalSize;
2116 //
2117 // Add for smbios 3.3.0
2118 //
2119 UINT32 ExtendedSpeed;
2120 UINT32 ExtendedConfiguredMemorySpeed;
2121 //
2122 // Add for smbios 3.7.0
2123 //
2124 UINT16 Pmic0ManufacturerID;
2125 UINT16 Pmic0RevisionNumber;
2126 UINT16 RcdManufacturerID;
2127 UINT16 RcdRevisionNumber;
2129
2133typedef enum {
2134 MemoryErrorOther = 0x01,
2135 MemoryErrorUnknown = 0x02,
2136 MemoryErrorOk = 0x03,
2137 MemoryErrorBadRead = 0x04,
2138 MemoryErrorParity = 0x05,
2139 MemoryErrorSigleBit = 0x06,
2140 MemoryErrorDoubleBit = 0x07,
2141 MemoryErrorMultiBit = 0x08,
2142 MemoryErrorNibble = 0x09,
2143 MemoryErrorChecksum = 0x0A,
2144 MemoryErrorCrc = 0x0B,
2145 MemoryErrorCorrectSingleBit = 0x0C,
2146 MemoryErrorCorrected = 0x0D,
2147 MemoryErrorUnCorrectable = 0x0E
2149
2153typedef enum {
2154 MemoryGranularityOther = 0x01,
2155 MemoryGranularityOtherUnknown = 0x02,
2156 MemoryGranularityDeviceLevel = 0x03,
2157 MemoryGranularityMemPartitionLevel = 0x04
2159
2163typedef enum {
2164 MemoryErrorOperationOther = 0x01,
2165 MemoryErrorOperationUnknown = 0x02,
2166 MemoryErrorOperationRead = 0x03,
2167 MemoryErrorOperationWrite = 0x04,
2168 MemoryErrorOperationPartialWrite = 0x05
2170
2177typedef struct {
2178 SMBIOS_STRUCTURE Hdr;
2182 UINT32 VendorSyndrome;
2183 UINT32 MemoryArrayErrorAddress;
2184 UINT32 DeviceErrorAddress;
2185 UINT32 ErrorResolution;
2187
2194typedef struct {
2195 SMBIOS_STRUCTURE Hdr;
2196 UINT32 StartingAddress;
2197 UINT32 EndingAddress;
2198 UINT16 MemoryArrayHandle;
2199 UINT8 PartitionWidth;
2200 //
2201 // Add for smbios 2.7
2202 //
2203 UINT64 ExtendedStartingAddress;
2204 UINT64 ExtendedEndingAddress;
2206
2213typedef struct {
2214 SMBIOS_STRUCTURE Hdr;
2215 UINT32 StartingAddress;
2216 UINT32 EndingAddress;
2217 UINT16 MemoryDeviceHandle;
2218 UINT16 MemoryArrayMappedAddressHandle;
2219 UINT8 PartitionRowPosition;
2220 UINT8 InterleavePosition;
2221 UINT8 InterleavedDataDepth;
2222 //
2223 // Add for smbios 2.7
2224 //
2225 UINT64 ExtendedStartingAddress;
2226 UINT64 ExtendedEndingAddress;
2228
2232typedef enum {
2233 PointingDeviceTypeOther = 0x01,
2234 PointingDeviceTypeUnknown = 0x02,
2235 PointingDeviceTypeMouse = 0x03,
2236 PointingDeviceTypeTrackBall = 0x04,
2237 PointingDeviceTypeTrackPoint = 0x05,
2238 PointingDeviceTypeGlidePoint = 0x06,
2239 PointingDeviceTouchPad = 0x07,
2240 PointingDeviceTouchScreen = 0x08,
2241 PointingDeviceOpticalSensor = 0x09
2243
2247typedef enum {
2248 PointingDeviceInterfaceOther = 0x01,
2249 PointingDeviceInterfaceUnknown = 0x02,
2250 PointingDeviceInterfaceSerial = 0x03,
2251 PointingDeviceInterfacePs2 = 0x04,
2252 PointingDeviceInterfaceInfrared = 0x05,
2253 PointingDeviceInterfaceHpHil = 0x06,
2254 PointingDeviceInterfaceBusMouse = 0x07,
2255 PointingDeviceInterfaceADB = 0x08,
2256 PointingDeviceInterfaceBusMouseDB9 = 0xA0,
2257 PointingDeviceInterfaceBusMouseMicroDin = 0xA1,
2258 PointingDeviceInterfaceUsb = 0xA2,
2259 PointingDeviceInterfaceI2c = 0xA3,
2260 PointingDeviceInterfaceSpi = 0xA4
2262
2270typedef struct {
2271 SMBIOS_STRUCTURE Hdr;
2272 UINT8 Type;
2274 UINT8 NumberOfButtons;
2276
2280typedef enum {
2281 PortableBatteryDeviceChemistryOther = 0x01,
2282 PortableBatteryDeviceChemistryUnknown = 0x02,
2283 PortableBatteryDeviceChemistryLeadAcid = 0x03,
2284 PortableBatteryDeviceChemistryNickelCadmium = 0x04,
2285 PortableBatteryDeviceChemistryNickelMetalHydride = 0x05,
2286 PortableBatteryDeviceChemistryLithiumIon = 0x06,
2287 PortableBatteryDeviceChemistryZincAir = 0x07,
2288 PortableBatteryDeviceChemistryLithiumPolymer = 0x08
2290
2298typedef struct {
2299 SMBIOS_STRUCTURE Hdr;
2300 SMBIOS_TABLE_STRING Location;
2301 SMBIOS_TABLE_STRING Manufacturer;
2302 SMBIOS_TABLE_STRING ManufactureDate;
2303 SMBIOS_TABLE_STRING SerialNumber;
2304 SMBIOS_TABLE_STRING DeviceName;
2306 UINT16 DeviceCapacity;
2307 UINT16 DesignVoltage;
2308 SMBIOS_TABLE_STRING SBDSVersionNumber;
2309 UINT8 MaximumErrorInBatteryData;
2310 UINT16 SBDSSerialNumber;
2311 UINT16 SBDSManufactureDate;
2312 SMBIOS_TABLE_STRING SBDSDeviceChemistry;
2313 UINT8 DesignCapacityMultiplier;
2314 UINT32 OEMSpecific;
2316
2326typedef struct {
2327 SMBIOS_STRUCTURE Hdr;
2328 UINT8 Capabilities;
2329 UINT16 ResetCount;
2330 UINT16 ResetLimit;
2331 UINT16 TimerInterval;
2332 UINT16 Timeout;
2334
2340typedef struct {
2341 SMBIOS_STRUCTURE Hdr;
2342 UINT8 HardwareSecuritySettings;
2344
2353typedef struct {
2354 SMBIOS_STRUCTURE Hdr;
2355 UINT8 NextScheduledPowerOnMonth;
2356 UINT8 NextScheduledPowerOnDayOfMonth;
2357 UINT8 NextScheduledPowerOnHour;
2358 UINT8 NextScheduledPowerOnMinute;
2359 UINT8 NextScheduledPowerOnSecond;
2361
2365typedef struct {
2366 UINT8 VoltageProbeSite : 5;
2367 UINT8 VoltageProbeStatus : 3;
2369
2376typedef struct {
2377 SMBIOS_STRUCTURE Hdr;
2378 SMBIOS_TABLE_STRING Description;
2379 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus;
2380 UINT16 MaximumValue;
2381 UINT16 MinimumValue;
2382 UINT16 Resolution;
2383 UINT16 Tolerance;
2384 UINT16 Accuracy;
2385 UINT32 OEMDefined;
2386 UINT16 NominalValue;
2388
2392typedef struct {
2393 UINT8 CoolingDevice : 5;
2394 UINT8 CoolingDeviceStatus : 3;
2396
2403typedef struct {
2404 SMBIOS_STRUCTURE Hdr;
2405 UINT16 TemperatureProbeHandle;
2406 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus;
2407 UINT8 CoolingUnitGroup;
2408 UINT32 OEMDefined;
2409 UINT16 NominalSpeed;
2410 //
2411 // Add for smbios 2.7
2412 //
2413 SMBIOS_TABLE_STRING Description;
2415
2419typedef struct {
2420 UINT8 TemperatureProbeSite : 5;
2421 UINT8 TemperatureProbeStatus : 3;
2423
2430typedef struct {
2431 SMBIOS_STRUCTURE Hdr;
2432 SMBIOS_TABLE_STRING Description;
2433 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus;
2434 UINT16 MaximumValue;
2435 UINT16 MinimumValue;
2436 UINT16 Resolution;
2437 UINT16 Tolerance;
2438 UINT16 Accuracy;
2439 UINT32 OEMDefined;
2440 UINT16 NominalValue;
2442
2446typedef struct {
2447 UINT8 ElectricalCurrentProbeSite : 5;
2448 UINT8 ElectricalCurrentProbeStatus : 3;
2450
2457typedef struct {
2458 SMBIOS_STRUCTURE Hdr;
2459 SMBIOS_TABLE_STRING Description;
2461 UINT16 MaximumValue;
2462 UINT16 MinimumValue;
2463 UINT16 Resolution;
2464 UINT16 Tolerance;
2465 UINT16 Accuracy;
2466 UINT32 OEMDefined;
2467 UINT16 NominalValue;
2469
2477typedef struct {
2478 SMBIOS_STRUCTURE Hdr;
2479 SMBIOS_TABLE_STRING ManufacturerName;
2480 UINT8 Connections;
2482
2488typedef struct {
2489 SMBIOS_STRUCTURE Hdr;
2490 UINT8 Checksum;
2491 UINT8 Reserved1;
2492 UINT16 Reserved2;
2493 UINT32 BisEntry16;
2494 UINT32 BisEntry32;
2495 UINT64 Reserved3;
2496 UINT32 Reserved4;
2498
2502typedef enum {
2503 BootInformationStatusNoError = 0x00,
2504 BootInformationStatusNoBootableMedia = 0x01,
2505 BootInformationStatusNormalOSFailedLoading = 0x02,
2506 BootInformationStatusFirmwareDetectedFailure = 0x03,
2507 BootInformationStatusOSDetectedFailure = 0x04,
2508 BootInformationStatusUserRequestedBoot = 0x05,
2509 BootInformationStatusSystemSecurityViolation = 0x06,
2510 BootInformationStatusPreviousRequestedImage = 0x07,
2511 BootInformationStatusWatchdogTimerExpired = 0x08,
2512 BootInformationStatusStartReserved = 0x09,
2513 BootInformationStatusStartOemSpecific = 0x80,
2514 BootInformationStatusStartProductSpecific = 0xC0
2516
2528typedef struct {
2529 SMBIOS_STRUCTURE Hdr;
2530 UINT8 Reserved[6];
2533
2540typedef struct {
2541 SMBIOS_STRUCTURE Hdr;
2545 UINT32 VendorSyndrome;
2546 UINT64 MemoryArrayErrorAddress;
2547 UINT64 DeviceErrorAddress;
2548 UINT32 ErrorResolution;
2550
2554typedef enum {
2555 ManagementDeviceTypeOther = 0x01,
2556 ManagementDeviceTypeUnknown = 0x02,
2557 ManagementDeviceTypeLm75 = 0x03,
2558 ManagementDeviceTypeLm78 = 0x04,
2559 ManagementDeviceTypeLm79 = 0x05,
2560 ManagementDeviceTypeLm80 = 0x06,
2561 ManagementDeviceTypeLm81 = 0x07,
2562 ManagementDeviceTypeAdm9240 = 0x08,
2563 ManagementDeviceTypeDs1780 = 0x09,
2564 ManagementDeviceTypeMaxim1617 = 0x0A,
2565 ManagementDeviceTypeGl518Sm = 0x0B,
2566 ManagementDeviceTypeW83781D = 0x0C,
2567 ManagementDeviceTypeHt82H791 = 0x0D
2569
2573typedef enum {
2574 ManagementDeviceAddressTypeOther = 0x01,
2575 ManagementDeviceAddressTypeUnknown = 0x02,
2576 ManagementDeviceAddressTypeIOPort = 0x03,
2577 ManagementDeviceAddressTypeMemory = 0x04,
2578 ManagementDeviceAddressTypeSmbus = 0x05
2580
2588typedef struct {
2589 SMBIOS_STRUCTURE Hdr;
2590 SMBIOS_TABLE_STRING Description;
2591 UINT8 Type;
2592 UINT32 Address;
2595
2602typedef struct {
2603 SMBIOS_STRUCTURE Hdr;
2604 SMBIOS_TABLE_STRING Description;
2605 UINT16 ManagementDeviceHandle;
2606 UINT16 ComponentHandle;
2607 UINT16 ThresholdHandle;
2609
2616typedef struct {
2617 SMBIOS_STRUCTURE Hdr;
2618 UINT16 LowerThresholdNonCritical;
2619 UINT16 UpperThresholdNonCritical;
2620 UINT16 LowerThresholdCritical;
2621 UINT16 UpperThresholdCritical;
2622 UINT16 LowerThresholdNonRecoverable;
2623 UINT16 UpperThresholdNonRecoverable;
2625
2629typedef struct {
2630 UINT8 DeviceLoad;
2631 UINT16 DeviceHandle;
2633
2637typedef enum {
2638 MemoryChannelTypeOther = 0x01,
2639 MemoryChannelTypeUnknown = 0x02,
2640 MemoryChannelTypeRambus = 0x03,
2641 MemoryChannelTypeSyncLink = 0x04
2643
2651typedef struct {
2652 SMBIOS_STRUCTURE Hdr;
2653 UINT8 ChannelType;
2654 UINT8 MaximumChannelLoad;
2655 UINT8 MemoryDeviceCount;
2656 MEMORY_DEVICE MemoryDevice[1];
2658
2662typedef enum {
2663 IPMIDeviceInfoInterfaceTypeUnknown = 0x00,
2669
2681typedef struct {
2682 SMBIOS_STRUCTURE Hdr;
2684 UINT8 IPMISpecificationRevision;
2685 UINT8 I2CSlaveAddress;
2686 UINT8 NVStorageDeviceAddress;
2687 UINT64 BaseAddress;
2688 UINT8 BaseAddressModifier_InterruptInfo;
2689 UINT8 InterruptNumber;
2691
2695typedef struct {
2696 UINT16 PowerSupplyHotReplaceable : 1;
2697 UINT16 PowerSupplyPresent : 1;
2698 UINT16 PowerSupplyUnplugged : 1;
2699 UINT16 InputVoltageRangeSwitch : 4;
2700 UINT16 PowerSupplyStatus : 3;
2701 UINT16 PowerSupplyType : 4;
2702 UINT16 Reserved : 2;
2704
2711typedef struct {
2712 SMBIOS_STRUCTURE Hdr;
2713 UINT8 PowerUnitGroup;
2714 SMBIOS_TABLE_STRING Location;
2715 SMBIOS_TABLE_STRING DeviceName;
2716 SMBIOS_TABLE_STRING Manufacturer;
2717 SMBIOS_TABLE_STRING SerialNumber;
2718 SMBIOS_TABLE_STRING AssetTagNumber;
2719 SMBIOS_TABLE_STRING ModelPartNumber;
2720 SMBIOS_TABLE_STRING RevisionLevel;
2721 UINT16 MaxPowerCapacity;
2722 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;
2723 UINT16 InputVoltageProbeHandle;
2724 UINT16 CoolingDeviceHandle;
2725 UINT16 InputCurrentProbeHandle;
2727
2731typedef struct {
2732 UINT8 EntryLength;
2733 UINT16 ReferencedHandle;
2734 UINT8 ReferencedOffset;
2735 SMBIOS_TABLE_STRING EntryString;
2736 UINT8 Value[1];
2738
2745typedef struct {
2746 SMBIOS_STRUCTURE Hdr;
2747 UINT8 NumberOfAdditionalInformationEntries;
2748 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries[1];
2750
2754typedef enum {
2755 OnBoardDeviceExtendedTypeOther = 0x01,
2756 OnBoardDeviceExtendedTypeUnknown = 0x02,
2757 OnBoardDeviceExtendedTypeVideo = 0x03,
2758 OnBoardDeviceExtendedTypeScsiController = 0x04,
2759 OnBoardDeviceExtendedTypeEthernet = 0x05,
2760 OnBoardDeviceExtendedTypeTokenRing = 0x06,
2761 OnBoardDeviceExtendedTypeSound = 0x07,
2762 OnBoardDeviceExtendedTypePATAController = 0x08,
2763 OnBoardDeviceExtendedTypeSATAController = 0x09,
2764 OnBoardDeviceExtendedTypeSASController = 0x0A,
2765 OnBoardDeviceExtendedTypeWirelessLAN = 0x0B,
2766 OnBoardDeviceExtendedTypeBluetooth = 0x0C,
2767 OnBoardDeviceExtendedTypeWWAN = 0x0D,
2768 OnBoardDeviceExtendedTypeeMMC = 0x0E,
2769 OnBoardDeviceExtendedTypeNvme = 0x0F,
2770 OnBoardDeviceExtendedTypeUfc = 0x10
2772
2781typedef struct {
2782 SMBIOS_STRUCTURE Hdr;
2783 SMBIOS_TABLE_STRING ReferenceDesignation;
2785 UINT8 DeviceTypeInstance;
2786 UINT16 SegmentGroupNum;
2787 UINT8 BusNum;
2788 UINT8 DevFuncNum;
2790
2794typedef struct {
2795 UINT8 ProtocolType;
2796 UINT8 ProtocolTypeDataLen;
2797 UINT8 ProtocolTypeData[1];
2799
2804typedef enum {
2805 // MCTP Host Interface type indentifiers as defined in DSP0239
2806 MCHostInterfaceTypeKCS = 0x02,
2807 MCHostInterfaceType8250_UARTRegisterCompatible = 0x03,
2808 MCHostInterfaceType16450_UARTRegisterCompatible = 0x04,
2809 MCHostInterfaceType16550_16550A_UARTRegisterCompatible = 0x05,
2810 MCHostInterfaceType16650_16650A_UARTRegisterCompatible = 0x06,
2811 MCHostInterfaceType16750_16750A_UARTRegisterCompatible = 0x07,
2812 MCHostInterfaceType16850_16850A_UARTRegisterCompatible = 0x08,
2813 MCHostInterfaceTypeI2C_SMBUS = 0x09,
2814 MCHostInterfaceTypeI3C = 0x0A,
2815 MCHostInterfaceTypePCIeVDM = 0x0B,
2816 MCHostInterfaceTypeMMBI = 0x0C,
2817 MCHostInterfaceTypePCC = 0x0D,
2818 MCHostInterfaceTypeUCIe = 0x0E,
2819 MCHostInterfaceTypeUSB = 0x0F,
2820
2821 MCHostInterfaceTypeNetworkHostInterface = 0x40,
2822 MCHostInterfaceTypeOemDefined = 0xF0
2824
2828typedef enum {
2829 MCHostInterfaceProtocolTypeIPMI = 0x02,
2830 MCHostInterfaceProtocolTypeMCTP = 0x03,
2831 MCHostInterfaceProtocolTypeRedfishOverIP = 0x04,
2832 MCHostInterfaceProtocolTypeOemDefined = 0xF0
2834
2852typedef struct {
2853 SMBIOS_STRUCTURE Hdr;
2855 UINT8 InterfaceTypeSpecificDataLength;
2856 UINT8 InterfaceTypeSpecificData[4];
2858
2862typedef enum {
2863 ProcessorSpecificBlockArchTypeReserved = 0x00,
2864 ProcessorSpecificBlockArchTypeIa32 = 0x01,
2865 ProcessorSpecificBlockArchTypeX64 = 0x02,
2866 ProcessorSpecificBlockArchTypeItanium = 0x03,
2867 ProcessorSpecificBlockArchTypeAarch32 = 0x04,
2868 ProcessorSpecificBlockArchTypeAarch64 = 0x05,
2869 ProcessorSpecificBlockArchTypeRiscVRV32 = 0x06,
2870 ProcessorSpecificBlockArchTypeRiscVRV64 = 0x07,
2871 ProcessorSpecificBlockArchTypeRiscVRV128 = 0x08,
2872 ProcessorSpecificBlockArchTypeLoongArch32 = 0x09,
2873 ProcessorSpecificBlockArchTypeLoongArch64 = 0x0A
2875
2879typedef struct {
2880 UINT8 Length;
2881 UINT8 ProcessorArchType;
2887
2902typedef struct {
2903 SMBIOS_STRUCTURE Hdr;
2910
2914typedef struct {
2915 SMBIOS_STRUCTURE Hdr;
2916 UINT8 VendorID[4];
2917 UINT8 MajorSpecVersion;
2918 UINT8 MinorSpecVersion;
2919 UINT32 FirmwareVersion1;
2920 UINT32 FirmwareVersion2;
2921 SMBIOS_TABLE_STRING Description;
2922 UINT64 Characteristics;
2923 UINT32 OemDefined;
2925
2929typedef enum {
2930 VersionFormatTypeFreeForm = 0x00,
2931 VersionFormatTypeMajorMinor = 0x01,
2932 VersionFormatType32BitHex = 0x02,
2933 VersionFormatType64BitHex = 0x03,
2934 VersionFormatTypeReserved = 0x04,
2935 VersionFormatTypeOem = 0x80
2937
2941typedef enum {
2942 FirmwareIdFormatTypeFreeForm = 0x00,
2943 FirmwareIdFormatTypeUuid = 0x01,
2944 FirmwareIdFormatTypeReserved = 0x04,
2947
2951typedef struct {
2952 UINT16 Updatable : 1;
2953 UINT16 WriteProtected : 1;
2954 UINT16 Reserved : 14;
2956
2960typedef enum {
2961 FirmwareInventoryStateOther = 0x01,
2962 FirmwareInventoryStateUnknown = 0x02,
2963 FirmwareInventoryStateDisabled = 0x03,
2964 FirmwareInventoryStateEnabled = 0x04,
2965 FirmwareInventoryStateAbsent = 0x05,
2966 FirmwareInventoryStateStandbyOffline = 0x06,
2967 FirmwareInventoryStateStandbySpare = 0x07,
2968 FirmwareInventoryStateUnavailableOffline = 0x08
2970
2984typedef struct {
2985 SMBIOS_STRUCTURE Hdr;
2986 SMBIOS_TABLE_STRING FirmwareComponentName;
2987 SMBIOS_TABLE_STRING FirmwareVersion;
2989 SMBIOS_TABLE_STRING FirmwareId;
2991 SMBIOS_TABLE_STRING ReleaseDate;
2992 SMBIOS_TABLE_STRING Manufacturer;
2993 SMBIOS_TABLE_STRING LowestSupportedVersion;
2994 UINT64 ImageSize;
2995 FIRMWARE_CHARACTERISTICS Characteristics;
2996 UINT8 State;
2997 UINT8 AssociatedComponentCount;
3003
3007typedef enum {
3008 StringPropertyIdNone = 0x0000,
3009 StringPropertyIdDevicePath = 0x0001,
3010 StringPropertyIdReserved = 0x0002,
3012 StringPropertyIdOem = 0xC000
3014
3022typedef struct {
3023 SMBIOS_STRUCTURE Hdr;
3025 SMBIOS_TABLE_STRING StringPropertyValue;
3026 SMBIOS_HANDLE ParentHandle;
3028
3032typedef struct {
3033 SMBIOS_STRUCTURE Hdr;
3035
3039typedef struct {
3040 SMBIOS_STRUCTURE Hdr;
3042
3046typedef union {
3047 SMBIOS_STRUCTURE *Hdr;
3048 SMBIOS_TABLE_TYPE0 *Type0;
3049 SMBIOS_TABLE_TYPE1 *Type1;
3050 SMBIOS_TABLE_TYPE2 *Type2;
3051 SMBIOS_TABLE_TYPE3 *Type3;
3052 SMBIOS_TABLE_TYPE4 *Type4;
3053 SMBIOS_TABLE_TYPE5 *Type5;
3054 SMBIOS_TABLE_TYPE6 *Type6;
3055 SMBIOS_TABLE_TYPE7 *Type7;
3056 SMBIOS_TABLE_TYPE8 *Type8;
3057 SMBIOS_TABLE_TYPE9 *Type9;
3058 SMBIOS_TABLE_TYPE10 *Type10;
3059 SMBIOS_TABLE_TYPE11 *Type11;
3060 SMBIOS_TABLE_TYPE12 *Type12;
3061 SMBIOS_TABLE_TYPE13 *Type13;
3062 SMBIOS_TABLE_TYPE14 *Type14;
3063 SMBIOS_TABLE_TYPE15 *Type15;
3064 SMBIOS_TABLE_TYPE16 *Type16;
3065 SMBIOS_TABLE_TYPE17 *Type17;
3066 SMBIOS_TABLE_TYPE18 *Type18;
3067 SMBIOS_TABLE_TYPE19 *Type19;
3068 SMBIOS_TABLE_TYPE20 *Type20;
3069 SMBIOS_TABLE_TYPE21 *Type21;
3070 SMBIOS_TABLE_TYPE22 *Type22;
3071 SMBIOS_TABLE_TYPE23 *Type23;
3072 SMBIOS_TABLE_TYPE24 *Type24;
3073 SMBIOS_TABLE_TYPE25 *Type25;
3074 SMBIOS_TABLE_TYPE26 *Type26;
3075 SMBIOS_TABLE_TYPE27 *Type27;
3076 SMBIOS_TABLE_TYPE28 *Type28;
3077 SMBIOS_TABLE_TYPE29 *Type29;
3078 SMBIOS_TABLE_TYPE30 *Type30;
3079 SMBIOS_TABLE_TYPE31 *Type31;
3080 SMBIOS_TABLE_TYPE32 *Type32;
3081 SMBIOS_TABLE_TYPE33 *Type33;
3082 SMBIOS_TABLE_TYPE34 *Type34;
3083 SMBIOS_TABLE_TYPE35 *Type35;
3084 SMBIOS_TABLE_TYPE36 *Type36;
3085 SMBIOS_TABLE_TYPE37 *Type37;
3086 SMBIOS_TABLE_TYPE38 *Type38;
3087 SMBIOS_TABLE_TYPE39 *Type39;
3088 SMBIOS_TABLE_TYPE40 *Type40;
3089 SMBIOS_TABLE_TYPE41 *Type41;
3090 SMBIOS_TABLE_TYPE42 *Type42;
3091 SMBIOS_TABLE_TYPE43 *Type43;
3092 SMBIOS_TABLE_TYPE44 *Type44;
3093 SMBIOS_TABLE_TYPE45 *Type45;
3094 SMBIOS_TABLE_TYPE46 *Type46;
3095 SMBIOS_TABLE_TYPE126 *Type126;
3096 SMBIOS_TABLE_TYPE127 *Type127;
3097 UINT8 *Raw;
3099
3100#pragma pack()
3101
3102#endif
MEMORY_ERROR_DETECT_METHOD
Definition: SmBios.h:1080
MEMORY_ERROR_CORRECTION
Definition: SmBios.h:1898
MEMORY_CHANNEL_TYPE
Definition: SmBios.h:2637
MISC_SLOT_INFORMATION
Definition: SmBios.h:1558
MISC_ONBOARD_DEVICE_TYPE
Definition: SmBios.h:1692
MEMORY_ERROR_GRANULARITY
Definition: SmBios.h:2153
FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE
Definition: SmBios.h:2941
@ InventoryFirmwareIdFormatTypeOem
0x04 - 0x7F are reserved
Definition: SmBios.h:2945
MISC_SYSTEM_WAKEUP_TYPE
Definition: SmBios.h:333
MEMORY_DEVICE_TYPE
Definition: SmBios.h:1956
@ MemoryTypeMrDimm
SMBIOS spec 3.9.0 CR248.
Definition: SmBios.h:1990
BMC_INTERFACE_TYPE
Definition: SmBios.h:2662
@ IPMIDeviceInfoInterfaceTypeSMIC
The Server Management Interface Chip.
Definition: SmBios.h:2665
@ IPMIDeviceInfoInterfaceTypeBT
The Block Transfer.
Definition: SmBios.h:2666
@ IPMIDeviceInfoInterfaceTypeKCS
The Keyboard Controller Style.
Definition: SmBios.h:2664
@ IPMIDeviceInfoInterfaceTypeSSIF
SMBus System Interface.
Definition: SmBios.h:2667
BASE_BOARD_TYPE
Definition: SmBios.h:380
MISC_MANAGEMENT_DEVICE_TYPE
Definition: SmBios.h:2554
MISC_SLOT_USAGE
Definition: SmBios.h:1571
MISC_SLOT_PHYSICAL_WIDTH
Definition: SmBios.h:1538
@ SlotPhysicalWidth12X
Or X12.
Definition: SmBios.h:1550
@ SlotPhysicalWidth8X
Or X8.
Definition: SmBios.h:1549
@ SlotPhysicalWidth1X
Or X1.
Definition: SmBios.h:1546
@ SlotPhysicalWidth2X
Or X2.
Definition: SmBios.h:1547
@ SlotPhysicalWidth32X
Or X32.
Definition: SmBios.h:1552
@ SlotPhysicalWidth16X
Or X16.
Definition: SmBios.h:1551
@ SlotPhysicalWidth4X
Or X4.
Definition: SmBios.h:1548
PROCESSOR_FAMILY2_DATA
Definition: SmBios.h:775
MC_HOST_INTERFACE_PROTOCOL_TYPE
Definition: SmBios.h:2828
MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
Definition: SmBios.h:2502
MISC_CHASSIS_SECURITY_STATE
Definition: SmBios.h:474
MISC_PORT_CONNECTOR_TYPE
Definition: SmBios.h:1324
MEMORY_DEVICE_TECHNOLOGY
Definition: SmBios.h:2018
@ MemoryTechnologyMrDimmDeprecated
SMBIOS spec 3.9.0 CR248.
Definition: SmBios.h:2030
PROCESSOR_TYPE_DATA
Definition: SmBios.h:553
MISC_CHASSIS_STATE
Definition: SmBios.h:462
PROCESSOR_UPGRADE
Definition: SmBios.h:834
@ ProcessorUpgradeSocketA
Socket 462.
Definition: SmBios.h:848
@ ProcessorUpgradePiggyBack
Replaceable.
Definition: SmBios.h:839
@ ProcessorUpgradeSocketLGA1155
SMBIOS spec 2.8.0 updated the name.
Definition: SmBios.h:870
EVENT_LOG_VARIABLE_DATA
Definition: SmBios.h:1818
BUILTIN_POINTING_DEVICE_INTERFACE
Definition: SmBios.h:2247
MISC_PORT_TYPE
Definition: SmBios.h:1372
@ PortTypeMfdp
Multi-Function Display Port.
Definition: SmBios.h:1407
BUILTIN_POINTING_DEVICE_TYPE
Definition: SmBios.h:2232
MISC_SLOT_DATA_BUS_WIDTH
Definition: SmBios.h:1518
@ SlotDataBusWidth12X
Or X12.
Definition: SmBios.h:1530
@ SlotDataBusWidth16X
Or X16.
Definition: SmBios.h:1531
@ SlotDataBusWidth1X
Or X1.
Definition: SmBios.h:1526
@ SlotDataBusWidth8X
Or X8.
Definition: SmBios.h:1529
@ SlotDataBusWidth32X
Or X32.
Definition: SmBios.h:1532
@ SlotDataBusWidth2X
Or X2.
Definition: SmBios.h:1527
@ SlotDataBusWidth4X
Or X4.
Definition: SmBios.h:1528
CHASSIS_HEIGHT
Definition: SmBios.h:498
@ ChassisHeightUseRackHeight
Enclosure Height is specified at offset 16h+(n*m)
Definition: SmBios.h:500
PROCESSOR_SPECIFIC_BLOCK_ARCH_TYPE
Definition: SmBios.h:2862
FIRMWARE_INVENTORY_STATE
Definition: SmBios.h:2960
MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
Definition: SmBios.h:2573
MEMORY_ERROR_TYPE
Definition: SmBios.h:2133
UINT16 SMBIOS_HANDLE
Definition: SmBios.h:162
PROCESSOR_FAMILY_DATA
Definition: SmBios.h:565
@ ProcessorFamilyIntelCoreSolo
SMBIOS spec 2.6 updated this value.
Definition: SmBios.h:720
@ ProcessorFamilyViaC7M
Smbios spec 3.8 updated this value.
Definition: SmBios.h:740
@ ProcessorFamilyAmdASeries
SMBIOS spec 2.8.0 updated the name.
Definition: SmBios.h:636
UINT8 SMBIOS_TABLE_STRING
Definition: SmBios.h:218
MEMORY_ARRAY_LOCATION
Definition: SmBios.h:1864
MISC_SLOT_HEIGHT
Definition: SmBios.h:1619
MISC_SLOT_LENGTH
Definition: SmBios.h:1582
CACHE_ERROR_TYPE_DATA
Definition: SmBios.h:1254
@ CacheErrorMultiBit
ECC.
Definition: SmBios.h:1260
@ CacheErrorSingleBit
ECC.
Definition: SmBios.h:1259
MEMORY_SUPPORT_INTERLEAVE_TYPE
Definition: SmBios.h:1107
CACHE_TYPE_DATA
Definition: SmBios.h:1266
CHASSIS_RACK_TYPE
Definition: SmBios.h:507
PORTABLE_BATTERY_DEVICE_CHEMISTRY
Definition: SmBios.h:2280
MISC_SLOT_TYPE
Definition: SmBios.h:1433
@ SlotTypeOCPNIC30LargeFormFactor
LFF.
Definition: SmBios.h:1472
@ SlotTypePCIExpressGen5SFF_8639
U.2.
Definition: SmBios.h:1470
@ SlotTypePCIExpressGen4SFF_8639
U.2.
Definition: SmBios.h:1469
@ SlotTypePciExpressMini52pinWithBSKO
PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs.
Definition: SmBios.h:1466
@ SlotTypePciExpressMini76pin
PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card.
Definition: SmBios.h:1468
@ SlotTypePciExpressMini52pinWithoutBSKO
PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs.
Definition: SmBios.h:1467
@ SlotTypeOCPNIC30SmallFormFactor
SFF.
Definition: SmBios.h:1471
MC_HOST_INTERFACE_TYPE
Definition: SmBios.h:2804
ONBOARD_DEVICE_EXTENDED_INFO_TYPE
Definition: SmBios.h:2754
MEMORY_FORM_FACTOR
Definition: SmBios.h:1931
@ MemoryFormFactorCsoDimm
SMBIOS spec 3.9.0 CR244.
Definition: SmBios.h:1950
@ MemoryFormFactorCuDimm
SMBIOS spec 3.9.0 CR244.
Definition: SmBios.h:1949
FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE
Definition: SmBios.h:2929
@ VersionFormatTypeOem
0x04 - 0x7F are reserved
Definition: SmBios.h:2935
UINT8 SMBIOS_TYPE
Definition: SmBios.h:150
STRING_PROPERTY_ID
Definition: SmBios.h:3007
@ StringPropertyIdOem
BIOS vendor 0x8000 - 0xBFFF.
Definition: SmBios.h:3012
@ StringPropertyIdBiosVendor
Reserved 0x0002 - 0x7FFF.
Definition: SmBios.h:3011
MISC_CHASSIS_TYPE
Definition: SmBios.h:420
EVENT_LOG_TYPE_DATA
Definition: SmBios.h:1786
@ EventLogTypeAvailForSys
0x80 - 0xFE
Definition: SmBios.h:1811
@ EventLogTypeUnused
0x18 - 0x7F
Definition: SmBios.h:1810
MEMORY_ERROR_OPERATION
Definition: SmBios.h:2163
MEMORY_ARRAY_USE
Definition: SmBios.h:1885
CACHE_ASSOCIATIVITY_DATA
Definition: SmBios.h:1277
UINT8 DeviceType
Definition: SmBios.h:1709
UINT8 LogType
The enumeration value from EVENT_LOG_TYPE_DATA.
Definition: SmBios.h:1834
Definition: Base.h:213
UINT8 InstalledOrEnabledSize
Size (n), where 2**n is the size in MB.
Definition: SmBios.h:1177
UINT32 Reserved
Bits 0-1.
Definition: SmBios.h:225
UINT8 ProcessorVoltageReserved
Bits 4-6, must be zero.
Definition: SmBios.h:827
UINT8 ProcessorVoltageCapabilityReserved
Bit 3, must be zero.
Definition: SmBios.h:826
UINT8 Use
The enumeration value from MEMORY_ARRAY_USE.
Definition: SmBios.h:1917
UINT8 MemoryErrorCorrection
The enumeration value from MEMORY_ERROR_CORRECTION.
Definition: SmBios.h:1918
UINT8 Location
The enumeration value from MEMORY_ARRAY_LOCATION.
Definition: SmBios.h:1916
UINT8 MemoryType
The enumeration value from MEMORY_DEVICE_TYPE.
Definition: SmBios.h:2075
UINT8 FormFactor
The enumeration value from MEMORY_FORM_FACTOR.
Definition: SmBios.h:2071
UINT8 MemoryTechnology
The enumeration value from MEMORY_DEVICE_TECHNOLOGY.
Definition: SmBios.h:2105
UINT8 ErrorGranularity
The enumeration value from MEMORY_ERROR_GRANULARITY.
Definition: SmBios.h:2180
UINT8 ErrorType
The enumeration value from MEMORY_ERROR_TYPE.
Definition: SmBios.h:2179
UINT8 ErrorOperation
The enumeration value from MEMORY_ERROR_OPERATION.
Definition: SmBios.h:2181
UINT8 WakeUpType
The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.
Definition: SmBios.h:360
UINT8 Type
The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.
Definition: SmBios.h:2272
UINT8 Interface
The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.
Definition: SmBios.h:2273
UINT8 DeviceChemistry
The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.
Definition: SmBios.h:2305
UINT8 BoardType
The enumeration value from BASE_BOARD_TYPE.
Definition: SmBios.h:412
UINT8 BootStatus
The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.
Definition: SmBios.h:2531
UINT8 ErrorGranularity
The enumeration value from MEMORY_ERROR_GRANULARITY.
Definition: SmBios.h:2543
UINT8 ErrorType
The enumeration value from MEMORY_ERROR_TYPE.
Definition: SmBios.h:2542
UINT8 ErrorOperation
The enumeration value from MEMORY_ERROR_OPERATION.
Definition: SmBios.h:2544
UINT8 AddressType
The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.
Definition: SmBios.h:2593
UINT8 Type
The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.
Definition: SmBios.h:2591
UINT8 InterfaceType
The enumeration value from BMC_INTERFACE_TYPE.
Definition: SmBios.h:2683
UINT8 SecurityStatus
The enumeration value from MISC_CHASSIS_SECURITY_STATE.
Definition: SmBios.h:528
UINT8 ThermalState
The enumeration value from MISC_CHASSIS_STATE.
Definition: SmBios.h:527
UINT8 BootupState
The enumeration value from MISC_CHASSIS_STATE.
Definition: SmBios.h:525
UINT8 PowerSupplyState
The enumeration value from MISC_CHASSIS_STATE.
Definition: SmBios.h:526
UINT8 DeviceType
The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE.
Definition: SmBios.h:2784
UINT8 InterfaceType
The enumeration value from MC_HOST_INTERFACE_TYPE.
Definition: SmBios.h:2854
SMBIOS_HANDLE RefHandle
Definition: SmBios.h:2904
PROCESSOR_SPECIFIC_BLOCK ProcessorSpecificBlock
Definition: SmBios.h:2908
UINT8 FirmwareIdFormat
The enumeration value from FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE.
Definition: SmBios.h:2990
UINT8 FirmwareVersionFormat
The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE.
Definition: SmBios.h:2988
UINT8 State
The enumeration value from FIRMWARE_INVENTORY_STATE.
Definition: SmBios.h:2996
UINT16 StringPropertyId
The enumeration value from STRING_PROPERTY_ID.
Definition: SmBios.h:3024
UINT8 ProcessorUpgrade
The enumeration value from PROCESSOR_UPGRADE.
Definition: SmBios.h:1043
UINT8 ProcessorType
The enumeration value from PROCESSOR_TYPE_DATA.
Definition: SmBios.h:1033
UINT8 ProcessorFamily
The enumeration value from PROCESSOR_FAMILY_DATA.
Definition: SmBios.h:1034
UINT8 SupportInterleave
The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.
Definition: SmBios.h:1145
UINT8 ErrDetectMethod
The enumeration value from MEMORY_ERROR_DETECT_METHOD.
Definition: SmBios.h:1143
UINT8 CurrentInterleave
The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .
Definition: SmBios.h:1146
UINT8 SystemCacheType
The enumeration value from CACHE_TYPE_DATA.
Definition: SmBios.h:1312
UINT8 Associativity
The enumeration value from CACHE_ASSOCIATIVITY_DATA.
Definition: SmBios.h:1313
UINT8 ErrorCorrectionType
The enumeration value from CACHE_ERROR_TYPE_DATA.
Definition: SmBios.h:1311
UINT8 PortType
The enumeration value from MISC_PORT_TYPE.
Definition: SmBios.h:1427
UINT8 ExternalConnectorType
The enumeration value from MISC_PORT_CONNECTOR_TYPE.
Definition: SmBios.h:1426
UINT8 InternalConnectorType
The enumeration value from MISC_PORT_CONNECTOR_TYPE.
Definition: SmBios.h:1424
UINT8 SlotHeight
The enumeration value from MISC_SLOT_HEIGHT.
Definition: SmBios.h:1686
UINT8 SlotType
The enumeration value from MISC_SLOT_TYPE.
Definition: SmBios.h:1647
UINT8 SlotDataBusWidth
The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
Definition: SmBios.h:1648
UINT8 CurrentUsage
The enumeration value from MISC_SLOT_USAGE.
Definition: SmBios.h:1649
UINT8 SlotLength
The enumeration value from MISC_SLOT_LENGTH.
Definition: SmBios.h:1650
UINT8 CpuStatus
Indicates the status of the processor.
Definition: SmBios.h:992
UINT8 SocketPopulated
Indicates if the processor socket is populated or not.
Definition: SmBios.h:994
UINT8 Reserved1
Reserved for future use. Must be set to zero.
Definition: SmBios.h:993
UINT8 Reserved2
Reserved for future use. Must be set to zero.
Definition: SmBios.h:995