summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* [multiboot] Work around raw-flag bug in Solaris kernelsMichael Brown2009-04-241-8/+15
| | | | | | | | | | | Solaris kernels are multiboot images with the "raw" flag set, indicating that the loader should use the raw address fields within the multiboot header rather than looking for an ELF header. However, the Solaris kernel contains garbage data in the raw address fields, and requires us to use the ELF header instead. Work around this by always using the ELF header if present. This renders the "raw" flag somewhat redundant.
* [doc] Remove obsolete README.pixifyMichael Brown2009-04-181-90/+0Star
|
* [build] Automatically sort the list of constituent object sizesMichael Brown2009-04-181-1/+2
|
* [build] Provide mechanism for listing constituent object sizesMichael Brown2009-04-181-0/+2
| | | | | | | | | | You can now type e.g. make bin/rtl8139.rom.sizes in order to see the (uncompressed) sizes of all of the object files linked in to bin/rtl8139.rom. This should make it easier to identify relevant code bloat.
* [build] Remove obsolete linker script filesMichael Brown2009-04-175-189/+0Star
|
* [build] Kill off the multiple-object-per-source-file mechanismMichael Brown2009-04-171-17/+1Star
| | | | | Now that there are no remaining multiple-object source files, kill off the mechanism in order to simplify the Makefile.
* [build] Kill off the last multiple-object source fileMichael Brown2009-04-172-5/+7
| | | | | | | The build mechanism currently allows for multiple objects per source file. The only remaining user of this is unnrv2b.S. Replace this usage with a separate unnrv2b16.S wrapper file, as is currently used for e.g. pxeprefix.S and kpxeprefix.S.
* [build] Provide mechanism for listing per-target source filesMichael Brown2009-04-171-0/+28
| | | | | | | | | | | | | | | | | | | | You can now type e.g. make bin/rtl8139.rom.deps to see a list of the source files included in the build of bin/rtl8139.rom. This is intended to assist with copyright vetting. Other new debugging targets include make bin/rtl8139.rom.objs to see a list of object files linked in to bin/rtl8139.rom, and make bin/rtl8139.rom.nodeps to see a list of the source files that are *not* required for the build of bin/rtl8139.rom.
* [build] Simplify use of Getopt::Long in padimg.plMichael Brown2009-04-161-4/+3Star
| | | | | | Sometimes it's just so much fun doing things the complicated way that you forget to check the man page for the existence of a simpler syntax.
* [build] Reinstate the .pdsk padded-floppy image formatMichael Brown2009-04-162-3/+10
| | | | | | Some utilities that expect a floppy disk image (e.g. iLO?) may test for a file of the correct size. Reinstate the .pdsk image format in order to provide this if needed.
* [build] Pad .rom, .dsk, and .hd images to 512-byte boundariesMichael Brown2009-04-166-19/+52
| | | | | | | | QEMU will silently round down a disk or ROM image file to the nearest 512 bytes. Fix by always padding .rom, .dsk and .hd images to the nearest 512-byte boundary. Originally-fixed-by: Stefan Hajnoczi <stefanha@gmail.com>
* [dhcp] Accept filename via DHCP option 67 as well as BOOTP filename fieldMichael Brown2009-04-151-4/+8
| | | | | Allow options with dedicated BOOTP fields to fall back to using the equivalent DHCP option if the relevant field is empty.
* [smbios] Add asset tag settingTimothy Stack2009-04-152-0/+27
| | | | | | Add SMBIOS asset tag as a named setting. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [gdb] Allow resynchronisation with gdbStefan Hajnoczi2009-04-151-6/+4Star
| | | | | | | | | This replaces the gdbstub's polite NAK behavior with retransmission of the current outstanding reply packet. It solves situations where gdb and gPXE's gdbstub get out of sync due to the lack of flow control in the gdb protocol spec. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [build] Round up SUBx deltasStefan Hajnoczi2009-04-151-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The zbin compressor fixup utility rounds down file sizes before calculating their difference. This produces incorrect values and may cause truncated gPXE images to be loaded at boot. The following example explains the problem: ilen = 48 bytes (uncompressed input file) olen = 17 bytes (compressed output file) divisor = 16 bytes (paragraph granularity) fixmeup = 3 paragraphs (value to fix up) olen / divisor - ilen / divisor = 1 - 3 = -2 paragraphs (old delta calculation) ( align ( olen, divisor ) - align ( ilen, divisor ) ) / divisor = 2 - 3 = -1 paragraphs (new delta calculation) If we perform the SUBx operation with old delta: fixmeup + -2 = 1 paragraph gets loaded by the prefix With the new delta: fixmeup + -1 = 2 paragraphs get loaded by the prefix The old delta calculation removes the last paragraph; the prefix will load a truncated copy of gPXE into memory. We need to load 2 paragraphs since olen is 17 bytes. Loading only 1 paragraph (16 bytes) would truncate the last byte. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pcbios] Don't use "lret $2" to return from an interruptH. Peter Anvin2009-04-153-13/+26
| | | | | | | | | | | | | Using "lret $2" to return from an interrupt causes interrupts to be disabled in the calling program, since the INT instruction will have disabled interrupts. Instead, patch CF on the stack and use iret to return. Interestingly, the original PC BIOS had this bug in at least one place. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [build] Don't assume the existence of "seq"Michael Brown2009-03-311-1/+9
| | | | | | | | The "seq" command is GNU-specific; a BSD userland will not have it. Use POSIX-conforming "awk" instead. Reported-by: Joshua Oreman <oremanj@rwcr.net> Suggested-by: Stefan Hajnoczi <stefanha@gmail.com>
* [efi] Allow building with non-system libbfdMichael Brown2009-03-312-4/+8
| | | | | | | On Mac OS X, it is necessary to build binutils manually; the system does not provide bfd.h or the libbfd or libiberty libraries. Originally-fixed-by: Joshua Oreman <oremanj@rwcr.net>
* [efi] Fix compilation on Mac OS X.Michael Brown2009-03-311-0/+1
| | | | | | | | | | | | | The Mac compiler treats "#pragma pack()" as gcc's "#pragma pack(pop)", and so dies if the pragma pack stack is empty. Adding a "#pragma pack(1)" immediately beforehand is enough to keep the Mac compiler happy. The combination of "#pragma pack(1)", "#pragma pack()" won't actually achieve anything on a Mac, but it will at least build. (With gcc, the "#pragma pack()" overrides any previous pragmas, so is still useful.) Suggested-by: Joshua Oreman <oremanj@rwcr.net>
* [build] Use __SIZE_TYPE__ macro in definition of size_tJoshua Oreman2009-03-313-3/+13
| | | | | | | This is required in order to build on Mac OS X. Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [3c90x] Add missing size_t format specifierJoshua Oreman2009-03-311-1/+1
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [efi] Use POSIX version of basename() in elf2efi.cMichael Brown2009-03-311-1/+6
| | | | | | This is required in order to build on Mac OS X. Suggested-by: Joshua Oreman <oremanj@rwcr.net>
* [build] Add --divide to ASFLAGS if supported by the assemblerMichael Brown2009-03-311-0/+8
| | | | | | | | | Some builds of the GNU assembler will treat a '/' character as a comment delimiter. Adding "--divide" will cause it to be treated as a division operator, as we expect. The "--divide" option is not available in all gas versions, so apply it only conditionally. Suggested-by: Joshua Oreman <oremanj@rwcr.net>
* [int13] Improve debugging messagesMichael Brown2009-03-311-4/+11
|
* [segment] Add "Requested memory not available" error messageMichael Brown2009-03-312-0/+12
| | | | | | | | | | | prep_segment() can sometimes fail because an image requests memory that is already in use by gPXE. This will happen if e.g. undionly.kpxe is used to boot memtest86; the memtest86 image is an old-format kernel that needs to be loaded at 9000:0000, but this area of memory may well already be in use by the underlying PXE stack. Add a human-friendly error message, so that the cause is more immediately visible.
* [resolv] Simplify xfer_redirect() logicMichael Brown2009-03-301-11/+30
| | | | | Now that we have xfer_vreopen() as the default .vredirect handler, sending redirection events can become simpler.
* [http] Support HTTP redirectionMichael Brown2009-03-301-0/+28
|
* [xfer] Implement xfer_vreopen() to properly handle redirectionsMichael Brown2009-03-3013-14/+44
| | | | | When handling a redirection event, we need to close the existing connection before opening the new connection.
* [bzimage] Support old (pre-2.00 bootloader) Linux kernel formatsMichael Brown2009-03-302-249/+235Star
| | | | | | | | | | This allows gPXE to load memtest86, which is packaged as an old kernel. Split all code that directly touches the kernel headers out into bzimage_parse_header() and bzimage_update_header(), to reduce code size and offset the cost of supporting older kernels. Total cost of this feature: 11 bytes (uncompressed).
* [build] Avoid always rebuilding bin/embedded.oMichael Brown2009-03-271-2/+2
| | | | | | | | | | | bin/embedded.o has a build dependency on bin/.embedded.list, which gets generated automatically by the Makefile. However, if the EMBEDDED_IMAGE list is empty, bin/.embedded.list will never be created, and so bin/embedded.o will be rebuilt every time due to a missing dependency. Fix by forcing bin/.embedded.list to be created even if the list is empty.
* [digest] md5sum and sha1sum commandsDaniel Verkamp2009-03-273-0/+124
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [netdevice] Add debug message for unknown network-layer protocolsMichael Brown2009-03-261-2/+4
| | | | Suggested-by: Bill Lortz <Bill.Lortz@premier.org>
* [pcnet32] Fix received packet corruptionMichael Brown2009-03-261-3/+3
| | | | | | | | | | The pcnet32 driver mismanages its RX buffers, with the result that packets get corrupted if more than one packet arrives between calls to poll(). Originally-fixed-by: Bill Lortz <Bill.Lortz@premier.org> Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com> Tested-by: Stefan Hajnoczi <stefanha@gmail.com>
* [forcedeth] Add support for newer forcedeth NICsThomas Miletich2009-03-261-7/+34
| | | | | | | Also adds the MAC_ADDR_CORRECT flag, to indicate whether or not the MAC address needs to be fixed up by the driver. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pci] Add driver_data field to struct pci_device_idThomas Miletich2009-03-2639-331/+335
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [time] Add the sleep commandShao Miller2009-03-262-1/+31
| | | | | | | Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com> Reviewed-by: Thomas Miletich <thomas.miletich@gmail.com> Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [settings] Fix broken assertion in fetch_string_setting_copy()Michael Brown2009-03-261-2/+3
| | | | Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
* [build] Enable building with the Intel C compiler (icc)Michael Brown2009-03-2613-37/+363
|
* [3c90x] Remove src/drivers/3c90x.txtMarty Connor2009-03-131-307/+0Star
| | | | | | | Most of the 3c90x.txt file is obsolete. The content from the file has been placed here: http://etherboot.org/wiki/appnotes/3c90x_issues
* [3c90x] 3c90x driver rewrite using gPXE APIThomas Miletich2009-03-132-935/+1200
| | | | | | | | | | | | | | | This is a major rewrite of the legacy etherboot 3c90x driver using the gPXE API for much improved performance over the legacy driver it replaces. This driver has been tested on 3c905, 3c905B, and 3c905C cards. Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com> Reviewed-by: Marty Connor <mdc@etherboot.org> Tested-by: Marty Connor <mdc@etherboot.org> Tested-by: Daniel Verkamp <daniel@drv.nu> Signed-off-by: Marty Connor <mdc@etherboot.org>
* [tables] Incorporate table data type information into table definitionMichael Brown2009-03-1326-128/+183
| | | | | | | Eliminate the potential for mismatches between table names and the table entry data type by incorporating the data type into the definition of the table, rather than specifying it explicitly in each table accessor method.
* [tables] Redefine methods for accessing linker tablesMichael Brown2009-03-1348-264/+239Star
| | | | | | | | | | | | | | | Intel's C compiler (icc) chokes on the zero-length arrays that we currently use as part of the mechanism for accessing linker table entries. Abstract away the zero-length arrays, to make a port to icc easier. Introduce macros such as for_each_table_entry() to simplify the common case of iterating over all entries in a linker table. Represent table names as #defined string constants rather than unquoted literals; this avoids visual confusion between table names and C variable or type names, and also allows us to force a compilation error in the event of incorrect table names.
* [tcp] Avoid setting PSH flag when SYN flag is setMichael Brown2009-03-101-1/+3
| | | | | | | | Some firewall devices seem to regard SYN,PSH as an invalid flag combination and reject the packet. Fix by setting PSH only if SYN is not set. Reported-by: DSE Incorporated <dseinc@gmail.com>
* [time] Add the time commandDaniel Verkamp2009-03-063-0/+58
| | | | Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [pxeprefix] Merge common code between !PXE and PXENV+H. Peter Anvin2009-03-061-14/+12Star
| | | | | | | The parsing of the !PXE and PXENV+ structures share a fair bit of code; merge the common code to save a few bytes. Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [settings] Allow for autovivification of settings blocksMichael Brown2009-03-062-53/+113
| | | | | | | | | | | | | | | | | | Allow for settings blocks to be created on demand. This allows for constructions such as set defaults/filename http://bootserver/bootfile set defaults/priority 0xff dhcp net0 chain ${filename} which will boot from the DHCP-provided filename, or from "http://bootserver/bootfile" if the DHCP server does not provide a filename. (Note that "priority" gets interpreted as a signed integer, so setting "defaults/priority" to 0xff will cause the "defaults" settings block to have an effective priority of -1.)
* [release] Update version to 0.9.7+ post releaseMichael Brown2009-03-021-1/+1
|
* [release] Update version to 0.9.7 for releasev0.9.7Michael Brown2009-03-021-2/+2
|
* [sundance] Add reset completion checkThomas Miletich2009-02-271-0/+16
| | | | | | | | Following the example of the Linux driver, we add a check and delay to make sure that the NIC has finished resetting before the driver issues any additional commands. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [infiniband] Kill off obsolete mlx_ipoib directoryMichael Brown2009-02-2529-16486/+0Star
| | | | | | This directory contains the old Etherboot implementation of IPoIB boot from Mellanox, which has long been obsoleted by gPXE's own implementation.