Home | History | Annotate | Download | only in PiSmbiosRecordOnDataHubSmbiosRecordThunk
      1 /** @file
      2   The conversion table that guides the generation of the Smbios struture list.
      3 
      4 Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
      5 This program and the accompanying materials
      6 are licensed and made available under the terms and conditions of the BSD License
      7 which accompanies this distribution.  The full text of the license may be found at
      8 http://opensource.org/licenses/bsd-license.php
      9 
     10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #include "Thunk.h"
     16 
     17 ///
     18 /// The minimal length includes last two zero bytes.
     19 ///
     20 SMBIOS_TYPE_INFO_TABLE_ENTRY  mTypeInfoTable[] = {
     21   //
     22   // Type 0: Bios Information
     23   //
     24   {
     25     0,
     26     0x1a,
     27     TRUE,
     28     FALSE
     29   },  // size includes wo extension bytes
     30   //
     31   // Type 1: System Information
     32   //
     33   {
     34     1,
     35     0x1d,
     36     TRUE,
     37     FALSE
     38   },
     39   //
     40   // Type 2: Base Board Information
     41   //
     42   {
     43     2,
     44     0x12,
     45     FALSE,
     46     FALSE
     47   },
     48   //
     49   // Type 3: System Enclosure or Chassis
     50   //
     51   {
     52     3,
     53     0x17, // 0x13 covers till OEM-defined, not right
     54     TRUE,
     55     FALSE
     56   },
     57   //
     58   // Type 4: Processor
     59   //
     60   {
     61     4,
     62     0x2C,
     63     TRUE,
     64     FALSE
     65   },
     66   //
     67   // Type 5: Memory Controller
     68   //
     69   {
     70     5,
     71     0x12,
     72     FALSE,
     73     FALSE
     74   },
     75   //
     76   // Type 6: Memory
     77   //
     78   {
     79     6,
     80     0x0E,
     81     FALSE,
     82     FALSE
     83   },
     84   //
     85   // Type 7: Cache
     86   //
     87   {
     88     7,
     89     0x15,
     90     TRUE,
     91     FALSE
     92   },
     93   //
     94   // Type 8: Port Connector Information
     95   //
     96   {
     97     8,
     98     0x0B,
     99     FALSE,
    100     FALSE
    101   },
    102   //
    103   // Type 9: System Slots
    104   //
    105   {
    106     9,
    107     0x0f,
    108     TRUE,
    109     FALSE
    110   },
    111   //
    112   // Type 10: On Board Device Information
    113   //
    114   {
    115     10,
    116     0x8,
    117     FALSE,
    118     FALSE
    119   },
    120   //
    121   // Type 11: OEM Strings
    122   //
    123   {
    124     11,
    125     0x7,
    126     FALSE,
    127     FALSE
    128   },
    129   //
    130   // Type 12: System Configuration Options
    131   //
    132   {
    133     12,
    134     0x7,
    135     FALSE,
    136     FALSE
    137   },
    138   //
    139   // Type 13: BIOS Language Information
    140   //
    141   {
    142     13,
    143     0x18,
    144     FALSE,
    145     FALSE
    146   },
    147   //
    148   // Type 15: System Event Log
    149   //
    150   {
    151     15,
    152     0x19,
    153     FALSE,
    154     FALSE
    155   },
    156   //
    157   // Type 16: Physical Memory Array
    158   //
    159   {
    160     16,
    161     0x11,
    162     TRUE,
    163     FALSE
    164   },
    165   //
    166   // Type 17: Memory Device
    167   //
    168   {
    169     17,
    170     0x1d,
    171     TRUE,
    172     FALSE
    173   },
    174   //
    175   // Type 18: 32 bit Memory Error Information
    176   //
    177   {
    178     18,
    179     0x19,
    180     FALSE,
    181     FALSE
    182   },
    183   //
    184   // Type 19: Memory Array Mapped Address
    185   //
    186   {
    187     19,
    188     0x11,
    189     TRUE,
    190     FALSE
    191   },
    192   //
    193   // Type 20: Memory Device Mapped Address
    194   //
    195   {
    196     20,
    197     0x15,
    198     TRUE,
    199     FALSE
    200   },
    201   //
    202   // Type 21: Pointing Device
    203   //
    204   {
    205     21,
    206     0x9,
    207     FALSE,
    208     FALSE
    209   },
    210   //
    211   // Type 22: Portable Battery
    212   //
    213   {
    214     22,
    215     0x1c,
    216     FALSE,
    217     FALSE
    218   },
    219   //
    220   // Type 23: System Reset
    221   //
    222   {
    223     23,
    224     0x0f,
    225     FALSE,
    226     FALSE
    227   },
    228   //
    229   // Type 24: Hardware Security
    230   //
    231   {
    232     24,
    233     0x07,
    234     FALSE,
    235     FALSE
    236   },
    237   //
    238   // Type 25: System Power Controls
    239   //
    240   {
    241     25,
    242     0x0b,
    243     FALSE,
    244     FALSE
    245   },
    246   //
    247   // Type 26: Voltage Probe
    248   //
    249   {
    250     26,
    251     0x18,
    252     FALSE,
    253     FALSE
    254   },
    255   //
    256   // Type 27: Cooling Device
    257   //
    258   {
    259     27,
    260     0x10,
    261     FALSE,
    262     FALSE
    263   },
    264   //
    265   // Type 28: Temperature Probe
    266   //
    267   {
    268     28,
    269     0x18,
    270     FALSE,
    271     FALSE
    272   },
    273   //
    274   // Type 29: Electrical Current Probe
    275   //
    276   {
    277     29,
    278     0x18,
    279     FALSE,
    280     FALSE
    281   },
    282   //
    283   // Type 30: Out-of-Band Remote Access
    284   //
    285   {
    286     30,
    287     0x08,
    288     FALSE,
    289     FALSE
    290   },
    291   //
    292   // Type 31: BIS Entry Point
    293   //
    294   {
    295     31,
    296     0x1c,
    297     FALSE,
    298     FALSE
    299   },
    300   //
    301   // Type 32: System Boot Information
    302   //
    303   {
    304     32,
    305     0x16,
    306     TRUE,
    307     FALSE
    308   },
    309   //
    310   // Type 33: 64 bit Memory Error Information
    311   //
    312   {
    313     33,
    314     0x21,
    315     FALSE,
    316     FALSE
    317   },
    318   //
    319   // Type 34: Management Device
    320   //
    321   {
    322     34,
    323     0x0d,
    324     FALSE,
    325     FALSE
    326   },
    327   //
    328   // Type 35: Management Device Component
    329   //
    330   {
    331     35,
    332     0x0d,
    333     FALSE,
    334     FALSE
    335   },
    336   //
    337   // Type 36: Management Device Threshold
    338   //
    339   {
    340     36,
    341     0x12,
    342     FALSE,
    343     FALSE
    344   },
    345   //
    346   // Type 37: Memory Channel
    347   //
    348   {
    349     37,
    350     0x0c,
    351     FALSE,
    352     FALSE
    353   },
    354   //
    355   // Type 38: IPMI device info
    356   //
    357   {
    358     38,
    359     0x12,
    360     TRUE,
    361     FALSE
    362   },
    363   //
    364   // Type 39: Power supply
    365   //
    366   {
    367     39,
    368     0x18,
    369     FALSE,
    370     FALSE
    371   },
    372   //
    373   // Type 0x80-0xFF: OEM type
    374   //
    375   {
    376     0x80,
    377     0x6,
    378     FALSE,
    379     FALSE
    380   },
    381   //
    382   // Type 127: End of Table
    383   //
    384   {
    385     127,
    386     0x6,
    387     FALSE,
    388     FALSE
    389   },
    390   //
    391   // Terminator
    392   //
    393   {
    394     0,
    395     0
    396   }
    397 };
    398 
    399 SMBIOS_CONVERSION_TABLE_ENTRY mConversionTable[] = {
    400 
    401   {
    402     //
    403     // Processor Sub Class -- Record Type 1: Frequency
    404     //
    405     EFI_PROCESSOR_SUBCLASS_GUID,
    406     ProcessorCoreFrequencyRecordType,
    407     4,
    408     BySubclassInstanceSubinstanceProducer,
    409     ByFunctionWithOffsetSpecified,
    410     0x16,
    411     SmbiosFldBase10ToWordWithMega
    412   },
    413 
    414   {
    415     //
    416     // Processor SubClass -- Record Type 2: Bus Frequency
    417     //
    418     EFI_PROCESSOR_SUBCLASS_GUID,
    419     ProcessorFsbFrequencyRecordType,
    420     4,
    421     BySubclassInstanceSubinstanceProducer,
    422     ByFunctionWithOffsetSpecified,
    423     0x12,
    424     SmbiosFldBase10ToWordWithMega
    425   },
    426 
    427   {
    428     //
    429     // Processor SubClass -- Record Type 3: Version
    430     //
    431     EFI_PROCESSOR_SUBCLASS_GUID,
    432     ProcessorVersionRecordType,
    433     4,
    434     BySubclassInstanceSubinstanceProducer,
    435     ByFunctionWithOffsetSpecified,
    436     0x10,
    437     SmbiosFldString
    438   },
    439 
    440   {
    441     //
    442     // Processor SubClass -- Record Type 4: Manufacturor
    443     //
    444     EFI_PROCESSOR_SUBCLASS_GUID,
    445     ProcessorManufacturerRecordType,
    446     4,
    447     BySubclassInstanceSubinstanceProducer,
    448     ByFunctionWithOffsetSpecified,
    449     0x7,
    450     SmbiosFldString
    451   },
    452 
    453   {
    454     //
    455     // Processor SubClass -- Record Type 5: Serial Number
    456     //
    457     EFI_PROCESSOR_SUBCLASS_GUID,
    458     ProcessorSerialNumberRecordType,
    459     4,
    460     BySubclassInstanceSubinstanceProducer,
    461     ByFunctionWithOffsetSpecified,
    462     0x20,
    463     SmbiosFldString
    464   },
    465 
    466   {
    467     //
    468     // Processor SubClass -- Record Type 6: ID
    469     //
    470     EFI_PROCESSOR_SUBCLASS_GUID,
    471     ProcessorIdRecordType,
    472     4,
    473     BySubclassInstanceSubinstanceProducer,
    474     ByFunctionWithOffsetSpecified,
    475     0x08,
    476     SmbiosFldProcessorType6
    477   },
    478 
    479   {
    480     //
    481     // Processor SubClass -- Record Type 7: Type
    482     //
    483     EFI_PROCESSOR_SUBCLASS_GUID,
    484     ProcessorTypeRecordType,
    485     4,
    486     BySubclassInstanceSubinstanceProducer,
    487     ByFunctionWithOffsetSpecified,
    488     0x05,
    489     SmbiosFldTruncateToByte
    490   },
    491 
    492   {
    493     //
    494     // Processor SubClass -- Record Type 8: Family
    495     //
    496     EFI_PROCESSOR_SUBCLASS_GUID,
    497     ProcessorFamilyRecordType,
    498     4,
    499     BySubclassInstanceSubinstanceProducer,
    500     ByFunctionWithOffsetSpecified,
    501     0x06,
    502     SmbiosFldTruncateToByte
    503   },
    504 
    505   {
    506     //
    507     // Processor SubClass -- Record Type 9: Voltage
    508     //
    509     EFI_PROCESSOR_SUBCLASS_GUID,
    510     ProcessorVoltageRecordType,
    511     4,
    512     BySubclassInstanceSubinstanceProducer,
    513     ByFunctionWithOffsetSpecified,
    514     0x11,
    515     SmbiosFldProcessorType9
    516   },
    517 
    518   {
    519     //
    520     // Processor SubClass -- Record Type 14: Status
    521     //
    522     EFI_PROCESSOR_SUBCLASS_GUID,
    523     ProcessorStatusRecordType,
    524     4,
    525     BySubclassInstanceSubinstanceProducer,
    526     ByFunctionWithOffsetSpecified,
    527     0x18,
    528     SmbiosFldTruncateToByte
    529   },
    530 
    531   {
    532     //
    533     // Processor SubClass -- Record Type 15: Socket Type
    534     //
    535     EFI_PROCESSOR_SUBCLASS_GUID,
    536     ProcessorSocketTypeRecordType,
    537     4,
    538     BySubclassInstanceSubinstanceProducer,
    539     ByFunctionWithOffsetSpecified,
    540     0x19,
    541     SmbiosFldTruncateToByte
    542   },
    543 
    544   {
    545     //
    546     // Processor SubClass -- Record Type 16: Socket Name
    547     //
    548     EFI_PROCESSOR_SUBCLASS_GUID,
    549     ProcessorSocketNameRecordType,
    550     4,
    551     BySubclassInstanceSubinstanceProducer,
    552     ByFunctionWithOffsetSpecified,
    553     0x04,
    554     SmbiosFldString
    555   },
    556 
    557   {
    558     //
    559     // Processor SubClass -- Record Type 17: Cache Associtation
    560     //
    561     EFI_PROCESSOR_SUBCLASS_GUID,
    562     CacheAssociationRecordType,
    563     4,
    564     BySubClassInstanceProducer,
    565     ByFunctionWithWholeDataRecord,
    566     0,
    567     SmbiosFldProcessorType17
    568   },
    569 
    570   {
    571     //
    572     // Processor Sub Class -- Record Type 18: MaxFrequency
    573     //
    574     EFI_PROCESSOR_SUBCLASS_GUID,
    575     ProcessorMaxCoreFrequencyRecordType,
    576     4,
    577     BySubclassInstanceSubinstanceProducer,
    578     ByFunctionWithOffsetSpecified,
    579     0x14,
    580     SmbiosFldBase10ToWordWithMega
    581   },
    582 
    583   {
    584     //
    585     // Processor SubClass -- Record Type 19: Asset Tag
    586     //
    587     EFI_PROCESSOR_SUBCLASS_GUID,
    588     ProcessorAssetTagRecordType,
    589     4,
    590     BySubclassInstanceSubinstanceProducer,
    591     ByFunctionWithOffsetSpecified,
    592     0x21,
    593     SmbiosFldString
    594   },
    595 
    596   {
    597     //
    598     // Processor Sub Class -- Record Type 25: Core Count
    599     //
    600     EFI_PROCESSOR_SUBCLASS_GUID,
    601     ProcessorCoreCountRecordType,
    602     4,
    603     BySubclassInstanceSubinstanceProducer,
    604     ByFunctionWithOffsetSpecified,
    605     0x23,
    606     SmbiosFldTruncateToByte
    607   },
    608 
    609   {
    610     //
    611     // Processor Sub Class -- Record Type 26: Enabled Core Count
    612     //
    613     EFI_PROCESSOR_SUBCLASS_GUID,
    614     ProcessorEnabledCoreCountRecordType,
    615     4,
    616     BySubclassInstanceSubinstanceProducer,
    617     ByFunctionWithOffsetSpecified,
    618     0x24,
    619     SmbiosFldTruncateToByte
    620   },
    621 
    622   {
    623     //
    624     // Processor Sub Class -- Record Type 27: Thread Count
    625     //
    626     EFI_PROCESSOR_SUBCLASS_GUID,
    627     ProcessorThreadCountRecordType,
    628     4,
    629     BySubclassInstanceSubinstanceProducer,
    630     ByFunctionWithOffsetSpecified,
    631     0x25,
    632     SmbiosFldTruncateToByte
    633   },
    634 
    635   {
    636     //
    637     // Processor Sub Class -- Record Type 28: Processor Characteristics
    638     //
    639     EFI_PROCESSOR_SUBCLASS_GUID,
    640     ProcessorCharacteristicsRecordType,
    641     4,
    642     BySubclassInstanceSubinstanceProducer,
    643     ByFunctionWithOffsetSpecified,
    644     0x26,
    645     SmbiosFldTruncateToWord
    646   },
    647 
    648   {
    649     //
    650     // Processor Sub Class -- Record Type 29: Family 2
    651     //
    652     EFI_PROCESSOR_SUBCLASS_GUID,
    653     ProcessorFamily2RecordType,
    654     4,
    655     BySubclassInstanceSubinstanceProducer,
    656     ByFunctionWithOffsetSpecified,
    657     0x28,
    658     SmbiosFldTruncateToWord
    659   },
    660 
    661   {
    662     //
    663     // Processor Sub Class -- Record Type 30: Part Number
    664     //
    665     EFI_PROCESSOR_SUBCLASS_GUID,
    666     ProcessorPartNumberRecordType,
    667     4,
    668     BySubclassInstanceSubinstanceProducer,
    669     ByFunctionWithOffsetSpecified,
    670     0x22,
    671     SmbiosFldString
    672   },
    673 
    674   {
    675     //
    676     // Cache SubClass -- Record Type 1: Size
    677     //
    678     EFI_CACHE_SUBCLASS_GUID,
    679     CacheSizeRecordType,
    680     7,
    681     BySubclassInstanceSubinstanceProducer,
    682     ByFunctionWithOffsetSpecified,
    683     0x09,
    684     SmbiosFldBase2ToWordWithKilo
    685   },
    686 
    687   {
    688     //
    689     // Cache SubClass -- Record Type 2: Max Size
    690     //
    691     EFI_CACHE_SUBCLASS_GUID,
    692     MaximumSizeCacheRecordType,
    693     7,
    694     BySubclassInstanceSubinstanceProducer,
    695     ByFunctionWithOffsetSpecified,
    696     0x07,
    697     SmbiosFldBase2ToWordWithKilo
    698   },
    699 
    700   {
    701     //
    702     // Cache SubClass -- Record Type 3: Speed
    703     //
    704     EFI_CACHE_SUBCLASS_GUID,
    705     CacheSpeedRecordType,
    706     7,
    707     BySubclassInstanceSubinstanceProducer,
    708     ByFunctionWithOffsetSpecified,
    709     0x0f,
    710     SmbiosFldBase10ToByteWithNano
    711   },
    712 
    713   {
    714     //
    715     // Cache SubClass -- Record Type 4: Socket
    716     //
    717     EFI_CACHE_SUBCLASS_GUID,
    718     CacheSocketRecordType,
    719     7,
    720     BySubclassInstanceSubinstanceProducer,
    721     ByFunctionWithOffsetSpecified,
    722     0x04,
    723     SmbiosFldString
    724   },
    725 
    726   {
    727     //
    728     // Cache SubClass -- Record Type 5: Supported SRAM type
    729     //
    730     EFI_CACHE_SUBCLASS_GUID,
    731     CacheSramTypeRecordType,
    732     7,
    733     BySubclassInstanceSubinstanceProducer,
    734     ByFunctionWithOffsetSpecified,
    735     0x0b,
    736     SmbiosFldCacheType5  // Asynchronous and Synchronous are reversed
    737   },
    738 
    739   {
    740     //
    741     // Cache SubClass -- Record Type 6: Installed SRAM type
    742     //
    743     EFI_CACHE_SUBCLASS_GUID,
    744     CacheInstalledSramTypeRecordType,
    745     7,
    746     BySubclassInstanceSubinstanceProducer,
    747     ByFunctionWithOffsetSpecified,
    748     0x0d,
    749     SmbiosFldCacheType5
    750   },
    751 
    752   {
    753     //
    754     // Cache SubClass -- Record Type 7: error correction type
    755     //
    756     EFI_CACHE_SUBCLASS_GUID,
    757     CacheErrorTypeRecordType,
    758     7,
    759     BySubclassInstanceSubinstanceProducer,
    760     ByFunctionWithOffsetSpecified,
    761     0x10,
    762     SmbiosFldTruncateToByte
    763   },
    764 
    765   {
    766     //
    767     // Cache SubClass -- Record Type 8: cache type
    768     //
    769     EFI_CACHE_SUBCLASS_GUID,
    770     CacheTypeRecordType,
    771     7,
    772     BySubclassInstanceSubinstanceProducer,
    773     ByFunctionWithOffsetSpecified,
    774     0x11,
    775     SmbiosFldTruncateToByte
    776   },
    777 
    778   {
    779     //
    780     // Cache SubClass -- Record Type 9: Associativity
    781     //
    782     EFI_CACHE_SUBCLASS_GUID,
    783     CacheAssociativityRecordType,
    784     7,
    785     BySubclassInstanceSubinstanceProducer,
    786     ByFunctionWithOffsetSpecified,
    787     0x12,
    788     SmbiosFldTruncateToByte
    789   },
    790 
    791   {
    792     //
    793     // Cache SubClass -- Record Type 10: Cache configuration
    794     //
    795     EFI_CACHE_SUBCLASS_GUID,
    796     CacheConfigRecordType,
    797     7,
    798     BySubclassInstanceSubinstanceProducer,
    799     ByFunctionWithOffsetSpecified,
    800     0x05,
    801     SmbiosFldCacheType10
    802   },
    803 
    804   {
    805     //
    806     // Memory SubClass -- Record Type 2: Physical Memory Array
    807     //
    808     EFI_MEMORY_SUBCLASS_GUID,
    809     EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER,
    810     16,
    811     BySubclassInstanceSubinstanceProducer,
    812     ByFunction,
    813     0,
    814     SmbiosFldMemoryType2
    815   },
    816 
    817   {
    818     //
    819     // Memory SubClass -- Record Type 3: Memory Device to SMBIOS type 6
    820     //
    821     EFI_MEMORY_SUBCLASS_GUID,
    822     EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER,
    823     6,
    824     BySubclassInstanceSubinstanceProducer,
    825     ByFunction,
    826     0,
    827     SmbiosFldSMBIOSType6
    828   },
    829 
    830   {
    831     //
    832     // Memory SubClass -- Record Type 3: Memory Device to SMBIOS type 17
    833     //
    834     EFI_MEMORY_SUBCLASS_GUID,
    835     EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER,
    836     17,
    837     BySubclassInstanceSubinstanceProducer,
    838     ByFunction,
    839     0,
    840     SmbiosFldMemoryType3
    841   },
    842 
    843   {
    844     //
    845     // Memory SubClass -- Record Type 4: Memory Array Mapped Address
    846     //
    847     EFI_MEMORY_SUBCLASS_GUID,
    848     EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER,
    849     19,
    850     BySubclassInstanceSubinstanceProducer,
    851     ByFunction,
    852     0,
    853     SmbiosFldMemoryType4
    854   },
    855 
    856   {
    857     //
    858     // Memory SubClass -- Record Type 5: Memory Device Mapped Address
    859     //
    860     EFI_MEMORY_SUBCLASS_GUID,
    861     EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER,
    862     20,
    863     BySubclassInstanceSubinstanceProducer,
    864     ByFunction,
    865     0,
    866     SmbiosFldMemoryType5
    867   },
    868 
    869   {
    870     //
    871     // Memory SubClass -- Record Type 6: Memory Channel Type
    872     //
    873     EFI_MEMORY_SUBCLASS_GUID,
    874     EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER,
    875     37,
    876     BySubclassInstanceSubinstanceProducer,
    877     ByFunction,
    878     0,
    879     SmbiosFldMemoryType6
    880   },
    881 
    882   {
    883     //
    884     // Memory SubClass -- Record Type 7: Memory Channel Device
    885     //
    886     EFI_MEMORY_SUBCLASS_GUID,
    887     EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER,
    888     37,
    889     BySubclassInstanceSubinstanceProducer,
    890     ByFunction,
    891     0,
    892     SmbiosFldMemoryType7
    893   },
    894 
    895   {
    896     //
    897     // Memory SubClass -- Record Type 8: Memory Controller information
    898     //
    899     EFI_MEMORY_SUBCLASS_GUID,
    900     EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER,
    901     5,
    902     BySubclassInstanceSubinstanceProducer,
    903     ByFunction,
    904     0,
    905     SmbiosFldMemoryType8
    906   },
    907 
    908   {
    909     //
    910     // Memory SubClass -- Record Type 9: Memory 32 Bit Error Information
    911     //
    912     EFI_MEMORY_SUBCLASS_GUID,
    913     EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER,
    914     18,
    915     BySubclassInstanceSubinstanceProducer,
    916     ByFunction,
    917     0,
    918     SmbiosFldMemoryType9
    919   },
    920 
    921   {
    922     //
    923     // Memory SubClass -- Record Type 10: Memory 64 Bit Error Information
    924     //
    925     EFI_MEMORY_SUBCLASS_GUID,
    926     EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER,
    927     33,
    928     BySubclassInstanceSubinstanceProducer,
    929     ByFunction,
    930     0,
    931     SmbiosFldMemoryType10
    932   },
    933 
    934   {
    935     //
    936     // Misc SubClass -- Record Type 2: Bios Information (SMBIOS Type 0)
    937     //
    938     EFI_MISC_SUBCLASS_GUID,
    939     EFI_MISC_BIOS_VENDOR_RECORD_NUMBER, // 0,
    940     0,                                  // smbios Type 0
    941     BySubclassInstanceSubinstanceProducer,
    942     ByFunction,
    943     0,
    944     SmbiosFldMiscType0
    945   },
    946 
    947   {
    948     //
    949     // Misc SubClass -- Record Type 3: System Information (SMBIOS Type 1)
    950     //
    951     EFI_MISC_SUBCLASS_GUID,
    952     EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER, // 1,
    953     1,
    954     BySubclassInstanceSubinstanceProducer,
    955     ByFunction,
    956     0,
    957     SmbiosFldMiscType1
    958   },
    959 
    960   {
    961     //
    962     // Misc SubClass -- Record Type 4: Base Board Manufacturer (SMBIOS Type 2)
    963     //
    964     EFI_MISC_SUBCLASS_GUID,
    965     EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER, // 2,
    966     2,  // SMBIOS Type 2
    967     BySubclassInstanceSubinstanceProducer,
    968     ByFunction,
    969     0,
    970     SmbiosFldMiscType2
    971   },
    972 
    973   {
    974     //
    975     // Misc SubClass -- Record Type 5: System Enclosure or Chassis (SMBIOS Type 3)
    976     //
    977     EFI_MISC_SUBCLASS_GUID,
    978     EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER,  // 3,
    979     3,
    980     BySubclassInstanceSubinstanceProducer,
    981     ByFunction,
    982     0,
    983     SmbiosFldMiscType3
    984   },
    985 
    986   {
    987     //
    988     // Misc SubClass -- Record Type 6: Port Connector (SMBIOS Type 8)
    989     //
    990     EFI_MISC_SUBCLASS_GUID,
    991     EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER,  // 8,
    992     8,
    993     BySubclassInstanceSubinstanceProducer,
    994     ByFunction,
    995     0,
    996     SmbiosFldMiscType8
    997   },
    998 
    999   {
   1000     //
   1001     // Misc SubClass -- Record Type 7: System Slots (SMBIOS Type 9)
   1002     //
   1003     EFI_MISC_SUBCLASS_GUID,
   1004     EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER, // 9,
   1005     9,
   1006     BySubclassInstanceSubinstanceProducer,
   1007     ByFunction,
   1008     0,
   1009     SmbiosFldMiscType9
   1010   },
   1011 
   1012   {
   1013     //
   1014     // Misc SubClass -- Record Type 8: Onboard Device (SMBIOS Type 10)
   1015     //
   1016     EFI_MISC_SUBCLASS_GUID,
   1017     EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER,  // 10,
   1018     10,
   1019     BySubclassInstanceSubinstanceProducer,
   1020     ByFunction,
   1021     0,
   1022     SmbiosFldMiscType10
   1023   },
   1024 
   1025   {
   1026     //
   1027     // Misc Subclass -- Record Type 9: OEM strings (SMBIOS Type 11)
   1028     //
   1029     EFI_MISC_SUBCLASS_GUID,
   1030     EFI_MISC_OEM_STRING_RECORD_NUMBER,  // 11,
   1031     11,
   1032     BySubclassInstanceSubinstanceProducer,
   1033     ByFunction,
   1034     0,
   1035     SmbiosFldMiscType11
   1036   },
   1037 
   1038   {
   1039     //
   1040     // Misc SubClass -- Record Type 0A: System Options (SMBIOS Type 12)
   1041     //
   1042     EFI_MISC_SUBCLASS_GUID,
   1043     EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER,  // 12,
   1044     12,
   1045     BySubclassInstanceSubinstanceProducer,
   1046     ByFunction,
   1047     0,
   1048     SmbiosFldMiscType12
   1049   },
   1050 
   1051   {
   1052     //
   1053     // Misc SubClass -- Record Type 0B: Number of Installable Languages (SMBIOS Type 13)
   1054     //
   1055     EFI_MISC_SUBCLASS_GUID,
   1056     EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER, // 13,
   1057     13,
   1058     BySubclassInstanceSubinstanceProducer,
   1059     ByFunction,
   1060     0,
   1061     SmbiosFldMiscType13
   1062   },
   1063 
   1064   {
   1065     //
   1066     // Misc SubClass -- Record Type 0C: Installable Languages (SMBIOS Type 13)
   1067     //
   1068     EFI_MISC_SUBCLASS_GUID,
   1069     EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER, // 13,
   1070     13,
   1071     BySubclassInstanceSubinstanceProducer,
   1072     ByFunction,
   1073     0,
   1074     SmbiosFldMiscType14
   1075   },
   1076 
   1077   {
   1078     //
   1079     // Misc SubClass -- Record Type 20: System Event Log (SMBIOS Type 15)
   1080     //
   1081     EFI_MISC_SUBCLASS_GUID,
   1082     EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER, // 15,
   1083     15,
   1084     BySubclassInstanceSubinstanceProducer,
   1085     ByFunction,
   1086     0,
   1087     SmbiosFldMiscType15
   1088   },
   1089 
   1090   {
   1091     //
   1092     // Misc SubClass -- Record Type 0F: Pointing Device (SMBIOS Type 21)
   1093     //
   1094     EFI_MISC_SUBCLASS_GUID,
   1095     EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER,  // 21,
   1096     21,
   1097     BySubclassInstanceSubinstanceProducer,
   1098     ByFunction,
   1099     0,
   1100     SmbiosFldMiscType21
   1101   },
   1102 
   1103   {
   1104     //
   1105     // Misc SubClass -- Record Type 10: Portable Battery (SMBIOS Type 22)
   1106     //
   1107     EFI_MISC_SUBCLASS_GUID,
   1108     EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER, // 22,
   1109     22,
   1110     BySubclassInstanceSubinstanceProducer,
   1111     ByFunction,
   1112     0,
   1113     SmbiosFldMiscType22
   1114   },
   1115 
   1116   {
   1117     //
   1118     // Misc SubClass -- Record Type 0x11: Reset Capabilities (SMBIOS Type 23)
   1119     //
   1120     EFI_MISC_SUBCLASS_GUID,
   1121     EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER,  // 23,
   1122     23,
   1123     BySubclassInstanceSubinstanceProducer,
   1124     ByFunction,
   1125     0,
   1126     SmbiosFldMiscType23
   1127   },
   1128 
   1129   {
   1130     //
   1131     // Misc SubClass -- Record Type 0x12: Hardware Security (SMBIOS Type 24)
   1132     //
   1133     EFI_MISC_SUBCLASS_GUID,
   1134     EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER,  // 24,
   1135     24,
   1136     BySubclassInstanceSubinstanceProducer,
   1137     ByFunction,
   1138     0,
   1139     SmbiosFldMiscType24
   1140   },
   1141 
   1142   {
   1143     //
   1144     // Misc SubClass -- Record Type 0x13: System Power Controls (SMBIOS Type 25)
   1145     //
   1146     EFI_MISC_SUBCLASS_GUID,
   1147     EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER,  // 25,
   1148     25,
   1149     BySubclassInstanceSubinstanceProducer,
   1150     ByFunction,
   1151     0,
   1152     SmbiosFldMiscType25
   1153   },
   1154 
   1155   {
   1156     //
   1157     // Misc SubClass -- Record Type 0x14: System Power Controls (SMBIOS Type 26)
   1158     //
   1159     EFI_MISC_SUBCLASS_GUID,
   1160     EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER,  // 26,
   1161     26,
   1162     BySubclassInstanceSubinstanceProducer,
   1163     ByFunction,
   1164     0,
   1165     SmbiosFldMiscType26
   1166   },
   1167 
   1168   {
   1169     //
   1170     // Misc SubClass -- Record Type 0x15: Cooling Device (SMBIOS Type 27)
   1171     //
   1172     EFI_MISC_SUBCLASS_GUID,
   1173     EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER,  // 27,
   1174     27,
   1175     BySubclassInstanceSubinstanceProducer,
   1176     ByFunction,
   1177     0,
   1178     SmbiosFldMiscType27
   1179   },
   1180 
   1181   {
   1182     //
   1183     // Misc SubClass -- Record Type 0x16: Temperature Probe (SMBIOS Type 28)
   1184     //
   1185     EFI_MISC_SUBCLASS_GUID,
   1186     EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER,  // 28,
   1187     28,
   1188     BySubclassInstanceSubinstanceProducer,
   1189     ByFunction,
   1190     0,
   1191     SmbiosFldMiscType28
   1192   },
   1193 
   1194   {
   1195     //
   1196     // Misc SubClass -- Record Type 0x17: Electrical Current Probe (SMBIOS Type 29)
   1197     //
   1198     EFI_MISC_SUBCLASS_GUID,
   1199     EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER,  // 29,
   1200     29,
   1201     BySubclassInstanceSubinstanceProducer,
   1202     ByFunction,
   1203     0,
   1204     SmbiosFldMiscType29
   1205   },
   1206 
   1207   {
   1208     //
   1209     // Misc SubClass -- Record Type 0x18: Temperature Probe (SMBIOS Type 30)
   1210     //
   1211     EFI_MISC_SUBCLASS_GUID,
   1212     EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER,  // 30,
   1213     30,
   1214     BySubclassInstanceSubinstanceProducer,
   1215     ByFunction,
   1216     0,
   1217     SmbiosFldMiscType30
   1218   },
   1219 
   1220   {
   1221     //
   1222     // Misc SubClass -- Record Type 0x1A: Boot Information (SMBIOS Type 32)
   1223     //
   1224     EFI_MISC_SUBCLASS_GUID,
   1225     EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER, // 32,
   1226     32,
   1227     BySubclassInstanceSubinstanceProducer,
   1228     ByFunction,
   1229     0,
   1230     SmbiosFldMiscType32
   1231   },
   1232 
   1233   {
   1234     //
   1235     // Misc SubClass -- Record Type 0x1B: Management Device (SMBIOS Type 34)
   1236     //
   1237     EFI_MISC_SUBCLASS_GUID,
   1238     EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER, // 34,
   1239     34,
   1240     BySubclassInstanceSubinstanceProducer,
   1241     ByFunction,
   1242     0,
   1243     SmbiosFldMiscType34
   1244   },
   1245 
   1246   {
   1247     //
   1248     // Misc SubClass -- Record Type 0x1C: Management Device Component (SMBIOS Type 35)
   1249     //
   1250     EFI_MISC_SUBCLASS_GUID,
   1251     EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER, // 35,
   1252     35,
   1253     BySubclassInstanceSubinstanceProducer,
   1254     ByFunction,
   1255     0,
   1256     SmbiosFldMiscType35
   1257   },
   1258 
   1259   {
   1260     //
   1261     // Misc SubClass -- Record Type 0x21: Management Device Threshold (SMBIOS Type 36)
   1262     //
   1263     EFI_MISC_SUBCLASS_GUID,
   1264     EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER, // 36,
   1265     36,
   1266     BySubclassInstanceSubinstanceProducer,
   1267     ByFunction,
   1268     0,
   1269     SmbiosFldMiscType36
   1270   },
   1271 
   1272   {
   1273     //
   1274     // Misc SubClass -- Record Type 0x1D: Boot Information (SMBIOS Type 38)
   1275     //
   1276     EFI_MISC_SUBCLASS_GUID,
   1277     EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER, // 38,
   1278     38,
   1279     BySubclassInstanceSubinstanceProducer,
   1280     ByFunction,
   1281     0,
   1282     SmbiosFldMiscType38
   1283   },
   1284 
   1285   {
   1286     //
   1287     // Misc SubClass -- Record Type 0x1E: Power supply (SMBIOS Type 39)
   1288     //
   1289     EFI_MISC_SUBCLASS_GUID,
   1290     EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER, // 39,
   1291     39,
   1292     BySubclassInstanceSubinstanceProducer,
   1293     ByFunction,
   1294     0,
   1295     SmbiosFldMiscType39
   1296   },
   1297 
   1298   {
   1299     //
   1300     // Misc SubClass -- Record Type 0x80-0xFF: OEM type
   1301     //
   1302     EFI_MISC_SUBCLASS_GUID,
   1303     EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER, // 0x80,
   1304     0x80,
   1305     BySubclassInstanceSubinstanceProducer,
   1306     ByFunction,
   1307     0,
   1308     SmbiosFldMiscTypeOEM
   1309   },
   1310 
   1311   {
   1312     //
   1313     // End-of-Table -- Record Type 127
   1314     //
   1315     EFI_MISC_SUBCLASS_GUID,
   1316     127,
   1317     127,
   1318     BySubclassInstanceSubinstanceProducer,
   1319     ByFunction,
   1320     0,
   1321     SmbiosFldMiscType127
   1322   },
   1323   //
   1324   // Table Terminator
   1325   //
   1326   {
   1327     {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}},
   1328     0,
   1329     0,
   1330     (SMBIOS_STRUCTURE_LOCATING_METHOD) 0,
   1331     (SMBIOS_FIELD_FILLING_METHOD) 0,
   1332     0,
   1333     0
   1334   }
   1335 };
   1336