]> xenbits.xensource.com Git - people/aperard/ovmf.git/commitdiff
UefiPayloadPkg: Parse fdt and create smbios table
authorDhaval <dhaval@rivosinc.com>
Thu, 29 Aug 2024 09:20:55 +0000 (14:50 +0530)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sat, 14 Sep 2024 03:38:47 +0000 (03:38 +0000)
Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
UefiPayloadPkg/Library/FdtParserLib/FdtParserLib.c

index 76ff326ed8de649a208c4bef335ed46cf7e35e80..4684f11497df56c7cf59347f2f2bcba531218fa4 100644 (file)
@@ -226,15 +226,16 @@ ParseReservedMemory (
   IN INT32  Node\r
   )\r
 {\r
-  INT32                         SubNode;\r
-  INT32                         TempLen;\r
-  CONST CHAR8                   *TempStr;\r
-  CONST FDT_PROPERTY            *PropertyPtr;\r
-  UINT64                        *Data64;\r
-  UINT64                        StartAddress;\r
-  UINT64                        NumberOfBytes;\r
-  UNIVERSAL_PAYLOAD_ACPI_TABLE  *PlatformAcpiTable;\r
-  FDT_NODE_HEADER               *NodePtr;\r
+  INT32                           SubNode;\r
+  INT32                           TempLen;\r
+  CONST CHAR8                     *TempStr;\r
+  CONST FDT_PROPERTY              *PropertyPtr;\r
+  UINT64                          *Data64;\r
+  UINT64                          StartAddress;\r
+  UINT64                          NumberOfBytes;\r
+  UNIVERSAL_PAYLOAD_ACPI_TABLE    *PlatformAcpiTable;\r
+  UNIVERSAL_PAYLOAD_SMBIOS_TABLE  *SmbiosTable;\r
+  FDT_NODE_HEADER                 *NodePtr;\r
 \r
   PlatformAcpiTable = NULL;\r
 \r
@@ -282,6 +283,15 @@ ParseReservedMemory (
           PlatformAcpiTable->Header.Revision = UNIVERSAL_PAYLOAD_ACPI_TABLE_REVISION;\r
           PlatformAcpiTable->Header.Length   = sizeof (UNIVERSAL_PAYLOAD_ACPI_TABLE);\r
         }\r
+      } else if (AsciiStrnCmp (TempStr, "smbios", AsciiStrLen ("smbios")) == 0) {\r
+        DEBUG ((DEBUG_INFO, " build smbios, NumberOfBytes:%x", NumberOfBytes));\r
+        BuildMemoryAllocationHob (StartAddress, NumberOfBytes, EfiBootServicesData);\r
+        SmbiosTable = BuildGuidHob (&gUniversalPayloadSmbios3TableGuid, sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE));\r
+        if (SmbiosTable != NULL) {\r
+          SmbiosTable->Header.Revision  = UNIVERSAL_PAYLOAD_SMBIOS_TABLE_REVISION;\r
+          SmbiosTable->Header.Length    = sizeof (UNIVERSAL_PAYLOAD_SMBIOS_TABLE);\r
+          SmbiosTable->SmBiosEntryPoint = (EFI_PHYSICAL_ADDRESS)(UINTN)(StartAddress);\r
+        }\r
       } else if (AsciiStrnCmp (TempStr, "acpi-nvs", AsciiStrLen ("acpi-nvs")) == 0) {\r
         DEBUG ((DEBUG_INFO, "  acpi-nvs"));\r
         BuildMemoryAllocationHob (StartAddress, NumberOfBytes, EfiACPIMemoryNVS);\r
@@ -840,9 +850,11 @@ ParseDtb (
     } // end of memory node\r
     else {\r
       PropertyPtr = FdtGetProperty (Fdt, Node, "compatible", &TempLen);\r
-      if (PropertyPtr == NULL)\r
+      if (PropertyPtr == NULL) {\r
         continue;\r
-      TempStr     = (CHAR8 *)(PropertyPtr->Data);\r
+      }\r
+\r
+      TempStr = (CHAR8 *)(PropertyPtr->Data);\r
       if (AsciiStrnCmp (TempStr, "pci-rb", AsciiStrLen ("pci-rb")) == 0) {\r
         RootBridgeCount++;\r
       }\r