[autoboot] Match against parent devices when matching by bus type and location
authorMichael Brown <mcb30@ipxe.org>
Tue, 17 Mar 2015 02:30:06 +0000 (02:30 +0000)
committerMichael Brown <mcb30@ipxe.org>
Tue, 17 Mar 2015 02:30:06 +0000 (02:30 +0000)
commit75d6fec6c4209e090dd48f83a1a6d1054c66af3c
treeb7978802aea214b7893bb8819df1054488e3f3d3
parent3de0ffc8872267c2352a86f738474a91660443d0
[autoboot] Match against parent devices when matching by bus type and location

When using iPXE as an option ROM for a PCI USB controller (e.g. via
qemu's "-device nec-usb-xhci,romfile=..." syntax), the ROM prefix will
set the PCI bus:dev.fn address of the USB controller as the PCI
autoboot device.  This will cause iPXE to fail to boot from any
detected USB network devices, since they will not match the autoboot
bus type (or location).

Fix by allowing the autoboot bus type and location to match against
the network device or any of its parent devices.  This allows the
match to succeed for USB network devices attached to the selected PCI
USB controller.

Reported-by: Dan Ellis <Dan.Ellis@displaylink.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/usr/autoboot.c