summaryrefslogtreecommitdiff
path: root/OvmfPkg/Library/PlatformBdsLib
diff options
context:
space:
mode:
Diffstat (limited to 'OvmfPkg/Library/PlatformBdsLib')
-rw-r--r--OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c b/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
index 8b462ec3dd..4a33396512 100644
--- a/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
+++ b/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
@@ -31,9 +31,10 @@
/**
- Number of nodes in OpenFirmware device paths that is required and examined.
+ Numbers of nodes in OpenFirmware device paths that are required and examined.
**/
-#define FIXED_OFW_NODES 4
+#define REQUIRED_OFW_NODES 2
+#define EXAMINED_OFW_NODES 4
/**
@@ -497,7 +498,7 @@ TranslateOfwNodes (
//
// Get PCI device and optional PCI function. Assume a single PCI root.
//
- if (NumNodes < FIXED_OFW_NODES ||
+ if (NumNodes < REQUIRED_OFW_NODES ||
!SubstringEq (OfwNode[0].DriverName, "pci")
) {
return RETURN_UNSUPPORTED;
@@ -513,7 +514,8 @@ TranslateOfwNodes (
return RETURN_UNSUPPORTED;
}
- if (SubstringEq (OfwNode[1].DriverName, "ide") &&
+ if (NumNodes >= 4 &&
+ SubstringEq (OfwNode[1].DriverName, "ide") &&
SubstringEq (OfwNode[2].DriverName, "drive") &&
SubstringEq (OfwNode[3].DriverName, "disk")
) {
@@ -562,7 +564,8 @@ TranslateOfwNodes (
Secondary ? "Secondary" : "Primary",
Slave ? "Slave" : "Master"
);
- } else if (SubstringEq (OfwNode[1].DriverName, "isa") &&
+ } else if (NumNodes >= 4 &&
+ SubstringEq (OfwNode[1].DriverName, "isa") &&
SubstringEq (OfwNode[2].DriverName, "fdc") &&
SubstringEq (OfwNode[3].DriverName, "floppy")
) {
@@ -676,7 +679,7 @@ TranslateOfwPath (
{
UINTN NumNodes;
RETURN_STATUS Status;
- OFW_NODE Node[FIXED_OFW_NODES];
+ OFW_NODE Node[EXAMINED_OFW_NODES];
BOOLEAN IsFinal;
OFW_NODE Skip;
@@ -692,7 +695,7 @@ TranslateOfwPath (
++NumNodes;
Status = ParseOfwNode (
Ptr,
- (NumNodes < FIXED_OFW_NODES) ? &Node[NumNodes] : &Skip,
+ (NumNodes < EXAMINED_OFW_NODES) ? &Node[NumNodes] : &Skip,
&IsFinal
);
}
@@ -712,7 +715,7 @@ TranslateOfwPath (
Status = TranslateOfwNodes (
Node,
- NumNodes < FIXED_OFW_NODES ? NumNodes : FIXED_OFW_NODES,
+ NumNodes < EXAMINED_OFW_NODES ? NumNodes : EXAMINED_OFW_NODES,
Translated,
TranslatedSize);
switch (Status) {