This commit is contained in:
MrChromebox 2026-08-26 22:51:05 +00:00 committed by GitHub
commit e86105e8b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 24 additions and 15 deletions

View file

@ -68,7 +68,7 @@ ParseMemoryInfo (
/**
Acquire SMBIOS table from bootloader.
@param SmbiosTable Pointer to the system table info
@param SmBiosEntryPoint Pointer to the SMBIOS structure.
@retval RETURN_SUCCESS Successfully find out the tables.
@retval RETURN_NOT_FOUND Failed to find the tables.
@ -77,7 +77,7 @@ ParseMemoryInfo (
RETURN_STATUS
EFIAPI
ParseSmbiosTable (
OUT UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmbiosTable
OUT UINT64 *SmBiosEntryPoint
);
/**

View file

@ -411,7 +411,7 @@ ParseMemoryInfo (
/**
Acquire SMBIOS table from coreboot.
@param SmbiosTable Pointer to the SMBIOS table info.
@param SmBiosEntryPoint Pointer to the SMBIOS structure.
@retval RETURN_SUCCESS Successfully find out the tables.
@retval RETURN_NOT_FOUND Failed to find the tables.
@ -420,19 +420,23 @@ ParseMemoryInfo (
RETURN_STATUS
EFIAPI
ParseSmbiosTable (
OUT UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmbiosTable
OUT UINT64 *SmBiosEntryPoint
)
{
EFI_STATUS Status;
VOID *MemTable;
UINT32 MemTableSize;
if (SmBiosEntryPoint == NULL) {
return RETURN_INVALID_PARAMETER;
}
Status = ParseCbMemTable (SIGNATURE_32 ('T', 'B', 'M', 'S'), &MemTable, &MemTableSize);
if (EFI_ERROR (Status)) {
return EFI_NOT_FOUND;
}
SmbiosTable->SmBiosEntryPoint = (UINT64)(UINTN)MemTable;
*SmBiosEntryPoint = (UINT64)(UINTN)MemTable;
return RETURN_SUCCESS;
}

View file

@ -113,7 +113,7 @@ ParseMemoryInfo (
/**
Acquire SMBIOS table from slim bootloader.
@param SmbiosTable Pointer to the SMBIOS table info.
@param SmBiosEntryPoint Pointer to the SMBIOS structure.
@retval RETURN_SUCCESS Successfully find out the tables.
@retval RETURN_NOT_FOUND Failed to find the tables.
@ -122,18 +122,21 @@ ParseMemoryInfo (
RETURN_STATUS
EFIAPI
ParseSmbiosTable (
OUT UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmbiosTable
OUT UINT64 *SmBiosEntryPoint
)
{
UNIVERSAL_PAYLOAD_SMBIOS_TABLE *TableInfo;
if (SmBiosEntryPoint == NULL) {
return RETURN_INVALID_PARAMETER;
}
TableInfo = (UNIVERSAL_PAYLOAD_SMBIOS_TABLE *)GetGuidHobDataFromSbl (&gUniversalPayloadSmbiosTableGuid);
if (TableInfo == NULL) {
ASSERT (FALSE);
return RETURN_NOT_FOUND;
}
SmbiosTable->SmBiosEntryPoint = TableInfo->SmBiosEntryPoint;
*SmBiosEntryPoint = TableInfo->SmBiosEntryPoint;
return RETURN_SUCCESS;
}

View file

@ -350,6 +350,7 @@ BuildHobFromBl (
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *NewGfxDeviceInfo;
UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmBiosTableHob;
UNIVERSAL_PAYLOAD_ACPI_TABLE *AcpiTableHob;
UINT64 SmBiosEntryPoint;
//
// First find TOLUD
@ -415,14 +416,15 @@ BuildHobFromBl (
//
// Create SmBios table Hob
//
SmBiosTableHob = BuildGuidHob (&gUniversalPayloadSmbiosTableGuid, sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE));
ASSERT (SmBiosTableHob != NULL);
SmBiosTableHob->Header.Revision = UNIVERSAL_PAYLOAD_SMBIOS_TABLE_REVISION;
SmBiosTableHob->Header.Length = sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE);
DEBUG ((DEBUG_INFO, "Create smbios table gUniversalPayloadSmbiosTableGuid guid hob\n"));
Status = ParseSmbiosTable (SmBiosTableHob);
Status = ParseSmbiosTable (&SmBiosEntryPoint);
if (!EFI_ERROR (Status)) {
DEBUG ((DEBUG_INFO, "Detected Smbios Table at 0x%lx\n", SmBiosTableHob->SmBiosEntryPoint));
DEBUG ((DEBUG_INFO, "Detected Smbios Table at 0x%lx\n", SmBiosEntryPoint));
SmBiosTableHob = BuildGuidHob (&gUniversalPayloadSmbiosTableGuid, sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE));
ASSERT (SmBiosTableHob != NULL);
SmBiosTableHob->Header.Revision = UNIVERSAL_PAYLOAD_SMBIOS_TABLE_REVISION;
SmBiosTableHob->Header.Length = sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE);
SmBiosTableHob->SmBiosEntryPoint = SmBiosEntryPoint;
DEBUG ((DEBUG_INFO, "Create smbios table gUniversalPayloadSmbiosTableGuid guid hob\n"));
}
//