+/**\r
+ Parse and handle the misc info provided by bootloader\r
+\r
+ @retval RETURN_SUCCESS The misc information was parsed successfully.\r
+ @retval RETURN_NOT_FOUND Could not find required misc info.\r
+ @retval RETURN_OUT_OF_RESOURCES Insufficant memory space.\r
+\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+ParseMiscInfo (\r
+ VOID\r
+ )\r
+{\r
+ RETURN_STATUS Status;\r
+ UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES *BlRootBridgesHob;\r
+ UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES *PldRootBridgesHob;\r
+\r
+ Status = RETURN_NOT_FOUND;\r
+ BlRootBridgesHob = (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES *) GetGuidHobDataFromSbl (\r
+ &gUniversalPayloadPciRootBridgeInfoGuid\r
+ );\r
+ if (BlRootBridgesHob != NULL) {\r
+ //\r
+ // Migrate bootloader root bridge info hob from bootloader to payload.\r
+ //\r
+ PldRootBridgesHob = BuildGuidHob (\r
+ &gUniversalPayloadPciRootBridgeInfoGuid,\r
+ BlRootBridgesHob->Header.Length\r
+ );\r
+ ASSERT (PldRootBridgesHob != NULL);\r
+ if (PldRootBridgesHob != NULL) {\r
+ CopyMem (PldRootBridgesHob, BlRootBridgesHob, BlRootBridgesHob->Header.Length);\r
+ DEBUG ((DEBUG_INFO, "Create PCI root bridge info guid hob\n"));\r
+ Status = RETURN_SUCCESS;\r
+ } else {\r
+ Status = RETURN_OUT_OF_RESOURCES;\r
+ }\r
+ }\r
+\r
+ return Status;\r
+}\r
+\r