From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by mx.groups.io with SMTP id smtpd.web12.3688.1646703754857642024 for ; Mon, 07 Mar 2022 17:42:35 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=none, err=permanent DNS error (domain: byosoft.com.cn, ip: 58.240.74.242, mailfrom: gaoliming@byosoft.com.cn) Received: from DESKTOPS6D0PVI ([58.246.60.130]) (envelope-sender ) by 192.168.6.13 with ESMTP for ; Tue, 08 Mar 2022 09:42:28 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-Originating-IP: 58.246.60.130 X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming" To: "'Abdul Lateef Attar'" , Cc: "'Michael D Kinney'" , "'Zhiguang Liu'" References: <20220224155003.24032-1-abdattar@amd.com> <20220224155003.24032-2-abdattar@amd.com> In-Reply-To: <20220224155003.24032-2-abdattar@amd.com> Subject: =?UTF-8?B?5Zue5aSNOiBbUEFUQ0ggdjMgMS8xXSBNZGVQa2cvSW5jbHVkZTogU21iaW9zIFNwZWNpZmljYXRpb24gMy41LjAgY2hhbmdlcw==?= Date: Tue, 8 Mar 2022 09:42:29 +0800 Message-ID: <00cf01d8328d$c5b7e350$5127a9f0$@byosoft.com.cn> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQGw8Uj7R5Y9EL59iTA7c34WM9qryQGCdr9ArPclKNA= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable Content-Language: zh-cn Reviewed-by: Liming Gao > -----=D3=CA=BC=FE=D4=AD=BC=FE----- > =B7=A2=BC=FE=C8=CB: abdullateef.attar@amd.com = =B4=FA=B1=ED > Abdul Lateef Attar > =B7=A2=CB=CD=CA=B1=BC=E4: 2022=C4=EA2=D4=C224=C8=D5 23:50 > =CA=D5=BC=FE=C8=CB: devel@edk2.groups.io > =B3=AD=CB=CD: Michael D Kinney ; Liming = Gao > ; Zhiguang Liu > =D6=F7=CC=E2: [PATCH v3 1/1] MdePkg/Include: Smbios Specification = 3.5.0 changes >=20 > Adds following changes > 1) Added support for manufacturing mode in > BIOS Characteristics Extension Byte 2. > 2) Added support for slot height in > System Slot Table (type 9). > 3) Updated Built-in pointing device interface with > USB, I2C and SPI. > 4) Updates Onboard Devices Extended Information with > wireless LAN, bluetooth, WWAN, eMMC, NVMe and UFC. > 5) Added new table Firmware Inventory Information (Type 45) > and its corresponding enum values. > 6) Added new table String Property Table (Type 46) > and its corresponding enum values. >=20 > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Zhiguang Liu > Signed-off-by: Abdul Lateef Attar > --- > MdePkg/Include/IndustryStandard/SmBios.h | 144 +++++++++++++++++++- > 1 file changed, 140 insertions(+), 4 deletions(-) >=20 > diff --git a/MdePkg/Include/IndustryStandard/SmBios.h > b/MdePkg/Include/IndustryStandard/SmBios.h > index 828ea6d753c2..2b1567b0528b 100644 > --- a/MdePkg/Include/IndustryStandard/SmBios.h > +++ b/MdePkg/Include/IndustryStandard/SmBios.h > @@ -1,9 +1,10 @@ > /** @file >=20 > - Industry Standard Definitions of SMBIOS Table Specification v3.3.0. >=20 > + Industry Standard Definitions of SMBIOS Table Specification v3.5.0. >=20 >=20 >=20 > Copyright (c) 2006 - 2021, Intel Corporation. All rights = reserved.
>=20 > (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
>=20 > (C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development = LP
>=20 > +Copyright (c) 2022, AMD Incorporated. All rights reserved.
>=20 > SPDX-License-Identifier: BSD-2-Clause-Patent >=20 >=20 >=20 > **/ >=20 > @@ -94,6 +95,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE > 42 >=20 > #define SMBIOS_TYPE_TPM_DEVICE 43 >=20 > #define SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION 44 >=20 > +#define SMBIOS_TYPE_FIRMWARE_INVENTORY_INFORMATION > 45 >=20 > +#define SMBIOS_TYPE_STRING_PROPERTY_INFORMATION 46 >=20 >=20 >=20 > /// >=20 > /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, = chapter > 3.3.43. >=20 > @@ -252,7 +255,9 @@ typedef struct { > UINT8 TargetContentDistributionEnabled : 1; >=20 > UINT8 UefiSpecificationSupported : 1; >=20 > UINT8 VirtualMachineSupported : 1; >=20 > - UINT8 ExtensionByte2Reserved : 3; >=20 > + UINT8 ManufacturingModeSupported : 1; >=20 > + UINT8 ManufacturingModeEnabled : 1; >=20 > + UINT8 ExtensionByte2Reserved : 1; >=20 > } MBCE_SYSTEM_RESERVED; >=20 >=20 >=20 > /// >=20 > @@ -1401,6 +1406,17 @@ typedef struct { > UINT8 Reserved : 1; ///< Set to 0. >=20 > } MISC_SLOT_CHARACTERISTICS2; >=20 >=20 >=20 > +/// >=20 > +/// System Slots - Slot Height >=20 > +/// >=20 > +typedef enum { >=20 > + SlotHeightNone =3D 0x00, >=20 > + SlotHeightOther =3D 0x01, >=20 > + SlotHeightUnknown =3D 0x02, >=20 > + SlotHeightFullHeight =3D 0x03, >=20 > + SlotHeightLowProfile =3D 0x04 >=20 > +} MISC_SLOT_HEIGHT; >=20 > + >=20 > /// >=20 > /// System Slots - Peer Segment/Bus/Device/Function/Width Groups >=20 > /// >=20 > @@ -1446,6 +1462,10 @@ typedef struct { > UINT8 SlotInformation; >=20 > UINT8 SlotPhysicalWidth; >=20 > UINT16 SlotPitch; >=20 > + // >=20 > + // Add for smbios 3.5 >=20 > + // >=20 > + UINT8 SlotHeight; ///< The > enumeration value from MISC_SLOT_HEIGHT. >=20 > } SMBIOS_TABLE_TYPE9; >=20 >=20 >=20 > /// >=20 > @@ -2004,7 +2024,9 @@ typedef enum { > PointingDeviceInterfaceADB =3D 0x08, >=20 > PointingDeviceInterfaceBusMouseDB9 =3D 0xA0, >=20 > PointingDeviceInterfaceBusMouseMicroDin =3D 0xA1, >=20 > - PointingDeviceInterfaceUsb =3D 0xA2 >=20 > + PointingDeviceInterfaceUsb =3D 0xA2, >=20 > + PointingDeviceInterfaceI2c =3D 0xA3, >=20 > + PointingDeviceInterfaceSpi =3D 0xA4 >=20 > } BUILTIN_POINTING_DEVICE_INTERFACE; >=20 >=20 >=20 > /// >=20 > @@ -2508,7 +2530,13 @@ typedef enum { > OnBoardDeviceExtendedTypeSound =3D 0x07, >=20 > OnBoardDeviceExtendedTypePATAController =3D 0x08, >=20 > OnBoardDeviceExtendedTypeSATAController =3D 0x09, >=20 > - OnBoardDeviceExtendedTypeSASController =3D 0x0A >=20 > + OnBoardDeviceExtendedTypeSASController =3D 0x0A, >=20 > + OnBoardDeviceExtendedTypeWirelessLAN =3D 0x0B, >=20 > + OnBoardDeviceExtendedTypeBluetooth =3D 0x0C, >=20 > + OnBoardDeviceExtendedTypeWWAN =3D 0x0D, >=20 > + OnBoardDeviceExtendedTypeeMMC =3D 0x0E, >=20 > + OnBoardDeviceExtendedTypeNvme =3D 0x0F, >=20 > + OnBoardDeviceExtendedTypeUfc =3D 0x10 >=20 > } ONBOARD_DEVICE_EXTENDED_INFO_TYPE; >=20 >=20 >=20 > /// >=20 > @@ -2646,6 +2674,112 @@ typedef struct { > UINT32 OemDefined; >=20 > } SMBIOS_TABLE_TYPE43; >=20 >=20 >=20 > +/// >=20 > +/// Firmware Inventory Version Format Type (Type 45). >=20 > +/// >=20 > +typedef enum { >=20 > + VersionFormatTypeFreeForm =3D 0x00, >=20 > + VersionFormatTypeMajorMinor =3D 0x01, >=20 > + VersionFormatType32BitHex =3D 0x02, >=20 > + VersionFormatType64BitHex =3D 0x03, >=20 > + VersionFormatTypeReserved =3D 0x04, /// 0x04 - 0x7F are reserved >=20 > + VersionFormatTypeOem =3D 0x80 /// 0x80 - 0xFF are BIOS > Vendor/OEM-specific >=20 > +} FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE; >=20 > + >=20 > +/// >=20 > +/// Firmware Inventory Firmware Id Format Type (Type 45). >=20 > +/// >=20 > +typedef enum { >=20 > + FirmwareIdFormatTypeFreeForm =3D 0x00, >=20 > + FirmwareIdFormatTypeUuid =3D 0x01, >=20 > + FirmwareIdFormatTypeReserved =3D 0x04, /// 0x04 - 0x7F are > reserved >=20 > + InventoryFirmwareIdFormatTypeOem =3D 0x80 /// 0x80 - 0xFF are = BIOS > Vendor/OEM-specific >=20 > +} FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE; >=20 > + >=20 > +/// >=20 > +/// Firmware Inventory Firmware Characteristics (Type 45). >=20 > +/// >=20 > +typedef enum { >=20 > + CharacteristicsUpdatable =3D 0x00, >=20 > + CharacteristicsWriteProtected =3D 0x01, >=20 > + CharacteristicsReserved =3D 0x02 /// 0x02 - 0x0F are = reserved >=20 > +} FIRMWARE_INVENTORY_CHARACTERISTICS; >=20 > + >=20 > +/// >=20 > +/// Firmware Inventory State Information (Type 45). >=20 > +/// >=20 > +typedef enum { >=20 > + FirmwareInventoryStateOther =3D 0x01, >=20 > + FirmwareInventoryStateUnknown =3D 0x02, >=20 > + FirmwareInventoryStateDisabled =3D 0x03, >=20 > + FirmwareInventoryStateEnabled =3D 0x04, >=20 > + FirmwareInventoryStateAbsent =3D 0x05, >=20 > + FirmwareInventoryStateStandbyOffline =3D 0x06, >=20 > + FirmwareInventoryStateStandbySpare =3D 0x07, >=20 > + FirmwareInventoryStateUnavailableOffline =3D 0x08, >=20 > +} FIRMWARE_INVENTORY_STATE; >=20 > + >=20 > +/// >=20 > +/// Firmware Inventory Information (Type 45) >=20 > +/// >=20 > +/// The information in this structure defines an inventory of = firmware >=20 > +/// components in the system. This can include firmware components = such > as >=20 > +/// BIOS, BMC, as well as firmware for other devices in the system. >=20 > +/// The information can be used by software to display the firmware > inventory >=20 > +/// in a uniform manner. It can also be used by a management = controller, >=20 > +/// such as a BMC, for remote system management. >=20 > +/// This structure is not intended to replace other standard = programmatic >=20 > +/// interfaces for firmware updates. >=20 > +/// One Type 45 structure is provided for each firmware component. >=20 > +/// >=20 > +typedef struct { >=20 > + SMBIOS_STRUCTURE Hdr; >=20 > + SMBIOS_HANDLE RefHandle; >=20 > + >=20 > + UINT8 FirmwareComponentName; >=20 > + UINT8 FirmwareVersion; >=20 > + UINT8 FirmwareVersionFormat; ///< The > enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE >=20 > + UINT8 FirmwareId; >=20 > + UINT8 FirmwareIdFormat; >=20 > + UINT8 ReleaseDate; >=20 > + UINT8 Manufacturer; >=20 > + UINT8 LowestSupportedVersion; >=20 > + UINT64 ImageSize; >=20 > + UINT32 Characteristics; >=20 > + UINT8 State; >=20 > + UINT8 AssociatedComponentCount; >=20 > + /// >=20 > + /// zero or n-number of handles depends on AssociatedComponentCount >=20 > + /// handles are of type SMBIOS_HANDLE >=20 > + /// >=20 > +} SMBIOS_TABLE_TYPE45; >=20 > + >=20 > +/// >=20 > +/// String Property IDs (Type 46). >=20 > +/// >=20 > +typedef enum { >=20 > + StringPropertyIdNone =3D 0x0000, >=20 > + StringPropertyIdDevicePath =3D 0x0001, >=20 > + StringPropertyIdReserved =3D 0x0002, /// Reserved 0x0002 - > 0x7FFF >=20 > + StringPropertyIdBiosVendor =3D 0x8000, /// BIOS vendor 0x8000 - = 0xBFFF >=20 > + StringPropertyIdOem =3D 0xC000 /// OEM range 0xC000 - > 0xFFFF >=20 > +} STRING_PROPERTY_ID; >=20 > + >=20 > +/// >=20 > +/// This structure defines a string property for another structure. >=20 > +/// This allows adding string properties that are common to several > structures >=20 > +/// without having to modify the definitions of these structures. >=20 > +/// Multiple type 46 structures can add string properties to the same >=20 > +/// parent structure. >=20 > +/// >=20 > +typedef struct { >=20 > + SMBIOS_STRUCTURE Hdr; >=20 > + SMBIOS_HANDLE RefHandle; >=20 > + UINT16 StringPropertyId; >=20 > + UINT8 StringPropertyValue; >=20 > + SMBIOS_HANDLE ParentHandle; >=20 > +} SMBIOS_TABLE_TYPE46; >=20 > + >=20 > /// >=20 > /// Inactive (Type 126) >=20 > /// >=20 > @@ -2710,6 +2844,8 @@ typedef union { > SMBIOS_TABLE_TYPE42 *Type42; >=20 > SMBIOS_TABLE_TYPE43 *Type43; >=20 > SMBIOS_TABLE_TYPE44 *Type44; >=20 > + SMBIOS_TABLE_TYPE45 *Type45; >=20 > + SMBIOS_TABLE_TYPE46 *Type46; >=20 > SMBIOS_TABLE_TYPE126 *Type126; >=20 > SMBIOS_TABLE_TYPE127 *Type127; >=20 > UINT8 *Raw; >=20 > -- > 2.25.1