aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2010-06-02[efi] Add the "snpnet" driverGeoff Lywood10-4/+724
Add a new network driver that consumes the EFI Simple Network Protocol. Also add a bus driver that can find the Simple Network Protocol that iPXE was loaded from; the resulting behavior is similar to the "undionly" driver for BIOS systems. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-06-01[qib7322] Fix whitespace errorsMichael Brown1-107/+108
Fix up the whitespace errors inadvertently introduced by the last-minute rename from the internal QLogic codename to "qib7322". Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-06-01[qib7322] Fix uninitialized variables warningShao Miller1-3/+10
Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-31[libc] Enable automated extraction of error usage reportsMichael Brown22-391/+1499
Add preprocessor magic to the error definitions to enable every error usage to be tracked. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-30[pxe] Remove obsolete pxe_errortab.cMichael Brown1-103/+0
strerror() has not been able to use the PXE-only error table since commit 9aa61ad ("Add per-file error identifiers") back in 2007. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-29[efi] Tidy up output of EFI header import scriptMichael Brown3-19/+65
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-29[legal] Add FILE_LICENCE declarations to EFI header filesMichael Brown40-0/+96
Autodetect the BSD licence statement in EFI header files, and add a suitable FILE_LICENCE macro to the version imported into the iPXE tree. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-29[efi] Synchronise EFI header filesMichael Brown2-7/+10
Now that the PACKED macro conflict is resolved, we can use an unmodified import of the EFI header files (using include/ipxe/efi/import.pl). Synchronised to EDK2 SVN revision 10556. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-29[build] Remove PACKED macroMichael Brown6-74/+70
Most of iPXE uses __attribute__((packed)) anyway, and PACKED conflicts with an identically-named macro in the upstream EFI header files. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-29[efi] Update UEFI header files with latest version from TianoCoreGeoff Lywood41-1613/+6072
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-29[dhcp] Use correct DHCP options on EFI systemsGeoff Lywood5-8/+126
See RFC 4578 for details. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28[iscsi] Allow base64 encoding in large binary valuesPiotr Jaroszyński1-23/+47
Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28[iscsi] Use generic base16 functions for iSCSI reverse CHAPMichael Brown1-24/+17
Yes, I forgot to convert this function before pushing. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28[infiniband] Use generic base16 functions for SRPMichael Brown1-9/+7
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28[iscsi] Use generic base16 functions for iSCSIMichael Brown1-30/+21
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28[base16] Add generic base16 encoding and decoding routinesMichael Brown3-0/+145
Base16 encoding is currently implemented in both iSCSI and SRP. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28[base64] Add ability to decode base64 stringsMichael Brown3-0/+101
Inspired-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28[base64] Allow base64_encode() to handle arbitrary dataMichael Brown3-14/+16
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[build] Add rtl8139.rom to the default build target listMichael Brown1-1/+2
rtl8139.rom is the target used in qemu/kvm, which is the default test platform for iPXE. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[build] Allow building against a zlib in a non-standard locationGeoff Lywood2-1/+3
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[efi] Fix .efi and .efidrv linkingPiotr Jaroszyński5-7/+10
The linker chooses to look for _start first and always picks efidrvprefix.o to satisfy it (probably because it's earlier in the archive) which causes a multiple definition error when the linker later has to pick efiprefix.o for other symbols. Fix by using EFI-specific TGT_LD_FLAGS with an explicit entry point. Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[compiler] Fix 64bit compile time errorsPiotr Jaroszyński6-12/+12
Apart from format specifier fixes there are two changes in proper code: - Change type of regs in skge_hw to unsigned long - Cast result of sizeof in myri10ge to uint32_t Both don't change anything for i386 and should be fine on x86_64. Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[dhcp] Don't consider invalid offers to be duplicatesJoshua Oreman1-3/+3
This fixes a regression in BOOTP support; since BOOTP requests often have the `siaddr' field set to 0.0.0.0, they would be considered duplicates of the first zeroed-out offer slot. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[build] Use weak definitions instead of weak declarationsJoshua Oreman11-90/+48
This removes the need for inline safety wrappers, marginally reducing the size penalty of weak functions, and works around an apparent binutils bug that causes undefined weak symbols to not actually be NULL when compiling with -fPIE (as EFI builds do). A bug in versions of binutils prior to 2.16 (released in 2005) will cause same-file weak definitions to not work with those toolchains. Update the README to reflect our new dependency on binutils >= 2.16. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[efi] Fix link order for elf2efiPiotr Jaroszyński1-2/+2
Dependencies are considered in left-to-right order so the source file needs to come first in this case. Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[build] Inhibit "skipping incompatible" message from ldMichael Brown1-1/+1
On 64-bit systems with both 32-bit and 64-bit libraries installed, ld tends to generate noisy "skipping incompatible /usr/lib/libxxx.so" messages when building elf2efi.c. Fix by passing --no-warn-search-mismatch to ld. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[efi] Verify object format support in elf2efi.cGeoff Lywood1-2/+3
Currently, if you attempt to build 64-bit EFI binaries on a 32-bit system without a suitable cross-compiling version of libbfd, the iPXE build will die with a segmentation fault in elf2efi64. Fix by properly handling the return value from bfd_check_format(). Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[dhcp] Honor PXEBS_SKIP option in discovery controlJoshua Oreman1-2/+26
It is permissible for a DHCP packet containing PXE options to specify only "discovery control", instead of the more typical boot menu + prompt options. This is the strategy used by older versions of dnsmasq; by specifying the discovery control as PXEBS_SKIP, they cause vendor PXE ROMs to ignore boot server discovery and just use the filename and next-server options in the initial (Proxy)DHCP packet. Modify iPXE to accept this behavior, to be more compatible with the Intel firmware. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Tested-by: Kyle Kienapfel <kyle@shadowmage.org> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[wpa] Remove PMKID checkingJoshua Oreman1-64/+0
PMKID checking is an additional pre-check that helps detect invalid passphrases before going through the full handshaking procedure. It takes up some amount of code size, and is not necessary from a security perspective. It also is implemented improperly by some routers, which was causing iPXE to give spurious authentication errors. Remove it for these reasons. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-27[bitmap] Fix bitmaps on 64-bitGeoff Lywood2-2/+2
Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-25[comboot] Propagate carry flag from COMBOOT APIStefan Hajnoczi3-12/+41
COMBOOT API calls set the carry flag on failure. This was not being propagated because the COMBOOT interrupt handler used iret to return with EFLAGS restored from the stack. This patch propagates CF before returning from the interrupt. Reported-by: Geoff Lywood <glywood@vmware.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-25[qib7322] Add support for QLogic 7322 HCAMichael Brown4-0/+10051
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-22[tcp] Update received sequence number before delivering received dataMichael Brown1-8/+10
iPXE currently updates the TCP sequence number after delivering the data to the application via xfer_deliver_iob(). If the application responds to the received data by transmitting more data, this would result in a stale ACK number appearing in the transmitted packet, which potentially causes retransmissions and also gives the undesirable appearance of violating causality (by sending a response to a message that we claim not to have yet received). Reported-by: Guo-Fu Tseng <cooldavid@cooldavid.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-22[script] Accept "#!gpxe" as well as "#!ipxe" as a script magic markerMichael Brown1-4/+9
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-21[pxe] Treat PXENV_RESTART_TFTP as unreturnableMichael Brown3-7/+17
Microsoft WDS can end up calling PXENV_RESTART_TFTP to execute a second-stage NBP which then exits. Specifically, wdsnbp.com uses PXENV_RESTART_TFTP to execute pxeboot.com, which will exit if the user does not press F12. iPXE currently treats PXENV_RESTART_TFTP as a normal PXE API call, and so attempts to return to wdsnbp.com, which has just been vaporised by pxeboot.com. Use rmsetjmp/rmlongjmp to preserve the stack state as of the initial NBP execution, and to restore this state immediately prior to executing the NBP loaded via PXENV_RESTART_TFTP. This matches the behaviour in the PXE spec (which says that "if TFTP is restarted, control is never returned to the caller"), and allows pxeboot.com to exit relatively cleanly back to iPXE. As with all usage of setjmp/longjmp, there may be subtle corner case bugs due to not gracefully unwinding any state accumulated by the time of the longjmp call, but this seems to be the only viable way to provide the specified behaviour. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-10[lacp] Add simple LACP implementationMichael Brown5-406/+526
Some switch configurations will refuse to enable our port unless we can speak LACP to inform the switch that we are alive. Add a very simple passive LACP implementation that is sufficient to convince at least Linux's bonding driver (when tested using qemu attached to a tap device enslaved to a bond device configured as "mode=802.3ad"). Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-27[build] Fix building with binutils 2.16Michael Brown1-1/+2
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[uri] Special case NULL in churi()Piotr Jaroszyński1-2/+4
resolve_uri() doesn't (and probably shouldn't) handle NULL relative_uri. Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[uri] Fix NULL dereference in parse_uri()Piotr Jaroszyński1-2/+10
Don't try to parse authority if it's not there. Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[romprefix] Add .mrom format, allowing loading of large ROMsMichael Brown5-9/+518
Add an infrastructure allowing the prefix to provide an open_payload() method for obtaining out-of-band access to the whole iPXE image. Add a mechanism within this infrastructure that allows raw access to the expansion ROM BAR by temporarily borrowing an address from a suitable memory BAR on the same PCI card. For cards that have a memory BAR that is at least as large as their expansion ROM BAR, this allows large iPXE ROMs to be supported even on systems where PMM fails, or where option ROM space pressure makes it impossible to use PMM shrinking. The BIOS sees only a stub ROM of approximately 3kB in size; the remainder (which can be well over 64kB) is loaded only at the time iPXE is invoked. As a nice side-effect, an iPXE .mrom image will continue to work even if its PMM-allocated areas are overwritten between initialisation and invocation. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[build] Replace obsolete makerom.pl with quick script using Option::ROMMichael Brown5-251/+39
The only remaining useful function of makerom.pl is to correct the ROM and PnP checksums; the PCI IDs are set at link time, and padding is performed using padimg.pl. Option::ROM already provides a facility for correcting the checksums, so we may as well just use this instead. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[main] Match "starting execution" and "initialising devices" message styleMichael Brown1-2/+2
Add a trailing "ok" to the "initialising devices message", to match the visual style of the "ok" now added to the "starting execution" message. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[romprefix] Inhibit the use of relocation during POSTMichael Brown3-6/+25
It is common for system memory maps to be grotesquely unreliable during POST. Many sanity checks have been added to the memory map reading code, but these do not catch all problems. Skip relocation entirely if called during POST. This should avoid the problems typically encountered, at the cost of slightly disrupting the memory map of an operating system booted via iPXE when iPXE was entered during POST. Since this is a very rare special case (used, for example, when reflashing an experimental ROM that would otherwise prevent the system from completing POST), this is an acceptable cost. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[romprefix] Split PMM allocations for image source and decompression areaMichael Brown1-51/+119
Some BIOSes (at least some AMI BIOSes) tend to refuse to allocate a single area large enough to hold both the iPXE image source and the temporary decompression area, despite promising a largest available PMM memory block of several megabytes. This causes ROM image shrinking to fail on these BIOSes, with undesirable consequences: other option ROMs may be disabled due to shortage of option ROM space, and the iPXE ROM may itself be corrupted by a further BIOS bug (again, observed on an AMI BIOS) which causes large ROMs to end up overlapping reserved areas of memory. This can potentially render a system unbootable via any means. Increase the chances of a successful PMM allocation by dropping the alignment requirement (which is redundant now that we can enable A20 from within the prefix); this allows us to reduce the allocation size from 2MB down to only the required size. Increase the chances still further by using two separate allocations: one to hold the image source (i.e. the copy of the ROM before being shrunk) and the other to act as the decompression area. This allows ROM image shrinking to take place even on systems that fail to allocate enough memory for the temporary decompression area. Improve the behaviour of iPXE in systems with multiple iPXE ROMs by sharing PMM allocations where possible. Image source areas can be shared with any iPXE ROMs with a matching build identifier, and the temporary decompression area can be shared with any iPXE ROMs with the same uncompressed size (rounded up to the nearest 128kB). Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[prefix] Use area at top of INT 15,88 memory map for temporary decompressionMichael Brown3-17/+27
Use INT 15,88 to find a suitable temporary decompression area, rather than a fixed address. This hopefully gives us a better chance of not treading on any PMM-allocated areas, in BIOSes where PMM support exists but tends not to give us the large blocks that we ask for. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[pcbios] Always show INT 15,88 result under DEBUG=memmapMichael Brown1-5/+5
Always call INT 15,88 even if we don't use the result. This allows DEBUG=memmap to show the complete result set returned by all of the INT 15 memory-map calls. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-25[build] Generate random build identifierMichael Brown2-2/+10
Randomly generate a 32-bit build identifier that can be used to identify identical iPXE ROMs when multiple such ROMs are present in a system (e.g. when a multi-function NIC exposes the same iPXE ROM image via each function's expansion ROM BAR). Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-21[romprefix] Provide indication of successful call to install_preallocMichael Brown1-4/+12
The existing "iPXE starting execution" message indicates that the BEV (or INT19) was invoked, but gives no indication on whether or not the iPXE source was successfully retrieved (e.g. from PMM). Split the "starting execution message" into "starting execution...ok"; the "ok" indicates that the main iPXE body was successfully decompressed and relocated. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-20[prefix] Default to 1MB mark as fallback high memory load pointMichael Brown1-8/+1
Now that we can use odd megabytes, there is no particular need to use an even megabyte as the fallback temporary load point. Note that the old warnings about avoiding 2MB pre-date our ability to cooperate with other PXE ROMs by using PMM. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-04-20[relocate] Remove the even megabyte constraintMichael Brown1-48/+8
iPXE is now capable of operating in odd megabytes of memory, so remove the obsolete code enforcing an even-megabyte constraint. Signed-off-by: Michael Brown <mcb30@ipxe.org>