[gPXE git] annotated tag v1.0.1 created

git at etherboot.org git at etherboot.org
Tue Jun 29 16:08:36 EDT 2010


In the Main gPXE repository, annotated tag v1.0.1 has been created.
        at  
   tagging  ed893934d6de3698eb10413e9cf7227276e83fee (commit)
 tagged by  Marty Connor
        on  Tue Jun 29 16:01:23 2010 -0400

- Log -----------------------------------------------------------------
[release] gPXE-1.0.1 release tag

=== Executive Summary ===

New drivers: Intel e1000, e1000e, igb, EFI snpnet, JMicron jme, Neterion X3100
vxge, pcnet32.  Bug fixes and improvements to drivers, wireless, DHCP, iSCSI,
COMBOOT, and EFI.

=== git shortlog v1.0.0..v1.0.1 ===

Andrei Faur (1):
      [pcnet32] Replace pcnet32 with native driver

Bruce Rogers (1):
      [drivers] Fix warnings identified by gcc 4.5

Daniel Verkamp (1):
      [comboot] Match version strings to SYSLINUX style

Danny Volkind (1):
      [iscsi] Fix interoperability with QNAP TS-639Pro

Erwan Velu (1):
      [eepro100] Add PCI ID for Intel Pro/100 VE

Geoff Lywood (8):
      [bitmap] Fix bitmaps on 64-bit platforms
      [elf2efi] Improve error handling
      [build] Allow building against a zlib in a non-standard location
      [dhcp] Use correct DHCP options on EFI systems
      [efi] Update UEFI header files with latest version from TianoCore
      [efi] Add the "snpnet" driver
      [jme] Fix 64-bit compile of JMicron ethernet driver
      [pcnet32] Fix uninitialised variable

Guo-Fu Tseng (2):
      [jme] Add JMicron Ethernet driver
      [jme] Fix refill behavior

Itay Gazit (1):
      [hermon] Change hermon_alloc_icm() to conform to ConnectX2 requirements

Joshua Oreman (4):
      [wpa] Remove PMKID checking
      [dhcp] Honor PXEBS_SKIP option in discovery control
      [dhcp] Don't consider invalid offers to be duplicates
      [linker] Use weak definitions instead of weak declarations

Marty Connor (8):
      [release] Update version to 1.0.0+ post release
      [shell_banner] Avoid printing Ctrl-B prompt if BANNER_TIMEOUT <= 0
      [misc] Remove accidentally commited .dotest directory
      [e1000] Update e1000 driver
      [e1000e] Add e1000e driver
      [igb] Add igb driver
      [release] Update version to 1.0.1-rc1 for release
      [release] Update version to 1.0.1 for release

Masroor Vettuparambil (1):
      [vxge] Add support for X3100 series 10GbE Server/Storage Adapter

Michael Brown (12):
      [iscsi] Disambiguate some common authentication errors
      [phantom] Update interrupt support to match current firmware
      [netdevice] Add netdev_is_open() wrapper function
      [netdevice] Record whether or not interrupts are currently enabled
      [pxe] Avoid potential interrupt storms when using shared interrupts
      [pxe] Remove pxe_set_cached_filename()
      [base64] Allow base64_encode() to handle arbitrary data
      [base64] Add ability to decode base64 strings
      [base16] Add generic base16 encoding and decoding routines
      [iscsi] Use generic base16 functions for iSCSI
      [infiniband] Use generic base16 functions for SRP
      [ethernet] Move Ethernet MAC address checking routines to ethernet.h

Piotr Jaroszyński (9):
      [build] Add support for local configuration files
      [build] Look for isolinux.bin in more places
      [util] Hide an expected error from the 'which' command
      [uri] Fix NULL dereference in parse_uri()
      [uri] Special case NULL in churi()
      [compiler] Fix 64bit compile time errors
      [efi] Fix link order for elf2efi
      [efi] Fix *.efi linking
      [iscsi] Allow base64 encoding in large binary values

Stefan Hajnoczi (7):
      [util] Detect genisoimage as mkisofs replacement
      [undi] Ensure only one UNDI instance is loaded
      [build] Disable ccache for embedded.o
      [build] Disable ccache for embedded.o
      [fnrec] Add function recorder for debugging
      [vxge] Add stub vxge.c file so bin/vxge.usb can be built
      [comboot] Propagate carry flag from COMBOOT API

Thomas Miletich (1):
      [eepro100] Remove link-state checking

Wu Fengguang (1):
      [lkrnprefix] Fix documentation path in comment

Alex Williamson (1):
      [e1000] Use the alternate MAC in NVRAM when available

Alexey Zaytsev (5):
      Introduce the new timer subsystem.
      Modify gPXE core and drivers to work with the new timer subsystem
      Cleanups
      fix the rdtsc namimg
      Use plain C in timer_rdtsc for division instead of inline asssembly.

Andrei Faur (1):
      [pcnet32] Replace pcnet32 with native driver

Andrew Schran (4):
      [forcedeth] Add support for PCI ID 10de:0373
      [tg3] Added support for tg3-5754.
      [cmdline] Added configurable shell banner timeout
      [retry] Added configurable timeouts to retry timer

Anselm Martin Hoffmeister (2):
      hoffmeis: Fixing situation where absence of a newdata() handler for UDP
      hoffmeis: Preparations for syslog support (LOGSERVER in DHCP, linewise

Bernhard Kohl (1):
      [pci] Save and restore PCI command register

Bruce Rogers (1):
      [drivers] Fix warnings identified by gcc 4.5

Dan Lynch (39):
      lightweight xcurses implementation for etherboot (Michael made me do it...)
      fixed build error (danjlynch, repeat: this is *not* perl, this is *not* perl...)
      all window primitives implemented
      - made _wputch wrap lines as well as cols (wraps back to line 0, as we have not way to scroll...)
      - made some of the bit shifting attribute access simpler (in my mind)
      - fixes to _wputch to get positioning and wrap working properly
      - implemented printw (formatted string output, a la printf)
      - added most slk functions
      - separated curses.c out into separate source files to optimise
      initial check in
      - major implementation work completed (testing in progress)
      added doxygen file header
      - added doxygen @file header
      - removed slk references
      added doxygen @file header
      - added doxygen @file header
      - added doxygen @file header
      - added doxygen @file header
      - erradicate compiler warning due to possibility of uninitialised variables (switch statement)
      - proper layout formatted soft label array, with justification formatted labels
      first working version - nasty, but mostly works
      - recoded wgetch and wgetnstr for greater more efficiency
      added placeholder SRCDIRS entry for mucurses
      - multiple static inline definitions added
      - testable console framework implementing mucurses SCREEN struct
      - deprecated in favour of a split library model
      enabled build entry for mucurses libraries
      included contents of input.{c,h} in kb.c
      make path relative (so that I don't break eb top of tree !)
      moved console specific items out of mucurses (should be handled by external screen object)
      check whether malloc returns a valid pointer
      - working basic ansi termnal extension for mucurses
      - works with test ansi tty, but will need a rethink when we start
      - put in the screen initialisation stuff and clear the screen...
      - first check-in for mucurses_test.c
      - implemented cursor retreat function (_wcursback) as a core function
      started on ANSI sequence processing
      - modified length of password string to match visible field length
      typo in macro fixed

Daniel Verkamp (13):
      [libc] Mark setjmp and longjmp as __cdecl
      [librm] Make rm_sp and rm_ss globals again
      [librm] Add rm stack copying functions
      [comboot] Add COMBOOT and COM32 support
      [comboot] Implement INT 22h AX=001Bh (Cleanup, shuffle, and boot to real mode)
      [time] Add the time command
      [digest] md5sum and sha1sum commands
      [ethernet] Move struct mii_if_info to mii.h
      [ethernet] Update mii.h and use it in drivers that had a private copy
      [ethernet] Add MII link status functions from Linux
      [comboot] Implement stub calls for auxiliary data vector handling
      [comboot] Implement INT 22h AX=000Bh (Get Serial Console Configuration)
      [comboot] Match version strings to SYSLINUX style

Danny Volkind (1):
      [iscsi] Fix interoperability with QNAP TS-639Pro

Derek Pryor (7):
      Added gpxe-0.5/src/crypto/ for the SSL Library
      Adding SSL Constructs header file. (First version)
      The first packet (ClientHello Handshake) can be constructed and is accepted
      New HTTP protocol and test code
      Removing because of conflict with new HTTP protocol
      Bug fixes to the HTTP protocol code
      Bug fixes to the HTTP protocol code

Eduardo Habkost (1):
      virtio-net: Fix kick/wait logic

Erwan Velu (1):
      [eepro100] Add PCI ID for Intel Pro/100 VE

Eygene Ryabinkin (2):
      [libprefix] Add addr32 prefix required by older assemblers
      [util] Avoid calling fclose(NULL) in zbin.c

Geert Stappers (2):
      patch of Helge Wagner
      no need for depending on build library ("blib")

Geoff Lywood (8):
      [bitmap] Fix bitmaps on 64-bit platforms
      [elf2efi] Improve error handling
      [build] Allow building against a zlib in a non-standard location
      [dhcp] Use correct DHCP options on EFI systems
      [efi] Update UEFI header files with latest version from TianoCore
      [efi] Add the "snpnet" driver
      [jme] Fix 64-bit compile of JMicron ethernet driver
      [pcnet32] Fix uninitialised variable

George Baum (2):
      the uncontroversal gcc 4.0 compilation fixes
      Reorder functions to match the linux driver.

Glenn Brown (2):
      [pci] Add PCI_COMMAND_INTX_DISABLE
      [myri10ge] Native driver for Myricom 10Gb Ethernet NICs

Guo-Fu Tseng (2):
      [jme] Add JMicron Ethernet driver
      [jme] Fix refill behavior

H. Peter Anvin (18):
      UNDI ISR: save and restore 32-bit registers
      undiisr.S: save/restore upper half of %eflags
      UNDI ISR: save and restore 32-bit registers
      [PXEXT] Add FILE_API_CHECK API function
      [PXEXT] Change the PXE return code for EWOULDBLOCK
      [PXEXT] Update documentation
      [http] gPXE is a HTTP/1.0 client, not a HTTP/1.1 client
      [a20] Send a null command to the KBC after changing A20
      [ns8390] Use stub files instead of src/Config
      [Config] remove src/Config
      [makefile] Avoid using ?=
      [makefile] Quote argument to sed containing []
      [pxe] Initialize EDX on PXE NBP entry and INT 1Ah
      [pxeprefix] Search for the PXE entry points through all methods
      [pxeprefix] Merge common code between !PXE and PXENV+
      [pcbios] Don't use "lret $2" to return from an interrupt
      [pxe] Dual-license pxe_api.h under the MIT license
      [legal] Add the MIT and ISC licenses to licence.pl

Holger Lubitz (106):
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      convert to zalloc
      Revert "convert to zalloc"
      Revert "convert to zalloc"
      Revert "convert to zalloc"
      Revert "convert to zalloc"
      Revert "convert to zalloc"
      Update Makefile for compilation on ARCH=x86_64
      Add -mpreferred-stack-boundary=2 to i386 CFLAGS as it's almost always a win.
      disable AES_convert_key by #if 0'ing it out (suggested by mcb30)
      make netboot() static
      disable AES_convert_key by #if 0'ing it out (suggested by mcb30)
      make imgfill_cmdline static
      make md5_steps static
      make isspace static
      make add_ndp_entry static
      make struct _softlabelkeys *slks static
      make RTL8169_READ_GMII_REG, RTL8169_WRITE_GMII_REG static
      make __udivmoddi4 static
      Merge branch 'master' into symcheck2
      make _wgetc static
      remove has_key by #if 0'ing out
      make bool m_echo static
      make cards_found static and add missing initialization
      make eltorito_load static
      make http_open static
      make nbi_load static
      make multiboot_load static
      make struct bnx2 bnx2 static
      make struct nsx static
      make struct velocity_info_tbl *info static
      make struct velocity_info vptx static
      Revert "make __udivmoddi4 static" - gcc links to it implicitly
      Revert "make isspace static" - prototype for isspace() is defined by C99, so can't be static
      make bcopy use memmove
      Merge branch 'master' into strings
      put unused functions from string.c into separate file
      stripped down version of string.c containing only the used functions
      define __pure and __const
      set __pure attribute where possible
      memscan does not alter the mem pointer - make it const
      define __nonnull
      declare pointers passed to string functions as nonnull
      move strndup back to string.c - used by strdup
      move strndup back to string.c - used by strdup
      remove x86_64 comments from arch specific Config
      remove old minorversion!=4 check (added -march a second time)
      include more changes for x86_64
      fix gcc 4.2.1 warning: initialized field overwritten
      fix gcc 4.2.1 warning: discards qualifiers from pointer target type
      strdup and strndup call malloc and are not pure
      malloc attribute changes
      Merge branch 'master' of git://git.etherboot.org/scm/gpxe
      Revert "malloc attribute changes"
      Merge branch 'master' of git://git.etherboot.org/scm/gpxe
      Merge branch 'master' of git://git.etherboot.org/scm/gpxe
      Merge branch 'master' of git://git.etherboot.org/scm/gpxe
      Merge branch 'master' of git://git.etherboot.org/scm/gpxe
      Merge branch 'master' of git://git.etherboot.org/scm/gpxe
      define __pure and __const
      define __nonnull
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      __nonnull changes
      define malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      use malloc attribute
      Merge branch 'master' of git://git.etherboot.org/scm/gpxe
      Merge branch 'master' into curses

Itay Gazit (2):
      [mtnic] Add multiport support and some minor fixes
      [hermon] Change hermon_alloc_icm() to conform to ConnectX2 requirements

James Harper (3):
      Fix padding problem - from Michael
      Fix some bad pointer arithmatic in the tg3 driver that was causing the dynamic memory pool to be corrupted (or worse)
      Ported bnx2 driver from Etherboot 5.4.

Joshua Oreman (71):
      [3c90x] Add missing size_t format specifier
      [build] Use __SIZE_TYPE__ macro in definition of size_t
      [nvs] Add init function for Atmel 93C66 EEPROM
      [netdevice] Add netdev argument to link-layer push and pull handlers
      [netdevice] Adjust maximum link-layer header length for 802.11
      [image] Modify imgfree command to accept an argument
      [ifmgmt] Move link-up status messages from autoboot() to iflinkwait()
      [dhcp] Await link-up before starting DHCP
      [hci] Expose ifcommon_exec() in a local header so wireless commands can use it
      [802.11] Add support for 802.11 devices with software MAC layer
      [rtl818x] Add driver for Realtek 8180/8185 wireless cards
      [config] Enable PXE commands by default only on pcbios architecture
      [pci] Add definitions for Advanced Error Reporting registers
      [sky2] Add support for Marvell Yukon-II gigabit Ethernet cards
      [802.11] Enhance support for driver PHY differences
      [802.11] Set channels early on to avoid tuning to an undefined channel
      [802.11] Fix maximum packet length
      [802.11] Fix memory leak on unsuccessful probes
      [legal] Add MIT licence declaration
      [ath5k] Add support for non-802.11n Atheros wireless NICs
      [zbin] Change fixup semantics to support ROMs over 128k uncompressed
      [802.11] Properly initialize autoassociation process
      [ath5k] Remove spurious debugging check
      [build] Fix DEBUG builds for filenames with hyphens
      [modrom] Avoid clobbering near jump with checksum
      [atl1e] Add Attansic L1E gigabit Ethernet driver
      [ath5k] Update for changes in kernel 2.6.31
      [ath5k] Save proper cacheline size when fixing PCI configuration
      [zbin] Fix 64-bit compilation warnings for util/zbin.c
      [atl1e] Fix compilation on gcc-4.4.1-2.fc11.i586.
      [pxebs] Correct endianness of PXE type
      [pxebs] Consistently interpret PXE type field as little-endian
      [linker] Expand and correct symbol requirement macros
      [linker] Add mechanism for subsystem-dependent configuration options
      [digest] Add generic CRC32 function
      [cipher] Add the ARC4 stream cipher
      [digest] Add HMAC-SHA1 based pseudorandom function and PBKDF2
      [crypto] Add parentheses around len argument in blocksize assert
      [crypto] Make AES context size and algorithm structure externally available
      [crypto] Add AES key-wrap mode (RFC 3394)
      [crypto] Add a placeholder for a proper random number generator
      [802.11] Add core support for detecting and using encrypted networks
      [iwmgmt] Add wireless management commands and text for common errors
      [802.11] Add support for WEP-protected networks
      [eapol] Add basic support for 802.1X EAP over LANs
      [wpa] Add general support for WPA-protected 802.11 networks
      [wpa] Add pre-shared key frontend (WPA "Personal" with just a passphrase)
      [wpa] Add TKIP backend (legacy RC4-based cryptosystem)
      [wpa] Add CCMP backend (new AES-based cryptosystem)
      [config] Enable WPA2 by default
      [802.11] Allow connecting to spectrum managed networks
      [prefix] Add .hrom prefix for a ROM that loads high under PCI3 without PMM
      [makefile] Allow .sizes target to work with funny-named objects
      [util] Add diffsize.pl utility for generating diffs of object sizes
      [dhcp] Accept ProxyDHCP replies of type DHCPOFFER
      [dhcp] Assume PXE options are in DHCPOFFER only if boot menu is included
      [linker] Add safe weak symbol macros
      [pxe] Separate parent PXE API caller from UNDINET driver
      [dhcp] Add generic facility for using cached network settings
      [pxe] Support cached DHCP packets in .kkpxe images
      [config] Make PXE stack a compile-time option
      [prefix] Add .xrom prefix for a ROM that loads itself by PCI accesses
      [settings] Add automagic "netX" settings block for last opened netdev
      [uri] Decode/encode URIs when parsing/unparsing
      [dhcp] Keep multiple DHCP offers received, and use them intelligently
      [uri] Handle an empty unparse_uri() result properly
      [http] GET / if URI doesn't contain a path
      [wpa] Remove PMKID checking
      [dhcp] Honor PXEBS_SKIP option in discovery control
      [dhcp] Don't consider invalid offers to be duplicates
      [linker] Use weak definitions instead of weak declarations

Laurent Vivier (6):
      [virtio] Move virtio-pci.h and virtio-ring.h to include/gpxe
      [virtio] Consolidate vring_get_buf() by using a buffer list to add to the vring
      [virtio] Remove dependency on nic for virtio PCI functions
      [virtio] Consolidate virtio-net static data into a struct vring_virtqueue
      [virtio] Split virtio-net.c into several files.
      [blockdev] Move block device operations to structure block_device_operations

Marty Connor (153):
      Added bin/.blib.list to VERYCLEANUP so .bin directory is made empty
      Removed vestigal FILO code
      fix printf format args
      Merge of Fredrik Hultin command_line
      Make VERSION_MAJOR for gPXE be 0
      Remove _PROTOCOL macros for gcc 3.2 compatibility
      Remove printf of MAC address in driver.
      Remove nic_disable call from drivers.  Call should be made at a higher level
      Fixed DBG macro format, fixed compile warnings. removed extra parameter from mtd80x_disable(...)
      update DBG_DISCARD macro to allow the compiler to see the argument for compile-time checking, while still having it optimized away during compilation
      Fix compile warnings, remove unused var
      fix DBG macro unknown variable
      get rid of compile warnings (except intentionally generated ones)
      change MAC address printout to DBG using eth_ntoa (temporary legacy support)
      DBG MAC addr printout in driver
      commented out contents of core/nic.c, which should now be obsolete.
      Minor edit to make HEAD build
      fix args to _disable routine
      eth_ntoa fixup, _disable arg fixup
      eth_ntoa fixup, some warnings fixups (isa/pnp fixups still needed)
      eth_ntoa fixup
      eth_ntoa fixups
      eth_ntoa fixups
      eth_ntoa fixups
      eth_ntoa fixups
      eth_ntoa fixups
      eth_ntoa and warnings fixups
      eth_ntoa and warnings fixups
      eth_ntoa and warnings fixups
      eth_ntoa and warnings fixups
      eth_ntoa and warnings fixups
      eth_ntoa and warnings fixups
      eth_ntoa and warnings fixups
      eth_ntoa and warnings fixups, memcpy compilation fix
      eth_ntoa fixes
      eth_ntoa and compilation warnings fixes
      compilation warnings cleanup
      warnings cleanup
      warnings cleanup (still gives lots of compilation warnings from unused functions and missing legacy support)
      eth_ntoa cleanup
      compilation warnings cleanup
      eth_ntoa and warnings cleanup
      eth_ntoa and warnings cleanup
      eth_ntoa cleanup.  still has warnings.  needs work.
      eth_ntoa and warnings cleanup
      include stdio.h to suppress printf warning, general warnings fixups
      added stdio.h to includes for DBG compilation
      Fixed typo
      Version increment in preparation for release
      Add warning about formats that are not working until we fix them
      Add gpxe-tarball target to create clean release tarballs
      Remove outdated web files
      Update non-GPL licensed files for gPXE
      Start a new LOG file in preparation for release
      Start a new release notes file (RELNOTES) in preparation for release
      Updated email mdc's email address
      Update email addresses in drivers
      Warnings purge of src/core
      Warnings purge
      Warnings purge
      Warnings purge
      Merge branch 'master' of ssh://rom.etherboot.org/pub/scm/gpxe
      Warnings purge: src/{crypto,hci,net}
      Merge branch 'master' of /pub/scm/gpxe
      Warnings purge: src/arch/i386, src/core/disk.c, ramdisk, autoboot
      Merge branch 'master' of /pub/scm/gpxe
      Warnings purge iscsiboot.c
      remove obsolete file:  src/arch/i386/prefix/int19exit.c
      Warnings purge of drivers (continued)
      Remove deprecation of pci_bar_size()
      Merge branch 'master' of /pub/scm/gpxe
      Purge warnings from prism2 drivers
      Merge branch 'master' of /pub/scm/gpxe
      Purge warnings from tg3.c
      Update warnings in depca.c ns8390.c
      Warnings purge for via-velocity.[ch]
      Replace natsemi driver with Indolent's updated one that uses the gPXE API
      Rename .lilo extension to .lkrn and updated dependencies
      Merge branch 'master' of /pub/scm/gpxe
      Add NIC to targets that are always made.
      Changed #warning to FIXME for nvo hack warning.
      Change #warning to FIXME for depca
      Change #warning to FIXME for ns8390.c
      Add sis900 variant (patch from Vampyre)
      allpxes allroms alldsks fixes from Vampyre
      TFTP default blocksize fix from Vampyre
      Remove unnecessary variable.
      Add ERRFILE information for e1000_main and e1000_hw, part of the new e1000 driver
      Move current e1000 driver files to e1000-old/ directory to avoid collisions
      Add src/drivers/net/e1000 as home of new e1000 driver
      Introduce files for new e1000 driver
      Add errfile definition for new e1000.c
      Rename e1000_main.c to e1000.c to so we can type 'make bin/e1000.dsk' instead of 'make bin/e1000_main.dsk'
      Add e1000 directory to build, since the driver compiles cleanly.
      Fix typo.
      A version of the new e1000 driver that transmits.
      Autonegotiation fixes.  NIC now autonegotiates to whatever the switch supports.
      This version now transmits and receives.
      Fixed receive instability by not enabling interrupts. duh.
      Added netdev_nullify to natsemi_remove()
      Added netdev_nullify to natsemi_remove()
      Merge branch 'mdc-working' of ssh://git.etherboot.org//pub/scm/people/mdc/gpxe
      Add copyright, clean up comments a bit, remove unnecessary code.
      Remove *_fill_nic() calls, and directly set nic->ioaddr and nic->irqno .
      Correct e1000 interrupt routine to enable on 1 disable on 0. duh.
      Fix e1000 receive tail pointer (RDT) handling
      3c90x driver fix (legacy) from Geert Staapers
      Retain some intermediate object files, suggested by Geert Stappers and Alexey Zaytsev.
      Unconditionally set utility program variables in Makefile to allow CROSS_COMPILE to work.
      Add README file which replaces INSTALL and gives pointers to more information.
      Rename Copyrights to COPYRIGHTS for consistency with other filenames
      Update LOG for 0.9.3 release
      Update VERSION for 0.9.3
      Remove obsolete files (INSTALL, RELNOTES)
      Updated $(VERSION) for release. Change tarball generation.
      Make tarball generation quieter
      ]Drivers] Update licensing for cs89x0.[ch] and cs89x0.txt
      [DHCP] FIXME: quick temporary settings fix, needs update for new API
      [Drivers-r8169] Add support for newer rtl8169 variants from Hilko Bengen
      [Makefile] Add "+" to end of version string for git-generated images
      [Makefile] Add $(BIN)/undionly.kpxe as default build target
      [release] Update version information for 0.9.4 release
      [release] Update version post release to 0.9.4+
      [release] Update version to 0.9.5 for release
      [release] Update version to 0.9.5+ post release
      [r8169] New rtl8169 family driver
      [release] Update version to 0.9.6 for release
      [release] Update version to 0.9.6+ post release
      [e1000] Use PCI_BASE_ADDRESS_* symbols instead of integers
      [pcbios] Add additional sanity check for bogus e820 map
      [3c90x] Remove src/drivers/3c90x.txt
      [build] Add syslinux floppy image type .sdsk
      [release] Update version to 0.9.8 for release
      [release] Update version to 0.9.8+ post release
      [util] Change gensdsk file permissions to include execute
      [release] Update version to 0.9.9 for release
      [release] Update version to 0.9.9+ post release
      [skge] Add driver for skge NICs
      [contrib] Move most contrib content to a separate repository
      [contrib] Add rom-o-matic to contrib
      [contrib] Add .hrom format to rom-o-matic
      [contrib] Add README file to rom-o-matic
      [release] Update version to 1.0.0-rc1 for release
      [release] Update version to 1.0.0-rc1+ post release
      [release] Update version to 1.0.0 for release
      [release] Update version to 1.0.0+ post release
      [shell_banner] Avoid printing Ctrl-B prompt if BANNER_TIMEOUT <= 0
      [misc] Remove accidentally commited .dotest directory
      [e1000] Update e1000 driver
      [e1000e] Add e1000e driver
      [igb] Add igb driver
      [release] Update version to 1.0.1-rc1 for release
      [release] Update version to 1.0.1 for release

Masroor Vettuparambil (1):
      [vxge] Add support for X3100 series 10GbE Server/Storage Adapter

Michael Brown (2630):
      Initial revision
      Remove CODE16 as a global define; most files define it themselves
      Add rule to generate 16-bit version of decompressor
      Obsolete and no longer used
      unhuf.S is obsolete and no longer used
      Obsolete; not referenced by anything.
      Obsolete; not reference by anything.
      lzhuf is obsolete and no longer used
      Obsolete; not referenced by anything.
      Merged this file into HEAD
      Merged mcb30-realmode-redesign back to HEAD
      Moved relocate.c to arch-specific dir, since it involves arch-specific
      Callback mechanism now obsolete
      callbacks.h no longer exists.
      Removed references to old callback mechanism
      Old callbacks mechanism is obsolete.
      #ifdef 0 out the UNDI loader routine, since it refers to the obsolete
      callbacks.h no longer exists
      Added a lot of explanatory comments.
      relocate() is called by arch_initialise().
      Relocation code is arch-specific.
      First version
      Add relocate.h
      PM function called by prot_call() should be allowed to modifying
      basememsize() updates the BIOS FBMS counter at 40:13.
      Removed basemem.c prototypes
      Split out from etherboot.h
      Rewritten in a much saner way, now that we don't have to worry about
      Add INIT_LIBRM before INIT_CONSOLE.
      Note basemem API change.
      Need to provide sizeof(struct free_base_memory_header) to assembly code.
      Allow ourselves to be freed by basemem.c without being damaged.
      Don't zero freed base memory; one block will contain librm.
      Add INIT_FNs to make sure that librm gets reallocated when needed.
      lgdt needs data32 prefix, otherwise it loads only 24 bits.  (sgdt
      Don't build relocate() under KEEP_IT_REAL
      Make prot_call() able to transparently return via the newly installed copy
      hooks.o is now a single object, rather than having separate hooks.o and
      Add librm_base.
      Setup now calls initialise() directly, rather than expecting the
      setup16() now calls initialise(); we don't have to do it.
      Fixed debug messages
      Removed obsolete initialisation calls.
      Added post-relocation function table.
      Drag in relocate unless NORELOCATE is defined, since it's now called
      arch_rm_main no longer exists.
      Fix up init ordering.
      All the icky stuff is now taken care of by librm_arch_initialise
      Heading towards a sane set of control functions
      Use librm_arch_initialise for librm, arch_initialise for others.
      arch_initialise() is now sufficiently generic that we may as well just
      initialise() doesn't take regs
      Almost all information in this file is now obsolete.  Writing a new driver
      Cleaner separation of functionality between post_reloc and
      Changed guard name to avoid clash with INCLUDE_xxx namespace used by
      Removed references to no-longer-existent CFLAGS options.
      Renamed pci.c to pci_legacy.c in preparation for new bus managment
      Moved in functions from old core/pci.c that we want to keep.
      Moved functions that we want to keep to drivers/bus/pci.c
      New device probing mechanism written, not tested.
      Removed pci_find_device_x; it was too ugly to live.
      Nearly there...
      Should work for KEEP_IT_REAL as well now.
      Improved debug messages
      New PCI scan functions now work.
      New device probing mechanism
      Obsoleted by new device probing mechanism.
      main.c contains the global struct dev.
      16-bit PCI BIOS interface also now known to work.
      Replaced main loop with a trivial implementation so that we can try
      For pci_io.c
      Add INIT_PCIBIOS
      Matches new pci.c interface.
      All boot device drivers are now lumped together in boot_drivers
      Now obsolete.  :)
      print_drivers() is now unified.
      Global struct dev is now in main.c
      All code related to the device probe logic is ifdeffed 0 out.
      Needs to be updated to new probe logic.
      struct nic is now part of struct dev, rather than the other way around.
      Tie into new boot device framework.
      Use pci_{vendor,device}_id instead of just pci_{vendor,device}, to avoid
      Fix up find_pci_device so that it can be used for scanning for devices
      Make adjust_pci_device global, since many drivers call it.
      Fixed up PCI-scanning code to use new PCI interface.
      Include dev.h, since several drivers just include nic.h
      Cope with nic.h being included before (or without) dev.h
      Updated to new device API.
      Remove debugging by default
      Add dummy_connect and dummy_irq
      Able to at least compile again now.
      We now record a pointer to the struct pci_device, since it's carried
      Add print_info method to dev_operations.
      Use dev's print_info method to print standardised information about
      Auto-updated using
      Minor regexp tweaks to catch degenerate cases.
      Automatically updated using
      Automatically updated using
      Automatically updated using
      Manual tweaks to get all drivers to follow the "disable, poll, transmit,
      Automatically updated using
      Hand-finished
      Add mbps and duplex to struct nic, since some drivers (e.g. rtl8139)
      Use NIC's connect method.
      Avoid compiler warnings.
      Hand-finished
      Finished by hand
      Fix type of dummy_irq()
      Finished by hand
      Finished by hand
      Finished by hand
      Whoops
      Extracted from 3c509.c
      Minor fixups
      Add MCA devices
      Created separate isa_ids.h file and a utility function to print out ISA
      htons was used in ISAPnP code just due to ISAPnP storing bytes in
      Use __bswap_16, since we're not dealing with quantities to go onto the network.
      Don't use htons, for compatibility with PCI :(
      Add EISA as a bus type.
      Extraced from 3c509.c
      EISA support now provided by eisa.c
      Stripped references to variables in C code.
      Use the magic of common symbols to allow struct dev to effectively grow at
      Automatically create DBG() macro based on debug_<object> macro.
      Always include compiler.h.
      We need the ISA product ID mask available separately for 3c509.c.
      compiler.h is now always included on the command line.
      Standardised debug mechanism in place now.
      Allow for multiple BOOT_DRIVER()s in the same file, provided that they
      Split 3c509.c into 3c509.9 and 3c529.c, with shared code in 3c5x9.c.
      Separate out bus-scanning and device-probing logic.
      Tweak API to allow separation of bus-scanning and device-probing logic.
      Updated to current device API.
      bus header files must include dev.h to get struct dev.
      Fix BOOT_DRIVER to assign unique and meaningful name to structure.
      Updated to new device API.
      Automatically updated using
      This is the only driver that has a genuine reason to call
      Made amenable to automatic update.
      Fix up the automatic modifications.
      Automatically modified by
      Fixed up automatic modifications by hand.
      name should be const
      Added a generalised ISA device-probing mechanism.
      Updated to common ISA bus API.
      Typo
      Updated to general ISA bus API.
      This code is unbelievably ugly, has never been fixed up to work with
      Updated to new ISA API, but this driver probably has deeper problems.
      Moved core/isapnp.c to drivers/bus/isapnp.c
      Cleaner separation of find_t509_device/fill_t509_device.
      Standardised debug messages to make it easy to get a bus scan printout
      Standardised debug message.
      Cleaned up isolation protocol.
      Activation code now generalised as well.
      Reduce binary size by factoring out common parameterised calls to
      Don't verify checksum except after serial isolation
      Read current ioaddr and irqno from PnP registers.
      Added debugging messages for activation/deactivation of logical devices.
      Move the concept of logical devices inside the struct isapnp_device.
      Canonicalised tag names
      We now correctly use logical devices.
      Updated to work with new ISAPnP bus code.
      Updated to new PCI bus interface.
      Added EISA, ISAPnP and MCA examples.
      Added "classical" ISA example.
      Not sure why I made these cosmetic changes, but I appear to have done so.
      This at least compiles now.  Haven't separated out the EMBEDDED code yet.
      Don't even try to compile until the code is tidied up.
      Now compiles.
      Fix debug message
      Fixed debug message
      Need to do isolation when find_isapnp_device is first called,
      Leave some time to see what's going on.
      Improve debug message legibility.
      Make isa_probe_addr a simple integer rather than a struct, to facilitate
      Add ISA_PROBE_ADDRS list.
      CONFIG_PCI_DIRECT no longer exists
      Improved debug messages.
      Made debug messages more consistent.
      Improved debugging output
      Read number of PCI buses returned by BIOS so that we can scan more
      Speed up PCI bus scanning by skipping fns 1-7 if fn 0 is not present.
      Consistency
      Now known to work with an old Adaptec 1505 that I found lying around.
      Remove debugging call to getchar()
      Optimise ISAPNP_READ_PORT_STEP
      Added activate_isapnp_device() line
      ...this time with the correct syntax.  :(
      Avoid signed/unsigned warnings by explicitly making PCI_{BUS,DEV,FUNC}
      Place the call to adjust_pci_device() back in the individual drivers,
      Improved building of debugging objects.  You can now specify a "DEBUG="
      Use the correct case for -Ddebug_<object>
      Need to prevent intermediate targets from being deleted, otherwise the
      Automatically drag in console.h if DBG() is being defined as printf().
      Gave vsprintf.c its own header file, and made console.h include it.
      printf and sprintf now defined in vsprintf.h, drag in console.h to get
      Need stddef.h to get size_t
      Use only the header files that we need
      Re-add the "." progress indicator.
      We don't refer to _bss and _ebss any more.
      Made copy_{to,from}_real volatile, so that they don't get optimised away.
      xstart16() fixed up to use new REAL_EXEC mechanism.
      3c509/3c529 no longer use legacy INCLUDE_xxx mechanism.
      Found a home for MAKEROM_FLAGS_3c503.
      Experiment; let's see if we can get individual config header files working.
      First version
      Generate phony targets, so that we don't get screwed by missing config
      All .h files in this directory are generated from the top-level config.h
      If we end up with fragments that are older than config.h, set the
      Use mkconfig.pl to generate fragments from config.h
      Add MKCONFIG utility, and add "-I ." to CFLAGS so that we can work
      Working format.
      Allow serial port options to be specified in a relatively friendly format.
      Whoops
      Serial port configuration moved to config.h
      Avoid deleting .cvsignore
      Split out EISA driver into a separate file, since 3c509s can only take 16K
      Save a few bytes by using naturally-sized ints.
      CONFIG_PCI and CONFIG_ISA no longer exist
      Moved console options to config.h
      Move RELOCATE into config.h
      Fix BUILD_SERIAL.
      This is, of course, the neater and much more obvious way to do it.
      Added warning about not using Config for single-object options.
      Note to self: save files before checking in.
      Ignore buildserial-related files.
      Be nice to emacs
      "make xxx DEBUG=yyy,zzz" now working, but the "up to date" message is
      "make bin/xxx DEBUG=yyy,zzz" now works seemingly perfectly.  :)
      Fix endianness of dhcp device id structure.
      blib definition moved to Makefile.housekeeping.
      Moved disk functions to drivers/bus/bios_disks.c
      Added arch/i386/drivers/bus
      Extracted from firmware/pcbios/bios.c
      Code fixed to operate correctly.
      Added remaining bus functions.
      Moved floppy.c to i386 arch, since it's i386-specific.
      First versions
      Trying to create a bus API.
      bswap_16() exists; no need to use __bswap_16()
      Typo
      Force a standard format upon debug messages.
      Created a bus/device API that allows for the ROM prefix to specify an
      Made macros more like the previous driver API, to minimise required
      Updated to current API
      Tweaked API to minimise changes to existing drivers even further.
      Automatically updated with the program
      Revert debug message prefix back to none, since we sometimes want to use
      Updated all common buses to new API.
      Added friendly enable/disable functions
      Fix up fill_mca_nic.
      Updated to new device API.
      Consistency
      Updated to new API.
      Updated to current API.
      Must not go beyond end of driver's probe list.
      disable() is a void
      Need to leave structure zeroed
      Updated to new bus API, and improved using the 3c5x9 reference manual.
      Debug message fixes.
      Updated to new API.
      Documented where to get hold of the datasheet.
      Updated debug messages
      isapnp_read_port can be set directly, rather than via a function call.
      Fields in struct pci_device slightly changed.
      Coerced into actually compiling.
      Coerced into compiling.
      Coerced into compiling
      Updated to new device probing API
      Coerced into compiling
      Ensured that all drivers call xxx_fill_nic().
      Typo
      Make it easier to comment out individual SRC directories when things
      Coerced into compiling.
      Should be an <= comparison, not a < comparison.
      First working version
      Added "make symcheck"
      Symbol errors caught by symcheck.pl
      Fixed to properly catch multiply defined symbols.
      Prevent hundreds of errors from "make symcheck".  The prefix exit path
      Allow for multiple debug levels
      Added "name" field to bus structure.
      Added DBG2
      Added "name" field to struct bus_driver
      Renamed describe to describe_device for consistency
      s/{name,describe}/{name,describe}_device/
      Improved debug messages
      Added arch/i386/drivers/disk
      BIOS floppy handling code moved to where it will really live.
      Automatically updated with
      PCI_DRIVER changed
      ISA bus driver updated to report devices as present only if a driver
      Add isapnp_max_csn to reduce scan time.
      Added back in the actual call to load().
      First version
      Use symbol size as a third index, mainly so that zero-length symbols
      Produce a sorted list of all local symbols in the map file.
      Added a generalised table infrastructure, so that we don't have to
      Use new generic tables infrastructure
      Linker no longer provides start and end symbols for each table; these
      console.c uses the generic table mechanism
      Added PREFIX_OBJECT() function to be able to easily prepend any string
      Special handling for symbols of the form "xxx_end", to make table end
      Use PREFIX_OBJECT to give the init_fn table variables meaningful names.
      Post-relocation functions use the generic table mechanism.
      Missing include
      dev.c uses the new tables infrastructure.
      isa.c uses the new table infrastructure.
      First version: far too large (408 bytes!!!)
      Much, much smaller.  :)
      First version
      First version
      First version
      parse_url() is void.
      Moved strtoul prototype into stdlib.h for consistency
      Use struct in_addr rather than just "in_addr".
      Protocols also take a pointer to a sockaddr_in.
      inet_aton doesn't overwrite the IP address unless it is valid.
      loadkernel no longer exists; it is now download_url and lives in nic.c.
      loadkernel renamed to download_url and moved to nic.c
      loadkernel renamed to download_url, substantially restructured, and moved
      TFTP API changed.
      Added DNS resolver configuration option.
      Added debugging.
      Added "proto" directory
      tftp prototypes moved to tftp.h
      Protocols get passed a pointer to the filename portion as well as just the
      tftp moved to separate file.
      tftp functions moved to proto/tftp.c
      "dns_resolver" changed to "dns"
      DNS resolver rewritten, moved to proto/dns.c
      ttl is a uint32_t
      Straightforward A record resolution now known working.
      Always request DNS server.  DHCP handling will be generalised in future.
      Do not include etherboot.h
      Add NMB_RESOLVER
      NMB packets are so similar to DNS packets; we may as well add NMB as a
      Add debugging for CNAME records.
      Abort immediately if no nameserver is present.
      Moved protocols to proto/
      Add INIT_RPC
      nfs prototypes no longer required.
      umountall() handled by nfs.c's reset function
      Updated to new protocol API, made to compile.
      Removed obsolete prototypes.
      Updated to protocol API
      Updated to protocol API
      Protocol names are x-slam and x-tftm
      Made parse_url do more of the processing, to avoid duplicating parts of
      Protocol structure can now specify the default port.
      http.h obsoleted (no content)
      More URL parsing moved into url.c
      Moved DOWNLOAD_PROTO_XXX options to config.h
      Split TCP code out into proto/tcp.c
      Updated to use new URL parser and new protocol API.
      Add DOWNLOAD_PROTO_XXX options.
      Tweaked to read more information (including symbol size) from blib.a
      First version
      Report on misuses of shared symbols, and excessively large static symbols.
      Correct symbol violations reported by "make symcheck"
      Moved definition of __shared into compiler.h
      Use shared symbols to save space
      Use shared symbols
      Removed spurious semicolon
      Arbitrary alignment is now available.
      Symbol fixups
      Re-add the "etherboot.%" all-drivers image.
      #if 0 out the whole file for now; it cannot be linked because the base
      Added example of how to use __shared.
      Use __shared
      D'oh
      Reduce large symbol warning threshold, now that most of the really
      Move tulip_private structure into shared data.
      Allow read-only symbols to be large
      Make PCI ID tables const so as not to trigger a warning about a large
      Make vga_font const to avoid warning about large symbol
      Start of an implementation using doubly-linked lists and virtual
      Add memcpy
      Add off_t and physaddr_t, and the copy_{to,from}_phys helper routines.
      Modified to use physical addresses, and to not assume that we can directly
      Added explanatory comment.
      Added debugging
      Return -1 to indicate buffer overflow.  Allow buffer fill level to be read
      off_t should be signed.
      Protocols now load data into a buffer; they don't execute it.
      First versions
      First version
      Include string.h, because we need to define copy_{to,from}_phys
      Make "struct buffer"s reusable between sessions.
      Add INIT_LOADBUF
      Use the global load_buffer, and the boot_image function.
      Merged the unaligned and aligned heap APIs and simplified the code.
      Added old allot/forget calls for backwards compatibility.
      Added ASSERT() macro
      Tidied up init_heap()
      Added debugging
      Add realloc, since the load buffer code requires it.
      First version
      Use the heap functions to allocate a load buffer.
      Use __unused instead of __used for static data structures.
      Image formats moved into the new config system
      Added "image" directory
      Added copy_phys_to_phys
      Use shared symbols for heap_ptr and heap_end
      Added debug messages
      Moved os_regs into start32.S
      Moved find_segment into elf_loader.c
      Added print_images() and autoload().
      Add twiddle() so that progress is visible.
      Heap function prototypes moved to heap.h
      Restructured to allow per-object image formats
      First version
      Moved NBI support to nbi.c, modified to work with new load mechanism
      Load buffer is now handled by the autoload() function.
      Updated to use buffer rather than processor
      Added const to fill_buffer
      Update to use buffer rather than processor
      Quickly hacked to use a buffer rather than a processor.
      Initial revision
      Import from Etherboot 5.4
      Changed to 5.5
      Added errno, strerror and the "%m" printf metacharacter.  These will allow
      First version
      Error numbers moved to errno.h
      All files in here are auto-generated
      There is no arch/i386/firmware/linuxbios directory
      Add DOXYGEN definition, comment out reference to not-yet-existent "image"
      Added rules to generate documentation using doxygen
      Added doxygen comments and errno values.
      doxygen doesn't allow us to do the --include compiler.h trick...
      Working to produce reasonably pretty code
      doxygen.cfg also references ARCH
      Add EBADIMG, EIMGRET, ETIMEDOUT and EINVAL
      Hide __attribute__ from doxygen
      doxygen docs go in bin/doc
      Linker symbols no longer defined in etherboot.h
      Document %m
      Add doxygen documentation
      __attribute__ does not need to be treated as a variadic macro, since
      Only produce documentation where documentation actually exists.
      Add include directories as source dirs
      More doxygen docs
      Added preliminary doxygen documentation
      load_buffer is now handled via load_buffer.h
      More documentation
      Doxygenated
      Add image formats (didn't check in properly to gpxe for some reason)
      Add a const to avoid a warning
      errno.h now required in order to compile.
      Doxygenation
      Doxygenation
      Version increased to 5.5.0
      Added FSP
      Synced across updates from Etherboot 5.4 tree
      Imported from Etherboot 5.4 tree
      Sync from 5.4 branch
      Move API docs to buffer.h, implementation to buffer.c.
      API docs to .h
      Doxygenation
      Don't include etherboot.h; we get a circular dependency
      Doxygenation
      Use "#var" rather than "@c var" for doxygen.
      Don't use anonymous entries in a struct; it seems to aggravate gcc 3.4.3.
      Update to cope with changes in registers.h
      Doxygenation
      Add doc/ directory and .S files.
      Enable latex output
      Documented the compilation stages
      Documented the link stages
      Moved pxe_export.c to pxe.c, since the old pxe.c no longer exists.
      Documented the UDP API calls.
      Documented the basic PXE data types
      Added all API codes and basic prototypes.
      Worked out a sensible doxygen grouping
      Define PXE types in terms of other PXE types where possible
      Add UDP parameter structures
      Documented PXENV_GET_CACHED_INFO structures
      Documented Preboot, TFTP and UDP data structures
      Documented up to PXENV_UNDI_CLOSE
      Finished documenting the UNDI API.
      Added PXENV+ and !PXE structures, and the loader API.
      Separated out the Etherboot-specific parts of the old pxe.h header.
      Rearranging PXE header files
      Moved pxe_errors.c to pxe/interface/
      Moved pxe_loader.c to pxe_image.c to avoid name clash
      Added interface/pxe directory
      Split PXE code into preboot, udp, tftp, undi and loader units.
      Fixes for gcc >= 3.2 from Georg Baum
      Some versions of doxygen seem to object to "@ret None" or similar.
      Remove the annoying #include lines
      Separate out the documentation of the PXE API from the documentation of
      Thoughts on how to coerce the PXE TFTP API into something resembling
      Added implementation note on IP routing.
      Refer to implementation note on IP routing.
      Added diatribe about the mismatch between the PXE spec and the TFTP
      Documented the purpose of the two timeout fields in
      Documented remainder of PXE TFTP API calls.
      First version
      Add tftp_ack() and tftp_error()
      Now have enough functions to implement a standard TFTP client in around 50
      TFTP upgraded to use a core function library (in tftpcore.c) which will be
      Doxygenation
      Remove prototypes for obsolete functions
      Don't choke on duplicate OACK packets.
      Re-order functions for more logical documentation
      Make rfc2090 multicast option optional
      Don't try to fetch another packet once we've reached EOF.
      IGMP functions separated out from nic.c
      Add generic mechanism for background protocols (e.g. ARP, IGMP)
      IGMP protocol now uses the generic background protocol mechanism.
      Rewritten to use the functions in tftpcore.c.
      Always include code for sending multicast packets.
      In multicast operation, the client still has a unicast local port.
      Reduce BACKOFF_LIMIT to a hopefully more reasonable value.
      Allow data blocks to be less than sizeof ( struct buffer_free_block ) in
      Added documentation and ASSERT() statements.
      Fix up building with gcc 4.0.1 / gas 2.16.91
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Merge from Etherboot 5.4
      Fix to compile under gpxe
      Back out duplication arising from the merge
      Build under gpxe
      Remove accidental duplicate arising from merge
      Build in gpxe
      Add uip on HEAD; it's safe to build, since nothing links against it at the
      Prefix semantics have changed
      GPXE code cleanup and purge.
      They can come back when they have someone to support them.
      More purging
      These can come back when someone wants to support them
      Basic structure in place: can daemonise, listen on a Unix domain
      Use libpcap API to send/receive packets.
      Terminate cleanly on SIGINT or SIGHUP
      Basic, functional-but-extremely-pessimal versions (taken from
      Remove htons(); it is provided elsewhere in Etherboot
      Added from uip-0.9/uip/uip_arp.[ch]
      Skeleton version: contains device driver (connecting to network via
      Started adding structure to allow for separate protocol tests, with
      Added basic http-specific option parsing
      Now capable of sending "Hello world!" via TCP.
      Can now also print data sent by the remote side.
      Make the application state a void *.
      Add debug symbols to objects.  (They will be stripped out of the final
      Add Makefile for hijack and prototester utilities.
      Moved include/in.h to include/gpxe/in.h, so that it can be included by
      Removed to make way for the uIP-based tcp.c.
      Added assert.h, with assert() defined (almost) as per POSIX, and
      Added missing #endif
      Assertions are now handled via the POSIX-like <assert.h>.
      Moved old tcp.h to old_tcp.h, to avoid name clash with new (uIP-based)
      Updated with "doxygen -u" from doxygen 1.4.4
      Add include/gpxe as a directory to scan.
      Moved uIP wrapper out of prototester.c and into proto/tcp.c.
      Added prototype for inet_ntoa, even though we don't have the function
      Pick up the gPXE include files when building prototester.
      Added container_of().  This seems about the best place to put it, since
      Moved "hello world" protocol implementation out of prototester.c and into
      Put in a substitute pcap_inject() function, since earlier versions of
      Split non-TCP portions of the stack out into ip.[ch].
      Allow specifying the local IP address via --from.
      We don't need to know anything about ARP
      Added set_netmask() and set_gateway()
      Added tcp_buffer, to give applications a zero-cost place to build data to
      Make pcap_inject non-static, so that its prototype doesn't conflict with
      First draft of iSCSI protocol support.  Is capable of retrieving disk
      Added netmask and gateway global options.
      First version, based on the concepts in linux/skbuff.h
      First version
      First sketch
      First version
      Add missing prototype
      First version.  ARP protocol independence in less than the size of uIP's
      Moved if_ether.h and if_arp.h to include/gpxe, for consistency with Linux
      Make flags more efficient.
      Added pkb_unput() and pkb_len().
      Added ENOENT and EAFNOSUPPORT
      Update now that if_ether.h has moved.
      First version, based on include/linux/list.h, stripped down to just
      Typo
      Added the concept of a network interface (a network-layer concept) as
      Updated to remove obsolete constants
      Remove the concept of the media-independent link-layer header and replace
      First sketch of a new net device API.
      Add "net" directory.
      First draft of a dynamic memory allocator
      Added __constant_memcpy() based on version in Linux's string.h.
      Prototype now clashes with the macro in arch/i386.
      Don't bother poisoning lists; it costs code size.
      Obviate uip_init(); our bss is zeroed at startup already.
      Network API now allows for multiple network devices (although the
      Network API now allows for multiple network devices (although the
      Header rearrangement.
      (librm_base-1b) is already an offset; no need to apply OFFSET().
      gcc is rather over-aggressive about optimising out static data structures
      Add missing {register,free}_netdev().
      We have our own ARP layer now.
      Added pkb_reserve().
      Added missing headers required for compilation in Etherboot.
      Add __constant_flsl(), because it's useful for finding out the next
      Updated memory allocator to improve support for unaligned or partially
      Now passes trivial tests.  free_memblock() needs neatening up.
      Removed incorrect comment; malloc() is inefficient only when the
      Fixed erroneous comparison
      Update to use POSIX-like API.
      Actually, it's probably a good idea to have packet buffers avoid 4kB
      Added missing ssize_t
      D'oh
      Glenn managed to shrink .text by 5 more bytes.
      Updated to current bochs CVS
      Updated to syntax required by latest bochs CVS.
      Much safer to use a TAP device statically allocated with tunctl.
      Avoid the need for a symlink to the BIOS directory; just use the locally
      Hardcoded paths to ../../src/bin avoid one step in the instructions.
      Updated instructions to reflect current reality.
      Gave up on adding POSIX errno's as required, and just added (almost) all
      Exclude bin directory from tags generation.
      Add an explicit failure debug message
      Transmit the buffer contents, not the buffer descriptor...
      Fix a couple of broken assertions, and align the buffer correctly.
      Network layer now works as a proof of concept
      Give uIP a static IP address for proof-of-concept testing
      Added basic code for implementing co-operative multitasking.
      Change semantics of network API so that packet-absorbing calls *always*
      Move init.h to gpxe/init.h.
      Moved uIP and tcp.c from proto/ to net/
      Consistency
      Put the TCP connection periodic processing in tcp.c, where it belongs.
      Make tcp_connect() void; it will eventually have no failure case.
      Created net/tcp and moved hello.c there
      Fix up prototype of strtoul() to match POSIX.
      Add a temporary snprintf, so that safely-written code can at least
      Proof-of-concept FTP implementation
      Make all TCP methods optional; at least FTP data is a read-only
      Half-way tidy
      Merge TCP aborted(), timedout() and closed() methods into a single
      Typo
      Checking in because I don't want to lose this rather neat code for
      This should be much more elegant: we use flat real mode for the
      Verified as working
      Move stack out to separate object, so that having a stack doesn't drag in
      Towards a(nother) new real-mode infrastructure, in which we take
      <name>_size variable is no longer needed, since we don't copy the code.
      Create two easy-to-use entry points in libprefix: install and
      Typo
      BSS is now zeroed by libprefix (along with the otherwise non-zeroable
      Added methods for efficiently declaring and accessing variables in
      Add infrastructure to support access to .data16 (and .text16) variables
      This line should not have been checked in
      Preserve GDT across prot_call().
      Allow access to variables in .text16 as well as .data16.  Chained
      Preserve the whole of %esp across prot_call().  We have to split this
      Added tunctl (since it is difficult to find for many distros).
      (Redoing check-in lost by SourceForge's failure.)
      (Redoing check-in lost by SourceForge's failure.)
      (Redoing check-in lost by SourceForge's failure.)
      (Redoing check-in lost by SourceForge's failure.)
      (Redoing check-in lost by SourceForge's failure.)
      Add drivers/block and arch/i386/interface/pcbios
      Defined a block device interface.
      Defined SCSI device interface, and added SCSI block device
      Provide a SCSI device interface to the iSCSI protocol
      Add 64-bit byte-swapping operations.
      Add INT 13 emulation layer (which provides an interface to gPXE block
      Add flag definitions.
      Define BIOS data segment in bios.h
      Allow re-entrancy and provide a global counter of the number of
      Provide a global counter for the number of interrupts hooked.
      Provide access to rm_cs and rm_ds from protected-mode code.
      Moved to net/tcp/iscsi.c.
      At least cope with "%llx" by reading the correct-sized va_arg from the
      Rewrote printf and friends to better support standard C semantics.
      Updated documentation.
      Correctly handle zero-length buffers.
      Handle the '"%c", 0' case correctly.
      Specify attributes on .text16.
      Add int13_boot(), to allow booting from INT 13 emulated drives.
      Also capture INT 19 as a failure path, to allow for boot sectors that
      Fix a couple of minor typos.
      Split "iSCSI as a SCSI device" out from "iSCSI as a TCP protocol".
      Add INT 13,41 (extensions installation check).  LILO's MBR now uses
      Change movetoyx(), putc() and getc() to methods of the screen.
      Added generic device model.
      Add list_for_each_entry_safe.
      Kill off the "all devices are boot devices" idea
      Fix typo
      Tear out old heap code, replace with code that simply allocates memory
      Missed a reference to heap.h.
      Restructured PCI subsystem to fit the new device model.
      Strip down i386 PCI configuration space I/O to the bare minimum.  A
      Split debug functions out into core/debug.c, so that they can be
      Added missing drivers/scsi
      Set ErrorRecoveryLevel=0 (we don't want to have to handle it).
      Updated to new SourceForge CVS locations, and fix a couple of minor
      Re-enable -Wformat, since our printf() is now more standards-conformant.
      All uses iscsi_state were removed some time ago; removing the
      iSCSI writes seem to be working (at least, the ethereal trace shows no
      Documented login parameters that we negotiate.
      Use typeof(sizeof(...)) to define a size_t.  This stops gcc complaining
      Add the concept of a "user pointer" (similar to the void __user * in
      Expert advice tells me that we *do* have to explicitly state the
      Add EOVERFLOW==ERANGE
      READ CAPACITY (16) turns out to be an optional command (even though
      Use insb/outsb; it's marginally faster.
      Added missing @file block
      Refactored to reduce code size; now down from 1304 to 1105 bytes.
      Added (untested) support for ATA devices.  This code should be generic
      Made the LBA48 example clearer.
      Fixed debug code
      Allow vcprintf() to be called by external code such as the curses library.
      Cope with regions bigger than 4GB.
      Add __{text,data}16_array, since there's no way I can see to make the
      Code to install the new E820 mangler (which doesn't require copying
      Replaced memsizes.c with smaller memmap.c, taking advantage of __data16,
      Removed REAL_FRAGMENT and REAL_CALL, and left just REAL_EXEC (which is
      Remove references to obsoleted REAL_CALL from documentation.
      Split out REAL_CODE() from REAL_EXEC(), preparatory to removing REAL_EXEC
      Set carry flag before calling INT 15,e801 and INT 15,e820.
      Updated to REAL_CODE().
      Update to REAL_CODE()
      Updated to REAL_CODE().
      Updated to REAL_CODE()
      Updated to REAL_CODE().
      Updated to REAL_CODE()
      Will be replaced with a block-device implementation.
      NBI is due for removal
      Added potentially required "\n\t" on the end of asm_code_str
      Removed REAL_EXEC(); there is no longer any code using it.
      Remove the automatic segment register save and restore; most users of
      Define a struct memory_map with a fixed number of entries, rather than
      Add a "count" field to struct memory_map.
      Typo.
      Why should pushal/popal put the registers on the stack in a logical
      Fix printf format warning error
      Update relocate() to work with get_memmap().
      Has been obsolete for a while.
      init_librm() and prot_call() are now real-mode far calls.
      Also hide base memory region from E820 map.
      Removed some obsolete INIT_XXX constants.
      relocate.o is now dragged in by the objects that require it; there is no
      Documented the fact that the prefix can prot_call(main) without
      Updated to work with libprefix.
      Need write permission to /dev/net/tun, not just read.
      Added abstraction layer for a three-wire serial device (e.g. the EEPROM
      Tidied up debugging messages
      Make PKB_ZLEN the minimum possible size of packet buffer (to allow for
      I have no idea how this ever worked before.
      Rewrote to use the new net driver API, the updated PCI API, and the
      Avoid causing TX overflow on small TX queues.
      Added tcp_kick().  This speed up LILO and GRUB booting by almost two
      Fixed assembly on old versions of gas
      Tidy up comment
      Add ETH_P_AOE
      Use separate data-in and data-out buffers.
      Initial AoE implementation.  Limitations are:
      Handle multi-sector reads by splitting them into subcommands.
      Added first sketch of a generic retry timer mechanism.  The idea is to use
      One bit of an ASCII character can make a big difference.
      Added drivers/ata directory (forgot to check this in previously).
      Added generic asynchronous operations code.
      Missing from previous checkin.
      ATA devices are now asynchronous.  The ATA layer itself now performs the
      Put in a method to get the MAC address for the AoE target.  (It's not
      Added sample AoE test code to tree
      Until we have a functioning UDP stack and PXE API again, there's not much
      Backing out last change; no immediate plans to make the whole block-device
      Make DBG_DISCARD correct
      Updated retry timer mechanism to incorporate smoothed RTT estimation.
      Quick hack to avoid trying to use an uninitialised net device.
      Improve tcpdump legibility.
      Added soon-to-be-requisite missing include.
      Added a very quick and dirty compatibility layer, to allow
      PNIC doesn't auto-pad.
      Legacy drivers will not pad when necessary
      Force pci.o to be included.
      Use byte 6 for the checksum, rather than byte 5.  (Byte 5 may be part of
      Calculate _rom_size for the ROM prefix
      Code segment may not be writable; create the temporary pointer to the GDT
      Cut out almost all the optional code paths, drastically simplifying the
      We now have just romprefix, rather than having isaprefix and pciprefix
      Fix some remarkably obvious mistakes in pcidirect.h
      It's astonishing how long really fundamental bugs can survive without
      Legacy drivers cannot cope with multiple active devices.
      Fix bug with >256 cylinders.
      Added sketch of bit-bashing interface common code
      Added missing check-in
      Windows Server 2003 sulks if we feed it an empty region in base memory
      Added bit-bashing i2c interface code
      Update to use the generic i2c bit-bashing code.
      Added null trap code for debugging.  (Must be included by adding
      Fix typo
      Add NULL_TRAP as a config option
      Add "addr32" required explicitly by older gas.
      Updated debug message to reflect change in data structure.
      Change read_bit() to return 0 or -1UL, rather than 0 or 1.
      Translate between "0 = success" and "0 = failure" call standards.
      Move per-transition delays from generic bit-bashing layer to i2c layer
      Generalise three-wire interface to generic SPI interface.
      Added iSCSI boot test code
      Simplify TX datapath.
      32kB window is actually larger than our typical receive ring size.
      For consistency
      Forward-port reset-related changes from 5.4 tree.
      Forward-port start-of-day fixes from 5.4 tree
      Forward-port event queue fixes from 5.4 tree.
      Improve debugging output for legacy wrapper
      Add 4 bytes to maximum frame length to allow for the frame checksum.
      Temporary hack to work around the "TX overflow" problem in the interim
      Remove dependency on arptable[] (which is no longer used).
      Simplify RX data path.
      Made the temporary buffer part of the TCP senddata() API, to ease the
      Placeholder
      Update ftp.c and hello.c to use the generic async_operations API.
      Whitespace fixes
      Split ipv6 functions out from ipv4.c
      Factorise out common code
      Simplify ipv4_tx() by not having a separate "source" variable now that
      First stab at DHCP option handling in a way that will allow us to have
      Change dhcp_num_option() to return the numerical value directly.
      Add priority mechanism
      Provide a mechanism for returning the encapsulator as well as the
      How did this ever work properly before?
      Add code to modify DHCP option values within a block.
      Add (untested) code for parsing a received DHCP packet and constructing a
      Add sketch code to reassemble a DHCP packet from our internal "everything
      Tidy up hex_dump() output.
      Fix creation of the htype field; the ll_proto field from which it is
      This file breaks "make blib"; please find a way to avoid doing this.
      Allow for calling find_dhcp_option() with "options" set to NULL, in order
      Split DHCP packet creation into two parts: creating the basic packet
      Added macros for generating static DHCP options
      Correct typo
      Add some DHCP options that we are likely to use
      Add net/udp
      Beginnings of DHCP protocol implementation
      Added missing prototype
      Proof of concept: transmit a single DHCPDISCOVER and dump out any
      Added some debug messages and DHCP test code
      Add block identification to debug messages
      Eliminate confusion between functions that return pointers and
      Add pkb_available()
      Reserve space for lower-layer headers when allocating packet buffer.
      Use more standardised format specifiers in debug messages (e.g. %p for
      A small but very critical bug.
      Make udp_send() call udp_sendto(), rather than vice-versa.
      Now capable of sending what, to me, looks like a valid DHCPDISCOVER
      udp_open() takes ports in network-endian order.
      Correct TCP/IP checksum generation.
      Clarify hexiness of header length
      conn->local_port is now network-endian; do not swap when comparing
      Packets without a DHCP_MESSAGE_TYPE option are probably just BOOTP
      Set DHCP_MESSAGE_TYPE option within the main options block.  This
      Rename unwieldy function
      Now successfully negotiates the whole DHCPDISCOVER/OFFER/REQUEST/ACK
      Document memory ownership.
      Free up any allocated options if we fail
      Added dhcp_ipv4_option() and friends.
      Remove the static IP address hack from netdevice.c, and change the
      Switch default stack to Nikhil's TCP/IP stack
      Print out the lease time, just to show how easy it is.
      Add dhcp_snprintf() for extracting DHCP string options.
      Request Etherboot encapsulated options.
      Allow an AoE boot to be directed via DHCP, so that we have a proof of
      Print out "DHCP..." message just in case people think the demo is sitting
      Accept '%i' as a synonym for '%d'.
      Request bootfile name; it doesn't seem to be automatically supplied by
      We shouldn't need to allocate a TX packet buffer when calling newdata();
      Renamed tcpip_if.[ch] to tcpip.[ch]
      Renamed trans_{rx,tx}() to tcpip_{rx,tx}(), since they are specific to
      Remove unused functions.
      Added features that will be required for PXE UDP support.
      Moved the basic struct sockaddr out of in.h.
      Updated PXE UDP implementation to use the new Etherboot UDP API.
      Make the UDP senddata() methods return a status code.
      Convert some trivial functions to static inlines.
      Add iSCSI to the DHCP tests.
      Remove unused attribute from __table macros; the tables are no longer
      Set a NUL terminator before calling inet_aton.
      Fix routing when a gateway exists.  This should probably be split into
      Add very, very quick and dirty hello world test
      gcc3 compatibility: removed ARP_NET_PROTOCOL().
      Update to match the daft capitalisation in the actual PXE spec
      Added (not yet tested) PXE API entry point and support functions.
      Added some TFTP definitions for use with the new UDP API.
      The prototype for strcasecmp() is apparently in strings.h.
      Initial (untested) implementation of TFTP over the new UDP API.
      Added TFTP test code (currently just dumps file to console).
      pxe_int_1a is needed by pxe_call.c
      Allow linking by converting all functions to stubs
      Allow linking by converting functions to stubs
      Added missing __from_text16()s when passing pointers to PXE NBP.
      Note to self: learn to count.
      Clarified packet ownership transfer between a few functions.
      Add a couple of small but vital parts to PXENV_UDP_WRITE.
      Aborted
      Derive xid dynamically from the netdev, so that we can call
      Added pxe_netdev; a slight hack for now, but will need to be done
      Implement enough of PXENV_GET_CACHED_INFO to support pxelinux.
      Attempt a PXE NBP boot as the TFTP test.
      Do no evil.  :)
      Removed obsolete line merged in with the cmdline stuff
      Corrected documentation
      iphdr->hlen includes the IP header, so truncate packet *before*
      Remove some of the confusion surrounding the amount to strip off from
      Port the UDP port allocation code to TCP
      out_flags was being set but never used.
      Correct some packet ownership and freeing bugs.
      Temporarily work around the bug when port numbers are reused between
      Don't call stop_timer() from within the timer expiry callback; it's
      Towards an RFC2988-compliant timer.
      Both the !PXE and PXENV+ structures must be paragraph-aligned
      Added description for a basic ACPI table, taken from
      Added missing packed attribute
      Fixed variable name in assertion
      command->data_{in,out} are now userptr_t, so it is invalid to compare
      Added basic infrastructure for manipulating settings.
      Fail gracefully when set_dhcp_option() is called with options==NULL.
      Add string configuration type
      Added ipv4 configuration type
      Added "hostname" and "ip" as sample settings
      Added cmdl_show proof-of-concept
      Print net device name when making request.
      Kill off poll_interruptions(); it is lethal when we're acting as a PXE
      Removed DNS from the default configuration; it hasn't been updated to
      Removed obsolete print_config()
      Removed TAGGED_IMAGE from the default build; NBI has been broken for ages.
      Take out unused cleanup() function so that we can remove the link
      Added some minimal debugging for transmitted PDUs.
      Remove old-style debug message
      Added debug strings.
      Added RX tracing as well.
      Quick utility to pad floppy disk images for vmware/qemu
      Towards making KEEP_IT_REAL work again.
      Basic instructions to get qemu running
      Added basic profiling support
      Always update the PnP checksum, even if the ident string is not being set.
      Use TEXT16_CODE() rather than manually specifying ".code16" etc, since
      Added support for INT 13,15; NTLDR calls it (though it may not
      Added support for INT 13,15; NTLDR calls it (though it may not
      Correct option number for DHCP_DNS_SERVERS, and add it to the request
      Does anyone still use 9600 baud?
      Added generic function for calculating ACPI table checksum
      Added iBFT construction to iSCSI boot test
      Add --enable-show-ips; it's useful when using the profiling code.
      Document requisite patch for qemu
      .zrom is still broken; use .rom by default
      Added extra debugging
      Hopefully fix gcc3 build issue
      Check to see if we've reached the end of the map before attempting to
      Added debug to catch initialisation failures
      Check that serial port init actually happens
      Fix gcc-induced reference to memcpy
      Added geometry-guessing code based on the partition table
      Generalisation of a message digest algorithm
      Taken from Linux's md5.c.  This implementation is not very
      Reduced size from 2087 bytes to 1056 bytes
      Tidied up.
      Added the "swap in place" macros
      Restored the le32_to_cpus() and cpu_to_le32s() calls
      Made eth_ntoa() public for use in legacy drivers' DBG() statements.
      Killed
      Removed as a gesture of goodwill following a request from Microsoft
      Killed
      Minor fix
      We don't actually have a stdio.h header file.  Our printf() functions are
      Inhibit compiler warnings on DBG() when building a non-debug object,
      Split login into security negotation and operational parameter
      Extend strtoul() to cope with hex as well as decimal.  Doesn't cope
      Fixed endp bug in strtoul()
      May as well add octal support to strtoul()
      Note to self: do not write code late at night
      Made it temporarily possible to call MD5 routines directly from external
      Added generic CHAP layer, independent of iSCSI
      Reduce from 157 to 123 bytes
      Added debug statements.
      Added "name" field to digest algorithms
      Fixed off-by-one error
      Implemented realloc(), and changed the semantics of malloc(0) to allow
      Marked memcmp/strcmp as "pure" functions, to allow gcc to optimise
      Updated to use asynchronous operation model for iSCSI requests
      Create "username" and "password" DHCP options, ready for placing this
      Merged changes from Solarflare
      Make the "drive number" option apply to iSCSI as well as AoE
      Basic non-volatile storage support
      Move ANSI C standard prototypes to stdlib.h; leave the gPXE-specific
      Force syntax-checking on assertions even in non-asserting builds.
      Generalised the SPI abstraction layer to also be able to handle interfaces
      Changed length parameter in SPI methods to be a byte length, rather than
      Abstracted out part of the concept of an SPI device to a generalised NVS
      Added generic SPI protocol handler with read and write support.
      Added the generic block-splitting code to nvs.c
      Migrated etherfabric driver to using generic SPI layer.
      Fixed two logic errors that were cancelling each other out.
      Add the concept of a fragment list for non-volatile stored options.
      Added nvo_save()
      Added nvs_write().  This shares a lot of code in common with nvs_read();
      Added debug statements
      Added quick and dirty commands for testing the new NVO code.
      Added more debug messages
      Add iscsi_rx_buffered_data() and supporting infrastructure.
      Handle strings as complete units, instead of a byte at a time.
      Handle TargetAddress
      Tied NVO commands into the human-interactable settings code that I
      Avoid draining the keyboard buffer during gateA20_set().  It shouldn't
      Change some debugging messages to use DBG()
      Slightly tidied up console messages.
      Tidy up some more output.  The command-line code needs some severe
      Added options listed in
      Adjust EEPROM/flash detection to fit expected manufacturing practice.
      The VPD engine is broken and can't actually handle placing VPD
      Update ftp.c to work with Nikhil's TCP stack.
      Avoid calling NULL methods!
      Killed off spurious <stdio.h> inclusion
      Ensure that tcp_rx() always frees its received packet buffer.
      Call closed() method only when the connection is genuinely in the
      Added debug messages
      Tweaked retry messages
      Work around another instance of the port re-use bug.
      Support PXE and iSCSI by default
      Work around another confused-by-RST bug
      Verify data after writing
      Added write support for three-wire devices (e.g. the RTL8139 EEPROM)
      A cleaner method of handling login redirection; just use the existing
      inet_aton() has a non-traditional return value
      Add support for non-volatile stored options in the RTL8139 EEPROM.
      Added a functional version of getopt() and getopt_long(), ready for use
      Added missing prototype
      Added strdup()
      Added missing include of stdint.h
      Added execv() and system().
      cmdlinelib.c now calls system() rather than doing its own tokenisation
      Added "exit" back in as a standardised command.
      D'oh d'oh d'oh d'oh d'oh d'oh d'oh d'oh d'oh
      Including the final (char *)NULL is the responsibility of the caller
      Also request root-path.
      Use root-path option (as per RFC 4173) rather than filename option to
      Add placeholder ibft.h
      Added "priority" and "root-path" options
      Cope with system("").
      Added clear_setting()
      Added "clear" command
      Request all the options that we're prepared to do anything with.
      Typo
      Catch SCSI errors, and work around the start-of-day CHECK CONDITION
      Automatically select between the "10" and "16" variants of command set,
      Fix building on gas versions that don't auto-insert addr32 prefixes
      Added support for interpreting ANSI escape sequences on behalf of
      Add basic ANSI escape sequence support to BIOS console
      Print welcome banner in bold (which will come out as bright white text
      The "increment MAC address by port number" hack applies only to EF1.
      Use iskey() and getchar() to interact with console, rather than object
      Use int rather than short for bool; it will give more efficient code.
      Rename core.c->mucurses.c; bin/core.o is too generic to belong to mucurses.
      Renamed core.h to mucurses.h
      wmove() is part of the public curses API, and already defined in curses.h
      Convert _{store,restore}_cursor_pos to static inlines.
      Remove some unnecessary use of calloc() for tiny memory areas.
      There seems to be no reason why pos_x is static...
      Remove more dynamic allocation
      Adjusted to use the normal internal mucurses API rather than accessing
      Now basically functioning on ANSI-supporting consoles.
      Use ANSI escape sequence to reset and clear terminal, rather than using
      Obsolete, and no longer functions
      Avoid cursor move on every single character
      Optimise bios_putchar for speed(!) by avoiding two separate real-mode
      Assume a 24-line screen, since we can't (easily) avoid scrolling after
      Use current attributes when erasing.
      Use common symbols to avoid dragging in getopt.o unless a getopt-using
      Start of generic editable string support
      Catch attempts to print NULL strings
      Skeletal (non-echoing) version of readline()
      Explicitly move cursor to top-left of screen, in case the clear screen
      Provide an edit history to allow caller to efficiently update display.
      Functioning readline()
      Explicitly print out-of-memory message to avoid tricking the user into
      Use stdlib.h for malloc() instead of malloc.h.
      Minimal shell implementation using readline() and system().
      Separated out (and tidied up) shell banner code
      Use new minimal shell
      Functionality now replaced by a combination of readline() and system().
      Move nvo_cmd.c to hci/commands.
      Remove warning (at least on platforms with uint32_t == unsigned long).
      Select required commands via config.h
      Remove obsolete mechanism for including nvo_cmd.o
      Add "exit --help" to preempt the pedants.
      Reset screen on exit as well as entry
      Editable text box widget based on mucurses and edit_string.
      Don't automatically redraw the edit box; this allows better inheritance.
      Add (partly-functional) user interface for editing configuration settings
      Fix prototype of sleep() and move it to unistd.h
      Use -ENOSPC rather than -ENOMEM, to distinguish the cases "generic out of
      Differentiate between ENOSPC and ENOMEM
      Move strerror() prototype to string.h, where it belongs
      Split error-message table portions of errno.h out to gpxe/errortab.h
      Fix (hopefully) the scrolling logic
      Increase colour pair limit
      Alert when saving settings fails
      Split strerror() out from errno.c
      Added messages for some of the most common errors
      Move {show,set,clear}_setting() to {show,set,clear}_named_setting().
      Added descriptive text for settings and setting types, and display it in
      Clear message on alert row before printing new one
      8-bit integers are 1 byte long, not 8...
      Only need printf(), so use vsprintf.h instead of console.h
      Add instruction row, and save option
      Add "config" command to access config UI
      Add attr_{get,set,on,off} as static inlines.
      Explicitly call erase(), to cope with platforms where the ANSI clear
      Split the (quick hack) boot logic out from main.c to autoboot.c, add a
      Obsolete for some time now.
      No longer needed
      Close UDP connection when DHCP completes.
      Add EIO.
      settings_ui() now returns a status code.
      Return -EIO when verification fails, instead of -EINVAL.
      Prevent NULL from ever pointing to some real code or data.  (This was
      Define KEY_MIN and use it in kb.c.
      Key definitions
      Added code to interpret ANSI keypress sequences into KEY_XXX constants.
      Add insert/delete and document keys, and documentation.
      Some key sequences seem to end with a tilde
      Use getkey() and symbolic key names.
      Fix definition of KEY_END
      Use symbolic key names, and avoid moving beyond end of string
      KEY_XXX constants are now defined in gpxe/keys.h.  Kept separate from
      Use getkey() and symbolic key names.
      Return ANSI sequences for special keys
      Added missing header
      Some BIOSes return 0xe0 for extended characters.  Just assume that
      Engage brain: since when was zero >= 0x80 ?
      Add iSCSI initiator IQN as a setting
      Print explicit error message on iSCSI boot failure, and add
      Default to port 0 (sic).
      Add ability to shut down iSCSI connection
      Use a bigger buffer for the initiator IQN
      When login fails, leave the session open but not in full feature
      Avoid null pointer dereferences when no username/password specified.
      ibft_fill_data() prototype change.
      Make start_timer() and stop_timer() robust against incorrect usage.
      Fix prototype of random() and move to stdlib.h
      Cannot immediately overwrite the peer address when we parse
      Ensure that old TCP connection state is destroyed before attempting to
      Added times to start/stop log messages
      Keep running the main processing loop while waiting for input.
      Merge changes from mcb-tcp-fixes branch.
      Don't send a second FIN if we receive a FIN while in FIN_WAIT_2
      Redefine TCP state to include "flags that have been sent" rather than
      Added auto-colourising DBGC() macro
      Use auto-colourisation for debug messages.
      Use autocolourisation
      Use whole bytes for the ACKED and RCVD portions of tcp_state; it
      Fix compiler warning
      Tidy up debug messages
      Verify checksums on the RX datapath.
      Improve consistency between TCP and UDP RX datapaths
      Accept RST on received packets
      Send RST packets when we get a non-matching connection, or receive an
      Minimal hotplug support: provide a facility for notifying persistent
      Use hotplug support to notify persistent reference holders when a
      Minirouting table entries hold a persistent reference to a net_device.
      An AoE session holds a persistent reference to a net device.
      IPv6 minirouting table entries hold persistent references to net devices.
      Added missing #include
      A DHCP session holds a persistent reference to a network device
      We *should* use the persistent reference API for our netdev reference,
      Make open() and close() an official part of the netdevice API.
      Don't automatically call gateA20_set() when returning from a real-mode
      Allow empty checksums on received packets
      Don't include __FUNCTION__ in assert() messages; it was causing the
      Add as a separate file so that we can do "make bin/xxxx.kpxe" rather than
      Ripped out everything except the ability to send EOI to the PIC.
      This file is no longer used
      Currently unusable; do not attempt to compile
      Obsolete
      Added PXE bus driver (with support only for using PXE structures found
      Obsolete; net driver functionality is now in undi_net.c and bus driver
      Renamed undi_net.c to undi.c.
      Add PXE driver-scanning code, capable of locating all PXE ROMs in a system
      Partial implementation of UNDI loader caller.
      Avoid creating implicit memcpy()s
      Added PnP BIOS scanning code, separated out from the UNDI driver
      UNDI loader routine now works
      Remove redundant debug message
      Remember to enable/disable the interrupt at the PIC.
      Move START_UNDI, UNDI_STARTUP, UNDI_INITIALIZE and
      Remove accidentally checked-in code
      Add device to hierarchy before calling the driver's probe() function; this
      Obsolete
      Renamed undi.c to undinet.c.  (undi.c will become the UNDI PCI driver)
      Use "struct undi_device" instead of "struct pxe_device", and use the
      Separated out UNDI ROM location code into undirom.c, and use struct
      Remove obsolete includes
      Split UNDI load/unload out into undiload.c.
      Added missing include
      Added missing declarations
      Added missing includes
      Added debugging statements
      Remove types and prototypes now provided in the undi*.h headers.
      Added support for wildcard device/vendor ID matches
      Added PCI_BASE_CLASS() macro
      Tidied up debug messages
      Added any-PCI-device UNDI driver
      Now split out into undirom.c and undiload.c
      Remove spurious debug message
      Neaten up debug messages
      Checking in obsolete but working memory-scanning code just for the record
      New strategy: always stop both base code and UNDI.  Always free base code
      Copy pxelinux's shutdown sequence: use UNLOAD_STACK without STOP_BASE,
      Use fixed-width fields in struct undi_device, so that pxeprefix.S will be
      Call PXENV_UNDI_GET_NIC_TYPE to identify NIC physical device.
      Provide storage for an undi_device structure representing the preloaded
      Populate preloaded_undi device when applicable.
      If preloaded device matches, use that rather than going via the UNDI
      Since we now always unload the base code stack (even if we keep UNDI),
      Avoid leaving preloaded_undi with invalid PXENV+/!PXE structure
      Avoid erasing non-existent signatures in undi_unload()
      undipci_probe() has to calculate busdevfn anyway, so we may as well pass
      Added missing call to undinet_remove()
      Added UNDI root bus driver (which saves including all the PCI bus code,
      Obsoleted by drivers/net/undionly.c
      Clean up connection closing and permanent failure logic.
      Use debug auto-colourisation.
      We can't assert that the RX engine is idle in iscsi_done(), because it
      Reset character attributes before start of welcome banner, in case
      Define "connected" as
      Leave protected-mode return address on PM stack when issuing a
      Allow boot sector to completely destroy real-mode stack, but still
      Send EOI after enabling interrupt, in case the device had asserted IRQ
      Added ability to break ISR processing over several calls to poll().
      Move start/stop/expire debug messages to DBG2() level.
      Added net device TX queue; this will be needed to support the PXE UNDI API
      Rename pkb_available() to pkb_tailroom() for consistency with Linux's
      Autopadding was sometimes overwriting the struct list_head at the end
      Add RX quotas to the net device poll() method.  This avoids the problem
      Add "name" field to network device, to facilitate netdev commands.
      Added network interface management commands
      Move header file for usr/autoboot.c to include/usr
      Add interface management commands
      Allow an explicit network device to be specified for IP-layer
      Add udp_sendto_via() to allow e.g. DHCP to transmit without first having
      DHCP transmits via specified net device, so no need to create a dummy
      Allow udp_{send,sendto,sendto_via} to be called outside of the
      Remove uIP; we haven't used it for quite some time now.
      Add "name" field to struct device to allow human-readable hardware device
      Having forced __table() to natural structure alignment, it now seems
      Force ordering of commands in help list.
      Force ordering of commands within help list.
      Give UNDI device a more meaningful name.
      Add device description fields to struct device.
      Add find_pci_netdev()
      Try booting from the "boot" network device first (i.e. the one which we
      Add route() function to display routing table.
      Add "route" command (which currently only displays the routing table; it
      Warn when net device on an active route is not open.
      Move include/buffer.h to include/gpxe/buffer.h
      Update buffer-handling code to enable expandable buffers.
      Added strerror(0)=="No error", so that TCP protocols can use
      Fix bug in buffer.c, add buffer mini-unit test.
      Change FTP to use a data buffer rather than a callback function.
      Extract packet-padding login from rtl8139.c to a separate pkbpad.c file.
      Use pkb_pad() rather than doing it the dangerous way :)
      I hate NULL pointer dereferences.
      buffer.c should be using copy_{to,from}_user, rather than
      Add phys_to_user() and copy_user().
      Move memmap.h out of arch/i386; it no longer contains anything
      Added user_to_phys() and memset_user().
      Remove osloader.c and replace with a prep_segment() that uses userptr_t
      Add image directory back in
      Removed the Etherboot-specific ELF-image code and replaced it with a
      Use physical address in debug messages; they make more sense to read.
      Update TFTP to use a struct buffer rather than a callback.
      Create include/gpxe/elf.h for the ELF bits that aren't part of the ELF
      Print informative error message when boot fails.
      Try image as ELF file first.  (Don't yet actually try to execute it).
      Had this file lying around for ages; may as well check it in.
      Move include/image.h to include/gpxe/image.h
      Rename "image" field to "data", because "image->image" is just confusing.
      Use generic "struct image" rather than "struct elf".
      Downloaded from current grub CVS.
      Distinguish between ENOMEM (as representing a lack of internal memory
      Limit -ENOEXEC to mean "this is not in my format".
      Add placeholder elf_execute()
      Capable of loading a multiboot image into memory
      Add PHYS_CODE, for use as in __asm__ ( PHYS_CODE ( ... ) ), comparable
      Capable of starting a multiboot kernel (albeit without the multiboot
      Added fields present in the documentation but not in the header file.
      Avoid namespace clashes
      Add command line that can be passed to executed images.
      Whoever put together the grub multiboot.h header is insane.
      Populate multiboot information structure before calling OS.
      alloca() can be useful in some (limited) circumstances.
      Provide registration mechanism for loaded images, so that we can e.g.
      Allow for named images.
      We may be required to page-align modules, so let's make sure we catch
      Fix typo
      Add UNULL
      We *do* have a __data16_array after all!
      Obsoleted by arch/i386/interface/pxe/pxe_call.c
      Long since obsoleted by arch/i386/scripts/i386.lds
      Nothing (not even hidemem.c) uses this file!
      Allow external code to update hidden memory regions.
      Rename copy_user() to memcpy_user().  Add memmove_user() and
      First version of an external memory allocator (not tested)
      Quick and dirty test for emalloc()
      Fix the only bug (which was to use DBGC() in place of DBG()!) and add 4kB
      Build automatically expanding buffers from struct buffer and erealloc().
      Added basename() to make automatically naming images easier.
      Place command-line inline, to save on memory allocation hassles.
      Added missing declaration.
      Be silent if there are no network interfaces
      Added IMAGE_LOADED flag and find_image()
      Add basic "fetch" and "imgstat" commands.
      Add free_image
      Cleaner separation between imgXXX() functions and image_cmd.c
      Allow "imgexec" with no arguments to boot the file that was loaded with
      fetch() now knows nothing about struct image; it simply loads a file and
      Force probing of multiboot before ELF.
      API change: the raw image will no longer be (hypothetically) discarded
      Ignore comment lines.
      Add debug message
      Rearrange struct image to reflect usage of the fields
      Don't print "<NULL>" when we use imgautoselect().
      Use systematic names for XXX_IMAGE.
      Added dhcp() user-level command.
      Let ifmgmt.c take care of calling efree(), since it's the once which
      Add "dhcp" command
      Make DEBUG=script echo the commands as they are executed
      Added missing declaration.
      Use dhcp(), imgfetch() etc. to boot rather than dhcp_test().
      Code used for load buffer and multiboot image testing
      Fix the memory map.
      Ensure multiboot modules are in ascending order of memory start
      Print image physical location in registration message.
      Place multiboot tables in base memory; at least some OSes won't see it
      Added generic line-buffering code (a la stdio)
      No need to maintain a received byte count; we always fill in sequential
      Damn it; my lovely resilient scheme falls down when you have a protocol
      Added isspace() and made strtoul() accept whitespace, as per POSIX.
      Added ENOENT, since HTTP 404 translates to it
      Whitespace fix
      Fixed HTTP
      Add HTTP test support
      Damn Broadcom and their damned incorrect assumptions about x86 memory
      Always send EOI.  We can't feasibly share interrupts (since we have no
      Hex dumps are now integrated into the DBG() framework.
      When an UNDI API call fails, print everything there is to know about it.
      Pick up the return status code from the correct place now that we
      Add header for pxe_boot()
      I prefer IMAGE_XXX to XXX_IMAGE.
      Advertise a larger MSS to improve TCP performance.
      Add some trace messages for important events
      Some operating systems get a nasty shock if a region of the E820 map seems
      Provide {get,set}_fbms() in basemem.h.
      Use {get,set}_fbms() so that allocated base memory is correctly hidden.
      Use _text, rather than assuming _text==0.
      Rename "boot" to "autoboot"
      Make "boot" a synonym for "imgexec", to match grub
      Make shutdown functions callable by OS image's exec methods.
      Call hide_etherboot() from startup(), rather than requiring the prefix to
      Use debug autocolourisation.
      Do not go past the end of the argv[] array.
      Select a PXE network device before starting PXE NBP.
      Fill in BufferSize in PXENV_GET_CACHED_INFO
      Obsolete for some time
      Mostly updated.  Won't work yet.
      Replace image->entry with image->priv.
      Placeholder bzImage support
      Obsolete
      Can almost start a kernel now.  It dies with "No setup signature found"
      Obsoleted by arch/i386/image/multiboot.c
      .lilo and derived targets (e.g. .iso) now load properly.
      Remove some references to no-longer-existent source files.
      Can start a Linux kernel directly (albeit with no initrd support)
      Split bzimage_load into separate functions
      Copy command line at execution time rather than load time.
      Allow load() and exec() methods to be NULL.
      Add dummy "initrd" image format, just so that images can be marked as
      Actually, the initrd image should be architecture-independent.
      Typo
      Once image type has been set, do not autoprobe further
      Make the getmemsize() prototype available in memsizes.h, for code that
      We can now load an initrd as well as a kernel
      Add the "initrd" command
      Use -ENETUNREACH to mean "no reachable network device exists, don't bother
      Make TCP give up immediately when it receives -ENETUNREACH from
      Dump buffer and packet information in PXENV_UDP_READ as well
      Split DBG() statement containing two inet_ntoa() statements; they
      Added a URI parser that should be standards conformant.  (It can certainly
      Add ETIMEDOUT
      Add missing include
      Gave asynchronous operations approximate POSIX signal semantics.  This
      Unmaintained example code is probably worse than useless.
      Must free http on the error path; nothing else will do it
      Protocol's get() method no longer takes ownership of the URI.  HTTP is the
      Update TFTP and FTP to take the same temporary URI scheme as HTTP
      A working DNS resolver (not yet tied in to anything)
      Quickly hack in DNS resolution as a proof of concept
      Improved debugging
      Improve debug messages
      Improve debugging
      When a network device is specified to tcpip_tx() or it's children, treat
      Create and use async_block() macro; it cuts down on the visual overhead
      Rename e{malloc,realloc,free} to u{malloc,realloc,free}, to more obviously
      Obsolete
      Ensure that struct sockaddr is long enough...
      Add utility function to parse port from URI
      Added async_uninit() to simplify failure paths.
      Use struct sockaddr rather than struct sockaddr_tcpip
      Replacement for fetch() which operates asynchronously and identifies
      HTTP/DNS now working fully asynchronously.  HTTP/IP addresses and any
      Respect the RX quota.  This improves poll time by about 0.7us when the
      Switch from calloc() to malloc()+memset() to match the practices used
      Don't always zero memory in malloc().  This saves around 2us on a
      Reorder functions to more closely reflect the flow of control
      Presize the download buffer when we see the Content-Length header;
      Allow buffers to be pre-expanded on demand.
      Accelerate memcpy() by around 32% on large, dword-aligned copies.
      Increase window size to 64kB.  Line rate downloads on a 100Mbps link,
      Remove the one-packet-per-poll-cycle limit; it seems to no longer be
      Add DBGLVL_PROFILE
      Declaring the CPU architecture in the middle of an assembly file is
      Allow truly arbitrary debug levels to be specified via DEBUG=
      console.h is no longer needed for debugging
      Include stdlib.h rather than malloc.h
      Move include/malloc.h to include/gpxe/malloc.h, since everything in there
      Use total free memory as advertised window.  This seems to be sufficient
      Have DHCP set the nameserver, rather than DNS read the DHCP nameserver
      When an async operation dies, orphan its children.
      A working name resolution framework
      Add missing prerequisite include
      Typo
      4.3BSD says that bcopy and bzero are defined in strings.h, not string.h
      Finally move the prototypes for printf() and friends to stdio.h
      Use stdio.h instead of vsprintf.h
      vsprintf.h is gPXE-specific; move it to include/gpxe
      Split random number generation out into core/random.c, and create the
      Add POSIX prototypes for time functions, to allow external code to build
      Introduce structured error codes.
      Handle structured error codes.
      Propagate return status code from last child to fail.
      Note that the SIGCHLD handler could be re-entered.
      Actually, it's probably safer *not* to leave child processes hanging
      Zeroing out memory before using it can be so important.
      Added SIGKILL handler
      Misread the definition of the type_of_loader field; it should include a
      "vga=" is specified in decimal, not hex.
      Use base "0" in strtoul for consistency with "mem="
      Add Linux-compatible rol32/ror32 functions.  Amazingly, gcc will
      Help quick testing of building Linux code inside gPXE
      Yet more synonyms that people tend to use.
      #if 0 out for now
      Enable the axtls code to at least build within gPXE
      Add aes.c and required headers from axtls tree
      Build external axtls code
      Add 64-bit rotates
      Move tolower() etc to ctype.h as per ISO C
      Allow MatrixSSL code to compile inside gPXE
      Avoid barfing on gcc's implicit memcpy()s
      Add matrixssl directory
      Handle (64-bit) / (32-bit) = (64-bit), i.e. one step beyond that
      Should be correct for building RSA
      Moved most buffer debug messages to DBG2.
      Added async_block_progress() and default SIGUPDATE handler.
      Keep HTTP progress updated, and display a progress indicator during the
      Split bootsector execution code out into bootsector.c.
      Don't call PXENV_STOP_UNDI in the kpxeprefix.  This slighy breaks the
      Use "dbg_stream" rather than "stream" as a variable name in
      Definition of a (hopefully) generic stream API
      Low-overhead filter streams
      Generalise digest_algorithm to crypto_algorithm.
      Missing check-in
      Added cipher wrapper functions
      Added blocksize for the benefit of HMAC code
      Placeholder
      First sketch of stream API
      Changed to use the generic stream API.
      Add null crypto algorithm
      Add insert_filter() function
      Tidy up debug messages
      The null crypto algorithm should at least copy data...
      ...but not when it's being used as a digest algorithm...
      Swap downstream/upstream order so that debug messages for filters show
      Filter insertion now actually works
      Add HTTPS port
      Placeholder for TLS insertion
      Force inlining
      We need this, I think
      Made most of the build much quieter
      Adding missing include
      Add wrapper around axtls' sha1 code
      Added setiv method
      Added wrapper for AXTLS AES code
      Original axtls RSA code
      Added __umoddi3
      Assert that division result is correct
      Placeholder
      Also print out stack pointer (with optional stack dump)
      More assertions
      Fix prototypes
      Add dummy setiv method
      Quick hacks to get it working
      Vanilla copies from axtls
      Make context sizes available for statically-allocated structures
      SHA1_DIGEST_SIZE also available as a static constant
      Don't pass through zero-length requests
      SSL requires inordinately large data storage
      Required for public key extraction
      SSL needs quite a lot of spare memory
      Add ability to read serial number from SMBIOS
      Allow queries in GET requests
      Remove no-longer-used variable
      Updated ISAPnP, EISA, MCA and ISA buses to current device model.
      Updated 3c509 to current device model
      t5x9 code relies on nic->ioaddr being set
      Make _load_size accurately reflect the number of bytes in the actual
      Added .nbi as a format.
      Support 32-bit (linear) NBI images.  We don't yet provide a bootp data
      Typo
      Provide a buffer in base memory for code to fill with generated DHCP data.
      Add 32-bit support.
      Trivial ASN.1 decoding functions.
      Initial sketch for the generic data-transfer interface.
      Added deliver-as-iobuf/deliver-as-raw concepts.
      Added PF_INET[6] and SOCK_{STREAM,DGRAM} definitions and debug
      Preliminary support for opening data-transfer interfaces
      Add seek()
      Skeleton job control interface
      Add (and use) generic reference counter, to improve signal:noise ratio
      Added plug_plug()
      D'oh
      Document the fact that a zeroed-out refcounted object will behave in
      Clarify behaviour of plug() by using intf_put() and intf_get().
      Add start() event
      Initial sketch for a downloader object
      Added (non-functional) reference count to struct image
      Add always_inline attribute to force gcc to inline single-instruction
      Data-transfer interface should now be functionally complete.
      Do not hold self-references.  This then avoids the problem of having to
      Prefix all the open()-family routines with xfer_, to disambiguate them
      Allow construction of PXE status code from internal error number.
      Added POSIX-style blocking I/O calls, for use by PXE TFTP API.
      Updated to use POSIX-style file I/O layer.
      Add alloc_iob() and free_iob().  (Direct search-and-replace
      Add debugging
      Must request data before anything actually happens...
      Add explicit "freeing" debug messages.
      pkbuff->iobuf changeover
      Rename pkbpad.c to iobpad.c
      Add local address to socket openers.
      Use list_for_each_entry_safe() when flushing queue.
      Updated tcp.c to provide a standardised data transfer interface.
      Free I/O buffers when we are finished with them!
      Modify process semantics; rescheduling is now automatic.
      Modify data-xfer semantics: it is no longer necessary to call one of
      Modify data-xfer semantics: it is no longer necessary to call one of
      Added EPIPE description.
      Eliminate PF_INET; just use the AF_INET from the struct sockaddr instead.
      Eliminate PF_INET; just use the AF_INET from the struct sockaddr instead.
      Move increment/decrement debug messages to DBG2 level
      Introduce name resolution interface and named socket opener.
      Make URI structures reference-counted.
      Add sanity check and extra debug message
      Add xfer_[v]printf() functions.
      Updated FTP to use data-xfer API.
      Update HTTP to use data-xfer interface.
      Should call ftp_done() if constructor fails.
      Move [v]ssnprintf() from iscsi.c into vsprintf.c; we need them
      Added [v]asprintf()
      Added dirname()
      Add facility for resolving base+relative URIs (and paths).
      Added missing va_end()
      Add a couple of tests for the URI parsing and resolving code.
      Conflicts with native asn1.c
      Merge branch 'master' into mcb-tcp-xfer
      Merge branch 'master' into mcb-tcp-xfer
      Add reference counting to register/unregister procedure.
      Use standard xfer_open() argument list for downloader instantiator
      Add our own trivial version of stdarg.h.  This makes our build
      Allow xfer_open() to take a struct uri as well as a URI string.
      Scripts temporarily deregister themselves while executing.  This
      Merge branch 'master' into mcb-tcp-xfer
      Rename .cvsignore files to .gitignore
      Ignore external directories (bochs, qemu) within contrib/bochs.
      Merge branch 'master' into mcb-tcp-xfer
      Add our own trivial version of stdarg.h.  This makes our build
      Merge branch 'master' into mcb-tcp-xfer
      Add missing call to free_iob().
      Merge branch 'master' into mcb-tcp-xfer
      Add concept of transfer metadata, to be used by UDP in order to
      Updated TFTP and PXE UDP API code to use not-yet-implemented data-xfer
      Renamed _calloc() to zalloc(), ready to be used as a standalone function.
      Merge branch 'master' into mcb-tcp-xfer
      Updated DNS to use not-yet-implemented UDP data-xfer API.
      DNS code now records a whole struct sockaddr for the name server.
      Remove unused headers.
      Add concept of "current working URI".
      Treat URIs opened via xfer_open() and friends as relative to the
      Add iob_ensure_headroom() placeholder.
      Partial migration of UDP to data-xfer interface.  (Will not link at
      Kill off hotplug.h and just make net devices normal reference-counted
      Update DHCP to use data-xfer interface (not yet tested).
      Kill off job::start() (it was only ever added as part of an aborted
      Forgot to set initial session state.  Now works!
      Added monojob controller in lieu of a full working shell.
      Add dhcp_configure_netdev()
      Use monojob and dhcp_configure_netdev().
      Quick hack to get image booting working again
      Removed debugging statements that should not have been checked in.
      Mildly ugly hack to force correct linkage.
      Bugfix: iobuf->data always points to the start of the allocated
      Added missing config.[ch] lines for FTP protocol
      Obsoleted by downloader.c
      Move stack to below 0x7c00; leaving it at the default location
      Current bochs has a 128kB BIOS, not 64kB
      Set current working URI based on TFTP server specified by DHCP.
      Revert "Move stack to below 0x7c00; leaving it at the default location"
      Use internal real-mode stack from non-returnable prefixes
      Fix stack on return from PXE NBP so that we can return properly.
      Initial notes on RIS
      Windows RIS now gets as far as downloading NTLDR.
      I really, really screwed up the semantics of BufferSize and BufferLimit.
      Don't build option-overloaded packets; they just confuse people (ISC
      Separate out pxe_start_nbp() from pxe_image.c into pxe_call.c
      Implement the "overwrite TFTP filename" Microsoft RIS bug workaround.
      Implement the two UNDI API calls used by RIS.
      Place the actual version string in .data16, rather than just the
      Add gdbsym.c object to help with running gdb-to-qemu
      Add ability to resolve relative symbols as well as locate absolute ones.
      DUMP_GDBSYM should not be enabled by default.
      How has the legacy wrapper been working for the past month or so...?
      Hack together far enough to support ne2k-pci.
      Can't use strncpy() to copy strings that aren't NUL-terminated to
      Support cards such as natsemi which treat the data as little-endian
      Removing obsolete files.
      Improve debugging
      Call shutdown() from pxenv_undi_shutdown().  Probably not totally
      Build bochs with ne2000 support, and add sample lines in bochsrc.txt
      pxe_netdev now holds a reference to the network device.
      Use a common base-memory packet buffer for DHCP construction (as used
      Add untested support for UNDI transmit and receive.
      Add mechanism for providing TX completion events.
      Place netdev_open()/netdev_close() calls in appropriate places.
      Ensure that pxe_netdev is set before starting up PXE NBP.
      Add trivial net device statistics (TX and RX packet count), reported
      Enable/disable interrupts on open/close.
      Add missing call to free_iob() in pxenv_undi_isr().
      Enable/disable interrupts at open/close time.
      Reserve space for link-layer header in pxenv_undi_transmit() when not
      Enable/disable interrupts in driver open/close.
      Document TX completion bug.
      Never attempt to route the broadcast address.
      It's not just Etherboot that fails to generate TX completions.
      Avoid double free on I/O buffer when rtl_transmit() returns failure.
      Kill off PXENV_UNDI_FORCE_INTERRUPT support; we have no reason to
      Kill off now-redundant _irq() methods.
      Work around Etherboot 5.4 bug when multiple packets are received.
      Report our interface type as "gPXE" to avoid working around Etherboot
      Implemented (untested) PXENV_START_UNDI.
      Use a linker-table based system to automatically mark and start up
      Move pxe_netdev and set_pxe_netdev to pxe_undi.c and remove
      We don't actually use the reset functions anywhere, and nothing really
      Should be using the generic device probe mechanism, when (if) they
      This comment is no longer relevant.
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Added missing "extern"
      Line buffer API changed a while ago
      Added missing line to set return status code.
      Separated out initialisation functions from startup/shutdown functions.
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Add (untested) UNDI loader C-level implementation.
      Cope with builds with differing debug options within a second of each
      Fix typo
      !PXE and PXENV+ structures are in code segment, not data segment.
      UNDI loader entry point implemented; seems to work.
      Kill off lots of warnings in via-velocity.c by correcting these definitions.
      Added master boot record capable of locating active partition
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Revert "Added master boot record capable of locating active partition"
      Added active partition locator, and simple MBR built using it.
      Switch compiler warning on tcp_open() to a #warning
      Make masking constants unsigned, to avoid a gcc3-only compiler warning.
      Miscellaneous efficiency improvements, and extend read_sectors to
      hdprefix that works for LBA only
      Working with multi-sector reads
      Add .usb target
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Use partition type 0xeb ("EtherBoot"), to avoid any attempts to mount
      Allow recording of TX and RX errors to aid in end-user debugging.
      Use netdev_rx_err() to report receive errors.
      First draft of PXE extensions API.
      Add concept of DHCP option applicators.
      Remap EBADF to PXENV_STATUS_TFTP_FILE_NOT_FOUND; the only user is
      Allocate heap at first usage, rather than assuming we can fit it in
      Pad ROM images to 512 bytes, not powers of two
      Add .pdsk target (padded .dsk, suitable for qemu).
      Add strlen_user() (will be needed for PXE API extensions)
      Added PXENV_GET_FILE_SIZE.
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Apply global DHCP options when register_dhcp_options() is called.  Do
      Revert "convert to zalloc"
      Merge branch 'zalloc'
      Revert "Replace natsemi driver with Indolent's updated one that uses the gPXE API"
      Use net_device_operations structure and netdev_nullify() to allow for
      Revert "Cope with builds with differing debug options within a second of each"
      Re-added symtab to CLEANUP list
      Kill off unused request() method in data-xfer interface.
      Separate the "is data ready" function of xfer_seek() into an
      TCP limits advertised TCP window to size of application window
      Add debug message when nameserver setting is applied/changed via DHCP.
      Fix typo that was preventing any DHCP option applicators from being
      Limit xmit window to one MTU.  (Path MTU discovery not yet
      iSCSI updated to use data-xfer interface on the socket side (TCP).
      Everything except the SCSI interface should now be present
      Code in place to use a hypothetical SCSI interface.
      Ready to start testing
      Make ref_get() return the reference, for cleaner code.
      Add strcspn() and strndup()
      Merge branch 'master' into iscsi-update
      Fix root-path parsing.
      Fix TX state machine and miscellaneous other bits.
      Add missing static
      Fix up iscsiboot missing prototype warnings
      Remove some obsolete stream-API files
      Added missing "static"
      Remove xfer_ready() (it has been replaced by xfer_window())
      Set CF by default, clear on success (rather than clearing and setting
      Proof of concept; works, but has several hard-coded hacks.
      Change %dl fixup rules for INT13:
      Always increase number of BIOS drives when registering
      Hopefully solve the problem requiring the occasional "rm -rf bin/deps".
      Working code to call the PXE stack from within the ISR.
      We probably ought not to call INT13 with interrupts disabled.
      Master IRQ should be EOIed first, I think.
      Protect ISR against failure to unhook.
      Add debug messages to process.c
      Unplug before sending close() message, to avoid screwing up interfaces
      May be required in some disconnect scenarios
      Dump first 64 bytes of chained ISR when debugging is enabled.
      Report RX errors via netdev_rx_err()
      Set up %ds *before* testing a value in our data segment (d'oh!).
      Improve error reporting for strange length combinations reported by
      Avoid reusing auto-allocated ports after connection close.
      Adjust received length to take into account any already-received data
      Add support for TCP timestamps
      Use fast in-situ test for gate A20 being set, to cut down on the
      Kill off the enforced RX quota; it only seems to hurt on real hardware.
      Be more aggressive in attempts to enable A20, now that we have the
      Dead code removal.
      Reduced etherboot.h dependencies to avoid unnecessary rebuilds.
      Shrink cpu.c and render it useful for our purposes.
      On advice of hpa: be more patient with the KBC and SCPA methods; retry
      Remove more obsolete files
      "not" doesn't affect flags, "xor $-1" does.
      Modified calling convention: we now update %esi and %edi just like a
      Skip the length field prepended by util/nrv2b.c
      Revert mdc's warnings purge on natsemi.c, to allow for a clean rebase.
      Merge commit 'indolent/natsemi'
      Reverting unintended change caused by merge of indolent/natsemi branch.
      Use a single _payload_offset linker-defined variable to locate the
      Added nrv2b binary to ignore list
      Revert "no need for depending on build library ("blib")"
      Add __bss16() macro, and allow use of .bss16 section by removing
      Kill off some long-redundant CFLAGS
      Move uninitialised .data16 variables to .bss16; saves around 2000
      Split the objcopy stage out of final image preparation to a separate
      Compressed ROM images now work.
      Rename _rom_size to _load_size_sect, since hdprefix.S also uses it.
      Update all prefixes currently referring to _load_size to include a
      Kill off redundant references to the .zprefixes.
      Use objdump -t for symcheck; it allows us to take the symbol section
      Added missing extern
      Obsolete code removal
      nameserver should be static
      Added symbols that the DBG() macros will use.
      Restore the "shared symbol found only in a single object should be
      Added missing "static" declarations
      Removed dead code identified by symcheck
      Produce no output unless -v is specified or an error occurs.
      Move .zinfo to libprefix.S; it doesn't belong with the decompression code.
      Real-mode code might set the direction flag, which would cause carnage.
      Completed definition of struct int13_cdrom_specification, and moved to
      Remove INT 13,4b handler; it represents an incomplete feature (CD-ROM
      Don't trash the %ecx value returned by relocate().  This was causing
      Minor debug improvement
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      We can finally enable -Werror :)
      Remove some obsolete sections of librm.h and libkir.h.
      Allow -Werror to be temporarily disabled using "make NO_WERROR=1"
      Include errno.h in the few drivers which use it, rather than in nic.h
      Define -DOBJECT when generating Makefile rules, for consistency.
      Add per-file error identifiers
      We probably shouldn't leave interrupts disabled when starting an OS.
      Don't overwrite %dl with a (potentially) modified drive number if we
      Added two lines of code that were completely missing!
      Inhibit a spurious warning on GCC 4.0.1
      Prepare for iBFT merge when possible.  iscsiboot.c contains a really,
      Ensure clock line is in the idle state before asserting chip select.
      Revert "make bool m_echo static" - I suspect this to be defined by spec
      Make has_key() a static inline, rather than omitting it altogether.
      Merge branch 'symcheck2'
      Applied a modified version of holger's regparm patches.
      Quick hack to get AoE back in to the tree, on a par with the current
      Added HMAC code from TLS project
      Don't rely on retry.c's periodically calling currticks() in order to
      Added a simple pass-through filter layer for data transfer interfaces.
      Preparation for adding tls.c
      GCC's optimiser seems to screw up if this is left static...
      Import various libgcc functions from syslinux.
      Upgrade AXTLS import to version 1.1.5-a
      TLS now working again.
      Inhibit compiler warning
      Added missing #include
      Allowed HTTPS to be a separately configurable feature.
      Change #warnings to FIXMEs, so that we can build without NO_WERROR=1
      tls_change_cipher() can complain about null cipher and digest
      Added the AoE boot information table as used by Vampyre's AoE
      Centralise construction of the DHCP request and response packets.
      Add identifier for the network device into the DHCP request.
      Fix endianness of "shelf" field
      Added support for draft version of the AoE Boot Firmware Table.
      Allow loading of multiple initramfs images.
      Initrd concatenation now working
      Add code for constructing single-file cpio archives on the fly
      Cope with non-newline-terminated scripts.
      Add FEATURE() macro, plus code to display features at startup time,
      Use otherwise-useless byte in DHCP feature option as a version number
      Allowed zero-cost enforced ordering of features in startup banner
      Allow images to hold references to the originating URI.
      uri_get(NULL) and uri_put(NULL) are explicitly allowed.
      Set current working URI equal to script URI during script execution.
      Error message cleanups.
      Place multiboot command lines in base memory; Xen won't pick them up
      Print multiple commands per line in help
      Display name and status of each file as it is downloaded.
      Make read_user() non-blocking, and add select() call.
      Add PXE FILE API.
      Set current working URI to be that of the executable image when
      Add iBFT code derived from IBM document.
      Build the all-driver images by default, and print instructions for usage.
      Add start_timer_nodelay()
      Use start_timer_nodelay() in protocols which rely on the retry timer
      Imported latest versions from Etherboot 5.4
      Separate out arch-independent parts of stdint.h
      Separate out arch-independent parts of stdint.h
      Started fixing up compilation warnings.
      Very quick and very dirty hack to get the Mellanox code building
      Add barrier() primitive (was present in Eb5.4), used by some currently
      Add barrier() primitive (was present in Eb5.4), used by some currently
      Fix building on distros which use dash as the default shell.
      Added error IDs for all files in drivers/net; they're likely to need them.
      Added error IDs for all files in drivers/net; they're likely to need them.
      Merge branch 'master' into 3leaf
      Allow legacy "make bin/etherboot.%".
      Auto-assign drive number only if set to 0xff; almost all applications
      Merge branch 'master' into 3leaf
      Merge commit 'holger/strings'
      Force MAC address for testing purposes
      Minor style fix: structure fields are generally initialised in the
      Added missing .kpxe prefix.
      Add the possibility to create .o files from arbitrary binary blobs.
      Re-added the kpxe prefix.  I have no idea when this disappeared.
      Check for correct block number in tftp_rx_data().
      Use "/bin/echo -e" instead of shell builtin echo; some shells don't
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Merge branch 'master' into 3leaf-rewrite
      Started IB driver rewrite
      Bugfix: DHCP message type should be a one-byte option... (d'oh)
      Now sends IP packets correctly.
      Bugfix: DHCP message type should be a one-byte option... (d'oh)
      Use RFC4390 whenever hardware address exceeds 16 bytes; this allows us
      Dump received packet, including GRH.
      Removed file checked in accidentally
      Added netdev_priv() to ease Linux driver compatibility.
      Can now both send and receive packets.  LL header format not yet
      Start constructing a generic poll() routine.
      Add EX_FLD_BE()
      Proof-of-concept to manually parse completion event
      Now handling TX completions in our poll loop.
      Remove some dead code
      Starting to introduce an Infiniband device abstraction
      Now at least compiles
      Prefix arbel-specific functions etc. with arbel_
      Gets a response out of the hardware.  (An error completion, to be precise.)
      arbel_post_send() has been observed to transmit a packet!
      Map the whole of physical memory
      Started added poll_cq() verb.
      Updated MLX_* accessor macros to use implicit type information.
      Add const attribute to byte-swapping functions
      Direct polling of TX completion queue now works.
      Hack up IB structures at start-of-day, instead of on each use.
      Kill off some dead code
      post_recv() now works, and we can pass data on the IPoIB queue pair
      Kill off more dead code.
      First (working) draft of command interface.
      Command interface now reasonably friendly.
      Rearrange data structures to maximise embedding (and hence minimise
      Started to add code for CQ creation
      Match doorbell layout to expected usage.
      create_cq() implemented (but not tested).
      destroy_cq() now implemented (not tested).
      Revert to dev_priv/owner_priv scheme, rather than container_of; it
      Add fls() for non-constant values.
      Don't get stuck in an infinite loop on negative integers!
      Started implementing create_qp() and destroy_qp().
      create_qp() and destroy_qp() now written (but not tested).
      Almost working with own-queue allocation.
      Now transmits packets on our own allocated IPoIB queue pair. :)
      Multicast join now works.
      Read port GID directly using MAD IFC.
      IPoIB code separated out to ipoib.c.
      Dead code removal
      Prepare for adding a metadata queue to IPoIB
      Use pkey table access to determine broadcast GID directly.
      Obtains a response to the get path record!
      Dead code disabling
      Unicasts seem to be working. :)
      Cleaned up some debug messages.
      Broadcast GID is now calculated by IPoIB layer.
      Some interesting packet corruption happening now.
      Moved iobuf.h assertions outside the static inline functions, so that
      Minor debug message improvement.
      Added an almost obscene amount of debugging and assertion code while
      Remove hacks, and fix leaving the multicast GID.
      Removed more hacks, and adjusted number of queue entries for likely usage.
      Don't use the mailboxless version of the HW2SW_CQ command; it seems to
      Start migrating the remaining initialisation steps.
      Starting the firmware directly now works.
      Restructured bits of initialisation (not testable at present)
      Started with the ICM partitioning code.
      ICM allocation code *should* now be complete.
      ICM allocation code in place; about to start test-and-compare runs.
      Seems to get through the ICM mapping process
      INIT_HCA block now matches.
      Added sw2hw_mpt
      Gets most of the way through initialisation.
      First version that works with SELF_INIT!
      Separated out to a clean new drivers/infiniband directory.
      Remove the last remaining visible hack.
      Added arbel.c
      IB can't afford many RX buffers, because the MTU is so large.  Reduce
      Merge branch 'master' into 3leaf-rewrite
      Reverted driver/net/mlx_ipoib to clean master state
      Moved iobuf.h assertions outside the static inline functions, so that
      Add fls() for non-constant values.
      Don't get stuck in an infinite loop on negative integers!
      Add const attribute to byte-swapping functions
      Use RFC4390 whenever hardware address exceeds 16 bytes; this allows us
      Minor debug message improvement.
      Added defines for Infiniband files (which can't be committed to the
      Infinband requires longer link-layer addresses and headers than Ethernet.
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Merge branch 'master' into 3leaf-delivery
      Added more verbose memory-map debugging.
      Added more verbose memory-map debugging.
      Use full protected mode for access to high memory within prefix, to
      Minor refactoring to eliminate duplication.
      rm_ss, rm_sp, and pm_esp don't need to be accessed from anywhere
      Don't use the "rep ss movsb" trick to copy the RM stack to the PM
      Switch rm_ss and rm_sp back to being words; it'll make it less
      Standardise DBG_PRINTF()->DBG(), and remove custom definitions for
      Quick and very dirty hack to get r8169 driver working again, prior to
      Redefine bzimage_exec_context::mem_limit to be the highest permissible
      Force a netdevice poll in net_tx() before attempting to transmit
      Force a netdevice poll in net_tx() before attempting to transmit
      Add a missing PCI ID that is tested as working.
      Ensure that empty e820 regions are skipped even at the end of the
      Ensure that empty e820 regions are skipped even at the end of the
      Change ROM names to lower case.
      Added one more PCI ID
      Merge branch '3leaf'
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Add missing attribute(packed) to two structures.
      Allow space for the kernel's real-mode .bss.  Previously we weren't
      Work around a bug in the OpenSolaris iSCSI target.
      Add bin/pci_VVVV_DDDD target to allow building ROM images without
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Replace "Etherboot" strings with "gPXE".
      Update SMBIOS internal API to be easier to use, and not to require
      Added definition of a UUID and uuid_ntoa() (for debugging), and
      Add UUID to DHCP request as option 97 (if available).
      Add PXE-required DHCP options to DHCPDISCOVER and DHCPREQUEST packets.
      Remove some assumptions about DHCP obtaining only a single options block.
      Merge commit 'origin/mdc-working'
      Removed old e1000 driver.
      Add ProxyDHCP support.
      Allow DHCP server to instruct gPXE to ignore ProxyDHCP (which will
      Do not fill in the BufferLimit field in struct
      Provide individually cached constructed copies of DHCP packets via
      Quick hack to be able to accept transfers from servers that don't
      Add RFC2090 TFTP multicast support.
      udp_open_promisc() calls udp_open_common() with peer==NULL.
      Reallocate memory for bitmaps only when necessary.
      Add missing format qualifier
      Fix prototype mismatch.
      Various warnings fixups for OpenBSD with gcc-3.3.5.
      Fix a minor logical error in posix_io.c
      Don't complain when callers provide too-short buffers for
      Kill off some warnings-problematic debug statements in ndp.c; the code
      Fix compiler warnings that appear only on OpenBSD.
      Try to fix echo-detection to work on all systems that provide any
      Avoid Makefile syntax that requires make >= 3.81.
      Remove the (unused) option to override _prefix_link_addr,
      Another (hopefully more robust) attempt to find a usable substitute
      Ignore .echocheck internal housekeeping file.
      Yet another attempt to autodetect an appropriate "echo -e".
      Remove the obsolete pre-aBFT AoE boot table.
      Overwrite the device descriptor's IRQ number with whatever the legacy
      Autodetect whether or not we need to be using -fno-stack-protector.
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Kill off the now-obsolete *_fill_nic() functions.
      Add preliminary support for MTFTP.
      Fix off-by-one error (discovered by Shao Miller).
      Use .SECONDARY instead of .PRECIOUS for bin/%.tmp targets.
      When the DHCP file/sname fields are empty, don't allow them to override
      Added the embedded pxelinux payload patch from hpa.
      Make seek information part of the xfer metadata, rather than an entirely
      Add XFER_INIT() macro.
      Use XFER_INIT() macro.
      Add pxe_set_cached_filename() so that pxe_tftp.c can also update the
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      Merge commit 'laptop/master'
      Start restructuring pxe_tftp.c to cope with multicast (MTFTP) receives.
      Fixes for EqualLogic iSCSI targets:
      Use internal 16-bit stack for added safety.
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      If no shell was requested via Ctrl-B, exit immediately if boot fails.
      Guard against corruption of top half of %esp during UNDI ISR
      Added mtnic driver provided by Mellanox.
      Remove reference to COFF support.  I can find no trace of ever having supported it.
      Add DBGLVL_IO to trace all memory-mapped I/O.
      [Infiniband] Add missing list_del()s in ib_create_qp() failure path.
      [Infiniband] Fix typo in debug statement
      [Hermon] Add driver for Mellanox Hermon (ConnectX) cards.
      [Hermon] Donate joint copyright on Hermon driver to Mellanox.
      [Infiniband] Centralise MAD operations
      [Infiniband] Add preliminary support for multi-port devices.
      [DHCP] Fix RFC4390 client identifier constructions.
      [Timers] Do not enable serial console by default; this change should not
      [Timers] Move TIMER_BIOS and TIMER_RDTSC to their own config.h section.
      [Command] Add "sanboot" command.
      [PXEXT] Add PXENV_FILE_EXEC call to PXE extensions API.
      [tg3] Added device ID for rebranded HP card.
      [Makefile] Use bin/VVVVDDDD.rom instead of bin/pci_VVVV_DDDD.rom
      [PXE] Add PMM support to romprefix.S (untested)
      [PXE] Work around a buffer-size bug in WinPE
      Merge branch 'xl0-timer'
      [prefix] Add printing functions to libprefix.S
      [PXE] Improve PnP/BBS detection
      [prefix] Cope with image source addresses outside base memory
      [PXE] PMM now tested and working
      Merge branch 'pxerom-pmm'
      [Settings] show_setting() functions return snprintf()-style length.
      [libc] Fix a validation bug in strtoul()
      [Settings] Add int16, int32 and hex-string configuration setting types
      [Settings] Allow encapsulated options to be specified as named settings
      [Timers] Miscellaneous timer system fixes
      [Timers] Initialise timers on first use
      [Settings] Allow named settings to have their type specified explicitly
      [Contribs] Add updated wake-on-LAN patch from Bill <level42 at sympatico.ca>
      [Settings] Start revamping the configuration settings API.
      [Settings] Add settings hierarchy
      [Settings] Add per-netdevice settings block
      [Settings] Introduce settings applicators.
      [Settings] Convert code in src/usr to use settings API.
      [Settings] Use a settings applicator to configure IPv4 routes.
      [IPv4] Add a config option for IPv4
      [Misc] Kill off long-redundant tests/dhcptest.c
      [Settings] Use a settings applicator to set the default TFTP URI.
      [Settings] Use a settings applicator in ibft.c
      [DHCP] Kill off some no-longer-used DHCP functions
      [Settings] Migrate DHCP and NVO code to the new settings API (untested)
      [Settings] DHCP is now working using the new settings API.
      [Settings] Implement simple_settings backed with extensible DHCP options
      [Settings] Bugfix: store_setting() now applies changes even on root block
      Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe
      [DHCP] Fix up fake-packet creation as used by PXENV_GET_CACHED_INFO
      [IPv4] Tidy up some header files.
      [IPv4] Use default netmasks when no subnet mask is specified.
      [Settings] copy_settings() should not fail if some settings are missing!
      [libc] Use __builtin_va_list et al in stdarg.h
      [Makefile] Use -MM instead of -M in dependency generation
      [Settings] Add named setting for next-server
      [DHCP] Fix DHCP state confusion.
      [PXEXT] Avoid returning a false EOF when we have an empty buffer queued
      [Settings] Remove assumption that all settings have DHCP tag values
      [PXEXT] Avoid queueing zero-length buffers in posix_io.c
      [DHCP] Save precious packet-aligned memory by copying DHCP responses
      [libc] Whitespace cleanup in errno.h
      [usr] Offer user a second chance to enter the shell on boot failure
      [DHCP] Treat empty fields in DHCP packets as non-existent.
      [Settings] find_child_settings() accepts a NULL parent
      [DHCP] Add support for ProxyDHCP requests
      [Settings] Expose SMBIOS via settings API
      [HCI] Display "Not an executable image" when appropriate
      [Infiniband] Add preliminary multiple port support for Hermon cards
      [Hermon] Fix event queue doorbells.
      [Infiniband] Move event-queue process from driver to Infiniband core
      [Infiniband] Add multiport support for Arbel cards
      [Infiniband] Fix event queue doorbell ringing on Arbel
      [NETDEV] Add notion of link state
      [MTNIC] Minor cleanups of vendor-provided driver for Mellanox 10GigE cards
      [Makefile] Quick hack: always define pci_{vendor,device}_id
      [iSCSI] Offer CHAP authentication only if we have a username and password
      [IPv4] Fix multicast address checking
      [tg3] Add support for tg3-5721
      [libc] Fix isdigit(), islower() and isupper().
      [SMBIOS] Interpret UUIDs as being in network-endian order
      [prefix] Add PCI bus:dev.fn to ROM product string
      [prefix] Prompt for entering gPXE shell during POST
      [Makefile] Remove obsolete SRCDIRS
      [iSCSI] Produce meaningful errors on login failure
      [embed] Add missing register_image() to image/embedded.c
      [TCP] Avoid shrinking TCP window
      [DHCP] Add "dhcp-server" setting to help end-user diagnostics
      [Makefile] Use .PRECIOUS instead of .SECONDARY for bin/%.tmp targets
      [ELF] Add ability to boot ELF images generated by wraplinux and mkelfImage
      [udp] Verify local socket address (if specified) for UDP sockets
      [slam] Add Scalable Local Area Multicast (SLAM) protocol support
      [undi] Ask for promiscuous packet reception when using UNDI driver
      [slam] Fix multicast address parsing
      [slam] Speed up NACK transmission by restricting the block-list length
      [slam] Request all remaining blocks if we run out of space for the blocklist
      [dhcp] Do not transition to DHCPREQUEST without a valid DHCPOFFER
      [retry] Add start_timer_fixed()
      [slam] Implement SLAM flow control
      [console] Call cpu_nap() only if there is no input waiting
      [slam] Add support for SLAM window lengths of greater than one packet
      [smbios] Fix SMBIOS string fetching
      [cmdline] Remove arbitrary limit on the length of image command lines
      [bzimage] Support kernel command lines of greater than 256 characters
      [cleanup] Remove long-obsolete gpxe/async.h header file
      [prefix] When we have to hook INT 19, chain to original handler if possible
      [legacy] Align legacy drivers' __shared data to the maximum possible
      [script] Remove arbitrary limit on script line lengths
      [cmdline] Fix image command-line construction for zero-length argument lists
      [libc] Remove unused le32_to_cpup(x) and cpu_to_le16p() macros
      [misc] Fix building on OpenBSD
      [nvs] Add support for ST M25P32 SPI flash devices
      [romprefix] Fix PMM detection start address
      [dhcp] Verify server identifier on ProxyDHCPACKs
      [pxe] Fix a typo in PXENV_GET_CACHED_INFO that broke Altiris
      [i386] Change semantics of __from_data16 and __from_text16
      [tftp] Strip the initial '/' to keep Windows TFTP servers happy.
      [phantom] Add support for NetXen Phantom NICs
      [dhcp] Allow DHCP non-option settings to be cleared
      [bzimage] Kill off the initrd image type
      [settings] Allow "config" command to access root settings block
      [image] Clear LOADED flag on all other images when loading a new image
      [image] Revert "clear LOADED flag" patch
      [image] Fail "imgexec"/"boot" if the image to execute is ambiguous
      [phantom] Initialise RCVPEG before reading MAC addresses
      [phantom] Add NetXen dual copyright
      [phantom] Remove warning relating to now-fixed firmware bug
      [hermon] Add support for MT26418 device
      [dhcp] Verify DHCP server source port
      [udp] Avoid reusing auto-allocated ports after connection close.
      [int13] Pairwise swap drive numbers, instead of shifting all drive numbers
      [phantom] Guard against partially-written status descriptors
      [iSCSI] Support Windows Server 2008 direct iSCSI installation
      [phantom] Add new board type
      [makefile] Suppress "No such file or directory" warnings at start of build
      [cmdline] Minor tidy-ups to shell_banner.c
      [ui] Add progress dots while waiting on any foreground job
      [cmdline] Add setting expansion using ${...} syntax
      [smbios] Add named settings for manufacturer, product name, and serial no.
      [romprefix] Update PCI ROM structure to PCI 3.0
      [ftp] Cope with RETR completion prior to all data received
      [util] Add Option::ROM library and rewrite disrom.pl to use it.
      [util] Add mergerom.pl
      [cleanup] Remove obsolete README.cvs file
      [autoboot] Retain initial-slash (if present) when constructing TFTP URIs
      [dhcp] Work around a bug in Altiris RDP
      [pxe] If no ProxyDHCPACK exists, use DHCPACK for the fake ProxyDHCPACK packet
      [romprefix] Fix ROM image copy on PCI 3.0 BIOSes
      [libc] Add missing __attribute__ (( format ( printf ) )) to ssnprintf()
      [iSCSI] Add support for mutual CHAP
      [dhcp] Do not restrict minimum retry time for ProxyDHCPREQUEST
      [settings] Avoid overwriting the start of .text in fetch_string_setting()
      [util] Allow Option::ROM to understand and modify initialisation entry point
      [pcbios] Prepare for multiple splits of hidden e820 memory regions
      [pcbios] Support arbitrary splits of the e820 memory map
      [smbios] Print SMBIOS version number in debugging messages
      [undi] Work around broken UNDI polling behaviour in winBoot/i
      [undi] Fill in ProtType correctly in PXENV_UNDI_ISR
      [pxe] Fix broadcast transmissions via PXENV_UDP_WRITE
      [pxe] Add extra debug messages to the PXE UDP API calls
      [elf] Add execution entry point debug messages for elf/multiboot images
      [romprefix] On a PCI3.0, non-BBS system, use the correct %cs for INT19
      [romprefix] Fix regression in UNDI loader
      [phantom] Temporary workaround for bug in prototype (P3 B1) silicon
      [romprefix] Add more diagnostic messages to ROM prefix
      [phantom] Remove comment that no longer matches reality
      [romprefix] Preserve %edi when issuing INT 1A,B101
      [util] Fix interpretation of short jumps in Option::ROM
      [phantom] Fix P3 B1 silicon bug workaround
      [romprefix] Add UNDI ROMID structure bus type field
      [pxe] Fill in UNDIROMID pointer in !PXE structure
      [multiboot] Allow for unspecified {load,bss}_end_addr for raw images
      [pxe] Add a dummy PXENV+ entry point at UNDI_CS:0000
      [contrib] Bring bochs/qemu READMEs up to date with latest upstream code
      [pcbios] Add extra debugging messages relating to the system memory map
      [util] Disable automatic CR->LF conversion in serial-console utility
      [undi] Scan for UNDI ROMs on 512-byte boundaries rather than 2kB boundaries
      [iscsi] Change default initiator name prefix to "iqn.2000-01.org.etherboot:"
      [memmap] Allow for 4GB+ systems in debug message
      [relocate] Guard against systems that report empty memory regions
      [pxe] Display PXE_LOADER debug message after call to initialise()
      [phantom] Omit an initialisation step now performed by the firmware
      [pcbios] Sanity-check the INT15,e820 and INT15,e801 memory maps
      [phantom] Skip command PEG initialisation if PEG is already running
      [romprefix] If we hook INT 19, prompt before attempting boot
      [uri] Add uri_encode() and uri_decode() functions for URI character encoding
      [settings] Add the uristring setting type
      [pcbios] Inhibit INT 15 memory map hiding on brain-dead BIOSes
      [pxe] Enable interrupts before starting PXE NBP execution
      [dhcp] Accept BOOTP as well as DHCP
      [romprefix] Allow BANNER_TIMEOUT to control banners in romprefix.S
      [crypto] Remove spurious #include "config.h"
      [pcbios] Add facility for testing arbitrary E820 memory maps
      [hermon] Allocate sufficient space for firmware buffer
      [arbel] Allocate sufficient space for firmware buffer
      [pcbios] Fetch INT 15,e820 entry directly into our e820 cache
      [romprefix] Fully clear the "Press B to boot..." message when INT19 is used
      [settings] Expose MAC address setting for general use
      [settings] Allow for setting fetchers to fail in fetchf_hex()
      [iscsi] Fix LUN parsing in the iSCSI root-path
      [hermon] Allocate only as much memory as is needed for ICM and ICM AUX
      [i386] Add dump_regs() debug call
      [pcbios] Save/restore %es in INT 15,e820
      [gdb] Fix a compiler warning that shows up only when assertions are enabled
      [pcbios] Print INT 15,E820 extended attributes, if present
      [pcbios] Allow for larger-than-20-byte buffers in e820mangler.S
      [tg3] Add PCI ID
      [hermon] Fix off-by-one error in the failure path in hermon_probe()
      [arbel] Fix off-by-one error in the failure path in arbel_probe()
      [compiler] Add __always_inline macro
      [compiler] Allow for selective disabling of debug levels at runtime
      [makefile] Fix -fno-stack-protector test on older versions of gcc
      [i2c] Generalise i2c bit-bashing support to addressless devices
      [crypto] Rename <gpxe/bitops.h> to <gpxe/rotate.h>
      [libc] Add function declaration for main() in stdlib.h
      [libc] Define wchar_t in a gcc-compatible way
      [makefile] Kill off arch/$(ARCH)/Config
      [makefile] Add support for multiple build platforms
      [makefile] Split config.h out into config/*.h and kill off mkconfig.pl
      [util] Add optional debug messages to zbin.c
      [util] Don't die on undefined symbols in sortobjdump.pl
      [makefile] Add missing dependency on arch/$(ARCH)/Makefile to MAKEDEPS
      [makefile] Inhibit warnings if AUTO_DEPS or MEDIA_DEPS are empty lists
      [makefile] Split platform-dependent portions out of arch/i386/Makefile
      [makefile] Reduce verbosity of various NON_AUTO_MEDIA rules
      [i386] Simplify linker script and standardise linker-defined symbol names
      [efi] Add EFI headers from the EFI Development Kit (edk2)
      [makefile] Add -Wformat-nonliteral as an extra warning category
      [e1000] Fix dubious syntax in e1000 I/O wrapper macros
      [cs89x0] Simplify obscure loop syntax
      [ioapi] Formalise the I/O API as used in i386-pcbios
      [ioapi] Remove old io.h file and switch all users over to <gpxe/io.h>
      [e1000] Add missing #include <string.h>
      [natsemi] Add missing #include <string.h>
      [rtl8139] Add missing #include <string.h>
      [i386] Remove obsolete functions from virtaddr.h
      [ioapi] Absorb virt_to_phys() and phys_to_virt() into the I/O API
      [config] Split console configuration out to config/console.h
      [phantom] Add missing #include <gpxe/io.h>
      [legacy] Add missing #include <gpxe/io.h>
      [pci] Formalise the PCI I/O API
      [commands] Fix config command to accept zero arguments
      [retry] Use a separate flag to indicate that a retry timer is running
      [process] Add DBG2() messages to help track down frozen processes
      [timer] Formalise the timer API
      [monojob] Allow for extremely slow system timers
      [nap] Formalise the CPU sleeping API
      [timer] Remove now-obsolete references to TIMER_BIOS and TIMER_RDTSC
      [uaccess] Formalise the uaccess API
      [umalloc] Formalise the user memory allocation API
      [monojob] Release reference on completed job
      [config] Make the default image type selection platform-dependent
      [sanboot] Quick and dirty hack to make SAN boot protocols selectable
      [efi] Add EFI image format and basic runtime environment
      [efi] Fix linker script for ld 2.17.50.0.9
      [netdevice] Add maximum packet length as a net device property
      [netdevice] Split multicast hashing out into an mc_hash method
      [netdevice] Change link-layer push() and pull() methods to take raw types
      [efi] Add basic implementation of EFI SIMPLE_NETWORK_PROTOCOL
      [etherfabric] Merge changes from vendor tree
      [build] Fix building on Ubuntu 8.04
      [build] Use ".bss.*" names for uninitialised-data sections
      [romprefix] Sanity-check the runtime segment address for PCI 3
      [build] Fix building on FreeBSD
      [contrib] Add patch to enable writable ROM images in bochs
      [tg3] Add PCI ID for BCM5786
      [tftp] Add EUNIQ_xx values to differentiate the many EINVAL errors
      [settings] Avoid returning uninitialised data on error in fetch_xxx_setting()
      [pcbios] Guard against register corruption in INT 15,e820 implementations
      [phantom] Change register space abstraction to match other drivers
      [uri] Avoid interpreting DOS-style path names as opaque URIs
      [ioapi] Fix broken implementation of insX() in the x86 I/O API
      [phantom] Add line count limit to phantom_dmesg()
      [phantom] Unhalt/halt all PEGs during driver startup/shutdown
      [phantom] Add CLP settings interface
      [romprefix] Further sanity checks for the PCI 3 runtime segment address
      [settings] Add the notion of a "tag magic" to numbered settings
      [hacks] Improve the guess_boot_netdev() logic
      [phantom] Assume one net device per PCI function
      [romprefix] Add vendor branding facilities and guidelines
      [phantom] Allow for PXE boot to be enabled/disabled on a per-port basis
      [i386] Add data32 prefixes to all lgdt/lidt instructions
      [settings] Ensure fetch_string_setting() returns a NUL-terminated string
      [aoe] Start retry timer before potential temporary transmission failure
      [phantom] Do not halt PEGs on driver shutdown
      [netdevice] Retain and report detailed error breakdowns
      [infiniband] Flush uncompleted work queue entries at QP teardown
      [infiniband] Maintain queue fill level as a property of a work queue
      [infiniband] Pass address vector in receive completions
      [infiniband] Split subnet management agent client out into ib_smc.c
      [ipoib] Kill off the IPoIB pseudo-header
      [infiniband] Add a standalone subnet management agent
      [infiniband] Add raw packet parser and constructor
      [linda] Add support for QLogic 7220-based Infiniband HCAs
      [romprefix] Use smaller PMM allocations if possible
      [infiniband] Respect hop pointer when building directed route SMP return path
      [linda] Purge references to 8051
      [linda] Add missing copyright notices
      [build] Keep gcc 4.4 happy
      [build] Discard junk sections created by newer gcc versions
      [build] Fix calculation of _filesz
      [i386] Free allocated base memory on exit, if possible
      [efi] Update to latest UEFI headers
      [elf] Kill off unused <bits/elf.h> and <bits/elf_x.h> header files
      [pxe] Move all PXE files to arch/i386
      [i386] Rename __cdecl to __asmcall
      [libgcc] Make __libgcc architecture-specific
      [i386] Change [u]int32_t to [unsigned] int, rather than [unsigned] long
      [i386] Move iSCSI and AoE boot code to arch/i386/interface/pcbios
      [efi] Add efi_strerror()
      [build] Explicitly link efilink against -liberty
      [x86_64] Fix assorted 64-bit compilation errors and warnings
      [aoe] Use an AoE config query to identify the target MAC address
      [pxe] Select the correct network device on multiport cards
      [netdevice] Provide function to retrieve the most recently opened net device
      [netdevice] Kill off the various guess_boot_netdev() functions
      [romprefix] Change from opt-in to opt-out when booting via INT19
      [hermon] Add PCI ID for ConnectX QDR card
      [efi] Allow use of EFI configuration tables
      [efi] Use EFI-native mechanism for accessing SMBIOS table
      [hermon] Fix permissions broken in 3a799e9 ("Add PCI ID for ConnectX QDR card")
      [x86_64] Add support for compilation as an x86_64 binary
      [pci] Enable memory cycles in adjust_pci_device()
      [etherfabric] Make use of pci_bar_start() 64-bit clean
      [infiniband] Call ib_open() only when opening the IPoIB net device
      [efi] Inhibit harmless ld warning on unresolved symbol check
      [build] Avoid strict-aliasing warnings when building with gcc 4.4
      [efi] Use elf2efi utility in place of efilink
      [efi] Allow for .efidrv images as well as .efi images
      [efi] Add efirom utility and .efirom image format
      [main] Print an "initialising devices" banner
      [dhcp] Include gPXE version number within DHCP request
      [util] Tidy up output of disrom.pl
      [efi] Ensure EFI ROM checksum is zero
      [efi] Provide component name protocol and device path protocol interfaces
      [efi] Add an EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL interface
      [efi] Expose both GUIDs for the EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL
      [dhcp] Allow for missing server ID in ProxyDHCPACK
      [dhcp] Centralise DHCP successful state transitions
      [ethernet] Fix eth_mc_hash() return status
      [tcpip] Allow for transmission to multicast IPv4 addresses
      [dhcp] Add preliminary support for PXE Boot Servers
      [tcp] Always set PUSH flag on TCP transmissions
      [dhcp] Pass PXE boot menu item to PXE Boot Server
      [dhcp] Handle missing ProxyDHCP servers
      [dhcp] Clarify language surrounding ProxyDHCP
      [console] Allow KEY_xxx constants to cover F8 function key
      [bios] Add F8 function key as a recognised BIOS keycode
      [dhcp] Include support for PXE boot menus
      [tftp] Temporary fix for conveying TFTP block size to callers
      [settings] Add fetch_string_setting_copy()
      [ui] Allow Ctrl-C to cancel wait for net device link-up
      [scsi] Cope with targets that send multiple CHECK CONDITIONS at power-on
      [settings] Avoid duplicate settings block names
      [dhcp] Split PXE menuing code out of dhcp.c
      [tftp] Guard against invalid data block numbers
      [dhcp] Send user class in DHCP requests
      [contrib] Update qemu documentation
      [iobuf] Add iob_disown() and use it where it simplifies code
      [pxe] Fall back to broadcast if no boot server multicast address exists
      [pxe] Skip PXE boot server discovery if directed to do so
      [pxe] Obey lists of PXE Boot Servers and associated Discovery Control bits
      [pxe] Display the "Press F8" prompt rather than displaying menu with timeout
      [crypto] Remove unused files
      [tls] Use our own ASN.1 routines for certificate parsing
      [settings] Handle errors in fetchf_uristring()
      [base64] Add base64 encoding functions
      [http] Add support for HTTP Basic authentication
      [http] Allow for URI encodings within username and password
      [umalloc] Avoid problems when _textdata_memsz is a multiple of 4kB
      [xfer] Make consistent assumptions that xfer metadata can never be NULL
      [i386] Add explicit ""aw", @nobits" declarations to stack sections
      [i386] Add explicit flags and type on all .section declarations
      [build] Treat warnings as errors in assembly files
      [romprefix] Update ROM checksum even if PMM allocation fails
      [image] Allow multiple embedded images
      [image] Avoid claiming zero-length images as valid
      [build] Allow NO_WERROR=1 to inhibit --fatal-warnings as well as -Werror
      [build] Fix building on gcc 3
      [build] Cope with oddities in the Fedora 10 assembler
      [uri] Allow use of relative URIs when calling churi()
      [comboot] Allow for tail recursion of COMBOOT images
      [comboot] Fix reference counting on replacement images
      [comboot] Unhook interrupt vectors after returning from a COMBOOT image
      [comboot] Restore the real-mode stack pointer on exit from a COMBOOT image
      [icmp] Add support for responding to pings
      [pxe] Allow Escape to abort PXE menu selections
      [editbox] Allow for password widgets that do not display their contents
      [http] Send authentication information whenever username is present
      [settings] Allow store_setting() to access the root settings block
      [login] Add "login" command and UI
      [image] Redact password from URIs displayed by imgfetch()
      [dhcp] Use a default user-class of "gPXE"
      [i386] Kill off obsolete boot1a.s file
      [pxeprefix] Add .kkpxe image type and ability to return via PXE stack
      [crypto] Rename aes_algorithm to aes_cbc_algorithm
      [crypto] Move AES_convert_key() hack into axtls_aes.c
      [crypto] Split crypto_algorithm into {digest,cipher,pubkey}_algorithm
      [crypto] Change cipher_{en,de}crypt() to void functions
      [crypto] Add our own general-purpose cipher-block chaining routines
      [crypto] Allow creation of arbitrary CBC cipher algorithms using CBC_CIPHER()
      [scsi] Fix DBG() message reporting of error number
      [iscsi] Include credentials in iBFT only if used during iSCSI login
      [pxe] Set %ax to zero on entry to PXE NBP
      [image] Allow for zero embedded images
      [infiniband] Kill off obsolete mlx_ipoib directory
      [release] Remove obsolete VERSION file
      [release] Update version to 0.9.7 for release
      [release] Update version to 0.9.7+ post release
      [settings] Allow for autovivification of settings blocks
      [tcp] Avoid setting PSH flag when SYN flag is set
      [tables] Redefine methods for accessing linker tables
      [tables] Incorporate table data type information into table definition
      [build] Enable building with the Intel C compiler (icc)
      [settings] Fix broken assertion in fetch_string_setting_copy()
      [pcnet32] Fix received packet corruption
      [netdevice] Add debug message for unknown network-layer protocols
      [build] Avoid always rebuilding bin/embedded.o
      [bzimage] Support old (pre-2.00 bootloader) Linux kernel formats
      [xfer] Implement xfer_vreopen() to properly handle redirections
      [http] Support HTTP redirection
      [resolv] Simplify xfer_redirect() logic
      [segment] Add "Requested memory not available" error message
      [int13] Improve debugging messages
      [build] Add --divide to ASFLAGS if supported by the assembler
      [efi] Use POSIX version of basename() in elf2efi.c
      [efi] Fix compilation on Mac OS X.
      [efi] Allow building with non-system libbfd
      [build] Don't assume the existence of "seq"
      [dhcp] Accept filename via DHCP option 67 as well as BOOTP filename field
      [build] Pad .rom, .dsk, and .hd images to 512-byte boundaries
      [build] Reinstate the .pdsk padded-floppy image format
      [build] Simplify use of Getopt::Long in padimg.pl
      [build] Provide mechanism for listing per-target source files
      [build] Kill off the last multiple-object source file
      [build] Kill off the multiple-object-per-source-file mechanism
      [build] Remove obsolete linker script files
      [build] Provide mechanism for listing constituent object sizes
      [build] Automatically sort the list of constituent object sizes
      [doc] Remove obsolete README.pixify
      [multiboot] Work around raw-flag bug in Solaris kernels
      [elf] Work around entry point bug in NetBSD kernels
      [i386] Remove long-obsolete callbacks_arch.h file
      [i386] Remove long-obsolete realmode.c file
      [build] Add {PROVIDE,REQUIRE}_SYMBOL macros and tidy up compiler.h
      [pxeprefix] Work around bug in Etherboot 5.4 when loading undionly.kpxe
      [legacy] Remove long-obsolete old dhcp.h file
      [legal] Add mechanism for explicit per-file licence declarations
      [legal] Add licence.pl and %.licence make target
      [legal] Add a selection of FILE_LICENCE declarations
      [legal] Add FILE_LICENCE declaration to romprefix.S
      [dhcp] Perform ProxyDHCP only if we do not already have PXE options
      [dhcp] Send broadcast PXE boot server discovery requests to port 67
      [settings] Fix erroneous bit-masking in fetch_uintz_setting()
      [tftp] Process OACKs even if malformed
      [dhcp] Choose ProxyDHCP port based on presence of PXE options
      [multiboot] Include argv[0] as part of "command line"
      [settings] Allow for arbitrarily-named settings
      [build] Add -fno-dwarf2-cfi-asm to CFLAGS if supported by the gcc in use
      [spi] Add address-length autodetection to the SPI bit-bashing code
      [misc] Fix source files erroneously marked as executable
      [misc] Remove long-obsolete header files dating from Etherboot 5.4
      [script] Allow for DOS-style line endings in scripts
      [netdevice] Fix incorrect value for MAX_LL_HEADER_LEN
      [tcp] Improve robustness in the presence of duplicated received packets
      [tcp] Move high-frequency debug messages to DBGLVL_EXTRA
      [tcp] Include current sequence numbers in "timer expired" messages
      [tcp] Attempt to catch all possible error cases with debug messages
      [tcp] Avoid rewinding sequence numbers on receiving old duplicate ACKs
      [e1000] Ensure descriptor is fully written before sending packet
      [undi] Include PXENV_GET_IFACE_INFO's ServiceFlags in debug output
      [rtl8139] Split debug messages into DBGLVL_LOG and DBGLVL_EXTRA
      [pxe] Fix interoperability with the 3Com DOS UNDI driver
      [pxe] Fix interoperability with the Intel DOS UNDI driver
      [pxe] Fix interoperability with the Symantec (undipd) DOS UNDI driver
      [netdevice] Add mechanism for reporting detailed link status codes
      [pxe] Improve pxe_undi debug messages
      [pxe] Implement PXENV_UNDI_{GET,SET}_MCAST_ADDRESS
      [pxe] Update UNDI transmit count before transmitting packet
      [pxe] Make pxe_init_structures() an initialisation function
      [pxe] Create pxe_[de]activate() wrapper functions
      [pxe] Check for unhookable interrupts in PXENV_STOP_UNDI
      [ifmgmt] Optimise prototype for ifcommon_exec()
      [ifmgmt] Move ifmgmt_cmd.h to include/hci
      [pxe] Add startpxe and stoppxe commands
      [xfer] Always nullify interface while sending close() message
      [debug] Use a delimiter to break up DBG_HD() output
      [scsi] Make SCSI command issuing partially asynchronous
      [scsi] Improve SCSI debugging
      [ata] Make ATA command issuing partially asynchronous
      [netdevice] Make ll_broadcast per-netdevice rather than per-ll_protocol
      [infiniband] Move non-driver-specific code to net/infiniband
      [infiniband] Split queue set functionality out of ipoib.c to ib_qset.c
      [infiniband] Provide ib_get_hca_info() as a commonly-available function
      [infiniband] Centralise assumption of 2048-byte payloads
      [infiniband] Poll completion queues automatically
      [infiniband] Centralise SMA and GMA queue constants
      [infiniband] Create a general management agent
      [infiniband] Provide a general mechanism for path record lookups
      [ipoib] Use Infiniband broadcast QPN in IPoIB broadcast MAC address
      [ipoib] Expose the real broadcast MAC
      [ipoib] Clarify new role of IPoIB peer cache as for MAC addresses only
      [infiniband] Make qkey and rate optional parameters to ib_post_send()
      [infiniband] Allow for sending MADs via GMA without retransmission
      [infiniband] Provide a general mechanism for multicast group joins
      [ipoib] Kill off the now-unused IPoIB metadata queue set
      [ipoib] Remove the queue set abstraction
      [infiniband] Pass GMA as a parameter to GMA MAD handlers
      [infiniband] Implement SMA as an instance of a GMA
      [ipoib] Attempt the broadcast group join only if the link is up
      [infiniband] Improve ib_packet debugging messages
      [infiniband] Allow completion queue operations to be optional
      [infiniband] Add notion of a queue pair type
      [infiniband] Always create an SMA and a GMA
      [infiniband] Allow external QPN to differ from real QPN
      [infiniband] Remove the return status code from MAD handlers
      [infiniband] Allow MAD handlers to indicate response via return value
      [infiniband] Expose supported and enabled link speeds and widths
      [infiniband] Pass a generic MAD to ib_set_port_info()
      [infiniband] Add infrastructure for RC queue pairs
      [infiniband] Add Communication Manager (CM)
      [hermon] Remove an unnecessary check for GID-less transmissions
      [hermon] Disable debugging around mapping of firmware tables
      [hermon] Allow software GMA to receive packets destined for QP1
      [hermon] Add support for RC queue pairs
      [build] Make .liso image generation silent unless errors occur
      [build] Allow safe concurrent builds of .iso, .liso and .sdsk targets
      [tcp] Avoid printf format warnings on some compilers
      [pxe] Avoid printf format warning on some compilers
      [build] Mark __intel_new_proc_init with __libgcc rather than cdecl
      [infiniband] Change IB_{QPN,QKEY,QPT} names from {SMA,GMA} to {SMI,GSI}
      [hermon] Add support for multiple ports and detecting non-IB ports
      [romprefix] Cope with PnP BIOSes that fail to set %es:%di on entry
      [hermon] Allow for multiple calls to ib_modify_qp()
      [infiniband] Add the concept of a management interface
      [infiniband] Update subnet management agent to use a management interface
      [infiniband] Update all other MAD users to use a management interface
      [infiniband] Handle duplicate Communication Management REPs
      [process] Make it safe to call process_add() multiple times
      [scsi] Generalise iscsi_detached_command() to scsi_detached_command()
      [scsi] Generalise iscsi_parse_lun() to scsi_parse_lun()
      [scsi] Make LUN a property of the SCSI backend only
      [hermon] Randomise the high-order bits of queue pair numbers
      [hermon] Reduce the RC ACK timeout
      [infiniband] Add a "communication-managed reliable connection" protocol
      [infiniband] Add find_ibdev()
      [infiniband] Add last_opened_ibdev(), analogous to last_opened_netdev()
      [infiniband] Add support for SRP over Infiniband
      [infiniband] Generate more specific errors in response to failure MADs
      [infiniband] Allow SRP reconnection attempts even after reporting failures
      [infiniband] Disambiguate CM connection rejection reasons
      [infiniband] Add support for the SRP Boot Firmware Table
      [doc] Update doxygen.cfg to match version running on rom.etherboot.org
      [doc] Expand scope of doxygen-generated documentation
      [netdevice] Separate out the concept of hardware and link-layer addresses
      [netdevice] Allow the hardware and link-layer addresses to differ in size
      [dhcp] Fall back to using the hardware address to populate the chaddr field
      [802.11] Support multicast hashing
      [job] Add missing job_progress() interface method
      [job] Report progress of downloader jobs via job_progress()
      [pci] Add generic configuration space backup/restore facility
      [hermon] Reset device during probe()
      [infiniband] Send CM requests to target node's GSI rather than SM's GSI
      [iscsi] Fix printing of non-existent strings in iBFT debug messages
      [netdevice] Add the concept of an "Ethernet-compatible" MAC address
      [iscsi] Use the "Ethernet-compatible" MAC address in the iBFT
      [sanboot] Extend the "keep-san" option to non-iSCSI SAN protocols
      [libc] Use only generic errortab entries to match generic errors
      [ipv4] Use a zero address to indicate "no gateway", rather than INADDR_NONE
      [ipv4] Allow calculation of default subnet mask
      [ipv4] Ignore non-open net devices when performing routing
      [infiniband] Make node description invariant across all ports
      [infiniband] Include hostname in node description, if available
      [infiniband] Report IB link status as IPoIB netdevice status
      [infiniband] Rename IB_PKEY_NONE to IB_PKEY_DEFAULT
      [ipoib] Always set the "full membership" bit in the IPv4 broadcast GID
      [ipoib] Mask out non-QPN bits in the IPoIB destination MAC when sending
      [linda] Wait up to 20us for link state to update
      [susieq] Update qib_genbits.pl to handle SusieQ definitions
      [linda] Re-import the latest register definitions
      [autoboot] Ensure that an error message is always printed for a boot failure
      [int13] Fix number of sectors returned by INT 13,15
      [int13] Guard against BIOSes that "fix" the drive count
      [iscsi] Disambiguate some common authentication errors
      [phantom] Update interrupt support to match current firmware
      [netdevice] Add netdev_is_open() wrapper function
      [netdevice] Record whether or not interrupts are currently enabled
      [pxe] Avoid potential interrupt storms when using shared interrupts
      [pxe] Remove pxe_set_cached_filename()
      [base64] Allow base64_encode() to handle arbitrary data
      [base64] Add ability to decode base64 strings
      [base16] Add generic base16 encoding and decoding routines
      [iscsi] Use generic base16 functions for iSCSI
      [infiniband] Use generic base16 functions for SRP
      [ethernet] Move Ethernet MAC address checking routines to ethernet.h

Nikhil Chandru Rao (24):
      created interface for transport-network interface
      updated UDP interface
      added support for processing and transmitting without uIP
      added generalized sockaddr structure and ip6 sockaddr
      Fixed whitespaces; updated UDP code
      Fixed endianness of 16- and 32- bit values
      IP6 specifications
      Added ipv4_pseudo_header structure
      Renamed net/interface.c and include/gpxe/interface.h to net/tcpip_if.c and include/gpxe/tcpip_if.h respectively. Made changes in the other files.
      Removing net/interface.c and include/gpxe/interface.h
      Added fragment reassembly code
      The following edits were made: \
      Minor edit in net/udp.c
      Minor edits
      Minor changes to the network layer rx() functions
      TCP support
      Minor corrections
      Added retransmissions to TCP
      Removed some bugs in TCP
      Corrected bugs in the TCP logic. There might be a few more which need to be taken care of.
      Changed ipv4_dump() to consume only one line.
      Changed the TCP state machines behaviour in the ESTABLISHED state
      IP6 support
      Fixed a bug in the TCP state machine. Added a transition from ESTABLISHED to LAST_ACK on receiving a FIN,ACK

Pantelis Koukousoulas (3):
      [isa] Fix a small typo in isa.c.
      [ne2k_isa] Restore support for ne2k isa cards
      [b44] Add driver for Broadcom bcm44xx cards

Piotr Jaroszyński (9):
      [build] Add support for local configuration files
      [build] Look for isolinux.bin in more places
      [util] Hide an expected error from the 'which' command
      [uri] Fix NULL dereference in parse_uri()
      [uri] Special case NULL in churi()
      [compiler] Fix 64bit compile time errors
      [efi] Fix link order for elf2efi
      [efi] Fix *.efi linking
      [iscsi] Allow base64 encoding in large binary values

Sergey Vlasov (1):
      [ftp] Terminate processing after receiving an error

Shao Miller (9):
      [image] Added "chain" command to fetch, load, and execute image
      [time] Add the sleep command
      [settings] Fix setting_cmp() to handle nameless settings
      [sis190] Fix for gcc-3.3.3 compilation
      [e820mangler] Add missing CLC ins. for success path
      [settings] Add Bus ID setting
      [dhcp] Ensure message type is first DHCP option
      [dhcp] Append new DHCP options versus prepend
      [pxe] Introduce PXE exit hook for NBP chaining

Simon Horman (1):
      [e1000] Add 82576 support

Stefan Hajnoczi (54):
      [Contribs] Add command-line utility for looking up gPXE error codes.
      [Contribs] Add a web interface for looking up error codes.
      [Contribs] Add README, license text, and invert error code dictionaries.
      [Contribs] Add simple IRC bot for looking up error codes.
      [Contribs] Fix parsing bug in errcode.py
      [Contribs] Fix multi-line POSIX errno definitions.
      [GDBSYM] Remove unused gdbsym.c
      [util] config-local.h to avoid accidental commits
      [Serial] Split serial console from serial driver
      [GDB] Add GDB stub for remote debugging
      [GDB] Test suite for the GDB stub
      [via-rhine] Fix erroneous uses of memory I/O instead of port I/O
      [GDB] Handle kill and detach packets.
      [GDB] Atomic read/write for device memory
      [GDB] Remote debugging over UDP
      [GDB] Add watch and rwatch hardware watchpoints
      [GDB] Add copyright header for gdbmach.c
      [GDB] Zero-extend 16-bit segment registers
      [GDB] UDP clean up and add netdev refcnt
      [GDB] Remove unused DR6 debug register variable
      [GDB] Obey flow control when GDB connects.
      [GDB] Provide functions to manually enter GDB stub.
      [bzImage] Support loading zImage kernels
      [lkrnprefix] Make gPXE .lkrn images conform to the zImage 2.07 format
      [prefix] Reasonable value for lkrn initrd_addr_max
      [virtio] Add legacy driver for KVM virtio-net
      [dns] Append local domain to relative names
      [build] Round up SUBx deltas
      [gdb] Allow resynchronisation with gdb
      [build] Fix signed/unsigned division in util/zbin.c
      [util] Make mtools check detect new versions
      [multiboot] Build memory map after shutting down and unhiding gPXE
      [build] Pad .hd image type to 32 KB
      [tftp] Allow fetching larger files by wrapping block number
      [tftp] Remove unnecessary delay when opening a connection
      [sanboot] Prevent leaking a stack reference for "keep-san" AoE
      [tftp] Abort requests with error code 0
      [natsemi] Convert stray mmio readl() to pio inl()
      [rtl818x] Remove broken mmio register support
      [prefix] Remove .bImage in favor of .lkrn
      [prefix] Remove unsupported .com prefix
      [prefix] Remove unsupported .exe prefix
      [prefix] Remove unsupported ELF prefices
      [proto] Remove unsupported FSP protocol
      [proto] Remove unsupported NFS protocol
      [proto] Remove unsupported IGMP protocol
      [proto] Remove unsupported NMB protocol
      [util] Detect genisoimage as mkisofs replacement
      [undi] Ensure only one UNDI instance is loaded
      [build] Disable ccache for embedded.o
      [build] Disable ccache for embedded.o
      [fnrec] Add function recorder for debugging
      [vxge] Add stub vxge.c file so bin/vxge.usb can be built
      [comboot] Propagate carry flag from COMBOOT API

Steven Walter (1):
      [tg3] Recognize the BCM5789

Thomas Horsten (2):
      [forcedeth] Add support for 10de:054c nforce 630a, MCP 67
      [tftp] Make TFTP size requests abort transfer with an error

Thomas Miletich (21):
      [sundance] Added NIC variant
      [sundance] Add reset completion check
      [3c90x] 3c90x driver rewrite using gPXE API
      [pci] Add driver_data field to struct pci_device_id
      [forcedeth] Add support for newer forcedeth NICs
      [serial] Define constants for serial port I/O addresses
      [3c90x] Fix a3c90x_close() and a3c90x_remove() methods.
      [sis900] Enable interrupts to allow UNDI to work
      [sis190] Add sis190/191 ethernet driver
      [zbin] Fix compilation warnings for util/zbin.c
      [sis190] Make 'make allroms' happy.
      [sis190] Insert forgotten FILE_LICENCE() to sis190.h
      [sis190] Hide the ISA bridge's PCI IDs from parserom.pl
      [e1000] Implement zero-copy receive
      [eepro100] Convert to native gPXE API
      [e1000] Enable interrupts in a more UNDI compatible way
      [eepro100] Add missing FILE_LICENCE() to eepro100.h
      [e1000] Remove deprecated IRQ_FORCE action from e1000_irq()
      [3c90xutil] Update bromutil.c and cromutil.c.
      [skge] Note correct author of akge driver
      [eepro100] Remove link-state checking

Timothy Legge (2):
      Jan Kiszka provided a patch for the smc9000 for missing phy-setup
      Fix COMET TxUnderrun issue

Timothy Stack (1):
      [smbios] Add asset tag setting

Udayan Kumar (32):
      testing if it works
      skel of new natsemi driver (still in developments)
      added polling and transmit. eeprom access still remaining
      same as before, but now compiling natsemi
      natsemi now needs eeprom access
      added eeprom from rtl8139 but not working
      debugging natsemi.c
      free_netdev -> netdev_put
      added endianness to natsemi.
      added netdev_tx_complete to natsemi.c
      added change log to natsemi.c
      enabled interrupt in natsemi.c
      interrupt in natsemi
      natsemi
      irq still not working will have to remove it
      natsemi.c is workin
      Natsemi commented and almost done
      stopped memory leak in natsemi::nat_open()
      added nat_irq to natsemi.c
      no changes
      :x
      more indentation and styling done
      duplex setting added to natsemi.c
      added cable magic for 100Mps in natsemi
      init_fix_up
      added silicon revision number
      more debugging
      more debugging
      mdc's+nvs
      added natsemi.h
      replaces printf with dbg
      removed type casting from DBG statements.

Wu Fengguang (1):
      [lkrnprefix] Fix documentation path in comment

gL2n30Y06arv2 (1):
      [ftp] User and password URI support for the FTP protocol

sobtwmxt (1):
      [uri] Fix outdated comment in parse_uri()

vibi sreenivasan (1):
      [geniso] Emit proper error message for incorrect location of ISOLINUX_BIN

-----------------------------------------------------------------------


-- 
Main gPXE repository


More information about the gPXE-commits mailing list