[efi] Enumerate PCI BARs in same order as SnpDxe
authorMichael Brown <mcb30@ipxe.org>
Fri, 21 Jul 2017 13:48:27 +0000 (14:48 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 21 Jul 2017 14:00:17 +0000 (15:00 +0100)
commit9ccd8fe569c75265dfa834d325046696e18616de
tree33fa17f941c9568e44c82dd99b528de242a7c0d8
parent0600d3ae94f93efd10fc6b3c7420a9557a3a1670
[efi] Enumerate PCI BARs in same order as SnpDxe

The UEFI specification has an implicit and demonstrably incorrect
requirement (in the Mem_IO() calling convention) that any UNDI network
device has at most one memory BAR and one I/O BAR.

Some UEFI platforms have been observed to report the existence of
non-existent additional I/O BARs, causing iPXE to select the wrong
BAR.  This problem does not affect the SnpDxe driver, since that
driver will always choose the lowest numbered existent BAR of each
type.

Adjust iPXE's behaviour to match that of SnpDxe, i.e. to always select
the lowest numbered BAR(s).

Debugged-by: Andreas Hammarskjöld <junior@2PintSoftware.com>
Debugged-by: Adklei <adklei@realtek.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/efi/nii.c