iPXE - Open Source Boot Firmware

ipxe.git
6 years ago[iscsi] Change default initiator IQN
Michael Brown [Thu, 3 Mar 2011 22:08:50 +0000 (22:08 +0000)] 
[iscsi] Change default initiator IQN

The default initiator IQN is "iqn.2000-09.org.etherboot:UNKNOWN".
This is problematic for two reasons:

  a) the etherboot.org domain (and hence the associated IQN namespace)
     is not under the control of the iPXE project, and

  b) some targets (correctly) refuse to allow concurrent connections
     from different initiators using the same initiator IQN.

Solve both problems by changing the default initiator IQN to be

  iqn.2010-04.org.ipxe:<hostname> if a hostname is set, or

  iqn.2010-04.org.ipxe:<uuid> if no hostname is set.

Explicit initiator IQNs set via DHCP option 203 are not affected by
this change.

Unfortunately, this change is likely to break some existing
configurations, where ACL rules have been put in place referring to
the old default initiator IQN.  Users may need to update ACLs, or
force the use of the old IQN using an iPXE script line such as

  set initiator-iqn iqn.2000-09.org.etherboot:UNKNOWN

or a dhcpd.conf option such as

   option iscsi-initiator-iqn "iqn.2000-09.org.etherboot:UNKNOWN"

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

6 years ago[dns] Fix memory leak in settings applicator
Michael Brown [Thu, 3 Mar 2011 20:09:29 +0000 (20:09 +0000)] 
[dns] Fix memory leak in settings applicator

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

6 years ago[settings] Make fetch_string_setting_copy() easier to use
Michael Brown [Thu, 3 Mar 2011 19:59:31 +0000 (19:59 +0000)] 
[settings] Make fetch_string_setting_copy() easier to use

Most callers of functions in the fetch_setting() family treat any
errors as meaning "non-existent setting".  In the case of
fetch_string_setting_copy(), an existent setting can still result in
an error due to memory allocation failure.

Allow the caller to distinguish between a non-existent setting and an
error in allocating memory for the copy, by returning success (and a
NULL buffer pointer) for a non-existent setting.

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

6 years ago[settings] Avoid fetch_string_setting_copy() leaving an uninitialised pointer
Michael Brown [Thu, 3 Mar 2011 17:13:44 +0000 (17:13 +0000)] 
[settings] Avoid fetch_string_setting_copy() leaving an uninitialised pointer

For consistency with other functions in the fetch_setting() family,
ensure that fetch_string_setting_copy() always initialises the pointer
to the fetched setting even if fetching fails.

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

6 years ago[hermon] Add BOFM support
Michael Brown [Thu, 10 Feb 2011 16:40:56 +0000 (16:40 +0000)] 
[hermon] Add BOFM support

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

6 years ago[bofm] Allow garbage collection of BOFM code in non-BOFM builds
Michael Brown [Wed, 23 Feb 2011 17:52:13 +0000 (17:52 +0000)] 
[bofm] Allow garbage collection of BOFM code in non-BOFM builds

Most builds will not have BOFM enabled.  In these builds, allow all
BOFM code (including BOFM-only code within the individual drivers) to
be garbage-collected at link time in order to save space in the final
binary.

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

6 years ago[bofm] Add support for BOFM under EFI
Michael Brown [Thu, 17 Feb 2011 00:31:38 +0000 (00:31 +0000)] 
[bofm] Add support for BOFM under EFI

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

6 years ago[bofm] Add offline BOFM test facility
Michael Brown [Thu, 10 Feb 2011 21:34:34 +0000 (21:34 +0000)] 
[bofm] Add offline BOFM test facility

Testing BOFM involves gaining access to an IBM blade chassis, which is
often not practical.  Provide a facility for testing BOFM
functionality outside of a real IBM blade context.

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

6 years ago[bofm] Add core BOFM library
Michael Brown [Thu, 10 Feb 2011 13:47:38 +0000 (13:47 +0000)] 
[bofm] Add core BOFM library

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

6 years ago[autoboot] Allow a SAN boot as a fallback if a filename boot returns
Michael Brown [Wed, 2 Mar 2011 19:57:01 +0000 (19:57 +0000)] 
[autoboot] Allow a SAN boot as a fallback if a filename boot returns

Currently, if both a filename and root-path are present, iPXE will
hook the SAN device but will only attempt to boot from the filename.
Change this behaviour so that both are attempted.  Users who want to
avoid booting from the SAN as a fallback can do so via the existing
"skip-san-boot" setting.

This allows for seamless deployment to a SAN target using Windows
Deployment Services (and similar products).  A user simply has to
define the root-path option in DHCP and then use WDS to deploy the
system.  No further configuration should be required.

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

6 years ago[autoboot] Tidy up output following NBP execution
Michael Brown [Wed, 2 Mar 2011 19:39:39 +0000 (19:39 +0000)] 
[autoboot] Tidy up output following NBP execution

If the NBP returns, then always print a trailing newline, since some
NBPs (e.g. wdsnbp.com) leave the cursor in a random position halfway
across the screen.

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

6 years ago[image] Allow download job to complete before acting upon image
Michael Brown [Wed, 2 Mar 2011 19:29:24 +0000 (19:29 +0000)] 
[image] Allow download job to complete before acting upon image

Allow the monojob controlling the download to complete before calling
register_image() and friends.  This allows the trailing "ok" from
monojob.c to be printed before the image starts executing (and
possibly printing output of its own).

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

6 years ago[int13] Automatically reopen underlying block device as needed
Michael Brown [Wed, 2 Mar 2011 15:33:39 +0000 (15:33 +0000)] 
[int13] Automatically reopen underlying block device as needed

We currently use INT 13,00 as an opportunity to reopen the underlying
block device, which works well for callers such as DOS that will use
INT 13,00 in response to any disk errors.  However, some callers (such
as Windows Server 2008) do not attempt to reset the disk, and so any
failures become effectively permanent.

Fix this by automatically reopening the underlying block device
whenever we might want to access it.

This makes direct installation of Windows to an iSCSI target much more
reliable.

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

6 years ago[prefix] Set the "size" bit in the GDT entry for the flat data segment
Michael Brown [Tue, 1 Mar 2011 16:03:44 +0000 (16:03 +0000)] 
[prefix] Set the "size" bit in the GDT entry for the flat data segment

The "size" bit (aka the D/B) bit should (as far as I can tell) be
irrelevant for accesses to a non-code, non-stack, expand-upwards
segment.  However, VirtualBox fails on some accesses via this segment
if this bit is not set.

This change allows iPXE to boot under VirtualBox without having to
disable VT-x/AMD-V support.

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

6 years ago[prefix] Add rudimentary debugging messages to libprefix
Michael Brown [Tue, 1 Mar 2011 14:49:25 +0000 (14:49 +0000)] 
[prefix] Add rudimentary debugging messages to libprefix

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

6 years ago[build] Allow DEBUG=... to affect builds of assembler source files
Michael Brown [Tue, 1 Mar 2011 14:18:35 +0000 (14:18 +0000)] 
[build] Allow DEBUG=... to affect builds of assembler source files

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

6 years ago[autoboot] Use a custom error number for "nothing to boot"
Michael Brown [Mon, 28 Feb 2011 18:43:54 +0000 (18:43 +0000)] 
[autoboot] Use a custom error number for "nothing to boot"

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

6 years ago[autoboot] Add an iPXE error URI to the "nothing to boot" message
Michael Brown [Mon, 28 Feb 2011 18:35:56 +0000 (18:35 +0000)] 
[autoboot] Add an iPXE error URI to the "nothing to boot" message

Change the message "No filename or root path specified" to include an
iPXE error URI.

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

6 years ago[linux] Remove Linux-specific code from default (non-Linux) build
Michael Brown [Fri, 25 Feb 2011 17:46:56 +0000 (17:46 +0000)] 
[linux] Remove Linux-specific code from default (non-Linux) build

Building the Linux-specific code (tap.o et al) requires external
headers that have proven to be extremely variable across systems,
causing frequent build failures.

Until this situation is rectified, remove the Linux-specific code from
the default (non-Linux build).

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

6 years ago[iscsi] Clarify support for NOP-In
Michael Brown [Fri, 25 Feb 2011 11:10:36 +0000 (11:10 +0000)] 
[iscsi] Clarify support for NOP-In

After a more accurate reading of RFC 3720, it becomes clear how NOPs
are supposed to work.  The current implementation (which just ignores
NOP-Ins) is sufficient to cope with NOP-Ins sent to update CmdSN, but
will need to be extended before it can cope with NOP-Ins sent as iSCSI
keepalives.

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

6 years ago[iscsi] Verify the correct tag in NOP-In PDUs
Michael Brown [Fri, 25 Feb 2011 10:40:08 +0000 (10:40 +0000)] 
[iscsi] Verify the correct tag in NOP-In PDUs

We should be checking the target transfer tag, rather than the
initiator task tag.

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

6 years ago[iscsi] Fix minor typo in ibft_set_ipaddr()
Michael Brown [Thu, 24 Feb 2011 23:39:38 +0000 (23:39 +0000)] 
[iscsi] Fix minor typo in ibft_set_ipaddr()

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

6 years ago[iscsi] Accept NOP-In PDUs sent by the target
Michael Brown [Thu, 24 Feb 2011 13:22:20 +0000 (13:22 +0000)] 
[iscsi] Accept NOP-In PDUs sent by the target

Some iSCSI targets (observed with a Synology DS207+ NAS) send
unsolicited NOP-Ins to the initiator.  RFC 3720 is remarkably unclear
and possibly self-contradictory on how NOPs are supposed to work, but
it seems as though we can legitimately just ignore any unsolicited
NOP-In PDU.

Reported-by: Marc Lecuyer <marc@maxiscreen.com>
Originally-implemented-by: Thomas Miletich <thomas.miletich@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[build] Use unique entry symbols for each prefix
Michael Brown [Wed, 23 Feb 2011 21:12:56 +0000 (21:12 +0000)] 
[build] Use unique entry symbols for each prefix

Some binutils versions will drag in an object to satisfy the entry
symbol; some won't.  Try to cope with this exciting variety of
behaviour by ensuring that all entry symbols are unique.

Remove the explicit inclusion of the prefix object on the linker
command line, since the entry symbol now provides all the information
needed to identify the prefix.

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

6 years ago[build] Ensure an entry point symbol exists in all builds
Michael Brown [Wed, 23 Feb 2011 20:20:55 +0000 (20:20 +0000)] 
[build] Ensure an entry point symbol exists in all builds

Commit 623469d ("[build] Eliminate unused sections at link-time")
introduced a regression in several build formats, in which the prefix
would end up being garbage-collected out of existence.  Fix by
ensuring that an entry symbol exists in each possible prefix, and is
required by the linker script.

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

6 years ago[iscsi] Disambiguate the expected target errors in the login response
Michael Brown [Wed, 23 Feb 2011 09:52:02 +0000 (09:52 +0000)] 
[iscsi] Disambiguate the expected target errors in the login response

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

6 years ago[build] Eliminate unused sections at link-time
Michael Brown [Tue, 22 Feb 2011 19:36:24 +0000 (19:36 +0000)] 
[build] Eliminate unused sections at link-time

Use -ffunction-sections, -fdata-sections, and --gc-sections to
automatically prune out any unreferenced sections.

This saves around 744 bytes (uncompressed) from the rtl8139.rom build.

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

6 years ago[int13] Add missing "static" modifier
Michael Brown [Tue, 22 Feb 2011 19:26:33 +0000 (19:26 +0000)] 
[int13] Add missing "static" modifier

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

6 years ago[efi] Provide space for storing the EFI driver name
Michael Brown [Tue, 22 Feb 2011 17:11:37 +0000 (17:11 +0000)] 
[efi] Provide space for storing the EFI driver name

Commit d7736fb ("[efi] Allow EFI to control PCI bus enumeration")
introduced a bug in which the EFI driver name became an
(uninitialised) pointer rather than an array.

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

6 years ago[efi] Allow EFI to control PCI bus enumeration
Michael Brown [Thu, 17 Feb 2011 00:27:51 +0000 (00:27 +0000)] 
[efi] Allow EFI to control PCI bus enumeration

EFI performs its own PCI bus enumeration.  Respect this, and start
controlling devices only when instructed to do so by EFI.

As a side benefit, we should now correctly create multiple SNP
instances for multi-port devices.

This should also fix the problem of failing to enumerate devices
because the PCI bridges have not yet been enabled at the time the iPXE
driver is loaded.

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

6 years ago[efi] Rename efi_pci.h to efi_pci_api.h
Michael Brown [Mon, 14 Feb 2011 01:37:44 +0000 (01:37 +0000)] 
[efi] Rename efi_pci.h to efi_pci_api.h

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

6 years ago[pci] Modularise PCI device support
Michael Brown [Thu, 10 Feb 2011 13:43:58 +0000 (13:43 +0000)] 
[pci] Modularise PCI device support

Some operating environments require (or at least prefer) that we do
not perform our own PCI bus scan, but deal only with specified
devices.  Modularise the PCI core to allow for this.

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

6 years ago[pci] Make driver PCI ID a property of the PCI device
Michael Brown [Sat, 12 Feb 2011 01:11:57 +0000 (01:11 +0000)] 
[pci] Make driver PCI ID a property of the PCI device

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

6 years ago[pci] Replace pci_max_bus() with pci_num_bus()
Michael Brown [Sat, 12 Feb 2011 02:08:28 +0000 (02:08 +0000)] 
[pci] Replace pci_max_bus() with pci_num_bus()

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

6 years ago[pci] Use single "busdevfn" field in struct pci_device
Michael Brown [Wed, 9 Feb 2011 00:32:58 +0000 (00:32 +0000)] 
[pci] Use single "busdevfn" field in struct pci_device

Merge the "bus" and "devfn" fields into a single "busdevfn" field, to
match the format used by the majority of external code.

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

6 years ago[bitops] Add missing __attribute__ (( packed ))
Michael Brown [Wed, 16 Feb 2011 18:42:26 +0000 (18:42 +0000)] 
[bitops] Add missing __attribute__ (( packed ))

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

6 years ago[hermon] Add missing __attribute__ (( packed ))
Michael Brown [Wed, 16 Feb 2011 18:38:26 +0000 (18:38 +0000)] 
[hermon] Add missing __attribute__ (( packed ))

On 64-bit builds, MLX_DECLARE_STRUCT() produces a structure that is
always a multiple of 64 bits long, causing the HCR structure to be
over-length by one dword.  This in turn causes hermon_cmd() to write
beyond the end of the HCR, which causes commands to fail.

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

6 years ago[hermon] Force link speed to SDR
Itay Gazit [Tue, 8 Feb 2011 13:06:30 +0000 (15:06 +0200)] 
[hermon] Force link speed to SDR

SDR link comes up much faster than other speeds.

Signed-off-by: Itay Gazit <itaygazit@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[hermon] Use circular event queue
Itay Gazit [Mon, 7 Feb 2011 07:39:59 +0000 (09:39 +0200)] 
[hermon] Use circular event queue

Avoid memory leak of untreated events by having circular event queue
operation.

Signed-off-by: Itay Gazit <itaygazit@gmail.com>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[hermon] Update PRM file with latest changes
Itay Gazit [Mon, 7 Feb 2011 06:58:17 +0000 (08:58 +0200)] 
[hermon] Update PRM file with latest changes

Signed-off-by: Itay Gazit <itaygazit@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[hermon] Fix hermon_cmd_sense_port() to use inline output
Itay Gazit [Thu, 28 Oct 2010 13:53:53 +0000 (15:53 +0200)] 
[hermon] Fix hermon_cmd_sense_port() to use inline output

Signed-off-by: Itay Gazit <itaygazit@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[pcbios] Merge adjacent memory regions of same type
Eduardo Habkost [Wed, 16 Feb 2011 18:41:24 +0000 (16:41 -0200)] 
[pcbios] Merge adjacent memory regions of same type

Some BIOSes can report multiple memory regions which may be adjacent
and the same type.  Since only the first region is used in the
mboot.c32 layer it's possible to run out of memory when loading all of
the boot modules.  One may get around this problem by having iPXE
merge these memory regions internally.

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

6 years ago[3c90x] Clean up reset code
Thomas Miletich [Tue, 1 Feb 2011 22:10:18 +0000 (23:10 +0100)] 
[3c90x] Clean up reset code

Remove duplicate hardware resets, remove network interface logic
reset.

This also fixes a bug where some 3c905C variants would return bogus
EEPROM values because of a too short delay after the network reset.

Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com>
Reported-by: Peter Huewe <peterhuewe@gmx.de>
Tested-by: Peter Huewe <peterhuewe@gmx.de>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[3c90x] More fine-grained debugging levels
Thomas Miletich [Tue, 1 Feb 2011 22:10:17 +0000 (23:10 +0100)] 
[3c90x] More fine-grained debugging levels

DBG is reserved for errors and important warnings only.
DBG2 for additional information, e.g. "received packet".
DBGP is used to print the name of every function as it is called.

Signed-off-by: Thomas Miletich<thomas.miletich@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[autoboot] Cope properly with empty DHCP filenames
Michael Brown [Tue, 1 Feb 2011 04:25:38 +0000 (04:25 +0000)] 
[autoboot] Cope properly with empty DHCP filenames

This (hopefully) fixes a regression introduced in commit e088892
("[autoboot] Connect SAN disk during a filename boot, if applicable").

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

6 years ago[uri] Add uri_has_path()
Michael Brown [Tue, 1 Feb 2011 04:25:19 +0000 (04:25 +0000)] 
[uri] Add uri_has_path()

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

6 years ago[autoboot] Avoid using uri_dup() for constructed TFTP URI
Michael Brown [Tue, 1 Feb 2011 02:56:06 +0000 (02:56 +0000)] 
[autoboot] Avoid using uri_dup() for constructed TFTP URI

uri_dup() chokes on duplicating a URI with a path that does not begin
with a slash.

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

6 years ago[autoboot] Allow setting expansions in filename and root-path
Michael Brown [Fri, 28 Jan 2011 00:24:05 +0000 (00:24 +0000)] 
[autoboot] Allow setting expansions in filename and root-path

Allow the DHCP filename and root-path to contain settings expansions,
such as

  http://boot.ipxe.org/demo/boot.php?mac=${mac:hexhyp}

Originally-implemented-by: Jarrod Johnson <jarrod.b.johnson@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[settings] Generalise expand_command() to expand_settings()
Michael Brown [Fri, 28 Jan 2011 00:16:18 +0000 (00:16 +0000)] 
[settings] Generalise expand_command() to expand_settings()

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

6 years ago[autoboot] Connect SAN disk during a filename boot, if applicable
Michael Brown [Thu, 27 Jan 2011 18:48:47 +0000 (18:48 +0000)] 
[autoboot] Connect SAN disk during a filename boot, if applicable

For performing installations direct to a SAN target, it can be very
useful to hook a SAN disk and then proceed to perform a filename boot.
For example, the user may wish to hook the (empty) SAN installation
disk and then boot into the OS installer via TFTP.  This provides an
alternative mechanism to using "keep-san" and relying on the BIOS to
fall through to boot from the installation media, which is unreliable
on many BIOSes.

When a root-path is specified in addition to a boot filename, attempt
to hook the root-path as a SAN disk before booting from the specified
filename.  Since the root-path may be used for non-SAN purposes
(e.g. an NFS root mount point), ignore the root-path if it contains a
URI scheme that we do not support.

Originally-implemented-by: Jarrod Johnson <jarrod.b.johnson@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[init] Remove concept of "shutdown exit flags"
Michael Brown [Thu, 27 Jan 2011 20:35:48 +0000 (20:35 +0000)] 
[init] Remove concept of "shutdown exit flags"

Remove the concept of shutdown exit flags, and replace it with a
counter used to keep track of exposed interfaces that require devices
to remain active.

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

6 years ago[xfer] Expose xfer_uri_opener()
Michael Brown [Thu, 27 Jan 2011 18:46:07 +0000 (18:46 +0000)] 
[xfer] Expose xfer_uri_opener()

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

6 years ago[vxge] Add support for new function mode "multi-function 8 Direct IO"
Masroor Vettuparambil [Thu, 20 Jan 2011 06:34:08 +0000 (22:34 -0800)] 
[vxge] Add support for new function mode "multi-function 8 Direct IO"

Support a new function mode "multi-function 8 Direct IO" which is used
in ESX Direct I/O configuration.

Update driver version to 3.5.0.1

Signed-off-by: Masroor Vettuparambil <masroor.vettuparambil@exar.com>
Signed-off-by: Sivakumar Subramani <sivakumar.subramani@exar.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[liba20] Rename libflat to liba20
Michael Brown [Wed, 26 Jan 2011 23:23:07 +0000 (23:23 +0000)] 
[liba20] Rename libflat to liba20

libflat no longer has anything to do with flat real mode; it handles
only the A20 gate.  Update library name to match.

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

6 years ago[libflat] Remove now-obsolete flatten_real_mode call
Michael Brown [Wed, 26 Jan 2011 23:20:48 +0000 (23:20 +0000)] 
[libflat] Remove now-obsolete flatten_real_mode call

Flat real mode will have been set up as a side-effect of the
protected-mode call invoked during install_block() for .text16.early;
there is no need to do so explicitly.

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

6 years ago[prefix] Use 16-bit protected mode for access to high memory
Michael Brown [Wed, 26 Jan 2011 23:04:43 +0000 (23:04 +0000)] 
[prefix] Use 16-bit protected mode for access to high memory

Flat real mode works perfectly on real hardware, but seems to cause
problems for some hypervisors.  Revert to using 16-bit protected mode
(and returning to real mode with 4GB limits, so as not to break PMM
BIOSes).

Allow the code specific to the .mrom format to continue to assume that
flat real mode works, since this format is specific to real hardware.

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

6 years ago[contrib] Specify boot order in bochsrc.txt
Michael Brown [Wed, 26 Jan 2011 23:24:23 +0000 (23:24 +0000)] 
[contrib] Specify boot order in bochsrc.txt

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

6 years ago[hermon] Indicate that device does not support interrupts
Michael Brown [Tue, 25 Jan 2011 14:20:26 +0000 (14:20 +0000)] 
[hermon] Indicate that device does not support interrupts

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

6 years ago[infiniband] Indicate that device does not support interrupts
Michael Brown [Tue, 25 Jan 2011 14:19:54 +0000 (14:19 +0000)] 
[infiniband] Indicate that device does not support interrupts

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

6 years ago[pxe] Report SUPPORTED_IRQ only if device supports interrupts
Michael Brown [Tue, 25 Jan 2011 14:18:15 +0000 (14:18 +0000)] 
[pxe] Report SUPPORTED_IRQ only if device supports interrupts

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

6 years ago[netdevice] Allow devices to indicate that interrupts are not supported
Michael Brown [Tue, 25 Jan 2011 14:16:11 +0000 (14:16 +0000)] 
[netdevice] Allow devices to indicate that interrupts are not supported

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

6 years ago[pci] Auto-resize VPD fields used for non-volatile storage
Michael Brown [Mon, 10 Jan 2011 03:35:34 +0000 (03:35 +0000)] 
[pci] Auto-resize VPD fields used for non-volatile storage

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

6 years ago[pci] Add ability to resize a VPD field
Michael Brown [Mon, 10 Jan 2011 03:34:34 +0000 (03:34 +0000)] 
[pci] Add ability to resize a VPD field

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

6 years ago[pci] Allow pci_vpd_init() return status to be ignored
Michael Brown [Tue, 11 Jan 2011 01:37:27 +0000 (01:37 +0000)] 
[pci] Allow pci_vpd_init() return status to be ignored

Most xxx_init() functions are void functions with no failure cases.
Allow pci_vpd_init() to be used in the same way.  (Subsequent calls to
pci_vpd_read() etc. will fail if pci_vpd_init() fails.)

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

6 years ago[nvo] Allow resizing of non-volatile stored option blocks
Michael Brown [Tue, 11 Jan 2011 00:53:50 +0000 (00:53 +0000)] 
[nvo] Allow resizing of non-volatile stored option blocks

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

6 years ago[nvo] Remove the non-volatile options fragment list
Michael Brown [Tue, 30 Nov 2010 01:10:38 +0000 (01:10 +0000)] 
[nvo] Remove the non-volatile options fragment list

Since its implementation several years ago, no driver has used a
fragment list containing more than a single fragment.  Simplify the
NVO core and the drivers that use it by removing the whole concept of
the fragment list, and using a simple (address,length) pair instead.

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

6 years ago[nvs] Allow for non-volatile storage devices without block boundaries
Michael Brown [Tue, 11 Jan 2011 19:56:59 +0000 (19:56 +0000)] 
[nvs] Allow for non-volatile storage devices without block boundaries

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

6 years ago[dhcp] Allow use of custom reallocation functions for DHCP option blocks
Michael Brown [Mon, 10 Jan 2011 23:58:11 +0000 (23:58 +0000)] 
[dhcp] Allow use of custom reallocation functions for DHCP option blocks

Allow functions other than realloc() to be used to reallocate DHCP
option block data, and specify the reallocation function at the time
of calling dhcpopt_init().

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

6 years ago[dhcp] Rename length fields for DHCP options
Michael Brown [Tue, 30 Nov 2010 00:31:01 +0000 (00:31 +0000)] 
[dhcp] Rename length fields for DHCP options

Rename "len" to "used_len" and "max_len" to "alloc_len".

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

6 years ago[dhcp] Remove redundant length fields in struct dhcp_packet
Michael Brown [Tue, 30 Nov 2010 00:22:49 +0000 (00:22 +0000)] 
[dhcp] Remove redundant length fields in struct dhcp_packet

The max_len field is never used, and the len field is used only by
dhcp_tx().  Remove these two fields, and perform the necessary trivial
calculation in dhcp_tx() instead.

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

6 years ago[hermon] Fix incorrectly-padded sense_port structure
Michael Brown [Fri, 24 Dec 2010 01:10:26 +0000 (01:10 +0000)] 
[hermon] Fix incorrectly-padded sense_port structure

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

6 years ago[igbvf] Add igbvf driver
Alex Williamson [Thu, 16 Dec 2010 03:49:32 +0000 (20:49 -0700)] 
[igbvf] Add igbvf driver

Driver for Intel 82576 based virtual functions, based on Intel source
code available at:

    http://sourceforge.net/projects/e1000  (igbvf-1.0.7)

Based on initial port from Eric Keller <ekeller@princeton.edu>.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

6 years ago[dhcp] Use Ethernet-compatible chaddr, if possible
Michael Brown [Wed, 15 Dec 2010 18:29:20 +0000 (18:29 +0000)] 
[dhcp] Use Ethernet-compatible chaddr, if possible

For IPoIB, we currently use the hardware address (i.e. the eight-byte
GUID) as the DHCP chaddr.  This works, but some PXE servers (notably
Altiris RDP) refuse to respond if the chaddr field is anything other
than six bytes in length.

We already have the notion of an Ethernet-compatible link-layer
address, which is used in the iBFT (the design of which similarly
fails to account for non-Ethernet link layers).  Use this as the first
preferred alternative to the actual link-layer address when
constructing the DHCP chaddr field.

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

6 years ago[pxe] Improve pxe_udp debug messages
Michael Brown [Wed, 15 Dec 2010 15:25:08 +0000 (15:25 +0000)] 
[pxe] Improve pxe_udp debug messages

The PXE debugging messages have remained pretty much unaltered since
Etherboot 5.4, and are now difficult to read in comparison to most of
the rest of iPXE.

Bring the pxe_udp debug messages up to normal iPXE standards.

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

7 years ago[iscsi] Include both DNS addresses in iBFT, if available
Michael Brown [Thu, 9 Dec 2010 15:35:02 +0000 (15:35 +0000)] 
[iscsi] Include both DNS addresses in iBFT, if available

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

7 years ago[settings] Add fetch_ipv4_array_setting()
Michael Brown [Thu, 9 Dec 2010 15:34:12 +0000 (15:34 +0000)] 
[settings] Add fetch_ipv4_array_setting()

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

7 years ago[debug] Add DBG_MD5() and related macros
Michael Brown [Sun, 5 Dec 2010 19:38:01 +0000 (19:38 +0000)] 
[debug] Add DBG_MD5() and related macros

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

7 years ago[legal] Add missing copyright header and FILE_LICENCE macro
Michael Brown [Sun, 5 Dec 2010 19:19:19 +0000 (19:19 +0000)] 
[legal] Add missing copyright header and FILE_LICENCE macro

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

7 years ago[fnrec] Enhance function recording
Michael Brown [Sat, 4 Dec 2010 02:55:11 +0000 (02:55 +0000)] 
[fnrec] Enhance function recording

Enhance the information collected by the function recorder to include
the call site and entry/exit counts.  This allows fnrec.pl to produce
a call tree such as:

    step (from core/getkey.c:46 = 0x17e90) {
      ref_increment (from core/process.c:93 = 0x73ec) { }
      net_step (from core/process.c:96 = 0x73f1) {
        net_poll (from net/netdevice.c:741 = 0xbce6) {
          netdev_poll (from net/netdevice.c:700 = 0xbc58) { }
          netdev_rx_dequeue (from net/netdevice.c:709 = 0xbc65) { }
        }
      }
      ref_decrement (from core/process.c:96 = 0x73f9) { }
    }

Note that inlined functions are reported, confusingly, as extra calls
to the *containing* function.  Minimise this confusion by adding the
attribute "no_instrument_function" to all functions declared as
inline.  (Static functions that have been inlined autonomously by gcc
will still be problematic, but these are far fewer in number.)

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

7 years ago[pxe] Set correct PktType in PXENV_UNDI_ISR
Michael Brown [Mon, 6 Dec 2010 18:33:57 +0000 (18:33 +0000)] 
[pxe] Set correct PktType in PXENV_UNDI_ISR

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

7 years ago[pxe] Avoid touching fields that may not exist in PXENV_UNDI_GET_NIC_TYPE
Michael Brown [Sat, 4 Dec 2010 21:32:00 +0000 (21:32 +0000)] 
[pxe] Avoid touching fields that may not exist in PXENV_UNDI_GET_NIC_TYPE

Earlier versions of the PXE specification do not have the SubVendor_ID
and SubDevice_ID fields, and some NBPs may not provide space for them.
Avoid overwriting the contents of these fields, just in case.

This is similar to the problem with the BufferLimit field in
PXENV_GET_CACHED_INFO.

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

7 years ago[cmdline] Add "reboot" command
Michael Brown [Sat, 4 Dec 2010 02:51:26 +0000 (02:51 +0000)] 
[cmdline] Add "reboot" command

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

7 years ago[r8169] Disabling IRQs should not also acknowledge the IRQs
Michael Brown [Fri, 3 Dec 2010 20:55:59 +0000 (20:55 +0000)] 
[r8169] Disabling IRQs should not also acknowledge the IRQs

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

7 years ago[legal] Add FILE_LICENCE macro to some GPL-v2-or-later files
Shao Miller [Sat, 20 Mar 2010 17:09:39 +0000 (13:09 -0400)] 
[legal] Add FILE_LICENCE macro to some GPL-v2-or-later files

Changes were made to files where the licence text within the files
themselves confirms that the files are GPL version 2 or later.

Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[legal] Add FILE_LICENCE macro to some GPL-v2 files
Shao Miller [Sat, 20 Mar 2010 22:05:59 +0000 (18:05 -0400)] 
[legal] Add FILE_LICENCE macro to some GPL-v2 files

Changes were made to files where the licence text within the files
themselves confirms that the files are GPL version 2.

Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[libflat] Test A20 gate without switching to flat real mode
Michael Brown [Fri, 3 Dec 2010 04:44:10 +0000 (04:44 +0000)] 
[libflat] Test A20 gate without switching to flat real mode

Use the real-mode address ffff:0010 to access the linear address
0x100000, and so test whether or not the A20 gate is enabled without
requiring a switch into flat real mode (or some other addressing
mode).

This speeds up CPU mode transitions, and also avoids breaking the NBP
from IBM's Tivoli Provisioning Manager for Operating System
Deployment.  This NBP makes some calls to iPXE in VM86 mode rather
than true real mode and does not correctly emulate our transition into
flat real mode.

Interestingly, Tivoli's VMM *does* allow us to switch into protected
mode (though it patches our GDT so that we execute in ring 1 rather
than ring 0).  However, paging is still disabled and we have a 4GB
segment limit.  Being in ring 1 does not, therefore, restrict us in
any meaningful way; this has been verified by deliberately writing
garbage over Tivoli's own GDT (at address 0x02201010) during a
nominally VM86-mode PXE API call.  It's unclear precisely what
protection this VMM is supposed to be offering.

Suggested-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[hermon] Work around hardware stripping of VLAN tags
Michael Brown [Wed, 1 Dec 2010 18:51:29 +0000 (18:51 +0000)] 
[hermon] Work around hardware stripping of VLAN tags

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

7 years ago[vlan] Expose vlan_find() to network card drivers
Michael Brown [Wed, 1 Dec 2010 18:46:50 +0000 (18:46 +0000)] 
[vlan] Expose vlan_find() to network card drivers

Some network cards automatically strip the VLAN header, providing the
VLAN tag via a side channel such as a completion queue entry.  These
cards need to be able to report receive completions directly against
the relevant VLAN device.

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

7 years ago[vlan] Use "-" instead of "." as separator in VLAN device names
Michael Brown [Wed, 1 Dec 2010 17:15:52 +0000 (17:15 +0000)] 
[vlan] Use "-" instead of "." as separator in VLAN device names

VLAN device names have the form "netX.Y", e.g. "net0.5" for VLAN 5 on
net0.  This use of "." conflicts with the use of "." as the
hierarchical separator in settings block names, with the result that
VLAN device settings cannot be accessed by name.

It would be trivial to treat the VLAN device settings as being a child
of the trunk device settings, but this would cause the VLAN device
settings to be applied to the trunk device: for example, setting
"net0.5/ip" would then apply the IP address to both net0.5 and net0.

Fix by changing the VLAN device name to use "-" instead of ".": the
VLAN device "net0.5" is now "net0-5".

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

7 years ago[settings] Apply settings block name in register_settings()
Michael Brown [Wed, 1 Dec 2010 16:34:23 +0000 (16:34 +0000)] 
[settings] Apply settings block name in register_settings()

Pass the settings block name as a parameter to register_settings(),
rather than defining it with settings_init() (and then possibly
changing it by directly manipulating settings->name).

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

7 years ago[iscsi] Disambiguate the common EINVAL cases
Michael Brown [Wed, 1 Dec 2010 01:23:50 +0000 (01:23 +0000)] 
[iscsi] Disambiguate the common EINVAL cases

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

7 years ago[dns] Disambiguate "no nameserver" and "no DNS record" errors
Michael Brown [Wed, 1 Dec 2010 00:47:09 +0000 (00:47 +0000)] 
[dns] Disambiguate "no nameserver" and "no DNS record" errors

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

7 years ago[hermon] Fix inconsistent information in HERMON_SET_PORT_GENERAL_PARAM
Michael Brown [Mon, 29 Nov 2010 17:18:49 +0000 (17:18 +0000)] 
[hermon] Fix inconsistent information in HERMON_SET_PORT_GENERAL_PARAM

pptx and pfctx should not be set together, nor should pprx and pfcrx.

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

7 years ago[script] Remove "Aborting on <line>" message
Michael Brown [Mon, 29 Nov 2010 14:38:03 +0000 (14:38 +0000)] 
[script] Remove "Aborting on <line>" message

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

7 years ago[cmdline] Match user expectations for &&, ||, goto, and exit
Michael Brown [Mon, 29 Nov 2010 14:19:59 +0000 (14:19 +0000)] 
[cmdline] Match user expectations for &&, ||, goto, and exit

The && and || operators should be left-associative, since that is how
they are treated in most other languages (including C and Unix
shell).  For example, in the command:

  dhcp net0 && goto dhcp_ok || echo No DHCP on net0

if the "dhcp net0" fails then the "echo" should be executed.

After an "exit" or a successful "goto", further commands on the same
line should never be executed.  For example:

  goto somewhere && echo This should never be printed
  exit 0 && echo This should never be printed
  exit 1 && echo This should never be printed

An "exit" should cause the current shell or script to terminate and
return the specified exit status to its caller.  For example:

  chain test.ipxe && echo Success || echo Failure
    [in test.ipxe]
    #!ipxe
    exit 0

should echo "Success".

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

7 years ago[parseopt] Allow "0x"-prefixed hexadecimal values in integer-valued options
Michael Brown [Mon, 29 Nov 2010 14:18:43 +0000 (14:18 +0000)] 
[parseopt] Allow "0x"-prefixed hexadecimal values in integer-valued options

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

7 years ago[shell] Add "shell" command
Michael Brown [Sun, 28 Nov 2010 21:09:33 +0000 (21:09 +0000)] 
[shell] Add "shell" command

The "shell" command allows a script to enter an interactive shell,
which is potentially useful for troubleshooting.

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

7 years ago[build] Really use __builtin_offsetof() when available
Arkadiusz Miskiewicz [Sun, 28 Nov 2010 18:28:15 +0000 (18:28 +0000)] 
[build] Really use __builtin_offsetof() when available

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

7 years ago[build] Use __builtin_offsetof() when available
Michael Brown [Sun, 28 Nov 2010 17:26:27 +0000 (17:26 +0000)] 
[build] Use __builtin_offsetof() when available

Some newer versions of gcc (observed with a patched gcc 4.5.1) seem to
treat our offsetof() implementation as not being a compile-time
constant.  Fix by using __builtin_offsetof() when available.  (As with
the original offsetof() macro, this code is copied from the Linux
kernel's stddef.h.)

Reported-by: Arkadiusz Miskiewicz <arekm@maven.pl>
Signed-off-by: Michael Brown <mcb30@ipxe.org>

7 years ago[hermon] Enable priority flow control on the FCoE priority
Michael Brown [Sat, 27 Nov 2010 20:38:35 +0000 (20:38 +0000)] 
[hermon] Enable priority flow control on the FCoE priority

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