summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [release] Update version to 0.9.5 for releasev0.9.5Marty Connor2008-10-012-3/+3
|
* [arbel] Fix off-by-one error in the failure path in arbel_probe()Michael Brown2008-10-011-4/+4
|
* [hermon] Fix off-by-one error in the failure path in hermon_probe()Michael Brown2008-10-011-4/+4
|
* [makefile] Quote argument to sed containing []H. Peter Anvin2008-09-301-1/+1
| | | | | | | [] are shell metacharacters, and they can get confused by files in the local directory. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* [makefile] Avoid using ?=H. Peter Anvin2008-09-302-6/+6
| | | | | | | | ?= in a Makefile means that that variable can be overridden by the environment. This is confusing to users, especially with a generic name like "ARCH". Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* [tg3] Add PCI IDMichael Brown2008-09-291-0/+1
| | | | Reported working by Martin Kreiner <m.kreiner@levigo.de>
* [pcbios] Allow for larger-than-20-byte buffers in e820mangler.SMichael Brown2008-09-291-14/+45
| | | | | | | | | | Although the E820 API allows for a caller to provide only a 20-byte buffer, there exists at least one combination (HP BIOS, 32-bit WinPE) that relies on information found only in the "extended attributes" field, which requires a 24-byte buffer. Allow for up to a 64-byte E820 buffer, in the hope of coping with future idiocies like this one.
* [pcbios] Print INT 15,E820 extended attributes, if presentMichael Brown2008-09-291-3/+43
| | | | | | | | | | | | | The ACPI specification defines an additional 4-byte field at offset 20 for an E820 memory map entry. This field is presumably optional, since generally E820 gets given only a 20-byte buffer to fill. However, the bits of this optional field are defined as: bit 0 : region is enabled bit 1 : region is non-volatile memory rather than RAM so it seems as though callers that pass in only a 20-byte buffer may be missing out on some rather important information.
* [gdb] Fix a compiler warning that shows up only when assertions are enabledMichael Brown2008-09-291-2/+2
| | | | | gcc should (I think) be warning about this anyway, but seems to do so only when assertions are enabled for this object.
* [pcbios] Save/restore %es in INT 15,e820Michael Brown2008-09-291-0/+2
| | | | | | | Our INT 15,e820 code was setting %es=%ss (as part of the "look ahead in the memory map" logic), but failing to restore %es afterwards. This is a serious bug, but wasn't affecting many platforms because almost all callers seem to set %es=%ss anyway.
* [i386] Add dump_regs() debug callMichael Brown2008-09-291-0/+23
| | | | | Use as "call dump_regs" from any real-mode code within .text16. Should preserve all registers and flags.
* [hermon] Allocate only as much memory as is needed for ICM and ICM AUXMichael Brown2008-09-281-47/+62
| | | | | | Use individual page mappings rather than a single whole-region mapping, to avoid the waste of memory that occurs due to the constraint that each mapped block must be aligned on its own size.
* [iscsi] Fix LUN parsing in the iSCSI root-pathMichael Brown2008-09-281-11/+14
|
* [release] Update version post release to 0.9.4+Marty Connor2008-09-261-1/+1
|
* [release] Update version information for 0.9.4 releasev0.9.4Marty Connor2008-09-262-3/+3
|
* [settings] Allow for setting fetchers to fail in fetchf_hex()Michael Brown2008-09-261-0/+2
|
* [settings] Expose MAC address setting for general useMichael Brown2008-09-261-0/+1
|
* [romprefix] Fully clear the "Press B to boot..." message when INT19 is usedMichael Brown2008-09-261-1/+1
|
* [pcbios] Fetch INT 15,e820 entry directly into our e820 cacheMichael Brown2008-09-251-19/+9Star
| | | | | | | | | | | | | | | | | | | | Some BIOSes require us to pass in not only the continuation value (in %ebx) as returned by the previous call to INT 15,e820 but also the unmodified buffer (at %es:%di) as returned by the previous call to INT 15,e820. Apparently, someone thought it would be a worthwhile optimisation to fill in only the low dword of the "length" field and the low byte of the "type field", assuming that the buffer would remain unaltered from the previous call. This problem was being triggered by the "peek ahead" logic in get_mangled_e820(), which would read the next entry into a temporary buffer in order to be able to guarantee terminating the map with %ebx=0 rather than CF=1. (Terminating with CF=1 upsets some Windows flavours, despite being documented legal behaviour.) Work around this problem by always fetching directly into our e820 cache; that way we can guarantee that the underlying call always sees the previous buffer contents (and the same buffer address).
* [arbel] Allocate sufficient space for firmware bufferMichael Brown2008-09-251-1/+1
| | | | | | We were accidentally allocating only half the required amount of memory (given the alignment method) for the firmware buffer, leading to conflicts between the firmware buffer and gPXE code/data segments.
* [hermon] Allocate sufficient space for firmware bufferMichael Brown2008-09-251-1/+1
| | | | | | We were accidentally allocating only half the required amount of memory (given the alignment method) for the firmware buffer, leading to conflicts between the firmware buffer and gPXE code/data segments.
* [pcbios] Add facility for testing arbitrary E820 memory mapsMichael Brown2008-09-253-0/+112
| | | | | | | | | | We seem to be having issues with various E820 memory maps. These problems are often difficult to reproduce, requiring access to the specific system exhibiting the problem. Add a facility for hooking in a fake E820 map generator, using an arbitrary map defined in a C array, solely in order to be able to test the map-mangling code against arbitrary E820 maps.
* [crypto] Remove spurious #include "config.h"Michael Brown2008-09-251-2/+0Star
|
* [romprefix] Allow BANNER_TIMEOUT to control banners in romprefix.SMichael Brown2008-09-251-18/+26
| | | | | | | | In particular, allow BANNER_TIMEOUT=0 to inhibit the prompt banners altogether. Ironically, this request comes from the same OEM that originally required the prompts to be present during POST.
* [dhcp] Accept BOOTP as well as DHCPMichael Brown2008-09-252-7/+10
|
* [pxe] Enable interrupts before starting PXE NBP executionMichael Brown2008-09-241-0/+1
| | | | Based on a patch provided by XenSource for Etherboot 5.4.
* [pcbios] Inhibit INT 15 memory map hiding on brain-dead BIOSesMichael Brown2008-09-241-0/+27
| | | | | | | | | | | | | | Some really moronic BIOSes bring up the PXE stack via the UNDI loader entry point during POST, and then don't bother to unload it before overwriting the code and data segments. If this happens, we really don't want to leave INT 15 hooked, because that will cause any loaded OS to die horribly as soon as it attempts to fetch the system memory map. We use a heuristic to detect whether or not we are being loaded at the top of free base memory. If we determine that we are being loaded at some other arbitrary location in base memory, then we assume that it's not safe to hook INT 15.
* [settings] Add the uristring setting typeMichael Brown2008-09-241-0/+53
| | | | | | | | | | | | | | | This allows settings to be expanded in a way that is safe to include within a URI string, such as kernel http://10.0.0.1/boot.php?mf=${manufacturer:uristring} where the ${manufacturer} setting may contain characters that are not permitted (or have reserved purposes) within a URI. Since whitespace characters will be URI-encoded (e.g. "%20" for a space character), this also works around the problem that spaces within an expanded setting would cause the shell to split command-line arguments incorrectly.
* [uri] Add uri_encode() and uri_decode() functions for URI character encodingMichael Brown2008-09-242-0/+80
|
* [romprefix] If we hook INT 19, prompt before attempting bootMichael Brown2008-09-241-44/+107
| | | | | | | On non-BBS systems we hook INT 19, since there is no other way we can guarantee gaining control of the flow of execution. If we end up doing this, prompt the user before attempting boot, since forcibly capturing INT 19 is rather antisocial.
* [phantom] Skip command PEG initialisation if PEG is already runningMichael Brown2008-09-241-0/+11
| | | | | | | It is possible for the BIOS to use the UNDI API to bring up the NIC prior to system boot. If this happens, UNM_NIC_REG_CMDPEG_STATE will contain the value 0xf00f (UNM_NIC_REG_CMDPEG_STATE_INITIALIZE_ACK), and we should skip initialising the command PEG.
* [pcbios] Sanity-check the INT15,e820 and INT15,e801 memory mapsMichael Brown2008-09-241-0/+33
| | | | | Some systems seem to report insane memory maps (particularly at POST time). Detect and work around some of the common failure cases.
* [phantom] Omit an initialisation step now performed by the firmwareMichael Brown2008-09-241-2/+0Star
| | | | | | The firmware will now determine the right port mode on all cards, so the PXE driver doesn't have to set it. (Setting the port mode apparently breaks some newer cards.)
* [pxe] Display PXE_LOADER debug message after call to initialise()Michael Brown2008-09-231-3/+3
| | | | | | | At least one Dell system calls the UNDI loader entry point with the BIOS console disabled. The serial console is active only after a call to initialise(), so move the debug message in undi_loader() so that it can be displayed via the serial console.
* [relocate] Guard against systems that report empty memory regionsMichael Brown2008-09-231-5/+10
| | | | | | | | | If the INT 15,e820 memory map reports a region [0,0), this confuses the "truncate to even megabytes" logic, which ends up rounding the region 'down' to [0,fff00000). Fix by ensuring that the region's end address is at least 1, before we subtract 1 to obtain the "last byte in region" address.
* [memmap] Allow for 4GB+ systems in debug messageMichael Brown2008-09-231-3/+3
| | | | | | INT 15,e801 is capable of returning a memory range that extends to 4GB, so allow for this in the debug message that shows the data returned by INT 15,e801.
* [iscsi] Change default initiator name prefix to "iqn.2000-01.org.etherboot:"Michael Brown2008-09-191-1/+1
| | | | | | | | | | | | The domain etherboot.org was actually registered on 2000-01-09, not 2000-09-01. (To put it another way, it was registered on 1/9/2000 (US date format) rather than 1/9/2000 (sensible date format); this may illuminate the cause of the error.) "iqn.2000-09.org.etherboot:" is still valid as per RFC3720, but may be surprising to users, so change it to something less unexpected. Thanks to the anonymous contributor for pointing this one out.
* [undi] Scan for UNDI ROMs on 512-byte boundaries rather than 2kB boundariesMichael Brown2008-09-121-2/+2
| | | | | | | | | Apparently some BIOSes will place option ROMs on 512-byte boundaries. While this is against specification, it doesn't actually hurt anything, so we may as well increase our scan granularity to 512 bytes. Contributed by Luca <lucarx76@gmail.com>
* [util] Disable automatic CR->LF conversion in serial-console utilityMichael Brown2008-09-071-2/+2
| | | | | | DUET (the EFI test environment) seems not to handle LF, so inhibit the CR->LF conversion that the pty does for us by default. This doesn't affect operation of gPXE, which will happily accept either CR or LF.
* [pcbios] Add extra debugging messages relating to the system memory mapMichael Brown2008-09-073-4/+19
|
* [contrib] Bring bochs/qemu READMEs up to date with latest upstream codeMichael Brown2008-09-072-4/+4
|
* [pxe] Add a dummy PXENV+ entry point at UNDI_CS:0000Michael Brown2008-09-062-1/+13
| | | | | | | | | Wyse Streaming Manager server (WLDRM13.BIN) assumes that the PXENV+ entry point is at UNDI_CS:0000; apparently, somebody at Wyse has difficulty distinguishing between the words "may" and "must"... Add a dummy entry point at UNDI_CS:0000, which just jumps to the correct entry point.
* [multiboot] Allow for unspecified {load,bss}_end_addr for raw imagesMichael Brown2008-09-061-2/+5
| | | | | | | The multiboot specification states that, for raw images, if load_end_addr is zero then it should be interpreted as meaning "use the entire file", and if bss_end_addr is zero it should be interpreted as meaning "no bss".
* [util] Avoid calling fclose(NULL) in zbin.cEygene Ryabinkin2008-09-041-1/+2
| | | | | | | | Must check that argument to a fclose() is not NULL -- we can get to the 'err' label when file was not opened. fclose(NULL) is known to produce core dump on some platforms and we don't want zbin to fail so loudly. Signed-off-by: Eygene Ryabinkin <rea-fbsd@codelabs.ru>
* [libprefix] Add addr32 prefix required by older assemblersEygene Ryabinkin2008-09-041-1/+1
| | | | | | | | | | Explicitly state that we are using 32-bit addressing in 16-bit code. GNU as 2.15 (FreeBSD/amd64 7-STABLE) got confused that 32-bit registers are used in the code that was declared as 16-bit. Add explicit modifier 'addr32' to make assembler happy. Signed-off-by: Eygene Ryabinkin <rea-fbsd@codelabs.ru>
* [comboot] Add COMBOOT and COM32 supportDaniel Verkamp2008-08-2915-0/+1816
|
* [librm] Add rm stack copying functionsDaniel Verkamp2008-08-292-0/+48
|
* [librm] Make rm_sp and rm_ss globals againDaniel Verkamp2008-08-282-0/+4
|
* [libc] Mark setjmp and longjmp as __cdeclDaniel Verkamp2008-08-281-2/+2
|
* [pxe] Fill in UNDIROMID pointer in !PXE structureMichael Brown2008-08-284-6/+30
| | | | | | IBM's iSCSI Firmware Initiator checks the UNDIROMID pointer in the !PXE structure that gets created by the UNDI loader. We didn't previously fill this value in.