MdeModulePkg: Add SMBIOS 64-bit support for SMBIOS 3.0.

Add SMBIOS 64-bit entry point and 64-bit table support for SMBIOS 3.0.
Introduce PcdSmbiosEntryPointProvideMethod to produce 32-bit or 64-bit
SMBIOS table.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Elvin Li <elvin.li@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17051 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Elvin Li
2015-03-16 02:41:48 +00:00
committed by li-elvin
parent 09d190dc97
commit e63f3308e0
5 changed files with 420 additions and 95 deletions

View File

@@ -1,7 +1,7 @@
/** @file
This code supports the implementation of the Smbios protocol
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -38,6 +38,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
#define SMBIOS_TABLE_MAX_LENGTH 0xFFFF
//
// For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes.
//
#define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF
#define SMBIOS_INSTANCE_SIGNATURE SIGNATURE_32 ('S', 'B', 'i', 's')
typedef struct {
UINT32 Signature;
@@ -89,6 +94,11 @@ typedef struct {
LIST_ENTRY Link;
EFI_SMBIOS_RECORD_HEADER *RecordHeader;
UINTN RecordSize;
//
// Indicate which table this record is added to.
//
BOOLEAN Smbios32BitTable;
BOOLEAN Smbios64BitTable;
} EFI_SMBIOS_ENTRY;
#define SMBIOS_ENTRY_FROM_LINK(link) CR (link, EFI_SMBIOS_ENTRY, Link, EFI_SMBIOS_ENTRY_SIGNATURE)
@@ -117,11 +127,16 @@ typedef struct {
/**
Create Smbios Table and installs the Smbios Table to the System Table.
@param Smbios32BitTable The flag to update 32-bit table.
@param Smbios64BitTable The flag to update 64-bit table.
**/
VOID
EFIAPI
SmbiosTableConstruction (
VOID
BOOLEAN Smbios32BitTable,
BOOLEAN Smbios64BitTable
);
#endif