Skip to content

Commit

Permalink
[prefix] Ignore PCI autoboot device location if set to 00:00.0
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mcb30 committed Mar 3, 2014
1 parent c429bf0 commit ff1e7fc
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/arch/i386/core/pci_autoboot.c
Expand Up @@ -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 */
Expand Down

0 comments on commit ff1e7fc

Please sign in to comment.