profile/ivi/syslinux.git
14 years agoMerge branch 'master' into pathbased
H. Peter Anvin [Tue, 30 Mar 2010 23:17:59 +0000 (16:17 -0700)]
Merge branch 'master' into pathbased

Resolved Conflicts:
com32/modules/Makefile
core/comboot.inc
core/cpuinit.inc
core/idle.inc

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agocore: move idle handling into protected mode
H. Peter Anvin [Tue, 30 Mar 2010 23:06:39 +0000 (16:06 -0700)]
core: move idle handling into protected mode

Do the actual idling in protected mode.  This both allows PM code a
more efficient interface, but also handles bugs in HVM implementations
which don't handle HLT in real mode.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agoNEWS: document MEMDISK offset fix syslinux-3.86-pre2
H. Peter Anvin [Tue, 30 Mar 2010 22:21:16 +0000 (15:21 -0700)]
NEWS: document MEMDISK offset fix

14 years agomemdisk: MBR not recognized correctly
Bodo Stroesser [Tue, 23 Mar 2010 16:56:29 +0000 (17:56 +0100)]
memdisk: MBR not recognized correctly

This fixes a small inaccuracy in memdisk:

get_disk_image_geometry() does not use MBR data to detect disk
geometry, since it checks MBR signature at wrong offset.

This normally does not cause problems, because memdisk guesses a
reasonable value, if no MBR is found.

Signed-off-by: Bodo Stroesser <bstroesser at ts.fujitsu.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agoNEWS: update
H. Peter Anvin [Tue, 30 Mar 2010 22:18:55 +0000 (15:18 -0700)]
NEWS: update

14 years agocore: remove do_idle from pollchar
H. Peter Anvin [Tue, 30 Mar 2010 22:13:58 +0000 (15:13 -0700)]
core: remove do_idle from pollchar

Remove do_idle from pollchar; it is highly inappropriate while, for
example, checking for a keypress during disk activity.  Furthermore,
make sure we reset the idle counter on events that indicate actual
disk activity.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agocpuid.c32: very simple low-level CPUID info CLI routine
H. Peter Anvin [Tue, 30 Mar 2010 22:05:17 +0000 (15:05 -0700)]
cpuid.c32: very simple low-level CPUID info CLI routine

Add a very simple com32 program to dump a single CPUID leaf.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agocore: Workaround for Xen HVM HLT-in-real-mode bug
H. Peter Anvin [Tue, 30 Mar 2010 22:02:36 +0000 (15:02 -0700)]
core: Workaround for Xen HVM HLT-in-real-mode bug

Xen HVM when used with the "vmxassist" program crashes if HLT is
executed in real mode.  Detect a version of Xen old enough to support
"vmxassist", and if it is found, then disable HLT.

See: https://bugzilla.redhat.com/show_bug.cgi?id=570496

Reported-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agoClean up the version/copyright strings reported via the comboot API
H. Peter Anvin [Tue, 30 Mar 2010 20:37:41 +0000 (13:37 -0700)]
Clean up the version/copyright strings reported via the comboot API

Skip leading garbage in the version and copyright strings reported via
the comboot API.  Clean up fixes for those, and document the situation.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agoMerge branch 'master' into pathbased
H. Peter Anvin [Tue, 30 Mar 2010 00:34:22 +0000 (17:34 -0700)]
Merge branch 'master' into pathbased

Resolved Conflicts:
MCONFIG.embedded
com32/MCONFIG
com32/include/com32.h
core/com32.inc
core/pxelinux.asm
doc/comboot.txt

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agocom32: export the filename of a com32 module to the module itself
H. Peter Anvin [Mon, 29 Mar 2010 23:58:30 +0000 (16:58 -0700)]
com32: export the filename of a com32 module to the module itself

Export the filename of the com32 module to the module itself, setting
argv[0].

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agoMCONFIG: update gcc options for embedded and com32
H. Peter Anvin [Mon, 29 Mar 2010 20:50:45 +0000 (13:50 -0700)]
MCONFIG: update gcc options for embedded and com32

Update the gcc options used for embedded and for com32 and make sure
they match.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agomboot: set boot loader name
H. Peter Anvin [Mon, 29 Mar 2010 20:22:45 +0000 (13:22 -0700)]
mboot: set boot loader name

Set the boot loader name based on syslinux_version()->version_string.
Based on a prior patch by Sebastian Herbszt <herbszt@gmx.de>.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
14 years agogpllib: fix call to CPUID function 4
Sebastian Herbszt [Sun, 21 Mar 2010 20:55:00 +0000 (21:55 +0100)]
gpllib: fix call to CPUID function 4

Only call CPUID function 4 if cpuid_level indicates its availability.

Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: use MY_NAME for syslinux_banner
Sebastian Herbszt [Sun, 21 Mar 2010 12:23:17 +0000 (13:23 +0100)]
core: use MY_NAME for syslinux_banner

Use MY_NAME for syslinux_banner in isolinux and pxelinux.
This is already done in ldlinux and extlinux.

Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agodir.c32: show long directories in pages
H. Peter Anvin [Mon, 15 Mar 2010 05:01:19 +0000 (22:01 -0700)]
dir.c32: show long directories in pages

When columnizing large directories, columnize only inside of a page,
i.e. show:

a d g
b e h
c f i

j m p
k n q
l o r

This seems to have the best readability.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofat: fix the type of get_inode_mode()
H. Peter Anvin [Wed, 10 Mar 2010 05:20:55 +0000 (21:20 -0800)]
fat: fix the type of get_inode_mode()

get_inode_mode() returns enum dirent_type.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoiso9660: set the type of get_inode_type()
H. Peter Anvin [Wed, 10 Mar 2010 05:19:09 +0000 (21:19 -0800)]
iso9660: set the type of get_inode_type()

get_inode_type() returns enum dirent_type.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofs: get rid of enum inode_mode
H. Peter Anvin [Tue, 9 Mar 2010 23:48:24 +0000 (15:48 -0800)]
fs: get rid of enum inode_mode

Replace enum inode_mode with the equivalent enum dirent_type.

14 years agobtrfs: Implement readdir operation
Alek Du [Tue, 9 Mar 2010 05:34:03 +0000 (13:34 +0800)]
btrfs: Implement readdir operation

Tested with dir.c32. Also use the new IFTODT macro to convert fs inode
mode to internal dirent mode.

Signed-off-by: Alek Du <alek.du@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agosys/dirent.h: conversion macros between d_type and st_mode
H. Peter Anvin [Tue, 9 Mar 2010 05:04:24 +0000 (21:04 -0800)]
sys/dirent.h: conversion macros between d_type and st_mode

Conversion macros to change between d_type and st_mode values.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoloadconfig: replace printf() with dprintf()
H. Peter Anvin [Tue, 9 Mar 2010 04:56:55 +0000 (20:56 -0800)]
loadconfig: replace printf() with dprintf()

It's a debugging statement, just dprintf() it.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoChanges missing from previous checkin
H. Peter Anvin [Mon, 8 Mar 2010 05:27:15 +0000 (21:27 -0800)]
Changes missing from previous checkin

Add files missing from previous checkin...

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: move port allocation to a separate file; use dynamic port for DNS
H. Peter Anvin [Mon, 8 Mar 2010 05:05:51 +0000 (21:05 -0800)]
pxe: move port allocation to a separate file; use dynamic port for DNS

Move all local port number allocation to a separate file, and use that
API to allocate a dynamic port number for DNS queries.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: make have_uuid a bool
H. Peter Anvin [Mon, 8 Mar 2010 04:50:35 +0000 (20:50 -0800)]
pxe: make have_uuid a bool

Make have_uuid a bool, and clarify the logic for setting it.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: don't bother zeroing the disk cache and heap
H. Peter Anvin [Sun, 7 Mar 2010 05:44:42 +0000 (21:44 -0800)]
core: don't bother zeroing the disk cache and heap

No point in zeroing out the disk cache and the heap.  Put those in a
.hugebss section which we align, but don't zero.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: page-align .earlybss
H. Peter Anvin [Sun, 7 Mar 2010 05:30:56 +0000 (21:30 -0800)]
core: page-align .earlybss

Leave the entire first page unmolested.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: use assembly for the .stack section
H. Peter Anvin [Sun, 7 Mar 2010 05:29:47 +0000 (21:29 -0800)]
core: use assembly for the .stack section

Use assembly to define the .stack section, so that it get proper
attributes.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: use an inode structure for pxe syslinux-4.00-pre36
H. Peter Anvin [Sun, 7 Mar 2010 02:08:28 +0000 (18:08 -0800)]
pxe: use an inode structure for pxe

Use an inode structure for PXE as well.  Even though this is really
rather superfluous in the case of PXE, it eliminates an ugly special
case in the generic code.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agomem: increase the heap size to 128K
H. Peter Anvin [Sun, 7 Mar 2010 02:02:35 +0000 (18:02 -0800)]
mem: increase the heap size to 128K

Use 128K for the heap, to allow TFTP buffers to be allocated there.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agodir.c32: allow "dir" without an argument to mean "dir ." syslinux-4.00-pre35
H. Peter Anvin [Sat, 6 Mar 2010 23:13:36 +0000 (15:13 -0800)]
dir.c32: allow "dir" without an argument to mean "dir ."

People logically expect "dir" to display the current directory.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoext2: return the correct file types from readdir()
H. Peter Anvin [Sat, 6 Mar 2010 23:07:53 +0000 (15:07 -0800)]
ext2: return the correct file types from readdir()

Return the global file types, not the ext2-specific ones.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agodir.c32: sort, columize and page the output
H. Peter Anvin [Sat, 6 Mar 2010 22:52:35 +0000 (14:52 -0800)]
dir.c32: sort, columize and page the output

Make the output of dir.c32 actually usable for an average user.
Present the directory contents sorted in columns, and pause for every
screenful.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore/fs: clean up, fix and improve the internal readdir() interfaces
H. Peter Anvin [Sat, 6 Mar 2010 22:51:08 +0000 (14:51 -0800)]
core/fs: clean up, fix and improve the internal readdir() interfaces

- Avoid a completely unnecessary malloc/free pair by passing a pointer
  to the filesystem driver;
- Make sure d_reclen is always set correctly;
- Make sure the d_type field is set correctly.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agodirent.h: types for the d_type field
H. Peter Anvin [Sat, 6 Mar 2010 22:50:20 +0000 (14:50 -0800)]
dirent.h: types for the d_type field

Add an enum for the DT_* constants for the d_type field.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agostdcon: make the screen size available
H. Peter Anvin [Sat, 6 Mar 2010 22:49:40 +0000 (14:49 -0800)]
stdcon: make the screen size available

Make the screen size available when using stdcon, not just ansicon.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoqsort: handle the case of zero entries
H. Peter Anvin [Sat, 6 Mar 2010 22:49:10 +0000 (14:49 -0800)]
qsort: handle the case of zero entries

Avoid bugs when the qsorted array is empty.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoAdd 32-bit versions of open file/close file
H. Peter Anvin [Sat, 6 Mar 2010 19:55:57 +0000 (11:55 -0800)]
Add 32-bit versions of open file/close file

Add 32-bit API calls for open file and close file.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofat: fixing filenames with multiple-of-13 names broke all others syslinux-4.00-pre34
H. Peter Anvin [Sat, 6 Mar 2010 05:02:54 +0000 (21:02 -0800)]
fat: fixing filenames with multiple-of-13 names broke all others

The fix for filenames with names that were multiples of 13 broke all
*other* filenames.  Fix both, this time...

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoMerge remote branch 'origin/master' into pathbased
H. Peter Anvin [Fri, 5 Mar 2010 19:28:06 +0000 (11:28 -0800)]
Merge remote branch 'origin/master' into pathbased

Resolved Conflicts:
version

14 years agoMerge remote branch 'origin/master' into pathbased syslinux-4.00-pre33
H. Peter Anvin [Fri, 5 Mar 2010 19:22:52 +0000 (11:22 -0800)]
Merge remote branch 'origin/master' into pathbased

14 years agoNEWS, version: update for 3.86 syslinux-3.86-pre1
H. Peter Anvin [Fri, 5 Mar 2010 19:19:16 +0000 (11:19 -0800)]
NEWS, version: update for 3.86

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agochain.c32: Fix chaining to MBRs
H. Peter Anvin [Fri, 5 Mar 2010 19:13:28 +0000 (11:13 -0800)]
chain.c32: Fix chaining to MBRs

The change to load the bootsector even when loading a bootstrap from a
file broke the handing of chainloading the MBR of a disk.  Fix this.

Debugging-info-by: Thomas Mieslinger <thomas.mieslinger@lundl.de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoVFAT: handle filenames with are exact multiples of 13
H. Peter Anvin [Fri, 5 Mar 2010 18:58:42 +0000 (10:58 -0800)]
VFAT: handle filenames with are exact multiples of 13

Filenames in VFAT that are exact multiples of 13 are not
null-terminated; handle that particular subcase.

Reported-by: Gert Hulselmans <gerth@zytor.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agolmalloc: add <string.h> for lzalloc
H. Peter Anvin [Fri, 5 Mar 2010 18:29:11 +0000 (10:29 -0800)]
lmalloc: add <string.h> for lzalloc

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoreaddir: replace opendir/readdir/closedir API with a 32-bit API
H. Peter Anvin [Fri, 5 Mar 2010 06:54:07 +0000 (22:54 -0800)]
readdir: replace opendir/readdir/closedir API with a 32-bit API

The 16-bit API to opendir/readdir/closedir was confused, had a memory
leak, and was incompatible with Syslinux 3.x anyway.  Replace it with
a pure 32-bit API.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoextlinux: centralize file flags setting; add FAT support syslinux-4.00-pre32
H. Peter Anvin [Fri, 5 Mar 2010 00:54:10 +0000 (16:54 -0800)]
extlinux: centralize file flags setting; add FAT support

Centralize the poking at file flags.
Add FAT support to file flags setting (S bit).

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoextlinux: don't report failure after writing a FAT superblock
H. Peter Anvin [Fri, 5 Mar 2010 00:37:49 +0000 (16:37 -0800)]
extlinux: don't report failure after writing a FAT superblock

Missing parens made us return failure after successfully writing a FAT
superblock.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofat: fix longname matching
H. Peter Anvin [Fri, 5 Mar 2010 00:36:32 +0000 (16:36 -0800)]
fat: fix longname matching

Fix longname matching, which was broken due to missing counter
decrement.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agobtrfs: remove global fs ptr and clean up code
Alek Du [Wed, 3 Mar 2010 07:55:15 +0000 (15:55 +0800)]
btrfs: remove global fs ptr and clean up code

Signed-off-by: Alek Du <alek.du@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agobtrfs: get rid of unnecessary _fs variable
H. Peter Anvin [Wed, 3 Mar 2010 03:11:45 +0000 (19:11 -0800)]
btrfs: get rid of unnecessary _fs variable

Get rid of the unnecessary _fs variable in btrfs_fs_init().  The
compiler would have optimized it out anyway, but it's cleaner if it's
in the source.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agobtrfs: Implement next_extent and call generic_getfssec
Alek Du [Tue, 2 Mar 2010 06:35:22 +0000 (14:35 +0800)]
btrfs: Implement next_extent and call generic_getfssec

Now multiple extent allocation is supported.
Also fixed the symlink file handling and fs_init typo.

Signed-off-by: Alek Du <alek.du@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: don't allow URL parsing to produce zero bytes; retune
H. Peter Anvin [Mon, 1 Mar 2010 17:01:27 +0000 (09:01 -0800)]
pxe: don't allow URL parsing to produce zero bytes; retune

Don't allow URL escapes to produce zero bytes (%00).  Also, assume
TFTP URLs are going to be less common than "plain" filenames, so defer
the type testing until we know it's a URL.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoAdd simplified toupper, tolower, str[n]casecmp to core
H. Peter Anvin [Mon, 1 Mar 2010 16:54:36 +0000 (08:54 -0800)]
Add simplified toupper, tolower, str[n]casecmp to core

(Missing from previous checkin)

Add simplified toupper(), tolower() and str[n]casecmp()
implementations to the core, good enough for ASCII e.g. for use in URL
parsing, or in config file decoding.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: handle tftp:// URLs natively
H. Peter Anvin [Mon, 1 Mar 2010 07:08:52 +0000 (23:08 -0800)]
pxe: handle tftp:// URLs natively

Handle tftp:// URLs natively, instead of relying on gPXE.  This also
allows for specifying a nonstandard TFTP port.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: add a single-tick timeout for PXE stacks which eat transmits
H. Peter Anvin [Mon, 1 Mar 2010 06:15:45 +0000 (22:15 -0800)]
pxe: add a single-tick timeout for PXE stacks which eat transmits

Add a single-tick first-round timeout for PXE stacks which eat the
first transmit under certain circumstances, i.e. gPXE if the ARP table
isn't populated yet.

TODO: encapsulate all send packet/wait for reply code into a common
function.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agogfxboot: remove 16-bit gfxboot module
H. Peter Anvin [Mon, 1 Mar 2010 06:09:23 +0000 (22:09 -0800)]
gfxboot: remove 16-bit gfxboot module

Get rid of the 16-bit gfxboot module; use gfxboot.c32 instead.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofs: add no_next_extent() dummy function
H. Peter Anvin [Mon, 1 Mar 2010 05:55:59 +0000 (21:55 -0800)]
fs: add no_next_extent() dummy function

Add a no_next_extent() dummy function for filesystems (like iso9660)
which should never end up calling next_extent (because there is only
one extent...)

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: fs: get rid of the prev_extent member
H. Peter Anvin [Mon, 1 Mar 2010 05:50:04 +0000 (21:50 -0800)]
core: fs: get rid of the prev_extent member

The prev_extent member was only ever used transiently; instead pass
the new lstart in as an argument and leave the previous value of
next_extent unmolested and thus can be used in-place.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: get rid of unmangle_name completely syslinux-4.00-pre31
H. Peter Anvin [Mon, 1 Mar 2010 05:12:46 +0000 (21:12 -0800)]
core: get rid of unmangle_name completely

The notion of "mangle name" is now restricted to producing a canonical
representation, e.g. changing \ -> / for FAT filesystems.  However,
the resulting mangled name is now always human-readable, so there
never is any reason to unmangle a name.

Get rid of not just the mangling, but of the resulting unmangled-name
buffers and so on.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: remove unmangle_name
H. Peter Anvin [Mon, 1 Mar 2010 05:04:50 +0000 (21:04 -0800)]
core: remove unmangle_name

Remove the now-obsolete unmangle_name method.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: add missing dependencies
H. Peter Anvin [Mon, 1 Mar 2010 05:04:16 +0000 (21:04 -0800)]
core: add missing dependencies

We need to account for dependences as far down as we care about.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: change debugging message to dprintf()
H. Peter Anvin [Mon, 1 Mar 2010 04:58:38 +0000 (20:58 -0800)]
pxe: change debugging message to dprintf()

Marking debug messages is what dprintf() is for...

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agomemdisk: drop DEBUG from unzip.c
H. Peter Anvin [Mon, 1 Mar 2010 03:30:42 +0000 (19:30 -0800)]
memdisk: drop DEBUG from unzip.c

DEBUG doesn't work in unzip.c/inflate.c, so always #undef it.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: drop UDP close from unload sequence
H. Peter Anvin [Mon, 1 Mar 2010 03:29:48 +0000 (19:29 -0800)]
pxe: drop UDP close from unload sequence

UDP close is part of the reset sequence, not the unload sequence.  Now
we always execute the reset sequence, so drop it from the unload
sequence.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: don't use "const volatile" in __jiffies definition
H. Peter Anvin [Mon, 1 Mar 2010 03:28:54 +0000 (19:28 -0800)]
core: don't use "const volatile" in __jiffies definition

It looks like some versions of gcc might have issues with "const
volatile".

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: revamp timeout, improve the unloading of gpxelinux
H. Peter Anvin [Mon, 1 Mar 2010 03:00:17 +0000 (19:00 -0800)]
pxe: revamp timeout, improve the unloading of gpxelinux

Revamp the timeout mechanism, to deal with UDP stacks (like gPXE!)
which lose transmit packets.  gPXE, in particular, will drop a UDP
packet if it doesn't have the recipient in the ARP cache.
Furthermore, it has the poor taste to not even send back an error.

Also, always unload gPXE when present, before exiting.  This should
let us clean up low memory better.  Reconsider if this turns out to be
too slow.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agodprintf: make usable on hardware
H. Peter Anvin [Mon, 1 Mar 2010 02:53:47 +0000 (18:53 -0800)]
dprintf: make usable on hardware

Actually configure the serial port used for dprintf, so we can
actually use it on real hardware.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocom32/lib: remove unused definitions
H. Peter Anvin [Mon, 1 Mar 2010 02:53:08 +0000 (18:53 -0800)]
com32/lib: remove unused definitions

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoMCONFIG.embedded: make sure to honor options in MCONFIG.local
H. Peter Anvin [Mon, 1 Mar 2010 02:52:14 +0000 (18:52 -0800)]
MCONFIG.embedded: make sure to honor options in MCONFIG.local

In particular, make sure we can honor debug options in MCONFIG.local.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxelinux: allow "localboot -1" to do INT 18h, just like !pxelinux
H. Peter Anvin [Sun, 28 Feb 2010 23:14:45 +0000 (15:14 -0800)]
pxelinux: allow "localboot -1" to do INT 18h, just like !pxelinux

Allow "localboot -1" to invoke INT 18h, as it does on other
derivatives.  Perhaps that can help track down systems on which the
normal return path just isn't working.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoMCONFIG: include MCONFIG.local if one exists
H. Peter Anvin [Sun, 28 Feb 2010 02:57:07 +0000 (18:57 -0800)]
MCONFIG: include MCONFIG.local if one exists

Allow for an MCONFIG.local as a handier way to set things like debug
options.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: drop accidental checkin of -DDEBUG=1 syslinux-4.00-pre30
H. Peter Anvin [Sun, 28 Feb 2010 02:48:37 +0000 (18:48 -0800)]
core: drop accidental checkin of -DDEBUG=1

We should not be compiling with -DDEBUG=1 by default!

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: fix and simplify generic_getfssec() syslinux-4.00-pre29
H. Peter Anvin [Sat, 27 Feb 2010 04:40:21 +0000 (20:40 -0800)]
core: fix and simplify generic_getfssec()

Both simplify and fix generic_getfssec().  The previous version would
occasionally request the same extent twice from the underlying layer.
This is not a big deal for ext2fs for example, but is *very* expensive
on FAT, where any out-of-order next_extent() call means walking the
FAT from the beginning.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoext2: use generic_getfssec syslinux-4.00-pre28
H. Peter Anvin [Sat, 27 Feb 2010 02:15:55 +0000 (18:15 -0800)]
ext2: use generic_getfssec

Use generic_getfssec for ext2.

NOTE: Something seems wrong with the generic_getfssec() loop; running
this on an ext2 filesystem ends up with the code looking up the same
extent twice in a row, which should not happen.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofat: use generic_getfssec(), fix generic_getfssec(), add dprintf
H. Peter Anvin [Sat, 27 Feb 2010 01:15:35 +0000 (17:15 -0800)]
fat: use generic_getfssec(), fix generic_getfssec(), add dprintf

Use generic_getfssec() for the FAT filesystem.  Do a bunch of
calculations based on clusters rather than on sectors, so we don't
have to do the same thing N times for N sectors per cluster.

Fix boundary conditions in generic_getfssec().  Adjust iso9660 to
match the resulting interface change.

Add dprintf's to generic_getfssec() and a few other routines.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoiso9660: use boot_info_table and fix hybrid mode
H. Peter Anvin [Fri, 26 Feb 2010 21:18:26 +0000 (13:18 -0800)]
iso9660: use boot_info_table and fix hybrid mode

In hybrid disk mode, one block will generally *not* equal one sector.
Use the boot_info_table to find the primary volume descriptor.
Remove the now-unused cdrom_read_blocks().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoiso9660: use generic_getfssec()
H. Peter Anvin [Fri, 26 Feb 2010 20:12:12 +0000 (12:12 -0800)]
iso9660: use generic_getfssec()

Use generic_getfssec() for iso9660.  This is a particularly simple
case, since all iso9660 files (that we support) are contiguous.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofs: add generic getfssec
H. Peter Anvin [Fri, 26 Feb 2010 20:11:18 +0000 (12:11 -0800)]
fs: add generic getfssec

Add a generic getfssec method which operate on cached extents. This
should avoid the need to each filesystem to implement its own getfssec
loop.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore/readdir.c: remove unused variable
H. Peter Anvin [Fri, 26 Feb 2010 20:10:29 +0000 (12:10 -0800)]
core/readdir.c: remove unused variable

Remove an unused variable in opendir().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofs/iso9660: remove unused variables
H. Peter Anvin [Fri, 26 Feb 2010 19:43:44 +0000 (11:43 -0800)]
fs/iso9660: remove unused variables

Remove variables which are no longer used.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agodos: make sure we don't look like a Windows image
H. Peter Anvin [Fri, 26 Feb 2010 18:16:48 +0000 (10:16 -0800)]
dos: make sure we don't look like a Windows image

Some tools might assume that the reloc offset being 64 automatically
means it's really a Windows file.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agodoc: document 32-bit-only API calls
H. Peter Anvin [Thu, 25 Feb 2010 06:20:19 +0000 (22:20 -0800)]
doc: document 32-bit-only API calls

As long as we have a pretence of an ABI we should at least keep it
updated.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoopendir: remove unnecessary buffer pointer
H. Peter Anvin [Thu, 25 Feb 2010 06:16:24 +0000 (22:16 -0800)]
opendir: remove unnecessary buffer pointer

We don't need to abuse the InitRD buffer anymore.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoiso9660: make readdir() work syslinux-4.00-pre27
H. Peter Anvin [Thu, 25 Feb 2010 05:42:08 +0000 (21:42 -0800)]
iso9660: make readdir() work

Make readdir work on iso9660.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoopendir: use internal protected-mode interfaces
H. Peter Anvin [Thu, 25 Feb 2010 05:31:02 +0000 (21:31 -0800)]
opendir: use internal protected-mode interfaces

No need to do yet another bounce through lowmem for no good reason.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofs: searchdir: handle opening a directory
H. Peter Anvin [Thu, 25 Feb 2010 05:29:33 +0000 (21:29 -0800)]
fs: searchdir: handle opening a directory

Handle the case of opening a directory.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agofs: cleanups: use PVT() macro for all filesystems; iso9660 cleanups
H. Peter Anvin [Thu, 25 Feb 2010 05:04:29 +0000 (21:04 -0800)]
fs: cleanups: use PVT() macro for all filesystems; iso9660 cleanups

Use a PVT() macro and a structure to access the private inode data for
all filesystems, instead of open-coding the type.

Use a packed structure for iso9660, instead of open-coding pointer
casts.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoisolinux: 7C00h -> TEXT_START
H. Peter Anvin [Thu, 25 Feb 2010 02:38:17 +0000 (18:38 -0800)]
isolinux: 7C00h -> TEXT_START

Use the TEXT_START macro instead of hard-coding 7C00h.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoisolinux: drop dependency on core_xfer_buf in self-loader syslinux-4.00-pre26
H. Peter Anvin [Thu, 25 Feb 2010 02:27:29 +0000 (18:27 -0800)]
isolinux: drop dependency on core_xfer_buf in self-loader

Drop the dependency on core_xfer_buf in the self-loader, and instead
load the data aligned to an offset, and then bulk-move it into place.
diskstart.inc will need to do something similar if/when support is
added for > 1K sectors on BIOS.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore/mem: better dprintf()
H. Peter Anvin [Thu, 25 Feb 2010 02:25:58 +0000 (18:25 -0800)]
core/mem: better dprintf()

Add a few dprintf() statements to the core malloc/free which makes it
easier to track down bugs.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: fix double free of pathbuf, constify iget filename, fix iso9660
H. Peter Anvin [Thu, 25 Feb 2010 02:24:14 +0000 (18:24 -0800)]
core: fix double free of pathbuf, constify iget filename, fix iso9660

Fix double free of pathbuf in searchdir().
Constify the pathname passed to ->iget().
Major cleanups of the iso9660 filesystem; it would use insufficiently
dimensioned stack variables and do compares in a rather inefficient
manner.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocom32: replace hard-coded bounce buffer use in com32/lib syslinux-4.00-pre25
H. Peter Anvin [Wed, 24 Feb 2010 22:18:49 +0000 (14:18 -0800)]
com32: replace hard-coded bounce buffer use in com32/lib

Replace hard-coded bounce buffer uses in com32/lib with lmalloc/lfree.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: fix lowmem malloc
H. Peter Anvin [Wed, 24 Feb 2010 22:16:15 +0000 (14:16 -0800)]
core: fix lowmem malloc

a) initialize *all* the head nodes
b) the lowmem heap needs to be paragraph (16 byte) aligned
c) use a dedicated tag value for headnodes.  The type code should be
   removed and replaced with special tag values for head node and
   free.
d) for libcom32 code called from the core, do NOT present a
   usable bounce buffer; we should only ever use lmalloc/lfree.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocom32: add lzalloc()
H. Peter Anvin [Wed, 24 Feb 2010 20:01:59 +0000 (12:01 -0800)]
com32: add lzalloc()

Add lzalloc().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agolmalloc: set errno on failure
H. Peter Anvin [Wed, 24 Feb 2010 19:58:42 +0000 (11:58 -0800)]
lmalloc: set errno on failure

The core function can't set the com32 errno, so we need to do it in
the wrapper.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocom32: wrapper functions for lowmem allocations
H. Peter Anvin [Wed, 24 Feb 2010 19:56:43 +0000 (11:56 -0800)]
com32: wrapper functions for lowmem allocations

lmalloc(), lfree(), lstrdup()

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: move aligned segments earlier
H. Peter Anvin [Wed, 24 Feb 2010 19:14:04 +0000 (11:14 -0800)]
core: move aligned segments earlier

Move the aligned segments downward, to provide for the largest
possible contiguous lowmem heap.  This minimizes the necessary lowmem
footprint.  (Note: the heap doesn't actually need to be contiguous,
but having it not be makes it harder to size.)

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agocore: use better malloc; add low memory malloc; fix com32 exit
H. Peter Anvin [Wed, 24 Feb 2010 06:32:32 +0000 (22:32 -0800)]
core: use better malloc; add low memory malloc; fix com32 exit

Use a better malloc for the core.  In particular, use the same core
that we should eventually be able to use for the entire system in
Syslinux 5 -- with module awareness, etc.

This code can also accommodate multiple heaps.  Set up a separate heap
for lowmem; the intent is to use explicit lowmem allocations instead
of the static bounce buffer.  The lowmem allocation is also exported
via the pmapi mechanism, so modules can safely allocate lowmem.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agopxe: clean up/fix generation of ipappend strings
H. Peter Anvin [Wed, 24 Feb 2010 03:35:11 +0000 (19:35 -0800)]
pxe: clean up/fix generation of ipappend strings

Clean up and fix the generation of the ipappend strings.  In
particular, BOOTIF= was generated into a buffer which was too small.
Put the buffer definitions in C while we're at it.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>