]> xenbits.xensource.com Git - people/aperard/ovmf.git/commitdiff
UefiPayloadPkg: Handle ordering issue with option node
authorDhaval <dhaval@rivosinc.com>
Fri, 30 Aug 2024 14:56:34 +0000 (20:26 +0530)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sat, 14 Sep 2024 03:38:47 +0000 (03:38 +0000)
Option node provides info that is to be consumed by during
metadata creation for other nodes like root bridge; pci-enum-done
etc. Handle that dependency by storing option values in a variable
and then apply it during post processing. Ideally such cross node
dependency should be avoided in design. Scope for futher improvements.

Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
UefiPayloadPkg/Library/FdtParserLib/FdtParserLib.c

index 421b22904f8da2032cd9c88b6d4dd75f706d01e8..0ed7bc4810d61488a0516070346e1bf433cd6af1 100644 (file)
@@ -623,7 +623,6 @@ VOID
 ParsePciRootBridge (\r
   IN VOID   *Fdt,\r
   IN INT32  Node,\r
-  IN UINT8  PciEnumDone,\r
   IN UINT8  RootBridgeCount,\r
   IN CHAR8  *GmaStr,\r
   IN UINT8  *index\r
@@ -658,7 +657,7 @@ ParsePciRootBridge (
     mPciRootBridgeInfo->Header.Length    = sizeof (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES);\r
     mPciRootBridgeInfo->Header.Revision  = UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES_REVISION;\r
     mPciRootBridgeInfo->Count            = RootBridgeCount;\r
-    mPciRootBridgeInfo->ResourceAssigned = (BOOLEAN)PciEnumDone;\r
+    mPciRootBridgeInfo->ResourceAssigned = FALSE;\r
   }\r
 \r
   for (SubNode = FdtFirstSubnode (Fdt, Node); SubNode >= 0; SubNode = FdtNextSubnode (Fdt, SubNode)) {\r
@@ -876,7 +875,7 @@ ParseDtb (
         break;\r
       case PciRootBridge:\r
         DEBUG ((DEBUG_INFO, "ParsePciRootBridge, index :%x\n", index));\r
-        ParsePciRootBridge (Fdt, Node, PciEnumDone, RootBridgeCount, GmaStr, &index);\r
+        ParsePciRootBridge (Fdt, Node, RootBridgeCount, GmaStr, &index);\r
         DEBUG ((DEBUG_INFO, "After ParsePciRootBridge, index :%x\n", index));\r
         break;\r
       case Options:\r
@@ -889,6 +888,10 @@ ParseDtb (
     }\r
   }\r
 \r
+  // Post processing: TODO: Need to look into it. Such cross dependency on DT nodes\r
+  // may not be good idea. Instead have this prop part of RB\r
+  mPciRootBridgeInfo->ResourceAssigned = (BOOLEAN)PciEnumDone;\r
+\r
   ((EFI_HOB_HANDOFF_INFO_TABLE *)(mHobList))->BootMode = BootMode;\r
   DEBUG ((DEBUG_INFO, "\n"));\r
 \r