From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Kubacki, Michael A" <michael.a.kubacki@intel.com>
Cc: "Chaganty, Rangasai V" <rangasai.v.chaganty@intel.com>,
"Gao, Liming" <liming.gao@intel.com>
Subject: Re: [edk2-devel] [edk2-platforms][PATCH V2 16/47] Features/Intel/SmbiosFeaturePkg: Add initial package
Date: Tue, 3 Dec 2019 23:57:24 +0000 [thread overview]
Message-ID: <02A34F284D1DA44BB705E61F7180EF0AB5C13DCD@ORSMSX114.amr.corp.intel.com> (raw)
In-Reply-To: <20191128010614.43628-17-michael.a.kubacki@intel.com>
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Kubacki, Michael A
Sent: Wednesday, November 27, 2019 5:06 PM
To: devel@edk2.groups.io
Cc: Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Gao, Liming <liming.gao@intel.com>
Subject: [edk2-devel] [edk2-platforms][PATCH V2 16/47] Features/Intel/SmbiosFeaturePkg: Add initial package
Adds a new feature package for the SMBIOS feature.
Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Michael Kubacki <michael.a.kubacki@intel.com>
---
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec | 172 ++++++++++++++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/SmbiosFeature.dsc | 115 +++++++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dsc | 30 ++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PostMemory.fdf | 10 ++
Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PreMemory.fdf | 8 +
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe.inf | 83 ++++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasic.h | 45 +++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicEntryPoint.c | 125 ++++++++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type0BiosVendorFunction.c | 81 +++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type1SystemManufacturerFunction.c | 114 +++++++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type2BaseBoardManufacturerFunction.c | 131 +++++++++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type32BootInformationFunction.c | 56 +++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type3ChassisManufacturerFunction.c | 125 ++++++++++++++
Features/Intel/SystemInformation/SmbiosFeaturePkg/Readme.md | 96 +++++++++++
14 files changed, 1191 insertions(+)
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
new file mode 100644
index 0000000000..c06a87aad0
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
@@ -0,0 +1,172 @@
+## @file
+# This package provides advanced feature functionality for System Management BIOS (SMBIOS).
+# This package should only depend on EDK II Core packages, IntelSiliconPkg, and MinPlatformPkg.
+#
+# The DEC files are used by the utilities that parse DSC and
+# INF files to generate AutoGen.c and AutoGen.h files
+# for the build infrastructure.
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ DEC_SPECIFICATION = 0x00010017
+ PACKAGE_NAME = SmbiosFeaturePkg
+ PACKAGE_GUID = 8CCEE569-02AD-4844-8725-F4C7966E320A
+ PACKAGE_VERSION = 0.1
+
+[Includes]
+ Include
+
+[LibraryClasses]
+
+[Guids]
+ gSmbiosFeaturePkgTokenSpaceGuid = {0xc1530658, 0xe234, 0x4c13, {0xb6, 0x82, 0xd3, 0x87, 0x84, 0xf1, 0xd7, 0x16}}
+
+[PcdsFeatureFlag]
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable|FALSE|BOOLEAN|0xA0000001
+
+[PcdsDynamic, PcdsDynamicEx]
+ #
+ # SMBIOS Type 0 BIOS Information
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation|{0x0}|SMBIOS_TABLE_TYPE0|0xD0000001 {
+ <HeaderFiles>
+ IndustryStandard/SmBios.h
+ <Packages>
+ MdePkg/MdePkg.dec
+ SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
+ }
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.Vendor|0x1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosVersion|0x2
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosSegment|0xF000
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosReleaseDate|0x3
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosSize|0xFF
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.PciIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.PlugAndPlayIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.BiosIsUpgradable|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.BiosShadowingAllowed|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.BootFromCdIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.SelectableBootIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.EDDSpecificationIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.Floppy525_12IsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.Floppy35_720IsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.Floppy35_288IsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.PrintScreenIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.Keyboard8042IsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.SerialIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.PrinterIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BiosCharacteristics.CgaMonoIsSupported|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BIOSCharacteristicsExtensionBytes[0]|0x33
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation.BIOSCharacteristicsExtensionBytes[1]|0x0F
+
+ #
+ # SMBIOS Type 1 System Information
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation|{0x0}|SMBIOS_TABLE_TYPE1|0xD0000002 {
+ <HeaderFiles>
+ IndustryStandard/SmBios.h
+ <Packages>
+ MdePkg/MdePkg.dec
+ SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
+ }
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.Manufacturer|0x1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.ProductName|0x2
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.Version|0x3
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.SerialNumber|0x4
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.Uuid|{GUID("88888888-8887-8888-8888-878888888888")}
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.WakeUpType|SystemWakeupTypePowerSwitch
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.SKUNumber|0x5
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation.Family|0x6
+
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation|{0x0}|SMBIOS_TABLE_TYPE2|0xD0000003 {
+ <HeaderFiles>
+ IndustryStandard/SmBios.h
+ <Packages>
+ MdePkg/MdePkg.dec
+ SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
+ }
+
+ #
+ # SMBIOS Type 2 Base Board Information
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.Manufacturer|0x1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.ProductName|0x2
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.Version|0x3
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.SerialNumber|0x4
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.AssetTag|0x5
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.FeatureFlag.Motherboard|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.FeatureFlag.Replaceable|1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.LocationInChassis|0x6
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation.BoardType|BaseBoardTypeMotherBoard
+
+ #
+ # SMBIOS Type 3 System Enclosure Chassis
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis|{0x0}|SMBIOS_TABLE_TYPE3|0xD0000004 {
+ <HeaderFiles>
+ IndustryStandard/SmBios.h
+ <Packages>
+ MdePkg/MdePkg.dec
+ SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
+ }
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.Manufacturer|0x1
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.Type|MiscChassisTypeRackMountChassis
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.Version|0x2
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.SerialNumber|0x3
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.AssetTag|0x4
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.BootupState|ChassisStateSafe
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.PowerSupplyState|ChassisStateSafe
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.ThermalState|ChassisStateSafe
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis.SecurityStatus|ChassisSecurityStatusNone
+
+ #
+ # SMBIOS Type 32 System Boot Information
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType32SystemBootInformation|{0x0}|SMBIOS_TABLE_TYPE32|0xD0000005 {
+ <HeaderFiles>
+ IndustryStandard/SmBios.h
+ <Packages>
+ MdePkg/MdePkg.dec
+ SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
+ }
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType32SystemBootInformation.BootStatus|BootInformationStatusNoError
+
+ #
+ # SMBIOS Type 0 BIOS Information Strings
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0StringBiosReleaseDate|"2008-12-23"|VOID*|0xD1000001
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0StringBiosVersion|"PURLEY CV/CRB BIOS Internal"|VOID*|0xD1000002
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0StringVendor|"Intel Corporation"|VOID*|0xD1000003
+
+ #
+ # SMBIOS Type 1 System Information Strings
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringFamily|"Family"|VOID*|0xD1000004
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringManufacturer|"Intel Corporation"|VOID*|0xD1000005
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringProductName|"PURLEY"|VOID*|0xD1000006
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringSerialNumber|"UNKNOWN"|VOID*|0xD1000007
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringSKUNumber|"SKU Number"|VOID*|0xD1000008
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringVersion|"1.0"|VOID*|0xD1000009
+
+ #
+ # SMBIOS Type 2 Base Board Information Strings
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringAssetTag|"Base Board Asset Tag"|VOID*|0xD100000A
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringLocationInChassis|"Part Component"|VOID*|0xD100000B
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringManufacturer|"Intel Corporation"|VOID*|0xD100000C
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringProductName|"PURLEY"|VOID*|0xD100000D
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringSerialNumber|"SPRO03200016"|VOID*|0xD100000E
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringVersion|"E63448-400"|VOID*|0xD100000F
+
+ #
+ # SMBIOS Type 3 System Enclosure Chassis Strings
+ #
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringAssetTag|"Chassis Asset Tag"|VOID*|0xD1000011
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringManufacturer|"Intel Corporation"|VOID*|0xD1000012
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringSerialNumber|"UNKNOWN"|VOID*|0xD1000013
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringSKUNumber|"SKU Number"|VOID*|0xD1000014
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringVersion|"0.1"|VOID*|0xD1000015
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/SmbiosFeature.dsc b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/SmbiosFeature.dsc
new file mode 100644
index 0000000000..a59fdf3702
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/SmbiosFeature.dsc
@@ -0,0 +1,115 @@
+## @file
+# This is a build description file for the SMBIOS advanced feature.
+# This file should be included into another package DSC file to build this feature.
+#
+# The DEC files are used by the utilities that parse DSC and
+# INF files to generate AutoGen.c and AutoGen.h files
+# for the build infrastructure.
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+################################################################################
+#
+# Defines Section - statements that will be processed to create a Makefile.
+#
+################################################################################
+[Defines]
+!ifndef $(PEI_ARCH)
+ !error "PEI_ARCH must be specified to build this feature!"
+!endif
+!ifndef $(DXE_ARCH)
+ !error "DXE_ARCH must be specified to build this feature!"
+!endif
+
+################################################################################
+#
+# Library Class section - list of all Library Classes needed by this feature.
+#
+################################################################################
+[LibraryClasses]
+ #######################################
+ # Edk2 Packages
+ #######################################
+ BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
+ BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
+ DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
+ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
+ UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
+ UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
+ UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
+ UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
+
+[LibraryClasses.common.DXE_DRIVER]
+ #######################################
+ # Edk2 Packages
+ #######################################
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+
+################################################################################
+#
+# Component section - list of all components that need built for this feature.
+#
+# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
+# into firmware volume images. This section is just a list of modules to compile from
+# source into UEFI-compliant binaries.
+# It is the FDF file that contains information on combining binary files into firmware
+# volume images, whose concept is beyond UEFI and is described in PI specification.
+# There may also be modules listed in this section that are not required in the FDF file,
+# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
+# generated for it, but the binary will not be put into any firmware volume.
+#
+################################################################################
+#
+# Feature PEI Components
+#
+
+# @todo: Change below line to [Components.$(PEI_ARCH)] after https://bugzilla.tianocore.org/show_bug.cgi?id=2308
+# is completed.
+[Components.IA32]
+ #####################################
+ # SMBIOS Feature Package
+ #####################################
+
+ # Add library instances here that are not included in package components and should be tested
+ # in the package build.
+
+ # Add components here that should be included in the package build.
+
+#
+# Feature DXE Components
+#
+
+# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzilla.tianocore.org/show_bug.cgi?id=2308
+# is completed.
+[Components.X64]
+ #####################################
+ # SMBIOS Feature Package
+ #####################################
+
+ # Add library instances here that are not included in package components and should be tested
+ # in the package build.
+
+ # Add components here that should be included in the package build.
+ SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe.inf
+
+###################################################################################################
+#
+# BuildOptions Section - Define the module specific tool chain flags that should be used as
+# the default flags for a module. These flags are appended to any
+# standard flags that are defined by the build process. They can be
+# applied for any modules or only those modules with the specific
+# module style (EDK or EDKII) specified in [Components] section.
+#
+# For advanced features, it is recommended to enable [BuildOptions] in
+# the applicable INF file so it does not affect the whole board package
+# build when this DSC file is active.
+#
+###################################################################################################
+[BuildOptions]
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dsc b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dsc
new file mode 100644
index 0000000000..31141c0725
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dsc
@@ -0,0 +1,30 @@
+## @file
+# This package provides advanced feature functionality for System Management BIOS (SMBIOS).
+# This package should only depend on EDK II Core packages, IntelSiliconPkg, and MinPlatformPkg.
+#
+# The DEC files are used by the utilities that parse DSC and
+# INF files to generate AutoGen.c and AutoGen.h files
+# for the build infrastructure.
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ PLATFORM_NAME = SmbiosFeaturePkg
+ PLATFORM_GUID = 44AF1C2A-16AD-4509-8DF6-988E73E23A85
+ PLATFORM_VERSION = 0.1
+ DSC_SPECIFICATION = 0x00010005
+ OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME)
+ SUPPORTED_ARCHITECTURES = IA32|X64
+ BUILD_TARGETS = DEBUG|RELEASE|NOOPT
+ SKUID_IDENTIFIER = DEFAULT
+ PEI_ARCH = IA32
+ DXE_ARCH = X64
+
+#
+# This package always builds the feature.
+#
+!include Include/SmbiosFeature.dsc
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PostMemory.fdf b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PostMemory.fdf
new file mode 100644
index 0000000000..3ed23bd937
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PostMemory.fdf
@@ -0,0 +1,10 @@
+## @file
+# FDF file for post-memory SMBIOS modules.
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+ INF SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe.inf
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PreMemory.fdf b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PreMemory.fdf
new file mode 100644
index 0000000000..732c1b69e5
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Include/PreMemory.fdf
@@ -0,0 +1,8 @@
+## @file
+# FDF file for pre-memory SMBIOS modules.
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe.inf b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe.inf
new file mode 100644
index 0000000000..bd8736b621
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe.inf
@@ -0,0 +1,83 @@
+### @file
+# Component description file for the SMBIOS basic module.
+#
+# Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+###
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = SmbiosBasic
+ FILE_GUID = 03ADF4A1-A27A-45E3-B211-3177C6C2E7ED
+ MODULE_TYPE = DXE_DRIVER
+ VERSION_STRING = 1.0
+ ENTRY_POINT = SmbiosBasicEntryPoint
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = IA32 X64 IPF EBC
+#
+
+[Sources]
+ SmbiosBasic.h
+ SmbiosBasicEntryPoint.c
+ Type0BiosVendorFunction.c
+ Type1SystemManufacturerFunction.c
+ Type2BaseBoardManufacturerFunction.c
+ Type32BootInformationFunction.c
+ Type3ChassisManufacturerFunction.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+ SystemInformation/SmbiosFeaturePkg/SmbiosFeaturePkg.dec
+
+[LibraryClasses]
+ BaseLib
+ BaseMemoryLib
+ DebugLib
+ DevicePathLib
+ HobLib
+ MemoryAllocationLib
+ PcdLib
+ UefiBootServicesTableLib
+ UefiDriverEntryPoint
+ UefiLib
+
+[Protocols]
+ gEfiSmbiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
+ gEfiVariableArchProtocolGuid
+
+[Pcd]
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0StringBiosReleaseDate
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0StringBiosVersion
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType0StringVendor
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringFamily
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringManufacturer
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringProductName
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringSerialNumber
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringSKUNumber
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1StringVersion
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType1SystemInformation
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2BaseBoardInformation
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringAssetTag
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringLocationInChassis
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringManufacturer
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringProductName
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringSerialNumber
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType2StringVersion
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType32SystemBootInformation
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringAssetTag
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringManufacturer
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringSerialNumber
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringSKUNumber
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3StringVersion
+ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosType3SystemEnclosureChassis
+
+[Depex]
+ gEfiSmbiosProtocolGuid AND
+ gEfiVariableArchProtocolGuid
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasic.h b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasic.h
new file mode 100644
index 0000000000..2a349bcd37
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasic.h
@@ -0,0 +1,45 @@
+/** @file
+ Smbios basic header file.
+
+Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef _SMBIOS_BASIC_DRIVER_H
+#define _SMBIOS_BASIC_DRIVER_H
+
+#include <PiDxe.h>
+#include <Protocol/Smbios.h>
+#include <IndustryStandard/SmBios.h>
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/DebugLib.h>
+#include <Library/BaseLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/DevicePathLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include <Library/PcdLib.h>
+#include <Library/UefiLib.h>
+
+/**
+ Add an SMBIOS record.
+
+ @param Smbios The EFI_SMBIOS_PROTOCOL instance.
+ @param SmbiosHandle A unique handle will be assigned to the SMBIOS record.
+ @param Record The data for the fixed portion of the SMBIOS record. The format of the record is
+ determined by EFI_SMBIOS_TABLE_HEADER.Type. The size of the formatted area is defined
+ by EFI_SMBIOS_TABLE_HEADER.Length and either followed by a double-null (0x0000) or
+ a set of null terminated strings and a null.
+
+ @retval EFI_SUCCESS Record was added.
+ @retval EFI_OUT_OF_RESOURCES Record was not added due to lack of system resources.
+
+**/
+EFI_STATUS
+AddSmbiosRecord (
+ IN EFI_SMBIOS_PROTOCOL *Smbios,
+ OUT EFI_SMBIOS_HANDLE *SmbiosHandle,
+ IN EFI_SMBIOS_TABLE_HEADER *Record
+ );
+
+#endif
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicEntryPoint.c b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicEntryPoint.c
new file mode 100644
index 0000000000..4b24d1a124
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicEntryPoint.c
@@ -0,0 +1,125 @@
+/** @file
+ Smbios basic entry point.
+
+Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosBasic.h"
+
+EFI_STATUS
+EFIAPI
+BiosVendorFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ );
+
+EFI_STATUS
+EFIAPI
+SystemManufacturerFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ );
+
+EFI_STATUS
+EFIAPI
+BaseBoardManufacturerFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ );
+
+EFI_STATUS
+EFIAPI
+ChassisManufacturerFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ );
+
+EFI_STATUS
+EFIAPI
+BootInfoStatusFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI EFI_BASIC_SMBIOS_DATA_FUNCTION) (
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ );
+
+typedef struct {
+ EFI_BASIC_SMBIOS_DATA_FUNCTION *Function;
+} EFI_BASIC_SMBIOS_DATA;
+
+EFI_BASIC_SMBIOS_DATA mSmbiosBasicDataFuncTable[] = {
+ {&BiosVendorFunction},
+ {&SystemManufacturerFunction},
+ {&BaseBoardManufacturerFunction},
+ {&ChassisManufacturerFunction},
+ {&BootInfoStatusFunction},
+};
+
+/**
+ Standard EFI driver point. This driver parses the mSmbiosMiscDataTable
+ structure and reports any generated data using SMBIOS protocol.
+
+ @param ImageHandle Handle for the image of this driver
+ @param SystemTable Pointer to the EFI System Table
+
+ @retval EFI_SUCCESS The data was successfully stored.
+
+**/
+EFI_STATUS
+EFIAPI
+SmbiosBasicEntryPoint(
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ UINTN Index;
+ EFI_STATUS EfiStatus;
+ EFI_SMBIOS_PROTOCOL *Smbios;
+
+ EfiStatus = gBS->LocateProtocol(&gEfiSmbiosProtocolGuid, NULL, (VOID**)&Smbios);
+ if (EFI_ERROR(EfiStatus)) {
+ DEBUG((DEBUG_ERROR, "Could not locate SMBIOS protocol. %r\n", EfiStatus));
+ return EfiStatus;
+ }
+
+ for (Index = 0; Index < sizeof(mSmbiosBasicDataFuncTable)/sizeof(mSmbiosBasicDataFuncTable[0]); ++Index) {
+ EfiStatus = (*mSmbiosBasicDataFuncTable[Index].Function) (Smbios);
+ if (EFI_ERROR(EfiStatus)) {
+ DEBUG((DEBUG_ERROR, "Basic smbios store error. Index=%d, ReturnStatus=%r\n", Index, EfiStatus));
+ return EfiStatus;
+ }
+ }
+
+ return EfiStatus;
+}
+
+/**
+ Add an SMBIOS record.
+
+ @param Smbios The EFI_SMBIOS_PROTOCOL instance.
+ @param SmbiosHandle A unique handle will be assigned to the SMBIOS record.
+ @param Record The data for the fixed portion of the SMBIOS record. The format of the record is
+ determined by EFI_SMBIOS_TABLE_HEADER.Type. The size of the formatted area is defined
+ by EFI_SMBIOS_TABLE_HEADER.Length and either followed by a double-null (0x0000) or
+ a set of null terminated strings and a null.
+
+ @retval EFI_SUCCESS Record was added.
+ @retval EFI_OUT_OF_RESOURCES Record was not added due to lack of system resources.
+
+**/
+EFI_STATUS
+AddSmbiosRecord (
+ IN EFI_SMBIOS_PROTOCOL *Smbios,
+ OUT EFI_SMBIOS_HANDLE *SmbiosHandle,
+ IN EFI_SMBIOS_TABLE_HEADER *Record
+ )
+{
+ *SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;
+ return Smbios->Add (
+ Smbios,
+ NULL,
+ SmbiosHandle,
+ Record
+ );
+}
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type0BiosVendorFunction.c b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type0BiosVendorFunction.c
new file mode 100644
index 0000000000..7730756ee5
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type0BiosVendorFunction.c
@@ -0,0 +1,81 @@
+/** @file
+ Smbios type 0.
+
+Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosBasic.h"
+
+/**
+ This function makes boot time changes to the contents of the
+ BiosVendor (Type 0).
+
+ @retval EFI_SUCCESS All parameters were valid.
+ @retval EFI_UNSUPPORTED Unexpected RecordType value.
+ @retval EFI_INVALID_PARAMETER Invalid parameter was found.
+
+**/
+EFI_STATUS
+EFIAPI
+BiosVendorFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ )
+{
+ EFI_STATUS Status;
+ CHAR8 *VendorStr;
+ UINTN VendorStrLen;
+ CHAR8 *VersionStr;
+ UINTN VerStrLen;
+ CHAR8 *DateStr;
+ UINTN DateStrLen;
+ SMBIOS_TABLE_TYPE0 *SmbiosRecord;
+ SMBIOS_TABLE_TYPE0 *PcdSmbiosRecord;
+ EFI_SMBIOS_HANDLE SmbiosHandle;
+ UINTN StringOffset;
+
+ PcdSmbiosRecord = PcdGetPtr (PcdSmbiosType0BiosInformation);
+
+ VendorStr = PcdGetPtr (PcdSmbiosType0StringVendor);
+ VendorStrLen = AsciiStrLen (VendorStr);
+ ASSERT (VendorStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ VersionStr = PcdGetPtr (PcdSmbiosType0StringBiosVersion);
+ VerStrLen = AsciiStrLen (VersionStr);
+ ASSERT (VerStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ DateStr = PcdGetPtr (PcdSmbiosType0StringBiosReleaseDate);
+ DateStrLen = AsciiStrLen (DateStr);
+ ASSERT (DateStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Two zeros following the last string.
+ //
+ SmbiosRecord = AllocateZeroPool (sizeof (SMBIOS_TABLE_TYPE0) + VendorStrLen + 1 + VerStrLen + 1 + DateStrLen + 1 + 1);
+ if (SmbiosRecord == NULL) {
+ ASSERT_EFI_ERROR (EFI_OUT_OF_RESOURCES);
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ CopyMem (SmbiosRecord, PcdSmbiosRecord, sizeof(SMBIOS_TABLE_TYPE0));
+
+ SmbiosRecord->Hdr.Type = SMBIOS_TYPE_BIOS_INFORMATION;
+ SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE0);
+ SmbiosRecord->Hdr.Handle = 0;
+
+ StringOffset = SmbiosRecord->Hdr.Length;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, VendorStr, VendorStrLen);
+ StringOffset += VendorStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, VersionStr, VerStrLen);
+ StringOffset += VerStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, DateStr, DateStrLen);
+
+ //
+ // Now we have got the full smbios record, call smbios protocol to add this record.
+ //
+ Status = AddSmbiosRecord (Smbios, &SmbiosHandle, (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord);
+
+ FreePool (SmbiosRecord);
+ return Status;
+}
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type1SystemManufacturerFunction.c b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type1SystemManufacturerFunction.c
new file mode 100644
index 0000000000..88c32e018e
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type1SystemManufacturerFunction.c
@@ -0,0 +1,114 @@
+/** @file
+ Smbios type 1.
+
+Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosBasic.h"
+
+/**
+ This function makes boot time changes to the contents of the
+ SystemManufacturer (Type 1).
+
+ @retval EFI_SUCCESS All parameters were valid.
+ @retval EFI_UNSUPPORTED Unexpected RecordType value.
+ @retval EFI_INVALID_PARAMETER Invalid parameter was found.
+
+**/
+EFI_STATUS
+EFIAPI
+SystemManufacturerFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ )
+{
+ EFI_STATUS Status;
+ CHAR8 *ManufacturerStr;
+ CHAR8 *ProductNameStr;
+ CHAR8 *VersionStr;
+ CHAR8 *SerialNumberStr;
+ CHAR8 *SKUNumberStr;
+ CHAR8 *FamilyStr;
+ UINTN ManufacturerStrLen;
+ UINTN ProductNameStrLen;
+ UINTN VersionStrLen;
+ UINTN SerialNumberStrLen;
+ UINTN SKUNumberStrLen;
+ UINTN FamilyStrLen;
+ UINTN TableSize;
+ SMBIOS_TABLE_TYPE1 *PcdSmbiosRecord;
+ SMBIOS_TABLE_TYPE1 *SmbiosRecord;
+ EFI_SMBIOS_HANDLE SmbiosHandle;
+ UINTN StringOffset;
+
+ PcdSmbiosRecord = PcdGetPtr (PcdSmbiosType1SystemInformation);
+
+ ManufacturerStr = PcdGetPtr (PcdSmbiosType1StringManufacturer);
+ ManufacturerStrLen = AsciiStrLen (ManufacturerStr);
+ ASSERT (ManufacturerStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ ProductNameStr = PcdGetPtr (PcdSmbiosType1StringProductName);
+ ProductNameStrLen = AsciiStrLen (ProductNameStr);
+ ASSERT (ProductNameStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ VersionStr = PcdGetPtr (PcdSmbiosType1StringVersion);
+ VersionStrLen = AsciiStrLen (VersionStr);
+ ASSERT (VersionStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ SerialNumberStr = PcdGetPtr (PcdSmbiosType1StringSerialNumber);
+ SerialNumberStrLen = AsciiStrLen (SerialNumberStr);
+ ASSERT (SerialNumberStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ SKUNumberStr = PcdGetPtr (PcdSmbiosType1StringSKUNumber);
+ SKUNumberStrLen = AsciiStrLen (SKUNumberStr);
+ ASSERT (SKUNumberStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ FamilyStr = PcdGetPtr (PcdSmbiosType1StringFamily);
+ FamilyStrLen = AsciiStrLen (FamilyStr);
+ ASSERT (FamilyStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Create table size based on string lengths
+ //
+ TableSize = sizeof (SMBIOS_TABLE_TYPE1) + ManufacturerStrLen + 1 + ProductNameStrLen + 1 + VersionStrLen + 1 + SerialNumberStrLen + 1 + SKUNumberStrLen + 1 + FamilyStrLen + 1 + 1;
+ SmbiosRecord = AllocateZeroPool (TableSize);
+ if (SmbiosRecord == NULL) {
+ ASSERT_EFI_ERROR (EFI_OUT_OF_RESOURCES);
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ CopyMem (SmbiosRecord, PcdSmbiosRecord, sizeof(SMBIOS_TABLE_TYPE1));
+
+ //
+ // Fill in Type 1 fields
+ //
+
+ SmbiosRecord->Hdr.Type = SMBIOS_TYPE_SYSTEM_INFORMATION;
+ SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE1);
+ SmbiosRecord->Hdr.Handle = 0;
+
+ //
+ // Add strings to bottom of data block
+ //
+ StringOffset = SmbiosRecord->Hdr.Length;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, ManufacturerStr, ManufacturerStrLen);
+ StringOffset += ManufacturerStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, ProductNameStr, ProductNameStrLen);
+ StringOffset += ProductNameStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, VersionStr, VersionStrLen);
+ StringOffset += VersionStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, SerialNumberStr, SerialNumberStrLen);
+ StringOffset += SerialNumberStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, SKUNumberStr, SKUNumberStrLen);
+ StringOffset += SKUNumberStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, FamilyStr, FamilyStrLen);
+
+ //
+ // Now we have got the full smbios record, call smbios protocol to add this record.
+ //
+ Status = AddSmbiosRecord (Smbios, &SmbiosHandle, (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord);
+
+ FreePool(SmbiosRecord);
+ return Status;
+}
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type2BaseBoardManufacturerFunction.c b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type2BaseBoardManufacturerFunction.c
new file mode 100644
index 0000000000..f72e6a67c8
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type2BaseBoardManufacturerFunction.c
@@ -0,0 +1,131 @@
+/** @file
+ Smbios type 2.
+
+Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosBasic.h"
+
+/**
+ This function makes boot time changes to the contents of the
+ BaseBoardManufacturer (Type 2).
+
+ @retval EFI_SUCCESS All parameters were valid.
+ @retval EFI_UNSUPPORTED Unexpected RecordType value.
+ @retval EFI_INVALID_PARAMETER Invalid parameter was found.
+
+**/
+EFI_STATUS
+EFIAPI
+BaseBoardManufacturerFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ )
+{
+ EFI_STATUS Status;
+ CHAR8 *ManufacturerStr;
+ CHAR8 *ProductStr;
+ CHAR8 *VersionStr;
+ CHAR8 *SerialNumberStr;
+ CHAR8 *AssertTagStr;
+ CHAR8 *ChassisStr;
+ UINTN ManuStrLen;
+ UINTN ProductStrLen;
+ UINTN VerStrLen;
+ UINTN AssertTagStrLen;
+ UINTN SerialNumStrLen;
+ UINTN ChassisStrLen;
+ EFI_SMBIOS_HANDLE SmbiosHandle;
+ SMBIOS_TABLE_TYPE2 *PcdSmbiosRecord;
+ SMBIOS_TABLE_TYPE2 *SmbiosRecord;
+ UINTN SourceSize;
+ UINTN TotalSize;
+ UINTN StringOffset;
+
+ PcdSmbiosRecord = PcdGetPtr (PcdSmbiosType2BaseBoardInformation);
+
+ //
+ // Get BoardManufacturer String.
+ //
+ ManufacturerStr = PcdGetPtr (PcdSmbiosType2StringManufacturer);
+ ManuStrLen = AsciiStrLen (ManufacturerStr);
+ ASSERT (ManuStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get Board ProductName String.
+ //
+ ProductStr = PcdGetPtr (PcdSmbiosType2StringProductName);
+ ProductStrLen = AsciiStrLen (ProductStr);
+ ASSERT (ProductStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get Board Version String.
+ //
+ VersionStr = PcdGetPtr (PcdSmbiosType2StringVersion);
+ VerStrLen = AsciiStrLen (VersionStr);
+ ASSERT (VerStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get Board Serial Number String.
+ //
+ SerialNumberStr = PcdGetPtr (PcdSmbiosType2StringSerialNumber);
+ SerialNumStrLen = AsciiStrLen (SerialNumberStr);
+ ASSERT (SerialNumStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get Board Asset Tag String.
+ //
+ AssertTagStr = PcdGetPtr (PcdSmbiosType2StringAssetTag);
+ AssertTagStrLen = AsciiStrLen (AssertTagStr);
+ ASSERT (AssertTagStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get Board Chassis Location Tag String.
+ //
+ ChassisStr = PcdGetPtr (PcdSmbiosType2StringLocationInChassis);
+ ChassisStrLen = AsciiStrLen (ChassisStr);
+ ASSERT (ChassisStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Two zeros following the last string.
+ //
+ SourceSize = PcdGetSize (PcdSmbiosType2BaseBoardInformation);
+ TotalSize = SourceSize + ManuStrLen + 1 + ProductStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1 + AssertTagStrLen + 1 + ChassisStrLen + 1 + 1;
+ SmbiosRecord = AllocateZeroPool(TotalSize);
+ if (SmbiosRecord == NULL) {
+ ASSERT_EFI_ERROR (EFI_OUT_OF_RESOURCES);
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ CopyMem (SmbiosRecord, PcdSmbiosRecord, SourceSize);
+
+ SmbiosRecord->Hdr.Type = SMBIOS_TYPE_BASEBOARD_INFORMATION;
+ SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE2);
+ if (PcdSmbiosRecord->NumberOfContainedObjectHandles >= 2) {
+ SmbiosRecord->Hdr.Length += (PcdSmbiosRecord->NumberOfContainedObjectHandles - 1) * sizeof(PcdSmbiosRecord->ContainedObjectHandles);
+ }
+ ASSERT(SourceSize >= SmbiosRecord->Hdr.Length);
+ SmbiosRecord->Hdr.Handle = 0;
+
+ StringOffset = SmbiosRecord->Hdr.Length;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, ManufacturerStr, ManuStrLen);
+ StringOffset += ManuStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, ProductStr, ProductStrLen);
+ StringOffset += ProductStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, VersionStr, VerStrLen);
+ StringOffset += VerStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, SerialNumberStr, SerialNumStrLen);
+ StringOffset += SerialNumStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, AssertTagStr, AssertTagStrLen);
+ StringOffset += AssertTagStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, ChassisStr, ChassisStrLen);
+
+ //
+ // Now we have got the full smbios record, call smbios protocol to add this record.
+ //
+ Status = AddSmbiosRecord (Smbios, &SmbiosHandle, (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord);
+
+ FreePool(SmbiosRecord);
+ return Status;
+}
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type32BootInformationFunction.c b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type32BootInformationFunction.c
new file mode 100644
index 0000000000..85d8fc4320
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type32BootInformationFunction.c
@@ -0,0 +1,56 @@
+/** @file
+ Smbios type 32.
+
+Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosBasic.h"
+
+
+/**
+ This function makes boot time changes to the contents of the
+ BootInformation (Type 32).
+
+ @retval EFI_SUCCESS All parameters were valid.
+ @retval EFI_UNSUPPORTED Unexpected RecordType value.
+ @retval EFI_INVALID_PARAMETER Invalid parameter was found.
+
+**/
+EFI_STATUS
+EFIAPI
+BootInfoStatusFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ )
+{
+ EFI_STATUS Status;
+ EFI_SMBIOS_HANDLE SmbiosHandle;
+ SMBIOS_TABLE_TYPE32 *PcdSmbiosRecord;
+ SMBIOS_TABLE_TYPE32 *SmbiosRecord;
+
+ PcdSmbiosRecord = PcdGetPtr (PcdSmbiosType32SystemBootInformation);
+
+ //
+ // Two zeros following the last string.
+ //
+ SmbiosRecord = AllocateZeroPool(sizeof (SMBIOS_TABLE_TYPE32) + 1 + 1);
+ if (SmbiosRecord == NULL) {
+ ASSERT_EFI_ERROR (EFI_OUT_OF_RESOURCES);
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ CopyMem (SmbiosRecord, PcdSmbiosRecord, sizeof(SMBIOS_TABLE_TYPE32));
+
+ SmbiosRecord->Hdr.Type = EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION;
+ SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE32);
+ SmbiosRecord->Hdr.Handle = 0;
+
+ //
+ // Now we have got the full smbios record, call smbios protocol to add this record.
+ //
+ Status = AddSmbiosRecord (Smbios, &SmbiosHandle, (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord);
+
+ FreePool(SmbiosRecord);
+ return Status;
+}
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type3ChassisManufacturerFunction.c b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type3ChassisManufacturerFunction.c
new file mode 100644
index 0000000000..035e47be4c
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/SmbiosBasicDxe/Type3ChassisManufacturerFunction.c
@@ -0,0 +1,125 @@
+/** @file
+ Smbios type 3.
+
+Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosBasic.h"
+
+/**
+ This function makes boot time changes to the contents of the
+ ChassisManufacturer (Type 3).
+
+ @retval EFI_SUCCESS All parameters were valid.
+ @retval EFI_UNSUPPORTED Unexpected RecordType value.
+ @retval EFI_INVALID_PARAMETER Invalid parameter was found.
+
+**/
+EFI_STATUS
+EFIAPI
+ChassisManufacturerFunction(
+ IN EFI_SMBIOS_PROTOCOL *Smbios
+ )
+{
+ UINTN ManuStrLen;
+ UINTN VerStrLen;
+ UINTN AssertTagStrLen;
+ UINTN SerialNumStrLen;
+ UINTN SKUNumberStrLen;
+ EFI_STATUS Status;
+ CHAR8 *ManufacturerStr;
+ CHAR8 *VersionStr;
+ CHAR8 *SerialNumberStr;
+ CHAR8 *AssertTagStr;
+ CHAR8 *SKUNumberStr;
+ SMBIOS_TABLE_STRING *SKUNumberPtr;
+ EFI_SMBIOS_HANDLE SmbiosHandle;
+ SMBIOS_TABLE_TYPE3 *SmbiosRecord;
+ SMBIOS_TABLE_TYPE3 *PcdSmbiosRecord;
+ UINTN SourceSize;
+ UINTN TotalSize;
+ UINTN StringOffset;
+
+ PcdSmbiosRecord = PcdGetPtr (PcdSmbiosType3SystemEnclosureChassis);
+
+ //
+ // Get ChassisManufacturer String.
+ //
+ ManufacturerStr = PcdGetPtr (PcdSmbiosType3StringManufacturer);
+ ManuStrLen = AsciiStrLen (ManufacturerStr);
+ ASSERT (ManuStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get ChassisVersion String.
+ //
+ VersionStr = PcdGetPtr (PcdSmbiosType3StringVersion);
+ VerStrLen = AsciiStrLen (VersionStr);
+ ASSERT (VerStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get ChassisSerialNumber String.
+ //
+ SerialNumberStr = PcdGetPtr (PcdSmbiosType3StringSerialNumber);
+ SerialNumStrLen = AsciiStrLen (SerialNumberStr);
+ ASSERT (SerialNumStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get ChassisAssetTag String.
+ //
+ AssertTagStr = PcdGetPtr (PcdSmbiosType3StringAssetTag);
+ AssertTagStrLen = AsciiStrLen (AssertTagStr);
+ ASSERT (AssertTagStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Get ChassisSKUNumber String.
+ //
+ SKUNumberStr = PcdGetPtr (PcdSmbiosType3StringSKUNumber);
+ SKUNumberStrLen = AsciiStrLen (SKUNumberStr);
+ ASSERT (SKUNumberStrLen <= SMBIOS_STRING_MAX_LENGTH);
+
+ //
+ // Two zeros following the last string.
+ //
+ SourceSize = PcdGetSize(PcdSmbiosType3SystemEnclosureChassis);
+ TotalSize = SourceSize + sizeof(SMBIOS_TABLE_STRING) + ManuStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1 + AssertTagStrLen + 1 + SKUNumberStrLen + 1 + 1;
+ SmbiosRecord = AllocateZeroPool(TotalSize);
+ if (SmbiosRecord == NULL) {
+ ASSERT_EFI_ERROR (EFI_OUT_OF_RESOURCES);
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ CopyMem (SmbiosRecord, PcdSmbiosRecord, SourceSize);
+
+ SmbiosRecord->Hdr.Type = EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE;
+ SmbiosRecord->Hdr.Length = OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElements) + sizeof(SMBIOS_TABLE_STRING);
+ if (PcdSmbiosRecord->ContainedElementCount >= 1) {
+ SmbiosRecord->Hdr.Length += PcdSmbiosRecord->ContainedElementCount * PcdSmbiosRecord->ContainedElementRecordLength;
+ }
+ SmbiosRecord->Hdr.Handle = 0;
+
+ if ((PcdSmbiosRecord->ContainedElementCount == 0) || (SourceSize < (UINTN)SmbiosRecord + SmbiosRecord->Hdr.Length)) {
+ SKUNumberPtr = (SMBIOS_TABLE_STRING *)((UINTN)SmbiosRecord + SmbiosRecord->Hdr.Length - sizeof(SMBIOS_TABLE_STRING));
+ *SKUNumberPtr = 5;
+ }
+
+ StringOffset = SmbiosRecord->Hdr.Length;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, ManufacturerStr, ManuStrLen);
+ StringOffset += ManuStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, VersionStr, VerStrLen);
+ StringOffset += VerStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, SerialNumberStr, SerialNumStrLen);
+ StringOffset += SerialNumStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, AssertTagStr, AssertTagStrLen);
+ StringOffset += AssertTagStrLen + 1;
+ CopyMem ((UINT8 *)SmbiosRecord + StringOffset, SKUNumberStr, SKUNumberStrLen);
+
+ //
+ // Now we have got the full smbios record, call smbios protocol to add this record.
+ //
+ Status = AddSmbiosRecord (Smbios, &SmbiosHandle, (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord);
+
+ FreePool(SmbiosRecord);
+ return Status;
+}
diff --git a/Features/Intel/SystemInformation/SmbiosFeaturePkg/Readme.md b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Readme.md
new file mode 100644
index 0000000000..7f31094365
--- /dev/null
+++ b/Features/Intel/SystemInformation/SmbiosFeaturePkg/Readme.md
@@ -0,0 +1,96 @@
+# Overview
+* **Feature Name:** System Management BIOS (SMBIOS)
+* **PI Phase(s) Supported:** DXE
+* **SMM Required?** No
+
+More Information:
+* [SMBIOS Reference Specification](https://www.dmtf.org/standards/smbios)
+
+## Purpose
+System Management BIOS (SMBIOS) is an industry standard for delivering management information via system firmware.
+SMBIOS provides a standard format to present management information across various environments including OS-present,
+OS-absent, and pre-OS environments. SMBIOS was originally designed for Intel® processor architecture systems, SMBIOS
+now includes support for IA-32 (x86), x64 (x86-64, Intel64, AMD64, EM64T), Intel® Itanium® architecture, 32-bit
+ARM (Aarch32) and 64-bit ARM (Aarch64).
+
+The SMBIOS feature includes generic firmware functionality to implement the SMBIOS reference specification. Since the
+information required by these modules is very platform/board-specific by nature this feature requires a high-level of
+customization (mostly in the form of PCD values) by the feature consumer.
+
+# High-Level Theory of Operation
+*_TODO_*
+A description of how the device works at a high-level.
+
+The description should not be constrained to implementation details but provide a simple mental model of how the
+feature is supposed to work.
+
+## Firmware Volumes
+*_TODO_*
+A bulleted list of the firmware volumes that feature module(s) are placed in.
+
+## Modules
+*_TODO_*
+A bulleted list of the modules that make up the feature.
+
+## <Module Name>
+*_TODO_*
+Each module in the feature should have a section that describes the module in a level of detail that is useful
+to better understand the module source code.
+
+## <Library Name>
+*_TODO_*
+Each library in the feature should have a section that describes the library in a level of detail that is useful
+to better understand the library source code.
+
+## Key Functions
+*_TODO_*
+A bulleted list of key functions for interacting with the feature.
+
+Not all features need to be listed. Only functions exposed through external interfaces that are important for feature
+users to be aware of.
+
+## Configuration
+*_TODO_*
+Information that is useful for configuring the feature.
+
+Not all configuration options need to be listed. This section is used to provide more background on configuration
+options than possible elsewhere.
+
+## Data Flows
+*_TODO_*
+Architecturally defined data structures and flows for the feature.
+
+## Control Flows
+*_TODO_*
+Key control flows for the feature.
+
+## Build Flows
+*_TODO_*
+Any special build flows should be described in this section.
+
+This is particularly useful for features that use custom build tools or require non-standard tool configuration. If the
+standard flow in the feature package template is used, this section may be empty.
+
+## Test Point Results
+*_TODO_*
+The test(s) that can verify porting is complete for the feature.
+
+Each feature must describe at least one test point to verify the feature is successful. If the test point is not
+implemented, this should be stated.
+
+## Functional Exit Criteria
+*_TODO_*
+The testable functionality for the feature.
+
+This section should provide an ordered list of criteria that a board integrator can reference to ensure the feature is
+functional on their board.
+
+## Feature Enabling Checklist
+*_TODO_*
+An ordered list of required activities to achieve desired functionality for the feature.
+
+## Common Optimizations
+*_TODO_*
+Common size or performance tuning options for this feature.
+
+This section is recommended but not required. If not used, the contents should be left empty.
--
2.16.2.windows.1
next prev parent reply other threads:[~2019-12-03 23:57 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-28 1:05 [edk2-platforms][PATCH V2 00/47] Intel Advanced Feature Refactor Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 01/47] AdvancedFeaturePkg: Package DSC style cleanup Kubacki, Michael A
2019-12-03 8:45 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 02/47] DebugFeaturePkg: " Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 03/47] UserInterfaceFeaturePkg: " Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 04/47] Features/Intel: Add Readme.md Kubacki, Michael A
2019-12-03 9:07 ` Chaganty, Rangasai V
2019-12-03 23:57 ` Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 05/47] Features/Intel/PowerManagement: " Kubacki, Michael A
2019-12-03 9:14 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 06/47] Features/Intel/OutOfBandManagement: " Kubacki, Michael A
2019-12-03 9:22 ` Chaganty, Rangasai V
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 07/47] Features/Intel/SystemInformation: " Kubacki, Michael A
2019-12-03 9:30 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 08/47] Features/Intel/Debugging: " Kubacki, Michael A
2019-12-03 9:32 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 09/47] Features/Intel/UserInterface: " Kubacki, Michael A
2019-12-03 9:36 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 10/47] Features/Intel/Network: " Kubacki, Michael A
2019-12-03 9:38 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 11/47] TemplateFeaturePkg: Add initial package Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 12/47] Features/Intel/S3FeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 13/47] Features/Intel/IpmiFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-12-04 7:53 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 14/47] Features/Intel/IpmiFeaturePkg: Add libraries Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-12-04 8:10 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 15/47] Features/Intel/IpmiFeaturePkg: Add modules Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-12-04 8:22 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 16/47] Features/Intel/SmbiosFeaturePkg: Add initial package Kubacki, Michael A
2019-12-03 23:57 ` Nate DeSimone [this message]
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 17/47] Features/Intel/SmbiosFeaturePkg: Update default strings Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 18/47] Features/Intel/AcpiDebugFeaturePkg: Add initial package Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 19/47] Features/Intel/Usb3DebugFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 20/47] Features/Intel/UserAuthFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 21/47] Features/Intel/NetworkFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 22/47] Features/Intel/AdvancedFeaturePkg: Add package Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 23/47] Features/Intel/AdvancedFeaturePkg: Add temporary build workaround Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 24/47] Features/Intel/AdvancedFeaturePkg: Add FDF include files Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 25/47] KabylakeOpenBoardPkg/KabylakeRvp3: Add PEI_ARCH and DXE_ARCH Kubacki, Michael A
2019-11-29 6:42 ` [edk2-devel] " Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 26/47] KabylakeOpenBoardPkg/GalagoPro3: " Kubacki, Michael A
2019-11-29 6:43 ` Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 27/47] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: " Kubacki, Michael A
2019-11-29 6:43 ` [edk2-devel] " Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 28/47] SimicsOpenBoardPkg/BoardX58Ich10: Use " Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 29/47] MinPlatformPkg: Add FvAdvancedPreMemory Kubacki, Michael A
2019-11-29 6:43 ` [edk2-devel] " Chiu, Chasel
2019-12-03 23:57 ` Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 30/47] KabylakeOpenBoardPkg/KabylakeRvp3: " Kubacki, Michael A
2019-11-29 6:45 ` Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 31/47] KabylakeOpenBoardPkg/GalagoPro3: " Kubacki, Michael A
2019-11-29 6:49 ` Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 32/47] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: " Kubacki, Michael A
2019-11-29 6:50 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 33/47] Platform/Intel: Add advanced feature build support Kubacki, Michael A
2019-11-29 6:52 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 34/47] Platform/Intel/Readme.md Content update Kubacki, Michael A
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 35/47] KabylakeOpenBoardPkg/GalagoPro3: Enable advanced features Kubacki, Michael A
2019-11-29 7:00 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 36/47] KabylakeOpenBoardPkg/KabylakeRvp3: " Kubacki, Michael A
2019-11-29 7:01 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 37/47] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: " Kubacki, Michael A
2019-11-29 7:02 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 38/47] SimicsOpenBoardPkg: Use new advanced feature refactor Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=02A34F284D1DA44BB705E61F7180EF0AB5C13DCD@ORSMSX114.amr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox