summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [romprefix] Split PMM allocations for image source and decompression areaMichael Brown2010-04-251-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>
* [prefix] Use area at top of INT 15,88 memory map for temporary decompressionMichael Brown2010-04-253-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>
* [pcbios] Always show INT 15,88 result under DEBUG=memmapMichael Brown2010-04-251-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>
* [build] Generate random build identifierMichael Brown2010-04-252-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>
* [romprefix] Provide indication of successful call to install_preallocMichael Brown2010-04-211-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>
* [prefix] Default to 1MB mark as fallback high memory load pointMichael Brown2010-04-201-8/+1Star
| | | | | | | | | | 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>
* [relocate] Remove the even megabyte constraintMichael Brown2010-04-201-48/+8Star
| | | | | | | 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>
* [librm] Use libflat to enable A20 line on each real-to-protected transitionMichael Brown2010-04-208-227/+12Star
| | | | | | | | | | | | | Use the shared code in libflat to perform the A20 transitions automatically on each transition from real to protected mode. This allows us to remove all explicit calls to gateA20_set(). The old warnings about avoiding automatically enabling A20 are essentially redundant; they date back to the time when we would always start hammering the keyboard controller without first checking to see if gate A20 was already enabled (which it almost always is). Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [prefix] Add A20-enabling code in libflatMichael Brown2010-04-202-8/+296
| | | | | | | | | | | | | | | | iPXE currently insists on residing in an even megabyte. This imposes undesirably severe constraints upon our PMM allocation strategy, and limits our options for mechanisms to access ROMs greater than 64kB in size. Add A20 handling code to libflat so that prefixes are able to access memory even in odd megabytes. The algorithms and tuning parameters in the new A20 handling code are based upon a mixture of the existing iPXE A20 code and the A20 code from the 2.6.32 Linux kernel. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [prefix] Move flatten_real_mode to libflat.SMichael Brown2010-04-202-122/+141
| | | | Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [prefix] Move flatten_real_mode to .text16.earlyMichael Brown2010-04-201-41/+31Star
| | | | | | | | | | The flatten_real_mode routine is not needed until after decompressing .text16.early, and currently performs various contortions to compensate for the fact that .prefix may not be writable. Move flatten_real_mode to .text16.early to save on (compressed) binary size and simplify the code. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [prefix] Add .text16.early sectionMichael Brown2010-04-204-39/+150
| | | | | | | | | | | | | Add a section .text16.early which is always kept inline with the prefix. This will allow for some code sharing between the .prefix and .text16 sections. Note that the simple solution of just prepending the .prefix section to the .text16 section will not work, because a bug in Wyse Streaming Manager server (WLDRM13.BIN) requires us to place a dummy PXENV+ entry point at the start of .text16. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [prefix] Use flat real mode for access to high memoryMichael Brown2010-04-201-127/+79Star
| | | | | | | | | | Use flat real mode rather than 16-bit protected mode for access to high memory during installation. This simplifies the code by reducing the number of CPU modes we need to think about, and also increases the amount of code in common between the normal and (somewhat hypothetical) KEEP_IT_REAL methods of operation. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [prefix] Use flat real mode instead of real modeMichael Brown2010-04-202-17/+8Star
| | | | | | | | | | | | | | | | | | | | When returning to real mode, set 4GB segment limits instead of 64kB limits. This change improves our chances of successfully returning to a PMM-capable BIOS aftering entering iPXE during POST; the BIOS will have set up flat real mode before calling our initialisation point, and may be disconcerted if we then return in genuine real mode. This change is unlikely to break anything, since any code that might potentially access beyond 64kB must use addr32 prefixes to do so; if this is the case then it is almost certainly code written to expect flat real mode anyway. Note that it is not possible to restore the real-mode segment limits to their original values, since it is not possible to know which protected-mode segment descriptor was originally used to initialise the limit portion of the segment register. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [romprefix] Remove .hrom prefixMichael Brown2010-04-204-28/+0Star
| | | | | | | | | | | | The .hrom prefix provides an experimental mechanism for reducing option ROM space usage on systems where PMM allocation fails, by pretending that PMM allocation succeeded and gave us an address fixed at compilation time. This is unreliable, and potentially dangerous. In particular, when multiple gPXE ROMs are present in a system, each gPXE ROM will assume ownership of the same fixed address, resulting in undefined behaviour. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [romprefix] Remove .xrom prefixMichael Brown2010-04-206-407/+20Star
| | | | | | | | | | | | | | | The .xrom prefix provides an experimental mechanism for loading ROM images greater than 64kB in size by mapping the expansion ROM BAR in at a hopefully-unused address. This is unreliable, and potentially dangerous. In particular, there is no guarantee that any PCI bridges between the CPU and the device will respond to accesses for the "unused" memory region that is chosen, and it is possible that the process of scanning for the "unused" memory region may end up issuing reads to other PCI devices. If this ends up trampling on a register with read side-effects belonging to an unrelated PCI device, this may cause undefined behaviour. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [build] Rename gPXE to iPXEMichael Brown2010-04-20597-2288/+2220Star
| | | | | | | | | | | Access to the gpxe.org and etherboot.org domains and associated resources has been revoked by the registrant of the domain. Work around this problem by renaming project from gPXE to iPXE, and updating URLs to match. Also update README, LOG and COPYRIGHTS to remove obsolete information. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [eepro100] Remove link-state checkingThomas Miletich2010-04-192-48/+1Star
| | | | | | | | | | | | Christopher Armenio reported link detection problems with an integrated eepro100 NIC. Thomas Miletich removed link detection code from the eepro100 driver and verified that the driver continued to function. Christopher verified Thomas' patch on his integrated eepro100 NIC. Reported-by: Christopher Armenio <christopher.armenio@resquared.com> Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [util] Hide an expected error from the 'which' commandPiotr Jaroszyński2010-04-161-1/+1
| | | | | Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [build] Look for isolinux.bin in more placesPiotr Jaroszyński2010-04-161-1/+5
| | | | | Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [drivers] Fix warnings identified by gcc 4.5Bruce Rogers2010-04-163-4/+4
| | | | | | | | | In building gpxe for openSUSE Factory (part of kvm package), there were a few problems identified by the compiler. This patch addresses them. Signed-off-by: Bruce Rogers <brogers@novell.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [build] Add support for local configuration filesPiotr Jaroszyński2010-03-2611-2/+25
| | | | | | | | Include config/local/$file in config/$file where it makes sense and create empty local configs during build if not present. Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pxe] Remove pxe_set_cached_filename()Michael Brown2010-03-263-37/+0Star
| | | | | | | | | | | | | | | | | gPXE currently overwrites the filename stored in the cached DHCP packets when a call to PXENV_TFTP_READ_FILE or PXENV_RESTART_TFTP is made. This code has existed for many years as a workaround for RIS, which seemed to require that this be done. pxe_set_cached_filename() causes problems with the Bootix NBP, and a recent test demonstrates that RIS will complete successfully even with pxe_set_cached_filename() removed. There have been many changes to the DHCP and PXE logic since this code was first added, and it is quite plausible that it was masking a bug that no longer exists. Reported-by: Alex Zeffertt <alex.zeffertt@eu.citrix.com> Debugged-by: Shao Miller <Shao.Miller@yrdsb.edu.on.ca> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pxe] Avoid potential interrupt storms when using shared interruptsMichael Brown2010-03-231-4/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | Current gPXE code always returns "OURS" in response to PXENV_UNDI_ISR:START. This is harmless for non-shared interrupt lines, and avoids the complexity of trying to determine whether or not we really did cause the interrupt. (This is a non-trivial determination; some drivers don't have interrupt support and hook the system timer interrupt instead, for example.) A problem occurs when we have a shared interrupt line, the other device asserts an interrupt, and the controlling ISR does not chain to the other device's ISR when we return "OURS". Under these circumstances, the other device's ISR never executes, and so the interrupt remains asserted, causing an interrupt storm. Work around this by returning "OURS" if and only if our net device's interrupt is currently recorded as being enabled. Since we always disable interrupts as a result of a call to PXENV_UNDI_ISR:START, this guarantees that we will eventually (on the second call) return "NOT OURS", allowing the other ISR to be called. Under normal operation, including a non-shared interrupt situation, this change will make no difference since PXENV_UNDI_ISR:START would be called only when interrupts were enabled anyway. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [netdevice] Record whether or not interrupts are currently enabledMichael Brown2010-03-232-0/+21
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [netdevice] Add netdev_is_open() wrapper functionMichael Brown2010-03-2310-17/+28
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [phantom] Update interrupt support to match current firmwareMichael Brown2010-03-222-23/+91
| | | | | | | | | | | The interrupt control mechanism on Phantom cards has changed substantially since the driver was initially written. This updates the code to match the mechanism used in production firmware. This is sufficient to allow DOS wget to function successfully using the 3Com UNDI/NDIS, Intel UNDI/NDIS, and UNDIPD.COM UNDI/PD stacks. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [igb] Add igb driverMarty Connor2010-03-1721-0/+13395
| | | | | | | | | | | | This commit adds an igb (Intel GigaBit) driver based on Intel source code available at: http://sourceforge.net/projects/e1000/ which is upstream source for the Linux kernel e1000 drivers, and should support some PCIe e1000 variants. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000e] Add e1000e driverMarty Connor2010-03-1722-0/+18164
| | | | | | | | | | | | This commit adds an e1000e driver based on Intel source code available at: http://sourceforge.net/projects/e1000/ which is upstream source for the Linux kernel e1000 drivers, and should support many PCIe e1000 variants. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [e1000] Update e1000 driverMarty Connor2010-03-1725-13859/+15348
| | | | | | | | | | | | This commit replaces the current gPXE e1000 driver with one ported from Intel source code available at http://sourceforge.net/projects/e1000/ which is upstream source for the Linux kernel e1000 drivers, and should support most if not all PCI e1000 variants. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [iscsi] Disambiguate some common authentication errorsMichael Brown2010-03-171-14/+27
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [vxge] Add stub vxge.c file so bin/vxge.usb can be builtStefan Hajnoczi2010-03-122-4/+23
| | | | | | | | | | | | The vxge driver code is split over several files, including vxge_main.c. This causes the build system and ROM-o-matic to see the driver as "vxge_main". This patch adds a stub vxge.c which takes up no space but gives the driver its proper name, "vxge". Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [fnrec] Add function recorder for debuggingStefan Hajnoczi2010-03-043-0/+195
| | | | | | | | | | | | | | | | | | The function recorder is a crash and hang debugging tool. It logs each function call into a memory buffer while gPXE runs. After the machine is reset, and if the contents of memory have not been overwritten, gPXE will detect the memory buffer and print out its contents. This allows developers to see a trace of the last functions called before a crash or hang. The util/fnrec.sh script can be used to convert the function addresses back into symbol names. To build with fnrec: make FNREC=1 Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [build] Disable ccache for embedded.oStefan Hajnoczi2010-03-041-0/+7
| | | | | | | | | | | | Embedded image support uses .incbin in inline assembly to include binary files. The file dependency is not spotted by ccache when deciding whether or not to rebuild embedded.o. This results in builds that contain an outdated version of the embedded image when ccache is used. Reported-by: Tim 'Shaggy' Bielawa <tbielawa@jabber.org> Reported-by: Matt Domsch <Matt_Domsch@dell.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [misc] Remove accidentally commited .dotest directoryMarty Connor2010-03-0415-155/+0Star
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [build] Disable ccache for embedded.oStefan Hajnoczi2010-03-0415-0/+155
| | | | | | | | | | | | Embedded image support uses .incbin in inline assembly to include binary files. The file dependency is not spotted by ccache when deciding whether or not to rebuild embedded.o. This results in builds that contain an outdated version of the embedded image when ccache is used. Reported-by: Tim 'Shaggy' Bielawa <tbielawa@jabber.org> Reported-by: Matt Domsch <Matt_Domsch@dell.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [comboot] Match version strings to SYSLINUX styleDaniel Verkamp2010-03-011-2/+2
| | | | | | | | | In the actual SYSLINUX suite's comboot implementation, the version string is prefixed by CR LF, and the copyright string has a leading space. Some tools (specifically HDT) assume these padding characters exist, so we should probably return strings in a similar format. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [vxge] Add support for X3100 series 10GbE Server/Storage AdapterMasroor Vettuparambil2010-02-2410-0/+9386
| | | | | | | Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Masroor Vettuparambil <masroor.vettuparambil@neterion.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [undi] Ensure only one UNDI instance is loadedStefan Hajnoczi2010-02-241-0/+12
| | | | | | | | | | | | | | | | | | Loading multiple UNDI instances would be useful in systems that have several network cards with vendor PXE ROMs. However, we cannot rely on UNDI ROMs working correctly with multiple instances loaded simultaneously. The gPXE UNDI driver supports the following multi-NIC configurations: 1. Chainloading undionly.kpxe on a specific NIC. 2. Loading the UNDI driver for the first probed device and ignoring all other UNDI devices in the system. This patch refuses to probe additional UNDI devices so there can never be multiple instances of UNDI loaded. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [iscsi] Fix interoperability with QNAP TS-639ProDanny Volkind2010-02-221-3/+10
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [util] Detect genisoimage as mkisofs replacementStefan Hajnoczi2010-02-131-1/+11
| | | | | | | | | | | | | Debian based systems may have genisoimage(1) instead of mkisofs(1). They are command-line compatible so the util/geniso script should be able to choose either one. This patch also changes the use of the mkisofs quiet (-q) flag to its long form (-quiet). This should be compatible with more versions of cdrtools and cdrkit. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [hermon] Change hermon_alloc_icm() to conform to ConnectX2 requirementsItay Gazit2010-02-131-16/+58
| | | | | | | | Align each ICM member alloc to the member size instead of page size. Increase multicast table size to 128. Signed-off-by: Itay Gazit <itaygazit@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [shell_banner] Avoid printing Ctrl-B prompt if BANNER_TIMEOUT <= 0Marty Connor2010-02-041-0/+4
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [release] Update version to 1.0.0+ post releaseMarty Connor2010-02-021-1/+1
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [release] Update version to 1.0.0 for releasev1.0.0Marty Connor2010-02-021-1/+1
| | | | Signed-off-by: Marty Connor <mdc@etherboot.org>
* [proto] Remove unsupported NMB protocolStefan Hajnoczi2010-02-015-137/+0Star
| | | | | | | | | The NMB protocol code came from legacy Etherboot and was never updated to work as a gPXE protocol. There has been no demand for this protocol, so this patch removes it. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [proto] Remove unsupported IGMP protocolStefan Hajnoczi2010-02-014-211/+0Star
| | | | | | | | | The IGMP code came from legacy Etherboot and was never updated to work as a gPXE protocol. There has been no demand for this protocol, so this patch removes it. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [proto] Remove unsupported NFS protocolStefan Hajnoczi2010-02-016-685/+1Star
| | | | | | | | | | | | | The NFS protocol code came from legacy Etherboot and was never updated to work as a gPXE protocol. There has been no demand for this protocol, so this patch removes it. I have an unfinished NFSv3 over TCP implementation for gPXE that can be used as the base for new work, should we want to resurrect this protocol. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [proto] Remove unsupported FSP protocolStefan Hajnoczi2010-02-012-244/+0Star
| | | | | | | | | The FSP protocol code came from legacy Etherboot and was never updated to work as a gPXE protocol. There has been no demand for this protocol, so this patch removes it. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [prefix] Remove unsupported ELF preficesStefan Hajnoczi2010-02-015-514/+0Star
| | | | | | | | | The .elf, .elfd, .lmelf, and .lmelfd prefices were brought over from legacy Etherboot and they do not build in gPXE. This patch removes the ELF prefices. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>