]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: QemuBootOrder: lower the required number of OFW nodes to 2
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 8 Oct 2012 07:33:25 +0000 (07:33 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 8 Oct 2012 07:33:25 +0000 (07:33 +0000)
2 nodes in an OpenFirmware device path are sufficient for the generic
check at the beginning of TranslateOfwNodes(). The driver specific
branches check for the necessary nodes individually.

The number of nodes saved for examination is unchanged.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13800 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c

index 8b462ec3ddbe4e9366da3da2d0cd67599e13c797..4a3339651218c6329e8d5d09b03002d5179cbe41 100644 (file)
 \r
 \r
 /**\r
-  Number of nodes in OpenFirmware device paths that is required and examined.\r
+  Numbers of nodes in OpenFirmware device paths that are required and examined.\r
 **/\r
-#define FIXED_OFW_NODES 4\r
+#define REQUIRED_OFW_NODES 2\r
+#define EXAMINED_OFW_NODES 4\r
 \r
 \r
 /**\r
@@ -497,7 +498,7 @@ TranslateOfwNodes (
   //\r
   // Get PCI device and optional PCI function. Assume a single PCI root.\r
   //\r
-  if (NumNodes < FIXED_OFW_NODES ||\r
+  if (NumNodes < REQUIRED_OFW_NODES ||\r
       !SubstringEq (OfwNode[0].DriverName, "pci")\r
       ) {\r
     return RETURN_UNSUPPORTED;\r
@@ -513,7 +514,8 @@ TranslateOfwNodes (
     return RETURN_UNSUPPORTED;\r
   }\r
 \r
-  if (SubstringEq (OfwNode[1].DriverName, "ide") &&\r
+  if (NumNodes >= 4 &&\r
+      SubstringEq (OfwNode[1].DriverName, "ide") &&\r
       SubstringEq (OfwNode[2].DriverName, "drive") &&\r
       SubstringEq (OfwNode[3].DriverName, "disk")\r
       ) {\r
@@ -562,7 +564,8 @@ TranslateOfwNodes (
       Secondary ? "Secondary" : "Primary",\r
       Slave ? "Slave" : "Master"\r
       );\r
-  } else if (SubstringEq (OfwNode[1].DriverName, "isa") &&\r
+  } else if (NumNodes >= 4 &&\r
+             SubstringEq (OfwNode[1].DriverName, "isa") &&\r
              SubstringEq (OfwNode[2].DriverName, "fdc") &&\r
              SubstringEq (OfwNode[3].DriverName, "floppy")\r
              ) {\r
@@ -676,7 +679,7 @@ TranslateOfwPath (
 {\r
   UINTN         NumNodes;\r
   RETURN_STATUS Status;\r
-  OFW_NODE      Node[FIXED_OFW_NODES];\r
+  OFW_NODE      Node[EXAMINED_OFW_NODES];\r
   BOOLEAN       IsFinal;\r
   OFW_NODE      Skip;\r
 \r
@@ -692,7 +695,7 @@ TranslateOfwPath (
     ++NumNodes;\r
     Status = ParseOfwNode (\r
                Ptr,\r
-               (NumNodes < FIXED_OFW_NODES) ? &Node[NumNodes] : &Skip,\r
+               (NumNodes < EXAMINED_OFW_NODES) ? &Node[NumNodes] : &Skip,\r
                &IsFinal\r
                );\r
   }\r
@@ -712,7 +715,7 @@ TranslateOfwPath (
 \r
   Status = TranslateOfwNodes (\r
              Node,\r
-             NumNodes < FIXED_OFW_NODES ? NumNodes : FIXED_OFW_NODES,\r
+             NumNodes < EXAMINED_OFW_NODES ? NumNodes : EXAMINED_OFW_NODES,\r
              Translated,\r
              TranslatedSize);\r
   switch (Status) {\r