General note on [U]EFI x86_64 support
-------------------------------------

The nomenclature EFI and UEFI are used interchangeably in this document.

Although the tools below are _not_ needed for building the kernel,
the needed bootloader support and associated tools for x86_64 platforms
with EFI firmware and specifications are listed below.

1. UEFI specification:  http://www.uefi.org

2. Booting Linux kernel on UEFI x86_64 platform requires bootloader
   support. Elilo with x86_64 support can be used.

3. x86_64 platform with EFI/UEFI firmware.

Mechanics:
---------
- Build the kernel with the following configuration.
	CONFIG_FB_EFI=y
	CONFIG_FRAMEBUFFER_CONSOLE=y
  If EFI runtime services are expected, the following configuration should
  be selected.
	CONFIG_EFI=y
	CONFIG_EFI_VARS=y or m		# optional
- Create a VFAT partition on the disk
- Copy the following to the VFAT partition:
	elilo bootloader with x86_64 support, elilo configuration file,
	kernel image built in first step and corresponding
	initrd. Instructions on building elilo	and its dependencies
	can be found in the elilo sourceforge project.
- Boot to EFI shell and invoke elilo choosing the kernel image built
  in first step.
- If some or all EFI runtime services don't work, you can try following
  kernel command line parameters to turn off some or all EFI runtime
  services.
	noefi		turn off all EFI runtime services
	reboot_type=k	turn off EFI reboot runtime service
- If the EFI memory map has additional entries not in the E820 map,
  you can include those entries in the kernels memory map of available
  physical RAM by using the following kernel command line parameter.
	add_efi_memmap	include EFI memory map of available physical RAM
