Support multiple BCVs in a single option rom.
diff --git a/src/optionroms.c b/src/optionroms.c
index 0f99c2e..389d528 100644
--- a/src/optionroms.c
+++ b/src/optionroms.c
@@ -131,6 +131,18 @@
     return pnp;
 }
 
+// Check for multiple pnp option rom headers.
+static struct pnp_data *
+get_pnp_next(struct rom_header *rom, struct pnp_data *pnp)
+{
+    if (! pnp->nextoffset)
+        return NULL;
+    pnp = (struct pnp_data *)((u8*)rom + pnp->nextoffset);
+    if (pnp->signature != *(u32*)pnp_string)
+        return NULL;
+    return pnp;
+}
+
 // Check if a valid option rom has a pci struct; return it if so.
 static struct pci_data *
 get_pci_rom(struct rom_header *rom)
@@ -345,9 +357,13 @@
         if (pnp->bev)
             // Can boot system - add to IPL list.
             add_ipl(rom, pnp);
-        else if (pnp->bcv)
-            // Has BCV - run it now.
-            callrom(rom, pnp->bcv, 0);
+        else
+            // Check for BCV (there may be multiple).
+            while (pnp && pnp->bcv) {
+                // Has BCV - run it now.
+                callrom(rom, pnp->bcv, 0);
+                pnp = get_pnp_next(rom, pnp);
+            }
     }
 }