]> git.ipfire.org Git - thirdparty/ipxe.git/log
thirdparty/ipxe.git
13 years ago[prefix] Allow prefix to specify an arbitrary maximum address for relocation
Michael Brown [Fri, 11 Nov 2011 23:20:28 +0000 (23:20 +0000)] 
[prefix] Allow prefix to specify an arbitrary maximum address for relocation

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[prefix] Use stack rather than %ebp as temporary storage area
Michael Brown [Fri, 11 Nov 2011 22:23:13 +0000 (22:23 +0000)] 
[prefix] Use stack rather than %ebp as temporary storage area

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[undi] Ensure that native drivers are tried before the UNDI PCI driver
Michael Brown [Fri, 11 Nov 2011 21:30:50 +0000 (21:30 +0000)] 
[undi] Ensure that native drivers are tried before the UNDI PCI driver

Suggested-by: Alessandro Salvatori <sandr8@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[getopt] Accept "--" as an end-of-options marker
Marin Hannache [Wed, 2 Nov 2011 00:22:00 +0000 (00:22 +0000)] 
[getopt] Accept "--" as an end-of-options marker

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[undi] Use meaningful driver and device names
Michael Brown [Fri, 28 Oct 2011 21:51:38 +0000 (22:51 +0100)] 
[undi] Use meaningful driver and device names

Specify a driver name of "undionly" and a device name based on the
UNDI-reported underlying hardware device.  For example:

  net0: 52:54:00:12:34:56 using undionly on UNDI-PCI00:03.0 (open)

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[undi] Use current (rather than permanent) link-layer address
Michael Brown [Fri, 28 Oct 2011 21:38:26 +0000 (22:38 +0100)] 
[undi] Use current (rather than permanent) link-layer address

Requested-by: Savitha Hiriyannaia <Savitha.Hiriyannaiah@emulex.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[netdevice] Allow driver to preinitialise the link-layer address
Michael Brown [Fri, 28 Oct 2011 21:32:33 +0000 (22:32 +0100)] 
[netdevice] Allow driver to preinitialise the link-layer address

Drivers are currently expected to initialise only the hardware
address, with the link-layer protocol code taking care of converting
this into a valid link-layer address.  Some drivers (e.g. undinet) can
legitimately determine both the hardware and link-layer addresses,
which may differ.

Allow for this situation by checking to see if the link-layer address
is empty before initialising it from the hardware address.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[cmdline] Make "reboot" command available by default
Michael Brown [Wed, 26 Oct 2011 15:46:31 +0000 (16:46 +0100)] 
[cmdline] Make "reboot" command available by default

Requested-by: Sven Dreyer <sven@dreyer-net.de>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[liba20] Preserve all non-segment registers when calling INT 15,2401
Michael Brown [Tue, 25 Oct 2011 14:48:20 +0000 (15:48 +0100)] 
[liba20] Preserve all non-segment registers when calling INT 15,2401

Some BIOSes are reported to corrupt %ebx when using INT 15,2401 (see
http://opensolaris.org/jive/thread.jspa?messageID=377026).  Guard
against this by preserving all (non-segment) registers.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[librm] Avoid (harmless) collisions with linker symbols
Michael Brown [Tue, 25 Oct 2011 14:12:30 +0000 (15:12 +0100)] 
[librm] Avoid (harmless) collisions with linker symbols

The symbol_text16 is defined globally by the linker.  Use rm_text16
instead of _text16 for the local variable within librm.S to avoid
confusion when reading linker maps.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[image] Eliminate the register_and_xxx_image() functions
Michael Brown [Tue, 25 Oct 2011 00:41:41 +0000 (01:41 +0100)] 
[image] Eliminate the register_and_xxx_image() functions

All users of imgdownload() require registration of the image, so make
registration an integral part of imgdownload() itself and simplify the
"action" parameter to be one of image_select(), image_exec() et al.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[cmdline] Allow "sleep" command to be interrupted
Michael Brown [Mon, 24 Oct 2011 14:52:57 +0000 (15:52 +0100)] 
[cmdline] Allow "sleep" command to be interrupted

Allow Ctrl-C to be used to abort a "sleep" command.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[cmdline] Fix up "sleep" argument parsing
Michael Brown [Mon, 24 Oct 2011 14:52:14 +0000 (15:52 +0100)] 
[cmdline] Fix up "sleep" argument parsing

Use parse_integer() rather than strtoul() to allow parsing errors to
be reported in a meaningful way.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[cmdline] Make "sleep" command available by default
Michael Brown [Mon, 24 Oct 2011 14:39:05 +0000 (15:39 +0100)] 
[cmdline] Make "sleep" command available by default

The "sleep" command is generally useful to have.  For example:

  :dhcp_retry
  dhcp && goto dhcp_done
  sleep 5
  goto dhcp_retry
  :dhcp_done

Make the "sleep" command available by default, leaving TIME_CMD
controlling only the (fairly specialist) "time" command.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[arbel] Add (not-yet-functional) support for RC queue pairs
Michael Brown [Fri, 17 Sep 2010 21:43:45 +0000 (22:43 +0100)] 
[arbel] Add (not-yet-functional) support for RC queue pairs

Arbel seems to crash the system as soon as the first send WQE
completes on an RC queue pair.  (NOPs complete successfully, so this
is a problem specific to the work queue rather than the completion
queue.)  The cause of this problem has remained unknown for over a
year.

Check in the non-functioning code to avoid bit-rot, and in the hope
that someone will find the fix.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[ath9k] Add ath9k driver
Scott K Logan [Fri, 14 Oct 2011 14:19:32 +0000 (15:19 +0100)] 
[ath9k] Add ath9k driver

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[list] Add list functions required by ath9k driver
Michael Brown [Fri, 14 Oct 2011 13:32:19 +0000 (14:32 +0100)] 
[list] Add list functions required by ath9k driver

Originally-implemented-by: Scott K Logan <logans@cottsay.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[test] Add self-tests for list manipulation functions
Michael Brown [Thu, 13 Oct 2011 00:40:59 +0000 (01:40 +0100)] 
[test] Add self-tests for list manipulation functions

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[test] Add a basic infrastructure for running self-tests
Michael Brown [Wed, 12 Oct 2011 22:50:14 +0000 (23:50 +0100)] 
[test] Add a basic infrastructure for running self-tests

This self-test mechanism is inspired by Perl's Test::Simple and
similar modules.  The aim is to encourage the use of self-tests by
making it as easy as possible to create self-test code

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[libc] Allow assertion failures to be counted
Michael Brown [Fri, 14 Oct 2011 12:32:36 +0000 (13:32 +0100)] 
[libc] Allow assertion failures to be counted

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[list] Tidy up naming convention for list_contains() and friends
Michael Brown [Fri, 14 Oct 2011 12:35:05 +0000 (13:35 +0100)] 
[list] Tidy up naming convention for list_contains() and friends

Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[dhcp] Use a random DHCP transaction identifier (xid)
Michael Brown [Mon, 19 Sep 2011 16:30:39 +0000 (17:30 +0100)] 
[dhcp] Use a random DHCP transaction identifier (xid)

iPXE currently uses the last four bytes of the MAC address as the DHCP
transaction identifier.  Reduce the probability of collisions by
generating a random transaction identifier.

Originally-implemented-by: Amos Kong <akong@redhat.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[util] Add romcheck.pl
Michael Brown [Mon, 19 Sep 2011 15:39:37 +0000 (16:39 +0100)] 
[util] Add romcheck.pl

Provide a utility to quickly determine the ROM size and .mrom format
support for attached PCI devices.  For example:

    01:00.0 (1186:4300) supports a 128kB .rom or .mrom

Inspired-by: Wes Frazier <wes.frazier@members.fsf.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[tcp] Allow sufficient headroom for TCP headers
Michael Brown [Mon, 19 Sep 2011 14:48:57 +0000 (15:48 +0100)] 
[tcp] Allow sufficient headroom for TCP headers

TCP currently neglects to allow sufficient space for its own headers
when allocating I/O buffers.  This problem is masked by the fact that
the maximum link-layer header size (802.11) is substantially larger
than the common Ethernet link-layer header.

Fix by allowing sufficient space for any TCP headers, as well as the
network-layer and link-layer headers.

Reported-by: Scott K Logan <logans@cottsay.net>
Debugged-by: Scott K Logan <logans@cottsay.net>
Tested-by: Scott K Logan <logans@cottsay.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
13 years ago[tls] Accept certificates without a version number
Michael Brown [Fri, 12 Aug 2011 22:51:44 +0000 (23:51 +0100)] 
[tls] Accept certificates without a version number

The version field of an X.509 certificate appears to be optional.

Reported-by: Sebastiano Manusia <Sebastiano.Manusia@chuv.ch>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[script] Accept labels on lines terminated with CRLF
Michael Brown [Mon, 8 Aug 2011 15:35:30 +0000 (16:35 +0100)] 
[script] Accept labels on lines terminated with CRLF

CRLF line terminators are allowed in scripts; the carriage return is
simply interpreted as trailing whitespace and so is ignored.  This
fails on lines containing script labels, since the label-finding code
checks for a line containing only the ":" marker and the label itself
(without any trailing whitespace).

Fix by allowing a label to be terminated by either a NUL or a
whitespace character.

Reported-by: Bovey Christian <Christian.Bovey@chuv.ch>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[lkrnprefix] Fix lost command line passed by grub
Valentine Barshak [Sat, 6 Aug 2011 19:43:17 +0000 (23:43 +0400)] 
[lkrnprefix] Fix lost command line passed by grub

iPXE specifies a value of 0 for cmdline_size, causing GRUB to not pass
in a command line.  Fix by setting cmdline_size to the maximum value
of 2047.

Signed-off-by: Valentine Barshak <gvaxon@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[romprefix] Fix romprefix build with certain versions of binutils
Valentine Barshak [Sat, 6 Aug 2011 19:40:04 +0000 (23:40 +0400)] 
[romprefix] Fix romprefix build with certain versions of binutils

Signed-off-by: Valentine Barshak <gvaxon@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[ipv4] Improve debugging
Michael Brown [Sat, 16 Jul 2011 00:29:20 +0000 (01:29 +0100)] 
[ipv4] Improve debugging

Use autocolourisation to improve legibility, and move per-packet
messages to DBG2().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[ipv4] Fix fragment reassembly
Michael Brown [Sat, 16 Jul 2011 00:15:53 +0000 (01:15 +0100)] 
[ipv4] Fix fragment reassembly

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[retry] Fix potential use-after-free in timer_expired()
Michael Brown [Sat, 16 Jul 2011 00:46:12 +0000 (01:46 +0100)] 
[retry] Fix potential use-after-free in timer_expired()

timer->refcnt is allowed to be NULL, in which case the timer's
expired() method may end up freeing the timer object.

Discovered using valgrind.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[ipv4] Use broadcast link-layer address for all broadcast IPv4 addresses
Michael Brown [Fri, 15 Jul 2011 18:21:07 +0000 (19:21 +0100)] 
[ipv4] Use broadcast link-layer address for all broadcast IPv4 addresses

When transmitting, use the broadcast link-layer address for any
broadcast address (e.g. 192.168.0.255), not just INADDR_BROADCAST
(255.255.255.255).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[ipv4] Discard unwanted unicast packets
Michael Brown [Fri, 15 Jul 2011 17:58:44 +0000 (18:58 +0100)] 
[ipv4] Discard unwanted unicast packets

Explicitly discard any unicast packets for addresses that we do not
control, to avoid unexpected behaviour when operating in promiscuous
mode (which is now the default, thanks to FCoE).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[netdevice] Allow link layer to report broadcast/multicast packets via pull()
Michael Brown [Fri, 15 Jul 2011 17:48:46 +0000 (18:48 +0100)] 
[netdevice] Allow link layer to report broadcast/multicast packets via pull()

Allow the link layer to directly report whether or not a packet is
multicast or broadcast at the time of calling pull(), rather than
relying on heuristics to determine this at a later stage.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[http] Include port in HTTP Host header as needed
Malte Starostik [Fri, 15 Jul 2011 14:31:56 +0000 (16:31 +0200)] 
[http] Include port in HTTP Host header as needed

According to section 14.23 of RFC2616, an HTTP Host header without
port implies the default port is used.  Thus, when fetching from
anywhere but port 80 for HTTP or 443 for HTTPS, the port ought to be
explicitly given in that header.  Otherwise, some servers might fail
to associate the request with the correct virtual host or generate
incorrect self-referencing URLs.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[igb] Remove __BIG_ENDIAN conditional
Thomas Miletich [Sun, 10 Jul 2011 15:47:09 +0000 (17:47 +0200)] 
[igb] Remove __BIG_ENDIAN conditional

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[dhcp] Add symbolic definitions for DHCP client architecture values
Michael Brown [Wed, 6 Jul 2011 14:26:01 +0000 (15:26 +0100)] 
[dhcp] Add symbolic definitions for DHCP client architecture values

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[libc] Allow for zero-padded decimals in printf()
Michael Brown [Wed, 6 Jul 2011 13:52:53 +0000 (14:52 +0100)] 
[libc] Allow for zero-padded decimals in printf()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[iscsi] Avoid duplicate calls to iscsi_tx_done()
Michael Brown [Wed, 29 Jun 2011 13:49:18 +0000 (14:49 +0100)] 
[iscsi] Avoid duplicate calls to iscsi_tx_done()

The iSCSI TX process can now be woken up by the TCP socket via
xfer_window_changed(), so it is no longer valid to assume that
iscsi_tx_step() can be called in state ISCSI_TX_IDLE only immediately
after completing a transmission.

Fix by calling iscsi_tx_done() only upon a transition into state
ISCSI_TX_IDLE.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[build] Avoid using -ffunction-sections on some older versions of gcc
Michael Brown [Wed, 29 Jun 2011 10:42:07 +0000 (11:42 +0100)] 
[build] Avoid using -ffunction-sections on some older versions of gcc

Some older versions of gcc issue a warning if -ffunction-sections is
used in combination with -g (gcc bug #18553).  Inhibit
-ffunction-sections when building with such a version of gcc.

Reported-by: zhengwei <zw111_2001@126.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[http] Fix size_t format specifiers
Michael Brown [Wed, 29 Jun 2011 10:47:16 +0000 (11:47 +0100)] 
[http] Fix size_t format specifiers

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[http] Support read-only HTTP block devices
Michael Brown [Mon, 27 Jun 2011 17:27:28 +0000 (18:27 +0100)] 
[http] Support read-only HTTP block devices

Provide support for HTTP range requests, and expose this functionality
via the iPXE block device API.  This allows SAN booting from a root
path such as:

    sanboot http://boot.ipxe.org/freedos/fdfullcd.iso

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[int13] Provide a permanently closed window via the control interface
Michael Brown [Fri, 24 Jun 2011 18:14:13 +0000 (19:14 +0100)] 
[int13] Provide a permanently closed window via the control interface

Allow objects to support both streaming and block device protocols, by
starting streaming data only when the data transfer window opens.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[tls] Eliminate polling while TX state machine is idle
Michael Brown [Fri, 24 Jun 2011 17:35:56 +0000 (18:35 +0100)] 
[tls] Eliminate polling while TX state machine is idle

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[iscsi] Eliminate polling while waiting for window to open
Michael Brown [Fri, 24 Jun 2011 17:07:41 +0000 (18:07 +0100)] 
[iscsi] Eliminate polling while waiting for window to open

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[http] Eliminate polling while waiting for window to open
Michael Brown [Fri, 24 Jun 2011 16:59:43 +0000 (17:59 +0100)] 
[http] Eliminate polling while waiting for window to open

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[scsi] Eliminate polling while waiting for window to open
Michael Brown [Fri, 24 Jun 2011 16:14:46 +0000 (17:14 +0100)] 
[scsi] Eliminate polling while waiting for window to open

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[hw] Eliminate polling while waiting for window to open
Michael Brown [Fri, 24 Jun 2011 15:51:31 +0000 (16:51 +0100)] 
[hw] Eliminate polling while waiting for window to open

Polling for the data-transfer window to become open is wasteful.  We
can eliminate the polling loop by using hw_step() as the handler for
an xfer_window_changed() event.

If the window is already open at the time of instantiation, then
xfer_window_changed() may never be called.  We can cover this case by
using hw_step() as the step() method of a one-shot process.  Since the
signature for an xfer_window_changed() method is identical to the
signature for a process step() method, the same function can be used
for both.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[infiniband] Use a one-shot process for CMRC shutdown
Michael Brown [Fri, 24 Jun 2011 16:21:52 +0000 (17:21 +0100)] 
[infiniband] Use a one-shot process for CMRC shutdown

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[fc] Use a one-shot process for Fibre Channel name server queries
Michael Brown [Fri, 24 Jun 2011 16:17:49 +0000 (17:17 +0100)] 
[fc] Use a one-shot process for Fibre Channel name server queries

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[fc] Use a one-shot process for Fibre Channel ELS requests
Michael Brown [Fri, 24 Jun 2011 16:16:38 +0000 (17:16 +0100)] 
[fc] Use a one-shot process for Fibre Channel ELS requests

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[resolv] Use a one-shot process for the numeric resolver
Michael Brown [Fri, 24 Jun 2011 15:45:28 +0000 (16:45 +0100)] 
[resolv] Use a one-shot process for the numeric resolver

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[process] Add support for one-shot processes
Michael Brown [Fri, 24 Jun 2011 13:18:48 +0000 (14:18 +0100)] 
[process] Add support for one-shot processes

Some processes execute only once, and exist solely in order to defer
execution until after the relevant instantiator method has returned.
Such processes do not need to be automatically rescheduled when
executing.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[process] Pass containing object pointer to process step() methods
Michael Brown [Fri, 24 Jun 2011 13:14:41 +0000 (14:14 +0100)] 
[process] Pass containing object pointer to process step() methods

Give the step() method a pointer to the containing object, rather than
a pointer to the process.  This is consistent with the operation of
interface methods, and allows a single function to serve as both an
interface method and a process step() method.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[xfer] Send xfer_window_changed() after xfer_vredirect()
Michael Brown [Wed, 22 Jun 2011 15:40:13 +0000 (16:40 +0100)] 
[xfer] Send xfer_window_changed() after xfer_vredirect()

Modify the default action for xfer_vredirect() to automatically send
xfer_window_changed() messages to both the new child and the parent
interfaces.  This will allow the elimination of processes that simply
poll on xfer_window() to determine when a redirection has completed
successfully.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[tcp] Send xfer_window_changed() when window opens
Michael Brown [Thu, 23 Jun 2011 15:25:48 +0000 (16:25 +0100)] 
[tcp] Send xfer_window_changed() when window opens

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[infiniband] Send xfer_window_changed() when CMRC connection is established
Michael Brown [Fri, 24 Jun 2011 18:25:53 +0000 (19:25 +0100)] 
[infiniband] Send xfer_window_changed() when CMRC connection is established

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[tls] Send xfer_window_changed() when TLS session is established
Michael Brown [Fri, 24 Jun 2011 17:11:12 +0000 (18:11 +0100)] 
[tls] Send xfer_window_changed() when TLS session is established

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[fc] Send xfer_window_changed() when FCP link is established
Michael Brown [Fri, 24 Jun 2011 22:16:17 +0000 (23:16 +0100)] 
[fc] Send xfer_window_changed() when FCP link is established

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[fc] Maintain a list of Fibre Channel upper-layer protocol users
Michael Brown [Fri, 24 Jun 2011 21:49:10 +0000 (22:49 +0100)] 
[fc] Maintain a list of Fibre Channel upper-layer protocol users

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[ftp] Remove redundant ftp_data_deliver() method
Michael Brown [Fri, 24 Jun 2011 11:51:45 +0000 (12:51 +0100)] 
[ftp] Remove redundant ftp_data_deliver() method

ftp_data_deliver() does nothing except pass through the received data
to the xfer interface, and so can be eliminated by using a
pass-through interface.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[prefix] Cope with BOOT_IMAGE= anywhere within command line
Michael Brown [Tue, 28 Jun 2011 10:29:28 +0000 (11:29 +0100)] 
[prefix] Cope with BOOT_IMAGE= anywhere within command line

Some bootloaders seem to add "BOOT_IMAGE=..." at the end of the
command line; some at the start.  Cope with either variation.

Reported-by: Dave Hansen <dave@sr71.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[ipv4] Record ARP resolution errors
Michael Brown [Tue, 28 Jun 2011 09:21:30 +0000 (10:21 +0100)] 
[ipv4] Record ARP resolution errors

At the time of attempting ARP resolution, we already know the
transmitting network device.  We can therefore record ARP errors using
netdev_tx_err() so that they show up in the output of "ifstat".

Inspired-by: Dominik Russenberger <dominik.russenberger@terreactive.ch>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[netdevice] Allow non-completion TX errors to be recorded
Michael Brown [Tue, 28 Jun 2011 09:19:23 +0000 (10:19 +0100)] 
[netdevice] Allow non-completion TX errors to be recorded

Allow TX errors to be recorded against a network device even when the
packet didn't make it as far as netdev_tx().

Inspired-by: Dominik Russenberger <dominik.russenberger@terreactive.ch>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[build] Allow APPEND lines in ipxe.iso to function as expected
Dominic Cleal [Thu, 19 May 2011 11:03:18 +0000 (12:03 +0100)] 
[build] Allow APPEND lines in ipxe.iso to function as expected

Signed-off-by: Dominic Cleal <dcleal@redhat.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[parseopt] Disambiguate the various EINVAL errors
Michael Brown [Wed, 18 May 2011 08:39:27 +0000 (09:39 +0100)] 
[parseopt] Disambiguate the various EINVAL errors

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[romprefix] Force PnP header to a 16-byte boundary for IBM BIOSes
Michael Brown [Tue, 17 May 2011 21:48:52 +0000 (22:48 +0100)] 
[romprefix] Force PnP header to a 16-byte boundary for IBM BIOSes

IBM BIOSes ignore the PnP header offset stored at address 0x1a and
instead scan for the $PnP signature on a 16-byte boundary.  (This
alignment is not mandated by the PnP specification.)

Force PnP header to a 16-byte boundary to work around these BIOSes.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[romprefix] Do not fall back to hooking INT19 by default
Michael Brown [Tue, 17 May 2011 14:35:23 +0000 (15:35 +0100)] 
[romprefix] Do not fall back to hooking INT19 by default

Several BIOSes (including most IBM BIOSes and many virtual machine
BIOSes) do not provide detectable PnP support, but will use the BEV
entry point for a PnP option ROM.  On these semi-PnP BIOSes, iPXE will
respond to the absence of detectable PnP support by hooking INT19,
which disrupts the boot order.

BIOSes that genuinely require hooking INT19 seem to be very rare
nowadays.  It may therefore be preferable to assume that the absence
of detectable PnP support indicates a semi-PnP BIOS rather than a
non-PnP BIOS.

Change the default behaviour so that INT19 will never be hooked unless
the compile-time option NONPNP_HOOK_INT19 is enabled.  Leave the
redundant PnP detection routine in-place to allow for debugging via
the ROM banner line.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[romprefix] Remove special treatment for IBM BIOSes
Michael Brown [Tue, 17 May 2011 14:27:47 +0000 (15:27 +0100)] 
[romprefix] Remove special treatment for IBM BIOSes

Revert commit 38cd351 ("[romprefix] Attempt to gracefully handle
semi-PnP IBM BIOSes"), since the test for the "IBM " signature in %edi
is not sufficient to identify an IBM BIOS.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[contrib] Update rom-o-matic to build iPXE
Floris Bos [Fri, 6 May 2011 17:33:05 +0000 (18:33 +0100)] 
[contrib] Update rom-o-matic to build iPXE

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[ipv4] Include network device metadata in packet traces
Michael Brown [Thu, 5 May 2011 17:02:44 +0000 (18:02 +0100)] 
[ipv4] Include network device metadata in packet traces

(Ab)use the "ident" field in transmitted IPv4 packets to convey
metadata about the network device.  In particular:

    bits 0-3 represent the low bits of the "RX" good packet counter
    bits 4-7 represent the low bits of the "RXE" bad packet counter
    bits 8-15 represent the transmitted packet sequence number

This allows some relevant information about the internal state of the
network device to be read out from a packet trace from a non-debug
build of iPXE.  In particular, it allows a packet trace containing
packets transmitted by iPXE to indicate whether or not any packets
have been received by iPXE.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[bofm] Pass BOFM version 2 table to SetStatus() if applicable
Michael Brown [Thu, 5 May 2011 15:51:31 +0000 (16:51 +0100)] 
[bofm] Pass BOFM version 2 table to SetStatus() if applicable

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[http] Support chunked transfer encoding
Michael Brown [Thu, 5 May 2011 14:32:34 +0000 (15:32 +0100)] 
[http] Support chunked transfer encoding

Booting from an HTTP SAN will require HTTP range requests, which are
defined only in HTTP/1.1 and above.  HTTP/1.1 mandates support for
"Transfer-Encoding: chunked", so we must support it.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[bofm] Increase amount of debugging available
Michael Brown [Thu, 5 May 2011 09:43:53 +0000 (10:43 +0100)] 
[bofm] Increase amount of debugging available

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[forcedeth] Ensure that IRQ line is deasserted when disabling interrupts
Michael Brown [Wed, 4 May 2011 18:20:19 +0000 (19:20 +0100)] 
[forcedeth] Ensure that IRQ line is deasserted when disabling interrupts

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[hermon] Remove temporary workaround for missing BOFM mport support
Michael Brown [Wed, 4 May 2011 15:58:49 +0000 (16:58 +0100)] 
[hermon] Remove temporary workaround for missing BOFM mport support

This reverts commit 15c1200 ("[hermon] Work around missing mport
support in current BOFM implementations").

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[bofm] Report {slot,port} to {bus:dev.fn,mport} mapping on newer BOFM builds
Michael Brown [Wed, 4 May 2011 11:04:14 +0000 (12:04 +0100)] 
[bofm] Report {slot,port} to {bus:dev.fn,mport} mapping on newer BOFM builds

Newer BOFM builds provide support for mapping multiple physical ports
to a single PCI bus:dev.fn via PCI VPD descriptions.  These builds
will also leave the {slot,port} field intact, and will populate the
mport field with a meaningful value.

Older BOFM builds will zero out the {slot,port} field.  A zero value
in this field may indicate either a genuine zero value (i.e. slot 0
first port) or an older build.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[bofm] Use "mport" rather than "port" to describe mport value
Michael Brown [Wed, 4 May 2011 09:19:28 +0000 (10:19 +0100)] 
[bofm] Use "mport" rather than "port" to describe mport value

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[bofm] Match port numbering as used in CSV file
Michael Brown [Wed, 4 May 2011 09:14:47 +0000 (10:14 +0100)] 
[bofm] Match port numbering as used in CSV file

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[romprefix] Attempt to gracefully handle semi-PnP IBM BIOSes
Michael Brown [Wed, 4 May 2011 09:04:43 +0000 (10:04 +0100)] 
[romprefix] Attempt to gracefully handle semi-PnP IBM BIOSes

Some IBM BIOSes provide partial support for PnP: they will use the BEV
entry point but will not advertise PnP support.  This causes iPXE to
hook INT 19, which disrupts the boot process.

Attempt to improve this situation by detecting an IBM BIOS and
treating it as a PnP BIOS despite the absence of a PnP signature.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[netdevice] Improve detection of bugs in drivers' TX completion handling
Michael Brown [Tue, 3 May 2011 19:04:21 +0000 (20:04 +0100)] 
[netdevice] Improve detection of bugs in drivers' TX completion handling

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[list] Add list_check_contains()
Michael Brown [Tue, 3 May 2011 19:02:07 +0000 (20:02 +0100)] 
[list] Add list_check_contains()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[netdevice] Move high-frequency debug messages to DBGLVL_EXTRA
Michael Brown [Tue, 3 May 2011 19:01:11 +0000 (20:01 +0100)] 
[netdevice] Move high-frequency debug messages to DBGLVL_EXTRA

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[efi] Ensure that each HII package list and formset has a unique GUID
Michael Brown [Tue, 3 May 2011 17:52:56 +0000 (18:52 +0100)] 
[efi] Ensure that each HII package list and formset has a unique GUID

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[build] Fix building on mildly deranged versions of binutils
Michael Brown [Fri, 29 Apr 2011 00:27:36 +0000 (01:27 +0100)] 
[build] Fix building on mildly deranged versions of binutils

Some versions of binutils have curious concepts of what constitutes
subtraction.  For example:

  0x00000000000000f0 _text16_late = .
  0x0000000000000898 _mtext16 = .
  0x0000000000000898 _etext16 = .
  0x0000000000000898 _text16_late_filesz = ABSOLUTE ((_mtext16 - _text16_late))
  0x00000000000007a8 _text16_late_memsz = ABSOLUTE ((_etext16 - _text16_late))

This has interesting side-effects such as producing sizes for .bss
segments that are negative, causing the majority of addressable memory
to be zeroed out.

Fix by using the form

  ABSOLUTE ( x ) - ABSOLUTE ( y )

rather than

  ABSOLUTE ( x - y )

Reported-by: H. Peter Anvin <hpa@zytor.com>
Suggested-by: H. Peter Anvin <hpa@zytor.com>
Tested-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[int13] Catch INT 13,4b when no explicit drive number is present
Michael Brown [Thu, 28 Apr 2011 12:05:40 +0000 (13:05 +0100)] 
[int13] Catch INT 13,4b when no explicit drive number is present

This allows older versions of ELTORITO.SYS (such as the version found
on the FreeDOS installation CD-ROM) to use iPXE's emulated CD-ROM
drive.

Reported-by: Robin Smidsrød <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[build] Accept EMBED=... as a synonym for EMBEDDED_IMAGE=...
Michael Brown [Thu, 28 Apr 2011 10:56:27 +0000 (11:56 +0100)] 
[build] Accept EMBED=... as a synonym for EMBEDDED_IMAGE=...

Make the build command line less cumbersome by accepting

  make DEBUG=int13 EMBED=test.ipxe

rather then

  make DEBUG=int13 EMBEDDED_IMAGE=test.ipxe

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[int13] Add support for INT 13,4b
Michael Brown [Wed, 27 Apr 2011 23:02:53 +0000 (00:02 +0100)] 
[int13] Add support for INT 13,4b

This allows the ELTORITO.SYS driver for MS-DOS to access our emulated
CD-ROM drives.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[int13] Add support for El Torito bootable CD-ROM images
Michael Brown [Wed, 27 Apr 2011 17:01:25 +0000 (18:01 +0100)] 
[int13] Add support for El Torito bootable CD-ROM images

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[linux] Avoid building Linux-specific prefix on non-Linux builds
Michael Brown [Tue, 26 Apr 2011 23:07:42 +0000 (00:07 +0100)] 
[linux] Avoid building Linux-specific prefix on non-Linux builds

Reported-by: David Yeske <dyeske@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[sanboot] Add "sanhook" and "sanunhook" commands
Michael Brown [Sat, 23 Apr 2011 08:50:38 +0000 (09:50 +0100)] 
[sanboot] Add "sanhook" and "sanunhook" commands

Expose the multiple-SAN-drive capability of the iPXE core via the iPXE
command line by adding commands to hook and unhook additional drives.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[parseopt] Allow for pre-initialised option sets
Michael Brown [Sun, 24 Apr 2011 14:19:31 +0000 (15:19 +0100)] 
[parseopt] Allow for pre-initialised option sets

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[undi] Assume that interrupts are not supported if IRQ=0
Michael Brown [Fri, 22 Apr 2011 22:31:25 +0000 (23:31 +0100)] 
[undi] Assume that interrupts are not supported if IRQ=0

Some PXE stacks (notably old Etherboot/gPXE stacks) will claim to use
the timer interrupt, rather than reporting that interrupts are not
supported.  Since using the timer interrupt is equivalent to polling
anyway, we may as well genuinely poll these stacks.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[build] Run parserom.pl only on potential driver files
Michael Brown [Sat, 9 Apr 2011 22:34:34 +0000 (23:34 +0100)] 
[build] Run parserom.pl only on potential driver files

PCI_ROM() and ISA_ROM() macros occur only within driver files.
Running parserom.pl on non-driver files is therefore redundant.

Skip running parserom.pl on any files outside a "drivers" directory.
This reduces the time taken to generate build rules and dependencies
after a "make veryclean" by around 12%.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[cmdline] Add "iseq" command
Greg Jednaszewski [Fri, 8 Apr 2011 18:33:51 +0000 (19:33 +0100)] 
[cmdline] Add "iseq" command

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[cmdline] Simplify "isset" command
Michael Brown [Fri, 8 Apr 2011 02:19:06 +0000 (03:19 +0100)] 
[cmdline] Simplify "isset" command

There is no plausible scenario I can think of in which "isset" would
be used with more than one argument.  Simplify the code by specifying
that exactly one argument is required.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[hermon] Work around missing mport support in current BOFM implementations
Michael Brown [Thu, 7 Apr 2011 12:53:28 +0000 (13:53 +0100)] 
[hermon] Work around missing mport support in current BOFM implementations

Current BOFM versions are unable to create entries with mport>1, which
means that only the port 1 MAC address can be explicitly specified.

Work around this by using the provided MAC address as a base address
for all subsequent ports.  For example, if BOFM assigns the address

   00:1A:64:76:00:09 for port 1

then we will assign the addresses

   00:1A:64:76:00:09 for port 1
   00:1A:64:76:00:0a for port 2

Future BOFM versions that may correctly support mport will work with
this scheme without modification provided that the BOFM entries are
created in increasing order of mport.  Since BOFM tools tend to
generate entries in increasing order (of slot, port, etc), this is not
an unreasonable compromise.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[arbel] Stop firmware only once on shutdown
Michael Brown [Thu, 7 Apr 2011 23:51:02 +0000 (00:51 +0100)] 
[arbel] Stop firmware only once on shutdown

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[hermon] Stop firmware only once on shutdown
Michael Brown [Thu, 7 Apr 2011 23:50:49 +0000 (00:50 +0100)] 
[hermon] Stop firmware only once on shutdown

Signed-off-by: Michael Brown <mcb30@ipxe.org>
14 years ago[efi] Add support for HII
Michael Brown [Thu, 7 Apr 2011 22:03:05 +0000 (23:03 +0100)] 
[efi] Add support for HII

Some EFI platforms expect us to provide an HII interface to display
information about the driver.

Signed-off-by: Michael Brown <mcb30@ipxe.org>