commit ff1e7fc72b138fe66de1452a311b7e871f33e201
Author: Michael Brown <mcb30@ipxe.org>
Date:   Mon Mar 3 16:23:41 2014 +0000

    [prefix] Ignore PCI autoboot device location if set to 00:00.0
    
    qemu can load an option ROM which is not associated with a particular
    PCI device using the "-option-rom" syntax.  Under these circumstances,
    we should ignore the PCI bus:dev.fn address that we expect to find in
    %ax on entry to the initialisation vector.
    
    Fix by using the PCI bus:dev.fn address only if it is non-zero.  Since
    00:00.0 will always be the host bridge, it can never be the address of
    a network card.
    
    Reported-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Michael Brown <mcb30@ipxe.org>

diff --git a/src/arch/i386/core/pci_autoboot.c b/src/arch/i386/core/pci_autoboot.c
index bbb4027..5e6197e 100644
--- a/src/arch/i386/core/pci_autoboot.c
+++ b/src/arch/i386/core/pci_autoboot.c
@@ -34,8 +34,10 @@ uint16_t __bss16 ( autoboot_busdevfn );
  */
 static void pci_autoboot_init ( void ) {
 
-	autoboot_device.bus_type = BUS_TYPE_PCI;
-	autoboot_device.location = autoboot_busdevfn;
+	if ( autoboot_busdevfn ) {
+		autoboot_device.bus_type = BUS_TYPE_PCI;
+		autoboot_device.location = autoboot_busdevfn;
+	}
 }
 
 /** PCI autoboot device initialisation function */
