3 . 1 6   R E L E A S E   N O T E S 
===================================

QUICK CHANGE SUMMARY
====================
 * Adds native x86x crossbuild functionality
   build 32bit or 64bit versions from either environment via
   make ARCH=ia32|x86_64 (the ARCH IS case sensitive).
   make by itself will default to the native host arch.
 * Add console reset call during initialization. thanks A. Steinmetz
 * simplify output of no GOP warning text so it no longer looks like an error.
 * MAJOR: Fixed Fault crash when EFI memory map changes from under elilo.
   (from an outside interrupt in this case). When the EFI Memory map 
   changes after elilo has already built boot params to pass to the 
   kernel the EFI call to ExitBootSvcs just prior to boot will fail 
   because elilo has the old map key. This is valid EFI behavior, elilo
   retries to pick up the new memory map and key but had already freed 
   the start params portion of boot params resulting in a NULL DEREF
   crash reset once it hands the now bogus boot params to the kernel on
   the 2nd successful call to exit efi and boot. 
	Thanks to Jerry Hoemann @ HP for reporting this bug.
 * minor bugfix, fixed -m option broken. thanks Allan-lsk.
   
BUILD NOTES
====================
 You will need the following toolchain to build elilo-3.14 from source
 the elilo build environment is optimized for Debian and Debian based distros.
 elilo-3.16 was built in the squeeze+(ubuntu 11.x) build environments except
 for itanium which is unchanged to best support legacy enterprise configs.
 Toolchain versions for this release were:
	x86x(32 & 64bit versions)
	* gnu-efi --> 3.0i-3
	* gcc ------> 4:4.4.4-1ubuntu2
	* binutils -> 2.20.51.20100908-0ubuntu2
	ia64
	* gnu-efi --> 3.0e-2
	* gcc ------> 4.3.2-2
	* binutils -> 2.18.1~cvs20080103-7

 * if you use a debian based build environment you will have no problems
 and setting it up is simple. you will be able to build elilo in 3 steps:
 1. apt-get install gnu-efi, gcc, binutils
 2. apt-get source elilo (or download elilo-3.16 source from SourceForge.)
 3. extract source tarball and cd to ./$your-elilo-source and type $> make


 ** If you use the upstream toolchain tarballs(i.e. pre distro) you will need 
    to move some files around for elilo build to work. 
 GNU-EFI (provides the efi 1.10 and uefi 2.x libraries & api)
 -------
 gnu-efi libraries are installed to /usr/local/lib by the 
 upstream gnu-efi source package. elilo expects them to be in system location 
 /usr/lib. efi includes may be located in /usr/local/include/efi. elilo 
 expects them to be in system location /usr/include/efi.
 [ The reason is LSB compliance ].

 BINUTILS (provides the elf conversion utility to produce efi bins)
 --------
 binutils provides objcopy which is installed to /usr/local/bin by binutils,
 elilo source expects it to be in /usr/bin.

 again this LSB compliance is taken care of by the distro's that fix
 the toolchains to install to the correct compliant system locations
 instead of the "user optional" location.

ELILO ON EFI X86_64
=====================
HARD REQUIREMENTS
  EFI + x86_64 REQUIRES an efi64 enabled linux kernel i.e. 2.6.21 or newer
  nothing earlier will work, 2.6.21 was the earliest kernel that efi64 
  support went into. You need to compile the kernel with CONFIG_EFI 
  kernel option ON.
  x86_64 platforms with UEFI 2.0 firmware deprecate UGA protocol
  and therefore only the Graphics Output Protocol (GOP) is supported. For
  such platforms, the kernel must be compiled with EFI_FB option ON. This
  will enable early boot messages on the console. Elilo for x86_64
  attempts to query EFI for GOP support and if it fails it defaults to
  text mode which may or may not show you early console ouput depends on
  your efi console settings and physical setup. Elilo has no way to know
  if your console settings are messed up.

WORKING ELILO.CONF FOR EFI X86_64 EXAMPLE
  Here is my elilo.conf from my UEFI2.0/x86_64 (with nvidia pcie add on 
  card, i.e. your vga= kernel param may be different) workstation which uses GOP.
  Here is a partial kernel vga table I was able to find and add here.
Colours   640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
  -------+--------------------------------------------------------------
  4 bits |    ?       ?     0x302      ?        ?        ?         ?
  8 bits |  0x300   0x301   0x303    0x305    0x161    0x307     0x31C
 15 bits |    ?     0x310   0x313    0x316    0x162    0x319     0x31D
 16 bits |    ?     0x311   0x314    0x317    0x163    0x31A     0x31E
 decimal |           d785    d788     d791
 24 bits |    ?     0x312   0x315    0x318      ?      0x31B     0x31F

Additionally from ...kernel-source/Documentation/Boot.txt...
  vga=<mode>
        <mode> here is either an integer (in C notation, either
        decimal, octal, or hexadecimal) or one of the strings
        "normal" (meaning 0xFFFF), "ext" (meaning 0xFFFE) or "ask"
        (meaning 0xFFFD).  This value should be entered into the
        vid_mode field, as it is used by the kernel before the command
        line is parsed.

  example below shows me console output, what elilo is doing, and kernel boot.
  vga=normal with efi console input output directed to graphics card should 
  work as well.

  default=UBUNTU
  chooser=simple
  verbose=5
  delay=30
  append="root=/dev/sda3 vga=0x31e splash showopts"

  image=/vmlinuz-2.6.32-27-generic
          label="UBUNTU"
          description="Ubuntu 2.6.32-27-generic kernel"
          initrd=/initrd.img-2.6.32-27-generic


