iPXE - Open Source Boot Firmware

vendor/xcat/ipxe.git
7 years agoMerge branch 'master' of http://git.ipxe.org/ipxe v1.0.3-6
Jarrod Johnson [Sun, 15 Jan 2012 15:41:11 +0000 (10:41 -0500)] 
Merge branch 'master' of http://git.ipxe.org/ipxe

7 years agoGive up entirely on the transmit queue if using snpnet.c.
Jarrod Johnson [Sat, 14 Jan 2012 18:18:34 +0000 (13:18 -0500)] 
Give up entirely on the transmit queue if using snpnet.c.

My first attempt would have looped infinitely with iPXE SNP, and my second would leak memory with iPXE SNP and potentially others.

Practically speaking, it seems the convention is to only have one packet pending and not rely upon any mechanism to associate returned
txbuf with txqueue.

7 years agoRevert "At least some versions of Emulex SNP driver differ from other vendors by...
Jarrod Johnson [Sat, 14 Jan 2012 18:07:49 +0000 (13:07 -0500)] 
Revert "At least some versions of Emulex SNP driver differ from other vendors by never returning a NULL txbuf in GetStatus."

This reverts commit 9dd1a8f1812c146fdf45c27a118e5a51e8a7d7ce.

7 years agoRevert "Some SNP implementations (iPXE itself at least) provide an invalid pointer...
Jarrod Johnson [Sat, 14 Jan 2012 18:07:30 +0000 (13:07 -0500)] 
Revert "Some SNP implementations (iPXE itself at least) provide an invalid pointer, we can't use that cue to determine if it is a unique return."

This reverts commit 57a001bf360c00113cf745187992f52dfb8acbca.

7 years agoSome SNP implementations (iPXE itself at least) provide an invalid pointer, we can...
Jarrod Johnson [Sat, 14 Jan 2012 17:41:46 +0000 (12:41 -0500)] 
Some SNP implementations (iPXE itself at least) provide an invalid pointer, we can't use that cue to determine if it is a unique return.

Always decrement txpending on non-null txbuf.  This means that if two packets were pending to transmit to an Emulex, it's theoretically possible to stop
the loop before all transmits dispatched but that's no worse than some scenarios before this mess...

7 years agoAt least some versions of Emulex SNP driver differ from other vendors by never return...
Jarrod Johnson [Sat, 14 Jan 2012 16:53:03 +0000 (11:53 -0500)] 
At least some versions of Emulex SNP driver differ from other vendors by never returning a NULL txbuf in GetStatus.

To tolerate this, modify the transmit poll behavior to loop until all iobufs iPXE wanted to transmit had their addresses returned.
If iPXE has no iobufs that it thinks should be transmitting, don't bother calling GetStatus anymore and proceed to receive loop.

7 years ago[test] Add self-tests for SHA-1 algorithm
Michael Brown [Wed, 11 Jan 2012 10:38:28 +0000 (10:38 +0000)] 
[test] Add self-tests for SHA-1 algorithm

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

7 years ago[dns] Allow trailing dots in DNS names
Michael Brown [Tue, 10 Jan 2012 23:25:00 +0000 (23:25 +0000)] 
[dns] Allow trailing dots in DNS names

Reported-by: Christian Hesse <list@eworm.de>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[vmxnet3] Add VMware vmxnet3 driver
Michael Brown [Tue, 6 Dec 2011 15:26:35 +0000 (15:26 +0000)] 
[vmxnet3] Add VMware vmxnet3 driver

Reviewed-by: Pete Holland <pholland27@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years agoMerge branch 'master' of http://git.ipxe.org/ipxe
Jarrod Johnson [Thu, 15 Dec 2011 18:13:43 +0000 (13:13 -0500)] 
Merge branch 'master' of http://git.ipxe.org/ipxe

7 years ago[pxe] Provide PXENV_FILE_EXIT_HOOK only for ipxelinux.0 builds
Michael Brown [Sun, 11 Dec 2011 02:11:45 +0000 (02:11 +0000)] 
[pxe] Provide PXENV_FILE_EXIT_HOOK only for ipxelinux.0 builds

PXENV_FILE_EXIT_HOOK is designed to allow ipxelinux.0 to unload both
the iPXE and pxelinux components without affecting the underlying PXE
stack.  Unfortunately, it causes unexpected behaviour in other
situations, such as when loading a non-embedded pxelinux.0 via
undionly.kpxe.  For example:

  PXE ROM -> undionly.kpxe -> pxelinux.0 -> chain.c32 to boot hd0

would cause control to return to iPXE instead of booting from the hard
disk.  In some cases, this would result in a harmless but confusing
"No more network devices" message; in other cases stranger things
would happen, such as being returned to the iPXE shell prompt.

The fundamental problem is that when pxelinux detects
PXENV_FILE_EXIT_HOOK, it may attempt to specify an exit hook and then
exit back to iPXE, assuming that iPXE will in turn exit cleanly via
the specified exit hook.  This is not a valid assumption in the
general case, since the action of exiting back to iPXE does not
directly cause iPXE to exit itself.  (In the specific case of
ipxelinux.0, this will work since the embedded script exits as soon as
pxelinux.0 exits.)

Fix the unexpected behaviour in the non-ipxelinux.0 cases by including
support for PXENV_FILE_EXIT_HOOK only when using a new .kkkpxe format.
The ipxelinux.0 build process should therefore now use undionly.kkkpxe
instead of undionly.kkpxe.

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

7 years ago[pxe] Modularise PXE API provision
Michael Brown [Sun, 11 Dec 2011 01:35:49 +0000 (01:35 +0000)] 
[pxe] Modularise PXE API provision

Use the linker table infrastructure to dispatch PXE API calls to the
relevant function.

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

7 years ago[pxe] Tidy up debugging output
Michael Brown [Thu, 8 Dec 2011 02:55:53 +0000 (02:55 +0000)] 
[pxe] Tidy up debugging output

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

7 years ago[pxe] Check for a valid PXE network device when applicable
Michael Brown [Thu, 8 Dec 2011 02:35:23 +0000 (02:35 +0000)] 
[pxe] Check for a valid PXE network device when applicable

Very nasty things can happen if a NULL network device is used.  Check
that pxe_netdev is non-NULL at the applicable entry points, so that
this type of problem gets reported to the caller rather than being
allowed to crash the system.

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

7 years ago[lotest] Accept non-loopback packets during test
Michael Brown [Wed, 7 Dec 2011 00:41:48 +0000 (00:41 +0000)] 
[lotest] Accept non-loopback packets during test

It can sometimes be awkward to prevent additional packets from being
received during a loopback test.  Allow such additional packets to be
present without terminating the test.

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

7 years ago[e1000e] Strip the Ethernet CRC from received packets
Michael Brown [Tue, 6 Dec 2011 23:57:52 +0000 (23:57 +0000)] 
[e1000e] Strip the Ethernet CRC from received packets

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

7 years ago[undi] Retry PXENV_UNDI_INITIALIZE multiple times
Michael Brown [Thu, 8 Dec 2011 00:06:53 +0000 (00:06 +0000)] 
[undi] Retry PXENV_UNDI_INITIALIZE multiple times

On at least one PXE stack (Realtek r8169), PXENV_UNDI_INITIALIZE has
been observed to fail intermittently due to a media test failure (PXE
error 0x00000061).  Retrying the call to PXENV_UNDI_INITIALIZE
succeeds, and the NIC is then usable.

It is worth noting that this particular Realtek PXE stack is already
known to be unreliable: for example, it repeatably fails its own
boot-time media test after every warm reboot.

Fix by attempting PXENV_UNDI_INITIALIZE multiple times, with a short
delay between each attempt to allow the link to settle.

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

7 years ago[dhcp] Add PXE-mandated DHCP options [128,135] to parameter request list
Michael Brown [Tue, 6 Dec 2011 13:54:45 +0000 (13:54 +0000)] 
[dhcp] Add PXE-mandated DHCP options [128,135] to parameter request list

The PXE specification requires us to request DHCP options 128 to 135
inclusive, although these have no defined purpose.

Suggested-by: Ralf Buettner <rab@bootix.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[e1000] Request notification of TX completions
Michael Brown [Tue, 6 Dec 2011 01:43:29 +0000 (01:43 +0000)] 
[e1000] Request notification of TX completions

The RS bit is used to instruct the NIC to update the TX descriptor
status byte.  The RPS bit is used to instruct the NIC to defer this
update until after the packet has been transmitted on the wire (rather
than merely read into the transmit FIFO).

The driver currently sets RPS but not RS.  Some e1000 models seem to
interpret this as implying that the status byte should be updated;
some don't.  On the ones that don't, we never see any TX completions
and so rapidly run out of TX buffers.

Fix by setting the RS bit in the TX descriptor.  (We don't care about
when the packet reaches the wire, so don't bother setting the RPS
bit.)

Reported-by: Miroslav Halas <miroslav.halas@bankofamerica.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[iscsi] Fail immediately if target rejects any of our parameters
Michael Brown [Mon, 5 Dec 2011 20:28:45 +0000 (20:28 +0000)] 
[iscsi] Fail immediately if target rejects any of our parameters

Some iSCSI targets (observed with stgt) can be configured to reject
connections that do not use header or data digests, and will respond
with "HeaderDigest=Reject" and/or "DataDigest=Reject", while still
allowing the connection to proceed to the full feature phase.

According to a strict reading of RFC3720, we are perfectly safe to
ignore these "Reject" messages: upon such a rejection "the negotiated
key is left at its current value (or default if no value was set)".
Since the default value for both HeaderDigest and DataDigest is
"None", then the only viable conclusion to be drawn is that the value
resulting from "Reject" is still "None".

Unfortunately, stgt doesn't seem to agree with this interpretation of
events, causing us to eventually report an unhelpful "connection timed
out" message to the user when we don't get any response to our first
PDU in full feature phase.

Fix by detecting any rejected parameters and immediately reporting an
error, which at least gives the user some insight as to what the real
problem may be.

Reported-by: Michal Suchanek <hramrach@centrum.cz>
Tested-by: Michal Suchanek <hramrach@centrum.cz>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years agoMerge branch 'master' of http://git.ipxe.org/ipxe
Jarrod Johnson [Wed, 16 Nov 2011 15:59:15 +0000 (10:59 -0500)] 
Merge branch 'master' of http://git.ipxe.org/ipxe

7 years ago[build] Include UNDI PCI driver within all-drivers build
Michael Brown [Wed, 16 Nov 2011 00:18:26 +0000 (00:18 +0000)] 
[build] Include UNDI PCI driver within all-drivers build

Commit 9b99d2a ("[build] Avoid generating ROMs with "match-any" vendor
or device IDs") introduced a regression which caused the UNDI PCI
driver to be omitted from the list of all drivers, and thus to be
excluded from the all-drivers build.

Fix by ensuring that the per-driver section of the Makefile is
generated even when there are no ROMs to be built.

Reported-by: Sven Dreyer <sven@dreyer-net.de>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[arbel] Ensure hardware is quiescent when no interfaces are open
Michael Brown [Mon, 14 Nov 2011 23:05:55 +0000 (23:05 +0000)] 
[arbel] Ensure hardware is quiescent when no interfaces are open

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

7 years ago[arbel] Reorder code in preparation for quiescing patch
Michael Brown [Mon, 14 Nov 2011 22:38:52 +0000 (22:38 +0000)] 
[arbel] Reorder code in preparation for quiescing patch

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

7 years ago[hermon] Ensure hardware is quiescent when no interfaces are open
Michael Brown [Mon, 14 Nov 2011 19:13:31 +0000 (19:13 +0000)] 
[hermon] Ensure hardware is quiescent when no interfaces are open

WinPE has been observed to call PXENV_UNDI_SHUTDOWN but not
PXENV_STOP_UNDI.  This means that Hermon hardware is left partially
active (firmware running and one event queue mapped) when WinPE starts
up, which can cause a Blue Screen of Death.

Fix by ensuring that the hardware is left quiescent (with the firmware
stopped) when no interfaces are open.

Reported-by: Itay Gazit <itayg@mellanox.co.il>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[hermon] Reorder code in preparation for quiescing patch
Michael Brown [Mon, 14 Nov 2011 19:11:47 +0000 (19:11 +0000)] 
[hermon] Reorder code in preparation for quiescing patch

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

7 years ago[infiniband] Reset port state after closing device
Michael Brown [Tue, 15 Nov 2011 01:03:08 +0000 (01:03 +0000)] 
[infiniband] Reset port state after closing device

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

7 years ago[infiniband] Open device prior to creating SMI and GSI queue pairs
Michael Brown [Tue, 15 Nov 2011 00:00:19 +0000 (00:00 +0000)] 
[infiniband] Open device prior to creating SMI and GSI queue pairs

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

7 years ago[infiniband] Poll event queues only for devices that are open
Michael Brown [Mon, 14 Nov 2011 23:43:24 +0000 (23:43 +0000)] 
[infiniband] Poll event queues only for devices that are open

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

7 years ago[ipoib] Report packets as broadcast when ambiguous
Michael Brown [Tue, 15 Nov 2011 03:57:09 +0000 (03:57 +0000)] 
[ipoib] Report packets as broadcast when ambiguous

Avoid spurious matches for peer key 0 against empty peer cache
entries, and set the LL_MULTICAST flag in addition to LL_BROADCAST.

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

7 years ago[rtl8139] Perform only 8-bit ioport access on the ChipCmd register
Julian Pidancet [Mon, 14 Nov 2011 21:00:20 +0000 (21:00 +0000)] 
[rtl8139] Perform only 8-bit ioport access on the ChipCmd register

The ChipCmd register is only an 8-bit register.  The 16-bit access
used by iPXE was causing an issue when used with qemu emulated rtl8139
device which was improperly aligning IOs.

Signed-off-by: Julian Pidancet <julian.pidancet@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[pxe] Improve pxe_preboot debugging messages
Michael Brown [Mon, 14 Nov 2011 12:59:12 +0000 (12:59 +0000)] 
[pxe] Improve pxe_preboot debugging messages

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

7 years ago[pxe] Improve pxe_undi debugging messages
Michael Brown [Mon, 14 Nov 2011 12:48:15 +0000 (12:48 +0000)] 
[pxe] Improve pxe_undi debugging messages

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

7 years ago[prefix] Allow an initrd to be passed to iPXE
Michael Brown [Sat, 12 Nov 2011 00:34:55 +0000 (00:34 +0000)] 
[prefix] Allow an initrd to be passed to iPXE

Allow an initrd (such as an embedded script) to be passed to iPXE when
loaded as a .lkrn (or .iso) image.  This allows an embedded script to
be varied without recompiling iPXE.

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

7 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>

7 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>

7 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>

7 years agoMerge branch 'master' of https://git.ipxe.org/ipxe
Jarrod Johnson [Thu, 3 Nov 2011 13:29:57 +0000 (09:29 -0400)] 
Merge branch 'master' of https://git.ipxe.org/ipxe

Conflicts:
src/config/general.h

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 years agoBump version number
Jarrod Johnson [Tue, 20 Sep 2011 15:21:46 +0000 (11:21 -0400)] 
Bump version number

7 years agoMerge https://git.ipxe.org/people/jbjohnso/ipxe
Jarrod Johnson [Tue, 20 Sep 2011 15:10:49 +0000 (11:10 -0400)] 
Merge https://git.ipxe.org/people/jbjohnso/ipxe

7 years agoMake machyp actually work (again, I know redundant with mac:hexhyp, but stuck with...
Jarrod Johnson [Tue, 20 Sep 2011 15:09:26 +0000 (11:09 -0400)] 
Make machyp actually work (again, I know redundant with mac:hexhyp, but stuck with old syntax for seamless transition)

7 years agoMerge https://git.ipxe.org/ipxe
Jarrod Johnson [Tue, 20 Sep 2011 15:07:41 +0000 (11:07 -0400)] 
Merge https://git.ipxe.org/ipxe

7 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>

7 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>

7 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>

7 years agoChange config for xNBA defaults for both EFI and bios
Jarrod Johnson [Fri, 19 Aug 2011 12:54:34 +0000 (08:54 -0400)] 
Change config for xNBA defaults for both EFI and bios

7 years agoMerge http://git.ipxe.org/ipxe
Jarrod Johnson [Sat, 13 Aug 2011 13:05:12 +0000 (09:05 -0400)] 
Merge http://git.ipxe.org/ipxe

7 years agoFor now, install the efi download protocol on the handle iPXE itself loaded from.
Jarrod Johnson [Sat, 13 Aug 2011 13:02:42 +0000 (09:02 -0400)] 
For now, install the efi download protocol on the handle iPXE itself loaded from.

7 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>

7 years agoPopulate loaded image parent handle, see about having elilo reference that for it...
Jarrod Johnson [Fri, 12 Aug 2011 20:15:09 +0000 (16:15 -0400)] 
Populate loaded image parent handle, see about having elilo reference that for it's needs

7 years agoMerge in the command line/device path handling from Geoff Lywood's patch, makes bootx...
Jarrod Johnson [Tue, 24 May 2011 17:11:02 +0000 (13:11 -0400)] 
Merge in the command line/device path handling from Geoff Lywood's patch, makes bootx64.efi work and elilo not hang

7 years agoPart two of porting Geoff Lywood's download protocol to current iPXE
Jarrod Johnson [Tue, 9 Aug 2011 15:37:36 +0000 (11:37 -0400)] 
Part two of porting Geoff Lywood's download protocol to current iPXE

7 years agoTry to port over Geoff Lywood's gPXE Download Protocol for EFI to iPXE.
Jarrod Johnson [Mon, 8 Aug 2011 19:54:15 +0000 (15:54 -0400)] 
Try to port over Geoff Lywood's gPXE Download Protocol for EFI to iPXE.
Three points of reference:
-Geoff's monolithic patch to indicate the current state of his effort
-Geoff's 'RFC' posting to gpxe-devel in 2010 to help identify relevant parts of the monolithic patch
-Changes to posix_io.c that resemble the changes needed for 'old' gPXE calls to work in iPXE world
It builds and runs without errors, but haven't made changes to elilo required to really test it yet

7 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>

7 years agoMerge http://git.ipxe.org/ipxe
Jarrod Johnson [Mon, 8 Aug 2011 15:19:12 +0000 (11:19 -0400)] 
Merge http://git.ipxe.org/ipxe

7 years agoMerge http://git.ipxe.org/ipxe
Jarrod Johnson [Mon, 8 Aug 2011 15:18:19 +0000 (11:18 -0400)] 
Merge http://git.ipxe.org/ipxe

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>

7 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>