mirror of
https://github.com/ipxe/ipxe.git
synced 2026-10-24 07:59:35 +03:00
awstester
There are two checks that we perform to see whether a PCI device exists at a given bus:dev.fn address. We check to see if the vendor and device IDs read as either all-zeros or all-ones, and for a non-zero function number we also check that the device is actually a multi-function device by reading the header type from the device's function zero. For historical reasons, the multi-function header type check is currently performed before the existence check. (The code originally supported only a one-time linear enumeration of the PCI bus, and so the header type for function zero was already known: checking the header type first therefore used to allow the read of the vendor and device IDs to be elided completely.) On some UEFI systems (observed on an AWS a1.metal instance in eu-central-1), attempting to read the vendor and device IDs for a non-existent device will work as expected, but attempting to read the header type will lock up the system. (No further diagnostics are available: the a1.metal instance type has no serial port and does not support taking a screenshot, and so the only available output is from the iPXE disk log console.) Work around this curious defect by swapping the order of the existence and header type checks. Signed-off-by: Michael Brown <mcb30@ipxe.org>
iPXE network bootloader
iPXE is the leading open source network boot firmware. It provides a full PXE implementation enhanced with additional features such as:
-
boot from a web server via HTTP or HTTPS,
-
boot from an iSCSI, FCoE, or AoE SAN,
-
control the boot process with a script,
You can use iPXE to replace the existing PXE ROM on your network card, or you can chainload into iPXE to obtain the features of iPXE without the hassle of reflashing.
iPXE is free, open-source software licensed under the GNU GPL (with some portions under GPL-compatible licences).
You can download the rolling release binaries (built from the latest commit), or use the most recent stable release.
For full documentation, visit the iPXE website.
Description
Languages
C
98.5%
Assembly
0.6%
Python
0.3%
Perl
0.3%
Makefile
0.2%