From: Dhaval Date: Thu, 29 Aug 2024 09:20:55 +0000 (+0530) Subject: UefiPayloadPkg: Parse fdt and create smbios table X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=9fff9912fdea5bd871acfe548fe2f20fdb17dd64;p=people%2Faperard%2Fovmf.git UefiPayloadPkg: Parse fdt and create smbios table Signed-off-by: Dhaval Sharma --- diff --git a/UefiPayloadPkg/Library/FdtParserLib/FdtParserLib.c b/UefiPayloadPkg/Library/FdtParserLib/FdtParserLib.c index 76ff326ed8..4684f11497 100644 --- a/UefiPayloadPkg/Library/FdtParserLib/FdtParserLib.c +++ b/UefiPayloadPkg/Library/FdtParserLib/FdtParserLib.c @@ -226,15 +226,16 @@ ParseReservedMemory ( IN INT32 Node ) { - INT32 SubNode; - INT32 TempLen; - CONST CHAR8 *TempStr; - CONST FDT_PROPERTY *PropertyPtr; - UINT64 *Data64; - UINT64 StartAddress; - UINT64 NumberOfBytes; - UNIVERSAL_PAYLOAD_ACPI_TABLE *PlatformAcpiTable; - FDT_NODE_HEADER *NodePtr; + INT32 SubNode; + INT32 TempLen; + CONST CHAR8 *TempStr; + CONST FDT_PROPERTY *PropertyPtr; + UINT64 *Data64; + UINT64 StartAddress; + UINT64 NumberOfBytes; + UNIVERSAL_PAYLOAD_ACPI_TABLE *PlatformAcpiTable; + UNIVERSAL_PAYLOAD_SMBIOS_TABLE *SmbiosTable; + FDT_NODE_HEADER *NodePtr; PlatformAcpiTable = NULL; @@ -282,6 +283,15 @@ ParseReservedMemory ( PlatformAcpiTable->Header.Revision = UNIVERSAL_PAYLOAD_ACPI_TABLE_REVISION; PlatformAcpiTable->Header.Length = sizeof (UNIVERSAL_PAYLOAD_ACPI_TABLE); } + } else if (AsciiStrnCmp (TempStr, "smbios", AsciiStrLen ("smbios")) == 0) { + DEBUG ((DEBUG_INFO, " build smbios, NumberOfBytes:%x", NumberOfBytes)); + BuildMemoryAllocationHob (StartAddress, NumberOfBytes, EfiBootServicesData); + SmbiosTable = BuildGuidHob (&gUniversalPayloadSmbios3TableGuid, sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE)); + if (SmbiosTable != NULL) { + SmbiosTable->Header.Revision = UNIVERSAL_PAYLOAD_SMBIOS_TABLE_REVISION; + SmbiosTable->Header.Length = sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE); + SmbiosTable->SmBiosEntryPoint = (EFI_PHYSICAL_ADDRESS)(UINTN)(StartAddress); + } } else if (AsciiStrnCmp (TempStr, "acpi-nvs", AsciiStrLen ("acpi-nvs")) == 0) { DEBUG ((DEBUG_INFO, " acpi-nvs")); BuildMemoryAllocationHob (StartAddress, NumberOfBytes, EfiACPIMemoryNVS); @@ -840,9 +850,11 @@ ParseDtb ( } // end of memory node else { PropertyPtr = FdtGetProperty (Fdt, Node, "compatible", &TempLen); - if (PropertyPtr == NULL) + if (PropertyPtr == NULL) { continue; - TempStr = (CHAR8 *)(PropertyPtr->Data); + } + + TempStr = (CHAR8 *)(PropertyPtr->Data); if (AsciiStrnCmp (TempStr, "pci-rb", AsciiStrLen ("pci-rb")) == 0) { RootBridgeCount++; }