SMBIOS Implementation - Adding SMBIOS Default Table.
- Default SMBIOS Table initialized when SMBIOS is enabled. - If required, Every Platform can override platform specific information. - Enable SMBIOS in Qemu platform. - Update Memory allocation for SmbiosStringsPtr for 32 entries. Signed-off-by: Sm NARAYANAN <s.m.narayanan@intel.com>
This commit is contained in:
parent
e0c4326b81
commit
64f27c41c3
|
@ -279,7 +279,7 @@
|
||||||
|
|
||||||
gPlatformModuleTokenSpaceGuid.PcdSmbiosTablesBase | 0x00000000
|
gPlatformModuleTokenSpaceGuid.PcdSmbiosTablesBase | 0x00000000
|
||||||
gPlatformModuleTokenSpaceGuid.PcdSmbiosStringsPtr | 0x00000000
|
gPlatformModuleTokenSpaceGuid.PcdSmbiosStringsPtr | 0x00000000
|
||||||
gPlatformModuleTokenSpaceGuid.PcdSmbiosStringsCnt | 0x0000
|
gPlatformModuleTokenSpaceGuid.PcdSmbiosStringsCnt | 0x40
|
||||||
gPlatformModuleTokenSpaceGuid.PcdFuncCpuInitHook | 0x00000000
|
gPlatformModuleTokenSpaceGuid.PcdFuncCpuInitHook | 0x00000000
|
||||||
|
|
||||||
[PcdsFeatureFlag]
|
[PcdsFeatureFlag]
|
||||||
|
|
|
@ -53,6 +53,15 @@ AppendSmbiosType (
|
||||||
IN UINT16 TypeLength
|
IN UINT16 TypeLength
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is called to initialize the SmbiosStringsPtr.
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InitSmbiosStringPtr (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function is called to initialize the SMBIOS tables.
|
This function is called to initialize the SMBIOS tables.
|
||||||
|
|
||||||
|
@ -66,5 +75,4 @@ SmbiosInit (
|
||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,6 +18,37 @@
|
||||||
|
|
||||||
VOID *mType127Ptr = NULL;
|
VOID *mType127Ptr = NULL;
|
||||||
|
|
||||||
|
#define SMBIOS_STRING_UNKNOWN "Unknown"
|
||||||
|
#define SMBIOS_STRING_UNKNOWN_VERSION "XXXX.XXX.XXX.XXX"
|
||||||
|
#define SMBIOS_STRING_VENDOR "Intel Corporation"
|
||||||
|
#define SMBIOS_STRING_PLATFORM "Client Platform"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Add more platform specific strings
|
||||||
|
// in the following format
|
||||||
|
//
|
||||||
|
CONST SMBIOS_TYPE_STRINGS mDefaultSmbiosStrings[] = {
|
||||||
|
// Type StrId String
|
||||||
|
// Type 0
|
||||||
|
{ SMBIOS_TYPE_BIOS_INFORMATION , 1, SMBIOS_STRING_VENDOR }, // Vendor
|
||||||
|
{ SMBIOS_TYPE_BIOS_INFORMATION , 2, SMBIOS_STRING_UNKNOWN_VERSION }, // BIOS Version
|
||||||
|
{ SMBIOS_TYPE_BIOS_INFORMATION , 3, SMBIOS_STRING_UNKNOWN }, // BIOS Release Date
|
||||||
|
// Type 1
|
||||||
|
{ SMBIOS_TYPE_SYSTEM_INFORMATION , 1, SMBIOS_STRING_VENDOR }, // Manufacturer
|
||||||
|
{ SMBIOS_TYPE_SYSTEM_INFORMATION , 2, SMBIOS_STRING_UNKNOWN }, // Product Name
|
||||||
|
{ SMBIOS_TYPE_SYSTEM_INFORMATION , 3, SMBIOS_STRING_UNKNOWN_VERSION }, // Version
|
||||||
|
{ SMBIOS_TYPE_SYSTEM_INFORMATION , 4, SMBIOS_STRING_UNKNOWN }, // Serial Number
|
||||||
|
{ SMBIOS_TYPE_SYSTEM_INFORMATION , 5, SMBIOS_STRING_UNKNOWN }, // SKU Variant
|
||||||
|
{ SMBIOS_TYPE_SYSTEM_INFORMATION , 6, SMBIOS_STRING_PLATFORM }, // Serial Number
|
||||||
|
// Type 2
|
||||||
|
{ SMBIOS_TYPE_BASEBOARD_INFORMATION , 1, SMBIOS_STRING_UNKNOWN }, // Manufacturer
|
||||||
|
{ SMBIOS_TYPE_BASEBOARD_INFORMATION , 2, SMBIOS_STRING_UNKNOWN }, // Product Name
|
||||||
|
{ SMBIOS_TYPE_BASEBOARD_INFORMATION , 3, SMBIOS_STRING_UNKNOWN_VERSION }, // Version
|
||||||
|
{ SMBIOS_TYPE_BASEBOARD_INFORMATION , 4, SMBIOS_STRING_UNKNOWN }, // Serial Number
|
||||||
|
// Type 127 - End of strings
|
||||||
|
{ SMBIOS_TYPE_END_OF_TABLE, 0, "" }
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Check if the Smbios types (including the entry point struct)
|
Check if the Smbios types (including the entry point struct)
|
||||||
have crossed the statically allocated size for Smbios init
|
have crossed the statically allocated size for Smbios init
|
||||||
|
@ -248,6 +279,9 @@ GetSmbiosString (
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Index = 0; Index < PcdGet16 (PcdSmbiosStringsCnt); ++Index) {
|
for (Index = 0; Index < PcdGet16 (PcdSmbiosStringsCnt); ++Index) {
|
||||||
|
if (SmbiosStrings[Index].Type == SMBIOS_TYPE_END_OF_TABLE) {
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
if (Type == SmbiosStrings[Index].Type && StringId == SmbiosStrings[Index].Idx) {
|
if (Type == SmbiosStrings[Index].Type && StringId == SmbiosStrings[Index].Idx) {
|
||||||
if (SmbiosStrings[Index].String != NULL && AsciiStrLen (SmbiosStrings[Index].String) != 0) {
|
if (SmbiosStrings[Index].String != NULL && AsciiStrLen (SmbiosStrings[Index].String) != 0) {
|
||||||
return SmbiosStrings[Index].String;
|
return SmbiosStrings[Index].String;
|
||||||
|
@ -375,6 +409,49 @@ AddSmbiosType (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is called to initialize the SmbiosStringsPtr.
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InitSmbiosStringPtr (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
|
||||||
|
EFI_STATUS Status;
|
||||||
|
UINT16 Length;
|
||||||
|
VOID *SmbiosStringsPtr;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Allocate the memmory for SMBIOS String Ptr,
|
||||||
|
//
|
||||||
|
|
||||||
|
SmbiosStringsPtr = AllocateZeroPool (PcdGet16(PcdSmbiosStringsCnt) * sizeof (SMBIOS_TYPE_STRINGS));
|
||||||
|
if (SmbiosStringsPtr == NULL) {
|
||||||
|
DEBUG ((DEBUG_INFO, "SmbiosStringsPtr Memory allocation failed"));
|
||||||
|
ASSERT_EFI_ERROR(EFI_OUT_OF_RESOURCES);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Copy contents from Default String Array
|
||||||
|
//
|
||||||
|
|
||||||
|
Length = sizeof (mDefaultSmbiosStrings);
|
||||||
|
if(Length <= (PcdGet16(PcdSmbiosStringsCnt) * sizeof (SMBIOS_TYPE_STRINGS))) {
|
||||||
|
CopyMem (SmbiosStringsPtr, mDefaultSmbiosStrings, Length);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DEBUG ((DEBUG_INFO, "SmbiosStringsPtr Not Sufficient 0x%x", Length));
|
||||||
|
ASSERT_EFI_ERROR(EFI_OUT_OF_RESOURCES);
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Initialize SMBIOS String Ptr, Update Length
|
||||||
|
//
|
||||||
|
Status = PcdSet32S (PcdSmbiosStringsPtr, (UINT32)(UINTN)SmbiosStringsPtr);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function is called to initialize the SMBIOS tables.
|
This function is called to initialize the SMBIOS tables.
|
||||||
|
|
||||||
|
|
|
@ -391,6 +391,10 @@ SecStartup (
|
||||||
FspResetHandler (Status);
|
FspResetHandler (Status);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
if (FixedPcdGetBool (PcdSmbiosEnabled)) {
|
||||||
|
InitSmbiosStringPtr ();
|
||||||
|
}
|
||||||
|
|
||||||
BoardInit (PostSiliconInit);
|
BoardInit (PostSiliconInit);
|
||||||
AddMeasurePoint (0x3040);
|
AddMeasurePoint (0x3040);
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,8 @@ class Board(BaseBoard):
|
||||||
self.ENABLE_LINUX_PAYLOAD = 1
|
self.ENABLE_LINUX_PAYLOAD = 1
|
||||||
self.ENABLE_CRYPTO_SHA_OPT = 0
|
self.ENABLE_CRYPTO_SHA_OPT = 0
|
||||||
|
|
||||||
|
self.ENABLE_SMBIOS = 1
|
||||||
|
|
||||||
self.CPU_MAX_LOGICAL_PROCESSOR_NUMBER = 255
|
self.CPU_MAX_LOGICAL_PROCESSOR_NUMBER = 255
|
||||||
|
|
||||||
# To enable source debug, set 1 to self.ENABLE_SOURCE_DEBUG
|
# To enable source debug, set 1 to self.ENABLE_SOURCE_DEBUG
|
||||||
|
|
Loading…
Reference in New Issue