]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[prefix] Ignore PCI autoboot device location if set to 00:00.0
authorMichael Brown <mcb30@ipxe.org>
Mon, 3 Mar 2014 16:23:41 +0000 (16:23 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 3 Mar 2014 16:28:43 +0000 (16:28 +0000)
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>
src/arch/i386/core/pci_autoboot.c

index bbb402774ea6763cb5c929d16c7d7bb21f7c4364..5e6197e2e2515305c05847f64821a0aa4c98356c 100644 (file)
@@ -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 */