]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdePkg SmBios.h: Add SMBIOS 3.2.0 definitions
authorStar Zeng <star.zeng@intel.com>
Fri, 13 Jul 2018 02:28:34 +0000 (10:28 +0800)
committerStar Zeng <star.zeng@intel.com>
Tue, 28 Aug 2018 02:13:32 +0000 (10:13 +0800)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1099

Add SMBIOS 3.2.0 definitions according to
www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.2.0.pdf.

Processor Information (Type 4):
- SMBIOSCR00163: add socket LGA2066
- SMBIOSCR00173: add Intel Core i9
- SMBIOSCR00176: add new processor sockets
Port Connector Information (Type 8):
- SMBIOSCR00168: add USB Type-C
System Slots (Type 9):
- SMBIOSCR00164: add "unavailable" to current usage field
- SMBIOSCR00167: add support for PCIe bifurcation
Memory Device (Type 17):
- SMBIOSCR00162: add support for NVDIMMs
- SMBIOSCR00166: extend support for NVDIMMs and add support for logical memory type
- SMBIOSCR00172: rename "Configured Memory Clock Speed" to "Configured Memory Speed"
- SMBIOSCR00174: add new memory technology value (Intel Persistent Memory, 3D XPoint)
IPMI Device Information (Type 38):
- SMBIOSCR00171: add SSIF
Management Controller Host Interface (Type 42)
- SMBIOSCR00175: fix structure data parsing issue

V2: Add missing update to MISC_PORT_TYPE and SMBIOS_TABLE_TYPE9.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
MdePkg/Include/IndustryStandard/SmBios.h

index 5d0442873dfcd54ca717456857ef87f2967bf718..dce36140dded677383eef51db9aff10ecfe58648 100644 (file)
@@ -1,5 +1,5 @@
 /** @file\r
-  Industry Standard Definitions of SMBIOS Table Specification v3.1.1.\r
+  Industry Standard Definitions of SMBIOS Table Specification v3.2.0.\r
 \r
 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
 (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>\r
@@ -685,6 +685,7 @@ typedef enum {
   ProcessorFamilyzArchitecture          = 0xCC,\r
   ProcessorFamilyIntelCoreI5            = 0xCD,\r
   ProcessorFamilyIntelCoreI3            = 0xCE,\r
+  ProcessorFamilyIntelCoreI9            = 0xCF,\r
   ProcessorFamilyViaC7M                 = 0xD2,\r
   ProcessorFamilyViaC7D                 = 0xD3,\r
   ProcessorFamilyViaC7                  = 0xD4,\r
@@ -806,7 +807,11 @@ typedef enum {
   ProcessorUpgradeSocketBGA1515   = 0x35,\r
   ProcessorUpgradeSocketLGA3647_1 = 0x36,\r
   ProcessorUpgradeSocketSP3       = 0x37,\r
-  ProcessorUpgradeSocketSP3r2     = 0x38\r
+  ProcessorUpgradeSocketSP3r2     = 0x38,\r
+  ProcessorUpgradeSocketLGA2066   = 0x39,\r
+  ProcessorUpgradeSocketBGA1392   = 0x3A,\r
+  ProcessorUpgradeSocketBGA1510   = 0x3B,\r
+  ProcessorUpgradeSocketBGA1528   = 0x3C\r
 } PROCESSOR_UPGRADE;\r
 \r
 ///\r
@@ -1159,6 +1164,7 @@ typedef enum {
   PortConnectorTypeBNC                    = 0x20,\r
   PortConnectorType1394                   = 0x21,\r
   PortConnectorTypeSasSata                = 0x22,\r
+  PortConnectorTypeUsbTypeC               = 0x23,\r
   PortConnectorTypePC98                   = 0xA0,\r
   PortConnectorTypePC98Hireso             = 0xA1,\r
   PortConnectorTypePCH98                  = 0xA2,\r
@@ -1205,6 +1211,8 @@ typedef enum {
   PortTypeNetworkPort               = 0x1F,\r
   PortTypeSata                      = 0x20,\r
   PortTypeSas                       = 0x21,\r
+  PortTypeMfdp                      = 0x22, ///< Multi-Function Display Port\r
+  PortTypeThunderbolt               = 0x23,\r
   PortType8251Compatible            = 0xA0,\r
   PortType8251FifoCompatible        = 0xA1,\r
   PortTypeOther                     = 0xFF\r
@@ -1314,10 +1322,11 @@ typedef enum {
 /// System Slots - Current Usage.\r
 ///\r
 typedef enum {\r
-  SlotUsageOther     = 0x01,\r
-  SlotUsageUnknown   = 0x02,\r
-  SlotUsageAvailable = 0x03,\r
-  SlotUsageInUse     = 0x04\r
+  SlotUsageOther        = 0x01,\r
+  SlotUsageUnknown      = 0x02,\r
+  SlotUsageAvailable    = 0x03,\r
+  SlotUsageInUse        = 0x04,\r
+  SlotUsageUnavailable  = 0x05\r
 } MISC_SLOT_USAGE;\r
 \r
 ///\r
@@ -1350,9 +1359,20 @@ typedef struct {
   UINT8  PmeSignalSupported      :1;\r
   UINT8  HotPlugDevicesSupported :1;\r
   UINT8  SmbusSignalSupported    :1;\r
-  UINT8  Reserved                :5;  ///< Set to 0.\r
+  UINT8  BifurcationSupported    :1;\r
+  UINT8  Reserved                :4;  ///< Set to 0.\r
 } MISC_SLOT_CHARACTERISTICS2;\r
 \r
+///\r
+/// System Slots - Peer Segment/Bus/Device/Function/Width Groups\r
+///\r
+typedef struct {\r
+  UINT16                      SegmentGroupNum;\r
+  UINT8                       BusNum;\r
+  UINT8                       DevFuncNum;\r
+  UINT8                       DataBusWidth;\r
+} MISC_SLOT_PEER_GROUP;\r
+\r
 ///\r
 /// System Slots (Type 9)\r
 ///\r
@@ -1376,6 +1396,12 @@ typedef struct {
   UINT16                      SegmentGroupNum;\r
   UINT8                       BusNum;\r
   UINT8                       DevFuncNum;\r
+  //\r
+  // Add for smbios 3.2\r
+  //\r
+  UINT8                       DataBusWidth;\r
+  UINT8                       PeerGroupingCount;\r
+  MISC_SLOT_PEER_GROUP        PeerGroups[1];\r
 } SMBIOS_TABLE_TYPE9;\r
 \r
 ///\r
@@ -1668,9 +1694,13 @@ typedef enum {
   MemoryTypeLpddr                          = 0x1B,\r
   MemoryTypeLpddr2                         = 0x1C,\r
   MemoryTypeLpddr3                         = 0x1D,\r
-  MemoryTypeLpddr4                         = 0x1E\r
+  MemoryTypeLpddr4                         = 0x1E,\r
+  MemoryTypeLogicalNonVolatileDevice       = 0x1F\r
 } MEMORY_DEVICE_TYPE;\r
 \r
+///\r
+/// Memory Device - Type Detail\r
+///\r
 typedef struct {\r
   UINT16    Reserved        :1;\r
   UINT16    Other           :1;\r
@@ -1690,6 +1720,41 @@ typedef struct {
   UINT16    LrDimm          :1;\r
 } MEMORY_DEVICE_TYPE_DETAIL;\r
 \r
+///\r
+/// Memory Device - Memory Technology\r
+///\r
+typedef enum {\r
+  MemoryTechnologyOther                     = 0x01,\r
+  MemoryTechnologyUnknown                   = 0x02,\r
+  MemoryTechnologyDram                      = 0x03,\r
+  MemoryTechnologyNvdimmN                   = 0x04,\r
+  MemoryTechnologyNvdimmF                   = 0x05,\r
+  MemoryTechnologyNvdimmP                   = 0x06,\r
+  MemoryTechnologyIntelPersistentMemory     = 0x07\r
+} MEMORY_DEVICE_TECHNOLOGY;\r
+\r
+///\r
+/// Memory Device - Memory Operating Mode Capability\r
+///\r
+typedef union {\r
+  ///\r
+  /// Individual bit fields\r
+  ///\r
+  struct {\r
+    UINT16 Reserved                         :1;   ///< Set to 0.\r
+    UINT16 Other                            :1;\r
+    UINT16 Unknown                          :1;\r
+    UINT16 VolatileMemory                   :1;\r
+    UINT16 ByteAccessiblePersistentMemory   :1;\r
+    UINT16 BlockAccessiblePersistentMemory  :1;\r
+    UINT16 Reserved2                        :10;  ///< Set to 0.\r
+  } Bits;\r
+  ///\r
+  /// All bit fields as a 16-bit value\r
+  ///\r
+  UINT16 Uint16;\r
+} MEMORY_DEVICE_OPERATING_MODE_CAPABILITY;\r
+\r
 ///\r
 /// Memory Device (Type 17).\r
 ///\r
@@ -1700,38 +1765,57 @@ typedef struct {
 /// socket is currently populated.\r
 ///\r
 typedef struct {\r
-  SMBIOS_STRUCTURE          Hdr;\r
-  UINT16                    MemoryArrayHandle;\r
-  UINT16                    MemoryErrorInformationHandle;\r
-  UINT16                    TotalWidth;\r
-  UINT16                    DataWidth;\r
-  UINT16                    Size;\r
-  UINT8                     FormFactor;                     ///< The enumeration value from MEMORY_FORM_FACTOR.\r
-  UINT8                     DeviceSet;\r
-  SMBIOS_TABLE_STRING       DeviceLocator;\r
-  SMBIOS_TABLE_STRING       BankLocator;\r
-  UINT8                     MemoryType;                     ///< The enumeration value from MEMORY_DEVICE_TYPE.\r
-  MEMORY_DEVICE_TYPE_DETAIL TypeDetail;\r
-  UINT16                    Speed;\r
-  SMBIOS_TABLE_STRING       Manufacturer;\r
-  SMBIOS_TABLE_STRING       SerialNumber;\r
-  SMBIOS_TABLE_STRING       AssetTag;\r
-  SMBIOS_TABLE_STRING       PartNumber;\r
+  SMBIOS_STRUCTURE                          Hdr;\r
+  UINT16                                    MemoryArrayHandle;\r
+  UINT16                                    MemoryErrorInformationHandle;\r
+  UINT16                                    TotalWidth;\r
+  UINT16                                    DataWidth;\r
+  UINT16                                    Size;\r
+  UINT8                                     FormFactor;         ///< The enumeration value from MEMORY_FORM_FACTOR.\r
+  UINT8                                     DeviceSet;\r
+  SMBIOS_TABLE_STRING                       DeviceLocator;\r
+  SMBIOS_TABLE_STRING                       BankLocator;\r
+  UINT8                                     MemoryType;         ///< The enumeration value from MEMORY_DEVICE_TYPE.\r
+  MEMORY_DEVICE_TYPE_DETAIL                 TypeDetail;\r
+  UINT16                                    Speed;\r
+  SMBIOS_TABLE_STRING                       Manufacturer;\r
+  SMBIOS_TABLE_STRING                       SerialNumber;\r
+  SMBIOS_TABLE_STRING                       AssetTag;\r
+  SMBIOS_TABLE_STRING                       PartNumber;\r
   //\r
   // Add for smbios 2.6\r
   //\r
-  UINT8                     Attributes;\r
+  UINT8                                     Attributes;\r
   //\r
   // Add for smbios 2.7\r
   //\r
-  UINT32                    ExtendedSize;\r
-  UINT16                    ConfiguredMemoryClockSpeed;\r
+  UINT32                                    ExtendedSize;\r
+  //\r
+  // Keep using name "ConfiguredMemoryClockSpeed" for compatibility\r
+  // although this field is renamed from "Configured Memory Clock Speed"\r
+  // to "Configured Memory Speed" in smbios 3.2.0.\r
+  //\r
+  UINT16                                    ConfiguredMemoryClockSpeed;\r
   //\r
   // Add for smbios 2.8.0\r
   //\r
-  UINT16                    MinimumVoltage;\r
-  UINT16                    MaximumVoltage;\r
-  UINT16                    ConfiguredVoltage;\r
+  UINT16                                    MinimumVoltage;\r
+  UINT16                                    MaximumVoltage;\r
+  UINT16                                    ConfiguredVoltage;\r
+  //\r
+  // Add for smbios 3.2.0\r
+  //\r
+  UINT8                                     MemoryTechnology;   ///< The enumeration value from MEMORY_DEVICE_TECHNOLOGY\r
+  MEMORY_DEVICE_OPERATING_MODE_CAPABILITY   MemoryOperatingModeCapability;\r
+  SMBIOS_TABLE_STRING                       FirwareVersion;\r
+  UINT16                                    ModuleManufacturerID;\r
+  UINT16                                    ModuleProductID;\r
+  UINT16                                    MemorySubsystemControllerManufacturerID;\r
+  UINT16                                    MemorySubsystemControllerProductID;\r
+  UINT64                                    NonVolatileSize;\r
+  UINT64                                    VolatileSize;\r
+  UINT64                                    CacheSize;\r
+  UINT64                                    LogicalSize;\r
 } SMBIOS_TABLE_TYPE17;\r
 \r
 ///\r
@@ -2269,7 +2353,7 @@ typedef enum {
   IPMIDeviceInfoInterfaceTypeKCS           = 0x01, ///< The Keyboard Controller Style.\r
   IPMIDeviceInfoInterfaceTypeSMIC          = 0x02, ///< The Server Management Interface Chip.\r
   IPMIDeviceInfoInterfaceTypeBT            = 0x03, ///< The Block Transfer\r
-  IPMIDeviceInfoInterfaceTypeReserved      = 0x04\r
+  IPMIDeviceInfoInterfaceTypeSSIF          = 0x04  ///< SMBus System Interface\r
 } BMC_INTERFACE_TYPE;\r
 \r
 ///\r
@@ -2339,7 +2423,7 @@ typedef struct {
   UINT8                   ReferencedOffset;\r
   SMBIOS_TABLE_STRING     EntryString;\r
   UINT8                   Value[1];\r
-}ADDITIONAL_INFORMATION_ENTRY;\r
+} ADDITIONAL_INFORMATION_ENTRY;\r
 \r
 ///\r
 /// Additional Information (Type 40).\r
@@ -2425,8 +2509,9 @@ typedef enum{
 ///\r
 typedef struct {\r
   SMBIOS_STRUCTURE                  Hdr;\r
-  UINT8                             InterfaceType;          ///< The enumeration value from MC_HOST_INTERFACE_TYPE\r
-  UINT8                             MCHostInterfaceData[1]; ///< This field has a minimum of four bytes\r
+  UINT8                             InterfaceType;                  ///< The enumeration value from MC_HOST_INTERFACE_TYPE\r
+  UINT8                             InterfaceTypeSpecificDataLength;\r
+  UINT8                             InterfaceTypeSpecificData[4];   ///< This field has a minimum of four bytes\r
 } SMBIOS_TABLE_TYPE42;\r
 \r
 ///\r