]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Shutdown using ACPI.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 11 Sep 2010 15:59:14 +0000 (17:59 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 11 Sep 2010 15:59:14 +0000 (17:59 +0200)
* grub-core/Makefile.core.def (halt): Add commands/acpihalt.c on i386-pc.
* grub-core/commands/acpihalt.c: New file.
* grub-core/commands/i386/pc/halt.c (grub_cmd_halt): Call grub_acpi_halt.
* include/grub/acpi.h (grub_acpi_fadt): New member pm1a.
(grub_acpi_halt): New proto.
(GRUB_ACPI_SLP_EN): New const.
(GRUB_ACPI_SLP_TYP_OFFSET): Likewise.
(GRUB_ACPI_OPCODE_*): New enum.
(GRUB_ACPI_EXTOPCODE_*): Likewise.

1  2 
ChangeLog
grub-core/Makefile.core.def
grub-core/commands/acpihalt.c
grub-core/commands/i386/pc/halt.c
include/grub/acpi.h

diff --cc ChangeLog
index 2ff4aeee94d42b95e1d388786fce3bf93d4b81d9,2a6d5e12a0a80e84b5cd45ece985a9f6da21ce38..b2164f905dc3cac91b34786492d5ae7a0e6b93f5
+++ b/ChangeLog
++2010-09-11  Vladimir Serbinenko  <phcoder@gmail.com>
++
++      Shutdown using ACPI.
++
++      * grub-core/Makefile.core.def (halt): Add commands/acpihalt.c on i386-pc.
++      * grub-core/commands/acpihalt.c: New file.
++      * grub-core/commands/i386/pc/halt.c (grub_cmd_halt): Call grub_acpi_halt.
++      * include/grub/acpi.h (grub_acpi_fadt): New member pm1a.
++      (grub_acpi_halt): New proto.
++      (GRUB_ACPI_SLP_EN): New const.
++      (GRUB_ACPI_SLP_TYP_OFFSET): Likewise.
++      (GRUB_ACPI_OPCODE_*): New enum.
++      (GRUB_ACPI_EXTOPCODE_*): Likewise.
++
 +2010-09-11  Tristan Gingold  <gingold@free.fr>
 +2010-09-11  Robert Millan  <rmh.grub@aybabtu.com>
 +2010-09-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * commands/lsacpi.c: New file.
 +      * grub-core/Makefile.core.def (lsacpi): New module.
 +      * include/grub/acpi.h (GRUB_ACPI_FADT_SIGNATURE): New definition.
 +      (GRUB_ACPI_MADT_SIGNATURE): Likewise.
 +      (grub_acpi_madt_entry_header): New struct.
 +      (grub_acpi_madt): Likewise.
 +      (grub_acpi_madt_entry_interrupt_override): Likewise.
 +      (grub_acpi_madt_entry_sapic): Likewise.
 +      (grub_acpi_madt_entry_lsapic): Likewise.
 +      (grub_acpi_madt_entry_platform_int_source): Likewise.
 +      * include/grub/types.h (PRIxGRUB_UINT32_T): New definition.
 +      (PRIuGRUB_UINT32_T): Likewise.
 +      (PRIxGRUB_UINT64_T): Likewise.
 +
 +2010-09-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Implement loading palette on ieee1275_fb.
 +
 +      * grub-core/video/ieee1275.c (stdout_ihandle): New variable.
 +      (have_setcolors): Likewise.
 +      (grub_video_ieee1275_init): Fill stdout_ihandle and have_setcolors.
 +      (grub_video_ieee1275_setup): Use grub_video_ieee1275_set_palette.
 +      (grub_video_ieee1275_set_palette): Implement.
 +
 +2010-09-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +2010-09-11  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-install.in (grub_partition): New variable.
 +      Set prefix_drive on EFI and PC to (,$grub_partition) as last resort.
 +      * util/i386/pc/grub-setup.c (setup): Don't touch prefix.
 +      Fixes a bug reported by Yves Blusseau.
 +
 +2010-09-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix emu on mipsel.
 +
 +      * conf/Makefile.common (CFLAGS_PLATFORM): Add -mflush-func
 +      =grub_cpu_flush_cache on all mips and not only yeeloong.
 +      * configure.ac (COND_mips): New conditional.
 +      * grub-core/Makefile.am (KERNEL_HEADER_FILES): Add libgcc on all
 +      platforms.
 +      * grub-core/kern/emu/cache.S (__mips__): Use _flush_cache.
 +      * grub-core/kern/emu/full.c (grub_arch_dl_init_linker)
 +      [GRUB_LINKER_HAVE_INIT]: New function.
 +      (grub_emu_post_init): Likewise.
 +      * grub-core/kern/emu/lite.c (grub_emu_post_init): Likewise.
 +      * grub-core/kern/emu/main.c: Use grub_emu_post_init.
 +      * include/grub/cache.h (_mips): Include mips/cache.h.
 +      * include/grub/disk.h [GRUB_UTIL || GRUB_MACHINE_EMU]: Add missing
 +      LVM and RAID prototypes.
 +      * include/grub/emu/misc.h (grub_emu_post_init): New proto.
 +      * include/grub/mips/time.h (grub_cpu_idle) [GRUB_MACHINE_EMU]: New
 +      function.
 +
 +2010-09-10  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-install.in: Don't try to verify core.img until after
 +      running grub-mkimage to create it.
 +
 +2010-09-10  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub.d/10_hurd.in: Add misc readability checks.
 +      * util/grub.d/10_kfreebsd.in: Likewise.
 +      * util/grub.d/10_linux.in: Likewise.
 +
 +2010-09-10  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-install.in: ${imgext} won't be defined here until the
 +      install branch is merged.  For the meantime, only verify core.img on
 +      i386-pc and sparc64-ieee1275 platforms.
 +
 +2010-09-10  Robert Millan  <rmh@gnu.org>
 +
 +      Solaris support in grub_find_zpool_from_dir().  Thanks
 +      Seth Goldberg for referring to getextmntent() facility.
 +
 +      * configure.ac: Check for getextmntent(), `sys/mnttab.h' and
 +      `sys/mkdev.h'.
 +      * grub-core/kern/emu/misc.c [HAVE_SYS_MNTTAB_H]: Include
 +      `<sys/mnttab.h>'.
 +      [HAVE_SYS_MKDEV_H]: Include `<sys/mkdev.h>'.
 +      [HAVE_GETEXTMNTENT] (grub_find_zpool_from_dir): Add getextmntent()
 +      method for finding zpool name.
 +
 +2010-09-10  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      grub-fstest needs the host and hostfs modules while other utilities
 +      actively require those modules to be absent, so grub-fstest needs
 +      its own initialisation and finalisation code.
 +
 +      * Makefile.am (grub_fstest.pp): New target.
 +      (grub_fstest_init.lst): Likewise.
 +      (grub_fstest_init.c): Likewise.
 +      * Makefile.util.def (grub-fstest): Add grub_fstest_init.c.
 +
 +2010-09-10  Robert Millan  <rmh@gnu.org>
 +
 +      * configure.ac: Check for `struct statfs.f_fstypename' and
 +      `struct statfs.f_mntfromname'.
 +
 +      * grub-core/kern/emu/misc.c (grub_find_zpool_from_dir): Conditionalize
 +      kFreeBSD-specific code.
 +
 +2010-09-10  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub.d/10_kfreebsd.in: Fix ${kfreebsd_device} initialization
 +      on ZFS.  Now non-main filesystems are supported as / too.
 +
 +2010-09-09  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.util.def (libgrub.a): Move grub-core/kern/emu/hostfs.c
 +      and grub-core/disk/host.c to ...
 +      (grub-fstest): ... here.  Having the host disk implementation
 +      present confuses grub-probe and other utility programs.
 +
 +      * util/grub-mkconfig.in: Only verify readability of grub.cfg.new
 +      when writing to a file, not when writing to stdout.
 +
 +2010-09-09  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * tests/partmap_test.in: New test for partitions.
 +      * Makefile.util.def: Rules for new test.
 +
 +2010-09-09  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub-probe.c (probe): Fix a pair of unhandled error
 +      conditions.
 +
 +2010-09-09  Robert Millan  <rmh@gnu.org>
 +
 +      Basic Btrfs support (detection and UUID).
 +
 +      * grub-core/fs/btrfs.c: New file.
 +      * Makefile.util.def (library): Register btrfs.c.
 +      * grub-core/Makefile.core.def: Likewise.
 +
 +2010-09-08  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Improve
 +      with (optional) parameters to specify device and relative path.
 +      * util/grub-install.in: Use is_path_readable_by_grub() to
 +      verify readability of a few critical files.
 +      * util/grub-mkconfig.in: Use is_path_readable_by_grub() to
 +      verify readability of grub.cfg.new.
 +
 +2010-09-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Split minix.mod into minix.mod and minix2.mod.
 +
 +      * Makefile.util.def (libgrub.a): Add grub-core/fs/minix2.c.
 +      * grub-core/Makefile.core.def (minix2): New module.
 +      * grub-core/fs/minix.c: Use definitions instead of runtime version
 +      checking.
 +      * grub-core/fs/minix2.c: New file.
 +
 +2010-09-08  Yves Blusseau  <blusseau@zetam.org>
 +
 +      Add new --boot-directory option to replace --root-directory
 +
 +      * util/grub-install.in: Add new --boot-directory option
 +      * util/grub-reboot.in: Likewise.
 +      * util/grub-set-default.in: Likewise.
 +
 +2010-09-08  Yves Blusseau  <blusseau@zetam.org>
 +
 +        * util/grub-mkconfig.in: Use new variable.
 +
 +2010-09-08  Yves Blusseau  <blusseau@zetam.org>
 +
 +      * configure.ac: Define some useful variables.
 +
 +2010-09-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set
 +      GRUB_IEEE1275_FLAG_HAS_CURSORONOFF when appropriate.
 +      * grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_setcursor):
 +      Use terminfo and don't use cursor-on/cursor-off unless it's known
 +      to work.
 +      * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New element
 +      GRUB_IEEE1275_FLAG_HAS_CURSORONOFF.
 +
 +2010-09-08  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/kern/efi/init.c (grub_efi_set_prefix): If the prefix
 +      starts with "(,", fill the drive containing the loaded image in
 +      between those two characters, but expect that a full partition
 +      specification including partition map names will follow.
 +
 +2010-09-08  Robert Millan  <rmh@gnu.org>
 +
 +      * configure.ac: Remove `--enable-grub-fstest' option.
 +      * Makefile.util.def (grub-fstest): Remove COND_GRUB_FSTEST condition.
 +
 +      * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Use
 +      `grub-fstest' instead of `grub-probe' for readability verification.
 +      * util/grub-probe.c (probe): Remove readability verification kludge.
 +
 +2010-09-08  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub-mkconfig.in: Pass `--device ${GRUB_DEVICE}' when
 +      initializing `GRUB_FS'.
 +
 +2010-09-08  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Not command (!) support to GRUB script.
 +
 +      * tests/grub_script_not.in: New test.
 +      * Makefile.util.def: Rules for new test.
 +
 +      * grub-core/script/execute.c (grub_script_execute_cmdline): Handle
 +      ! command as a special case.
 +      * grub-core/script/yylex.l (GRUB_PARSER_TOKEN_NOT): Removed.
 +
 +2010-09-07  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * grub-core/commands/wildcard.c (wildcard_expand): Fix wrong
 +      grub_free.
 +
 +2010-09-07  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * docs/grub.texi (Shell-like scripting): Fix @dots to @dots{}.
 +
 +2010-09-07  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * docs/grub.texi (Shell-like scripting): Documentation for break,
 +      continue, shift and return commands.
 +
 +2010-09-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Rename CD-ROM to cd on BIOS.
 +
 +      * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_drive): Recognise
 +      "cd".
 +      (grub_biosdisk_call_hook): Call with "cd" instead of arbitrary hdX.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/main.c (main): Reinit LVM and RAID.
 +      * util/grub-probe.c (main): Likewise.
 +      * util/i386/pc/grub-setup.c (main): Likewise.
 +      * util/sparc64/ieee1275/grub-setup.c (main): Likewise.
 +      Reported and debugged by: alexxy
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/lvm.c (grub_lvm_scan_device) [GRUB_UTIL]: Output more
 +      diagnostic info.
 +
 +2010-09-05  Jo Shields <directhex@apebox.org>
 +
 +      * util/grub.d/30_os-prober.in: Add missing classes.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Theme file format): Document new position format.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Theme file format): Replace Box_slice_names.png with
 +      a table. Use @code instead of @verbatim.
 +
 +2010-09-05  Colin D Bennett  <colin@gibibit.com>
 +
 +      Gfxmenu documentation.
 +
 +      * docs/grub.texi (Theme file format): New chapter.
 +
 +2010-09-05  Szymon Janc <szymon@janc.net.pl>
 +
 +      * grub-core/Makefile.core.def (xzio): New module.
 +      * grub-core/io/xzio.c: New file.
 +      * grub-core/lib/xzembed/xz.h: New file (from xembed).
 +      * grub-core/lib/xzembed/xz_config.h: Likewise.
 +      * grub-core/lib/xzembed/xz_dec_bcj.c: Likewise.
 +      * grub-core/lib/xzembed/xz_dec_lzma2.c: Likewise.
 +      * grub-core/lib/xzembed/xz_dec_stream.c: Likewise.
 +      * grub-core/lib/xzembed/xz_lzma2.h: Likewise.
 +      * grub-core/lib/xzembed/xz_private.h: Likewise.
 +      * grub-core/lib/xzembed/xz_stream.h: Likewise.
 +      * include/grub/file.h (grub_file_filter_id): New compression filter
 +      GRUB_FILE_FILTER_XZIO.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/file.h (GRUB_FILE_SIZE_UNKNOWN): New definition.
 +      * grub-core/disk/loopback.c (grub_loopback_open): Handle unknown file
 +      size.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/err.h (grub_err_t): Replace GRUB_ERR_BAD_GZIP_DATA with
 +      GRUB_ERR_BAD_COMPRESSED_DATA. All users updated.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Uncompressed checksum support.
 +
 +      * grub-core/commands/hashsum.c (options): Add option --uncompress.
 +      (check_list): New parameter uncompress.
 +      (grub_cmd_hashsum): Handle --uncompress.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Reintroduce testload.
 +
 +      * grub-core/commands/minicmd.c (grub_rescue_cmd_testload) [0]: Moved
 +      from here ...
 +      * grub-core/commands/testload.c (grub_cmd_testload): ... here.
 +      (GRUB_MOD_INIT): New function.
 +      (GRUB_MOD_FINI): Likewise.
 +      * grub-core/Makefile.core.def (testload): New module.
 +
 +2010-09-05  Szymon Janc <szymon@janc.net.pl>
 +
 +      * grub-core/lib/posix_wrap/sys/types.h (bool): Transform into an enum.
 +      (uint8_t): New type.
 +      (uint16_t): Likewise.
 +      (uint32_t): Likewise.
 +      (uint64_t): Likewise.
 +
 +2010-09-05  Szymon Janc <szymon@janc.net.pl>
 +
 +      * include/grub/crypto.h (GRUB_MD_CRC32): New definition.
 +
 +2010-09-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/io/gzio.c (grub_gzio_open): Removed "transparent" parameter.
 +      Made static.
 +      (grub_gzfile_open): Removed. All users updated.
 +      (GRUB_MOD_INIT): New function.
 +      (GRUB_MOD_FINI): Likewise.
 +      * grub-core/kern/file.c (grub_file_filters_all): New variable.
 +      (grub_file_filters_enabled): Likewise.
 +      (grub_file_open): Handle filters.
 +      * grub-core/loader/i386/bsd.c (GRUB_MOD_INIT): Load gzio.
 +      * grub-core/normal/main.c (GRUB_MOD_INIT): Likewise.
 +      * include/grub/file.h (grub_file_filter_id_t): New type.
 +      (grub_file_filter_t): Likewise.
 +      (grub_file_filters_all): New extern variable.
 +      (grub_file_filters_enabled): Likewise.
 +      (grub_file_filter_register): New inline function.
 +      (grub_file_filter_unregister): Likewise.
 +      (grub_file_filter_disable): Likewise.
 +      (grub_file_filter_disable_compression): Likewise.
 +      * include/grub/gzio.h: Removed.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Filename expansion support for wildcards in GRUB script.
 +
 +      * tests/grub_script_expansion.in: New test.
 +      * Makefile.util.def: Rule for new test.
 +
 +      * grub-core/commands/wildcard.c: New file, implements filename
 +      expansion support for GRUB script.
 +      * grub-core/Makefile.core.def: Rule update for regexp.mod.
 +      * grub-core/script/argv.c: Cosmetic changes.
 +      * grub-core/script/execute.c (grub_script_arglist_to_argv):
 +      Refactored to perform wildcard expansion on arguments.
 +      * include/grub/script_sh.h (grub_script_wildcard_translator): New
 +      struct.
 +
 +      * tests/util/grub-shell.in: Fix quoting for read input.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Support for updating environment variables with matched substrings
 +      of regexp.
 +
 +      * tests/grub_cmd_regexp.in: New test.
 +      * Makefile.util.def: Rule for new test.
 +
 +      * grub-core/commands/regexp.c: New option -s to update environment
 +      variables with regexp matches.
 +
 +2010-09-04  Szymon Janc <szymon@janc.net.pl>
 +
 +      * include/grub/file.h (grub_file): New member not_easly_seekable.
 +      (grub_file_seekable): New inline function.
 +      * grub-core/io/gzio.c (test_header): Don't test end magic if file isn't
 +      easily seekable.
 +      (grub_gzio_open): Set not_easly_seekable.
 +      * grub-core/fs/i386/pc/pxe.c (grub_pxefs_open): Set not_easily_seekable.
 +      * grub-core/io/bufio.c (grub_bufio_open): Propagate not_easily_seekable.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Support for options to appear multiple times on cmdline.
 +
 +      * include/grub/lib/arg.h (grub_arg_list_alloc): New prototype.
 +      * grub-core/commands/extcmd.c: Support for repeatable option.
 +      * grub-core/lib/arg.c (grub_arg_list_alloc): New function for
 +      repeatable option support.
 +
 +      Refactor menuentry into a regular command.
 +
 +      * grub-core/commands/menuentry.c: New file, menuentry command
 +      implementation.
 +      * grub-core/Makefile.core.def: Rule update for normal.mod.
 +      * grub-core/normal/main.c: Moved menuentry creation to
 +      grub-core/commands/menuentry.c.
 +      * grub-core/normal/menu.c (grub_menu_execute_entry): Removed.
 +      (grub_menu_execute_entry_real): Removed.
 +      * grub-core/script/execute.c (grub_script_execute_sourcecode): New
 +      function.
 +      (grub_script_execute_menuentry): Removed.
 +      * grub-core/script/parser.y (menuentry): Removed.
 +      * grub-core/script/script.c (grub_script_create_cmdmenu): Removed.
 +      * grub-core/script/yylex.l (menuentry): Removed.
 +      * include/grub/menu.h (grub_menu_init): New prototype.
 +      (grub_menu_fini): New prototype.
 +      * include/grub/normal.h (grub_normal_add_menu_entry): Removed.
 +      * include/grub/script_sh.h (grub_script_cmd_menuentry): Removed.
 +      (grub_script_execute_sourcecode): New prototype.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      "return" command for GRUB script functions.
 +
 +      * tests/grub_script_return.in: New test.
 +      * Makefile.util.def: Rules for new test.
 +
 +      * grub-core/script/execute.c (grub_script_return): New function.
 +      * grub-core/script/main.c: Register/unregister return commaond.
 +      * include/grub/script_sh.h (grub_script_return): New prototype.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      "setparams" command to update positional parameters.
 +
 +      * tests/grub_script_setparams.in: New test.
 +      * Makefile.util.def: Rules for new test.
 +
 +      * grub-core/script/argv.c (grub_script_argv_make): New function.
 +      * grub-core/script/execute.c (replace_scope): New function.
 +      (grub_script_setparams): New function.
 +      * grub-core/script/lexer.c: Remove unused variables.
 +      * grub-core/script/main.c: Register/unregister setparams command.
 +      * include/grub/script_sh.h (grub_script_argv_make): New prototype.
 +      (grub_script_setparams): New prototype.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * grub-core/normal/completion.c (grub_normal_do_completion): Fix
 +      grub_free order.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Support for passing block of commands as an argument to extcmds.
 +
 +      * Makefile.util.def: Rules for new test.
 +      * tests/grub_script_blockarg.in: New test.
 +      * grub-core/tests/test_blockarg.c: New file, block argument
 +      command used in the test.
 +
 +      * include/grub/extcmd.h (grub_extcmd_context): New struct.
 +      (grub_register_extcmd_prio): New function prototype.
 +      (grub_extcmd_dispatcher): New function prototype.
 +      * include/grub/command.h (GRUB_COMMAND_FLAG_BLOCKS): New command
 +      type.
 +      * include/grub/script_sh.h (struct grub_script): New members
 +      `children', `next_siblings' and `refcnt' for block arguments and
 +      reference counting.
 +      (GRUB_SCRIPT_ARG_TYPE_BLOCK): New argument type.
 +      (grub_script_arg): New member `script' for block argument.
 +      (grub_script_argv): New member `script' for block argument.
 +      (grub_parser_param): New member `scripts' for block argument.
 +      (grub_script_mem_free): New extern function prototype.
 +      (grub_script_ref): New function prototype.
 +      (grub_script_unref): New function prototype.
 +
 +      * grub-core/normal/dyncmd.c (grub_dyncmd_dispatcher): Moved to
 +      extcmd form to support block arguments.
 +      * grub-core/script/argv.c: Block arguments support.
 +      * grub-core/script/execute.c: Likewise.
 +      * grub-core/script/lexer.c: Likewise.
 +      * grub-core/script/main.c: Likewise.
 +      * grub-core/script/script.c: Likewise.
 +      * grub-core/script/parser.y: Likewise.  New `block' and `block0'
 +      non-terminals.
 +
 +      * grub-core/commands/acpi.c: Update extcmd implementations with
 +      grub_extcmd_context_t.
 +      * grub-core/commands/cat.c: Likewise.
 +      * grub-core/commands/echo.c: Likewise.
 +      * grub-core/commands/extcmd.c: Likewise.
 +      * grub-core/commands/hashsum.c: Likewise.
 +      * grub-core/commands/hdparm.c: Likewise.
 +      * grub-core/commands/help.c: Likewise.
 +      * grub-core/commands/hexdump.c: Likewise.
 +      * grub-core/commands/i386/cpuid.c: Likewise.
 +      * grub-core/commands/i386/pc/drivemap.c: Likewise.
 +      * grub-core/commands/i386/pc/halt.c: Likewise.
 +      * grub-core/commands/i386/pc/sendkey.c: Likewise.
 +      * grub-core/commands/iorw.c: Likewise.
 +      * grub-core/commands/keystatus.c: Likewise.
 +      * grub-core/commands/loadenv.c: Likewise.
 +      * grub-core/commands/ls.c: Likewise.
 +      * grub-core/commands/lspci.c: Likewise.
 +      * grub-core/commands/memrw.c: Likewise.
 +      * grub-core/commands/probe.c: Likewise.
 +      * grub-core/commands/search_wrap.c: Likewise.
 +      * grub-core/commands/setpci.c: Likewise.
 +      * grub-core/commands/sleep.c: Likewise.
 +      * grub-core/disk/loopback.c: Likewise.
 +      * grub-core/hello/hello.c: Likewise.
 +      * grub-core/loader/i386/bsd.c: Likewise.
 +      * grub-core/loader/xnu.c: Likewise.
 +      * grub-core/term/gfxterm.c: Likewise.
 +      * grub-core/term/serial.c: Likewise.
 +      * grub-core/tests/lib/functional_test.c: Likewise.
 +
 +2010-09-04  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Multi-line quoted strings support.
 +
 +      * grub-core/script/lexer.c (append_newline): Removed.
 +      (grub_script_lexer_yywrap): Refactored.
 +      (grub_script_lexer_init): Refactored.
 +      * grub-core/script/yylex.l (yywrap): New function.
 +      (grub_lexer_resplit): New function.
 +      (grub_lexer_unput): New function.
 +      * include/grub/script_sh.h (grub_lexer_param): New members, unput
 +      and resplit.
 +      * tests/grub_script_echo1.in: Added few more testcases.
 +
 +2010-09-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/misc.c: Don't add abort alias in utils.
 +      Reported by: echoline.
 +
 +2010-09-03  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Add missing files into "make dist" tarball for other platforms.
 +
 +      * gentpl.py (script): Use dist_noinst_DATA instead of EXTRA_DIST.
 +      * conf/Makefile.common (dist_noinst_DATA): New variable.
 +      * conf/Makefile.extra-dist: Added missing make dist files.
 +      * grub-core/Makefile.core.def: Likewise.
 +
 +2010-09-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Compress grub_prefix.
 +
 +      * grub-core/boot/i386/pc/lnxboot.S: Use
 +      GRUB_KERNEL_I386_PC_MULTIBOOT_SIGNATURE.
 +      * grub-core/kern/i386/pc/startup.S: Move grub_prefix to compressed part.
 +      * include/grub/offsets.h: Rename GRUB_MACHINE_DATA_END to
 +      GRUB_MACHINE_PREFIX_END. All users updated.
 +      (GRUB_KERNEL_I386_PC_PREFIX): Set to GRUB_KERNEL_I386_PC_RAW_SIZE.
 +      (GRUB_KERNEL_I386_PC_PREFIX_END): Set to GRUB_KERNEL_I386_PC_PREFIX
 +      + 0x40.
 +      (GRUB_KERNEL_I386_PC_RAW_SIZE): Decrease.
 +      * util/grub-mkimage.c (image_target_desc): Change data_end to
 +      prefix_end. All users updated.
 +
 +2010-09-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/bsd.c (grub_freebsd_boot): Set %ebp to sane
 +      value.
 +      (grub_openbsd_boot): Likewise.
 +      (grub_netbsd_boot): Likewise.
 +      * grub-core/loader/i386/xnu.c (grub_xnu_boot_resume): Likewise.
 +      (grub_xnu_boot): Likewise.
 +
 +2010-09-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Clean LIBS variable after tests.
 +
 +2010-09-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * INSTALL: Document that libdevmapper needs to be 1.02.34 or later.
 +
 +2010-09-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Check for dm_log_with_errno_init in libdevmapper and
 +      echo if libdevmapper will be used.
 +
 +2010-09-02  Ian Turner  <Ian.Turner@deshaw.com>
 +
 +      * grub-core/fs/i386/pc/pxe.c (grub_pxefs_read): Keep the blocksize
 +      constant for the same file.
 +
 +2010-09-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/i386/multiboot_mmap.c: Remove leftover include.
 +
 +2010-09-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * .bzrignore: Add *.pp, **/.dirstamp, grub-core/*.module, and
 +      grub-core/*.pp.
 +
 +2010-09-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Zero %ebp and %edi when entering Linux's 32-bit entry point, as
 +      required by the boot protocol.
 +
 +      * include/grub/i386/relocator.h (struct grub_relocator32_state): Add
 +      ebp and edi members.
 +      * grub-core/lib/i386/relocator.c (grub_relocator_boot): Handle
 +      state.ebp and state.edi.
 +      * grub-core/lib/i386/relocator32.S (grub_relocator32_start): Set
 +      %ebp and %edi according to grub_relocator32_ebp and
 +      grub_relocator32_edi respectively.
 +      * grub-core/loader/i386/linux.c (grub_linux_boot): Zero state.ebp
 +      and state.edi.
 +
 +2010-09-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Add i386-pc-pxe image target.
 +
 +      * util/grub-mkimage.c (image_target_desc): New enum value
 +      IMAGE_I386_PC_PXE.
 +      (image_targets): New target i386-pc-pxe.
 +      (generate_image): Handle i386-pc-pxe image.
 +
 +2010-09-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix grub_pxe_scan.
 +
 +      * grub-core/fs/i386/pc/pxe.c (grub_pxe_pxenv): Put correct type bangpxe.
 +      (grub_pxe_scan): Fix types and pxe_rm_entry computation.
 +      All users updated.
 +      * include/grub/i386/pc/pxe.h (grub_pxe_bangpxe): New struct.
 +      (grub_pxe_pxenv): Correct type.
 +
 +2010-09-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * NEWS: Document most of the important changes since 1.98.
 +
 +2010-09-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkrescue.in (usage): Tidy up usage output (and hence
 +      generated manual page) a little.
 +
 +2010-09-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi: Add myself as an author.
 +
 +2010-09-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * Makefile.util.def (libgrub.a): Add missing sunpc.
 +      Reported by: Seth Goldberg.
 +
 +2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Interrupt wrapping and code simplifications.
 +
 +      * Makefile.util.def (grub-mkrescue): Use x86 tg instead of
 +      x86_noieee1275 which are functionaly equivalent in this case.
 +      (grub-install): Make source on each platform explicit. Enable on
 +      all noemu.
 +      * gentpl.py (x86_efi_pc): Removed group.
 +      (x86_noefi): Likewise.
 +      (i386_noefi): Likewise.
 +      (x86_noieee1275): Likewise.
 +      (i386_noieee1275): Likewise.
 +      (i386_noefi_noieee1275): Likewise.
 +      (i386_pc_qemu_coreboot): Likewise.
 +      (i386_coreboot_multiboot): Likewise.
 +      (i386_pc_coreboot_multiboot_qemu): Likewise.
 +      (x86_noefi_mips): Likewise.
 +      (noieee1275): Likewise.
 +      (ieee1275_mips): Likewise.
 +      (noemu_noieee1275): Likewise.
 +      (cmos): New group.
 +      (usb): Likewise.
 +      (videoinkernel): Likewise.
 +      (videomodules): Likewise.
 +      * grub-core/Makefile.am (KERNEL_HEADER_FILES): Remove
 +      include/grub/elf.h, include/grub/elfload.h, include/grub/net.h,
 +      include/grub/reader.h, include/grub/symbol.h, include/grub/types.h,
 +      include/grub/loader.h, include/grub/msdos_partition.h,
 +      include/grub/machine/biosdisk.h, include/grub/machine/boot.h,
 +      include/grub/machine/console.h, include/grub/machine/vga.h,
 +      include/grub/machine/vbe.h, include/grub/machine/init.h,
 +      include/grub/machine/kernel.h, include/grub/cpu/time.h,
 +      include/grub/cpu/types.h, include/grub/gzio.h and include/grub/menu.h
 +      (KERNEL_HEADER_FILES) [i386-pc]: Add include/grub/machine/int.h.
 +      (KERNEL_HEADER_FILES) [i386-ieee1275]: Add include/grub/i386/pit.h
 +      * grub-core/Makefile.core.def (kernel): Explicit the source for
 +      startup. Explicit the platforms using kern/generic/rtc_get_time_ms.c.
 +      Split ieee1275_mips. Remove kern/i386/halt.c. Remove kern/i386/misc.S.
 +      Enable kern/i386/pit.c on all x86. Remove kern/i386/ieee1275/init.c.
 +      Use videoinkernel tag.
 +      (usb): Enable on all usb.
 +      (usbserial_common): Likewise.
 +      (usbserial_pl2303): Likewise.
 +      (usbserial_ftdi): Likewise.
 +      (uhci): Enable on all x86.
 +      (ohci): Enable on all pci.
 +      (cmostest): Enable on all CMOS.
 +      (acpi): Include commands/acpi.c on all platforms.
 +      (halt): Add relevant lib/*/halt.c.
 +      (hdparm): Enable on all pci.
 +      (lspci): Likewise.
 +      (usbtest): Enable on all usb.
 +      (ata): Enable on all pci.
 +      (ata_pthru): Likewise.
 +      (usbms): Enable on all usb.
 +      (usb_keyboard): Likewise.
 +      (font): Use tag videomodules.
 +      (bufio): Likewise.
 +      (datetime): Use tag cmos. Enable on all noemu.
 +      (mmap): Use tags common and x86.
 +      (gfxterm): Use tag videomodules.
 +      (bitmap): Likewise.
 +      (bitmap_scale): Likewise.
 +      (video_fb): Likewise.
 +      (video): Likewise.
 +      * grub-core/bus/usb/ohci.c (grub_ohci_td): Make link_td a pointer and
 +      adjust padding accordingly. All users updated.
 +      (grub_ohci_transaction): Fix bad format specification.
 +      (GRUB_MOD_INIT): Add asserts for struct size.
 +      * grub-core/bus/usb/uhci.c (grub_uhci_pci_iter): Add explicit casts.
 +      (grub_alloc_td): Likewise.
 +      (grub_free_queue): Likewise.
 +      (grub_uhci_transfer): Likewise.
 +      (grub_uhci_transaction): Fix bad format specification.
 +      * grub-core/bus/usb/usbtrans.c (grub_usb_control_msg): Likewise.
 +      (grub_usb_bulk_readwrite): Likewise.
 +      * grub-core/kern/i386/misc.S (grub_stop): Moved from here ...
 +      * grub-core/commands/i386/pc/halt.c (stop): ...here. Transformed into C.
 +      Made static.
 +      * grub-core/lib/i386/halt.c (stop): ... and here. Transformed into C.
 +      Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_halt): Moved from here ...
 +      * grub-core/commands/i386/pc/halt.c (grub_halt): ...here.
 +      Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_biosdisk_rw_int13_extensions):
 +      Moved from here ...
 +      * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_rw_int13_extensions):
 +      ... here. Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_biosdisk_rw_standard):
 +      Moved from here ...
 +      * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_rw_standard):
 +      ... here. Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S
 +      (grub_biosdisk_check_int13_extensions): Moved from here ...
 +      * grub-core/disk/i386/pc/biosdisk.c
 +      (grub_biosdisk_check_int13_extensions): ... here. Transformed into C.
 +      Made static.
 +      * grub-core/kern/i386/pc/startup.S
 +      (grub_biosdisk_get_cdinfo_int13_extensions): Moved from here ...
 +      * grub-core/disk/i386/pc/biosdisk.c
 +      (grub_biosdisk_get_cdinfo_int13_extensions): ... here.
 +      Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S
 +      (grub_biosdisk_get_diskinfo_int13_extensions): Moved from here ...
 +      * grub-core/disk/i386/pc/biosdisk.c
 +      (grub_biosdisk_get_diskinfo_int13_extensions): ... here.
 +      Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S
 +      (grub_biosdisk_get_diskinfo_standard): Moved from here ...
 +      * grub-core/disk/i386/pc/biosdisk.c
 +      (grub_biosdisk_get_diskinfo_standard): ... here.
 +      Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S
 +      (grub_biosdisk_get_num_floppies): Moved from here ...
 +      * grub-core/disk/i386/pc/biosdisk.c
 +      (grub_biosdisk_get_num_floppies): ... here.
 +      Transformed into C. Made static.
 +      * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_diskinfo_real):
 +      New function.
 +      * grub-core/kern/i386/pc/startup.S (grub_pxe_scan): Moved from here ...
 +      * grub-core/fs/i386/pc/pxe.c (grub_pxe_scan): ... here.
 +      Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_rm_entry): Moved from here ...
 +      * grub-core/fs/i386/pc/pxe.c (grub_rm_entry): ... here.
 +      Transformed into C. Made static.
 +      * grub-core/kern/i386/ieee1275/init.c: Removed.
 +      * grub-core/kern/i386/misc.S: Likewise.
 +      * grub-core/kern/i386/pc/startup.S (grub_get_memsize):
 +      Splitted from here ...
 +      * grub-core/kern/i386/pc/init.c (grub_get_conv_memsize): ... here.
 +      Transformed into C. Made static. All users updated.
 +      * grub-core/kern/i386/pc/mmap.c (grub_get_ext_memsize): ... and here.
 +      Transformed into C. Made static. All users updated.
 +      * grub-core/kern/i386/pc/startup.S (grub_get_eisa_mmap):
 +      Moved from here...
 +      * grub-core/kern/i386/pc/mmap.c (grub_get_eisa_mmap): ... here.
 +      Transformed into C. Made static. All users updated.
 +      * grub-core/kern/i386/pc/startup.S (grub_get_mmap_entry):
 +      Moved from here...
 +      * grub-core/kern/i386/pc/mmap.c (grub_get_mmap_entry): ... here.
 +      Transformed into C. Made static. All users updated.
 +      * grub-core/kern/i386/pc/startup.S (grub_stop_floppy):
 +      Removed (replaced by C version).
 +      * grub-core/kern/i386/pc/startup.S (grub_vga_set_mode):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vga.c (grub_vga_set_mode): ...here.
 +      Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_controller_info):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_controller_info):
 +      ... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_mode_info):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_mode_info):
 +      ... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_mode):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_mode):
 +      ... here. Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_mode):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_mode):
 +      ... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S
 +      (grub_vbe_bios_getset_dac_palette_width):Moved from here...
 +      * grub-core/video/i386/pc/vbe.c
 +      (grub_vbe_bios_getset_dac_palette_width):... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_memory_window):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_memory_window):
 +      ... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_memory_window):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_memory_window):
 +      ... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_scanline_length):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_scanline_length):
 +      ... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_scanline_length):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_scanline_length):
 +      ... here. Transformed into C.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_display_start):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_display_start):
 +      ... here. Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_display_start):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_display_start):
 +      ... here. Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_palette_data):
 +      Moved from here...
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_palette_data):
 +      ... here. Transformed into C. Made static.
 +      * grub-core/kern/i386/pc/startup.S (grub_pxe_call): Receive
 +      pxe_rm_entry as third argument.
 +      (grub_bios_interrupt): New function.
 +      * grub-core/kern/i386/qemu/mmap.c: Remove useless include.
 +      * grub-core/kern/i386/qemu/startup.S (codestart): Do cli;hlt instead
 +      of calling grub_stop.
 +      * grub-core/kern/efi/efi.c (grub_halt): Moved from here ...
 +      * grub-core/lib/efi/halt.c (grub_halt): ...here.
 +      * grub-core/kern/emu/main.c (grub_halt): Moved from here ...
 +      * grub-core/lib/emu/halt.c (grub_halt): ... here.
 +      * grub-core/lib/i386/halt.c: Moved from here ...
 +      * grub-core/lib/i386/halt.c: ... here.
 +      * grub-core/kern/ieee1275/openfw.c (grub_halt): Moved from here ...
 +      * grub-core/lib/ieee1275/halt.c (grub_halt): ... here.
 +      * grub-core/loader/i386/pc/linux.c (grub_linux16_boot): Call
 +      grub_stop_floppy.
 +      * grub-core/loader/i386/xnu.c (guessfsb) [IEEE1275]: Enable.
 +      * include/grub/i386/coreboot/init.h: Removed.
 +      * include/grub/i386/multiboot/init.h: Likewise.
 +      * include/grub/i386/pc/biosdisk.h: Removed all function prototypes.
 +      * include/grub/i386/pc/init.h: Likewise except grub_gate_a20.
 +      * include/grub/i386/pc/int.h: New file.
 +      * include/grub/i386/pc/pxe.h (GRUB_PXE_SIGNATURE): New definition.
 +      (grub_pxe_scan): Removed.
 +      (grub_pxe_call): Update prototype.
 +      * include/grub/i386/pc/vbe.h: Removed EXPORT_FUNC and useless
 +      prototypes.
 +      * include/grub/i386/pc/vga.h (grub_vga_set_mode): Removed.
 +      * include/grub/i386/qemu/init.h: Removed.
 +      * include/grub/mips/yeeloong/kernel.h (grub_reboot): Add missing
 +      noreturn.
 +      (grub_halt): Likewise.
 +      * include/grub/misc.h (grub_halt): Removed EXPORT_FUNC.
 +      (grub_reboot): Likewise.
 +      * grub-core/kern/i386/coreboot/init.c (grub_stop_floppy): Moved from here...
 +      * include/grub/i386/floppy.h (grub_stop_floppy): ...here. Inlined.
 +      * grub-core/kern/i386/pc/startup.S (grub_hard_stop): Removed.
 +
 +2010-08-30  Robert Millan  <rmh@gnu.org>
 +
 +      * NEWS: Document addition of ZFS support in `grub-install' and
 +      `grub-mkconfig'.
 +
 +2010-08-30  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * conf/Makefile.common (CPPFLAGS_DEFAULT): Remove leading / from
 +      dprintf output.
 +
 +2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove leftover embedding of font objects.
 +
 +      * include/grub/kernel.h (OBJ_TYPE_FONT): Removed.
 +      * util/grub-install.in (font): Removed.
 +      * util/grub-mkimage.c (generate_image): Remove font support. All users
 +      updated.
 +
 +2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Network): Fix reference to pxe_blksize.
 +      Reported by: Ian Turner
 +
 +2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu.c (grub_wait_after_message): Add a 10 second
 +      timeout to avoid indefinite boot stalling.
 +
 +2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/color.c (grub_env_write_color_normal): Fix a warning.
 +      (grub_env_write_color_highlight): Likewise.
 +
 +2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/term.c (print_more): Return to normal and not
 +      to standard state after printing "---MORE---".
 +
 +2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/i386/vga_common.c (grub_console_setcolorstate):
 +      Mask out the bit 0x80 since it has other meaning that specifiing color.
 +
 +2010-08-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      New relocator. Allows for more kernel support and more straightforward
 +      loader writing.
 +
 +      * Makefile.am (BOOTTARGET): New variable.
 +      (QEMU32): Likewise.
 +      (linux.init.x86_64): New target.
 +      (linux.init.i386): Likewise.
 +      (multiboot.elf): Likewise.
 +      (kfreebsd.elf): Likewise.
 +      (kfreebsd.aout): Likewise.
 +      (pc-chainloader.elf): Likewise.
 +      (pc-chainloader.bin): Likewise.
 +      (ntldr.elf): Likewise.
 +      (ntldr.bin): Likewise.
 +      (multiboot2.elf): Likewise.
 +      (kfreebsd.init.x86_64): Likewise.
 +      (kfreebsd.init.i386): Likewise.
 +      (knetbsd.init.i386): Likewise.
 +      (kopenbsd.init.i386): Likewise.
 +      (knetbsd.init.x86_64): Likewise.
 +      (kopenbsd.init.x86_64): Likewise.
 +      (linux-initramfs.i386): Likewise.
 +      (linux-initramfs.x86_64): Likewise.
 +      (kfreebsd-mfsroot.i386.img): Likewise.
 +      (knetbsd.image.i386): Likewise.
 +      (kopenbsd.image.i386): Likewise.
 +      (kopenbsd.image.x86_64): Likewise.
 +      (knetbsd.miniroot-image.i386.img): Likewise.
 +      (kfreebsd-mfsroot.x86_64.img): Likewise.
 +      (knetbsd.image.x86_64): Likewise.
 +      (knetbsd.miniroot-image.x86_64.img): Likewise.
 +      (kfreebsd-mfsroot.i386.gz): Likewise.
 +      (bootcheck-kfreebsd-i386): Likewise.
 +      (kfreebsd-mfsroot.x86_64.gz): Likewise.
 +      (bootcheck-kfreebsd-x86_64): Likewise.
 +      (knetbsd.miniroot-image.i386.gz): Likewise.
 +      (bootcheck-knetbsd-i386): Likewise.
 +      (bootcheck-kopenbsd-i386): Likewise.
 +      (bootcheck-kopenbsd-x86_64): Likewise.
 +      (knetbsd.miniroot-image.x86_64.gz): Likewise.
 +      (bootcheck-knetbsd-x86_64): Likewise.
 +      (bootcheck-linux-i386): Likewise.
 +      (bootcheck-linux-x86_64): Likewise.
 +      (bootcheck-linux16-i386): Likewise.
 +      (bootcheck-linux16-x86_64): Likewise.
 +      (bootcheck-multiboot): Likewise.
 +      (bootcheck-multiboot2): Likewise.
 +      (bootcheck-kfreebsd-aout): Likewise.
 +      (bootcheck-pc-chainloader): Likewise.
 +      (bootcheck-ntldr): Likewise.
 +      (CLEANFILES): Add new targets.
 +      (BOOTCHECKS): New variable.
 +      (.PHONY): Add bootchecks.
 +      (SUCCESSFUL_BOOT_STRING): New variable.
 +      (BOOTCHECK_TIMEOUT): Likewise.
 +      (bootcheck): New target
 +      * Makefile.util.def (grub-mkrescue): Enable on i386-multiboot.
 +      * configure.ac: Correct efiemu excuse.
 +      * docs/grub.texi (Supported kernels): New chapter.
 +      * grub-core/Makefile.am (KERNEL_HEADER_FILES): Add
 +      include/grub/mm_private.h. Simplify inclusion of
 +      include/grub/boot.h, include/grub/loader.h
 +      and include/grub/msdos_partition.h
 +      (KERNEL_HEADER_FILES) [i386_coreboot]:
 +      Remove include/grub/machine/loader.h. Add include/grub/i386/pit.h.
 +      (KERNEL_HEADER_FILES) [i386_multiboot]: Likewise.
 +      (KERNEL_HEADER_FILES) [i386_qemu]: Likewise.
 +      (KERNEL_HEADER_FILES) [i386_ieee1275]: Remove
 +      include/grub/machine/loader.h.
 +      (KERNEL_HEADER_FILES) [x86_64-efi]: Likewise.
 +      * grub-core/Makefile.core.def (kernel): Remove kern/i386/loader.S from
 +      extra_dist.
 +      (pci.mod): Enable on i386-multiboot.
 +      (acpi.mod): Enable on i386-multiboot and i386-coreboot.
 +      (efiemu.mod): Enable on i386-coreboot, i386-ieee1275, i386-multiboot and
 +      i386-qemu.
 +      (relocator.mod): Rewritten.
 +      (aout.mod): Enable on all x86.
 +      (bsd.mod): Likewise.
 +      (ntldr.mod): New module.
 +      (linux.mod): Use loader/i386/linux.c on all x86.
 +      (xnu.mod): Enable on all x86.
 +      (vga_text.mod): disable on EFI and QEMU.
 +      * grub-core/efiemu/i386/coredetect.c: Remove useless include.
 +      * grub-core/efiemu/i386/pc/cfgtables.c: Likewise.
 +      * grub-core/efiemu/loadcore.c: Likewise.
 +      * grub-core/efiemu/main.c: Likewise.
 +      (grub_efiemu_exit_boot_services): Removed.
 +      (grub_efiemu_finish_boot_services): Likewise.
 +      * grub-core/efiemu/mm.c (grub_efiemu_finish_boot_services): New
 +      function.
 +      * grub-core/efiemu/i386/nocfgtables.c: New file.
 +      * grub-core/kern/dl.c (grub_dl_unload_all): Removed.
 +      * grub-core/kern/efi/efi.c (grub_efi_exit_boot_services): Removed.
 +      (grub_efi_finish_boot_services): Moved from here ...
 +      * grub-core/kern/efi/mm.c (grub_efi_finish_boot_services): ...here.
 +      Fille finish memory map and related data.
 +      (finish_mmap_buf): New variable.
 +      (grub_efi_uintn_t finish_mmap_size): Likewise.
 +      (grub_efi_uintn_t finish_key): Likewise.
 +      (grub_efi_uintn_t finish_desc_size): Likewise.
 +      (grub_efi_uint32_t finish_desc_version): Likewise.
 +      (grub_efi_is_finished): Likewise.
 +      (grub_efi_get_memory_map): Use saved memory map if EFI is already
 +      finished.
 +      * grub-core/kern/elf.c (grub_elf32_phdr_iterate): Make global.
 +      (grub_elf64_phdr_iterate): Likewise.
 +      * grub-core/kern/i386/coreboot/init.c (grub_os_area_addr): Removed.
 +      (grub_os_area_size): Likewise.
 +      (grub_machine_init): Don't reserve os area.
 +      * grub-core/kern/i386/coreboot/startup.S: Don't include loader.S.
 +      * grub-core/kern/i386/ieee1275/startup.S: Likewise.
 +      * grub-core/kern/i386/loader.S: Removed.
 +      * grub-core/kern/i386/pc/init.c (grub_os_area_addr): Removed.
 +      (grub_os_area_size): Likewise.
 +      (grub_machine_init): Don't reserve os area.
 +      * grub-core/kern/i386/pc/startup.S (grub_chainloader_real_boot):
 +      Don't call grub_dl_unload_all.
 +      Don't include loader.S.
 +      * grub-core/kern/i386/qemu/mmap.c (grub_machine_mmap_iterate):
 +      Declare the memory after _end as available.
 +      * grub-core/kern/mm.c (GRUB_MM_FREE_MAGIC): Moved from here...
 +      * include/grub/mm_private.h (GRUB_MM_FREE_MAGIC): ... here.
 +      (GRUB_MM_ALLOC_MAGIC): Moved from here...
 +      * include/grub/mm_private.h (GRUB_MM_ALLOC_MAGIC): ... here.
 +      * grub-core/kern/mm.c (grub_mm_header): Moved from here...
 +      * include/grub/mm_private.h (grub_mm_header): ... here.
 +      * grub-core/kern/mm.c (GRUB_MM_ALIGN): Moved from here...
 +      * include/grub/mm_private.h (GRUB_MM_ALIGN): ... here.
 +      * grub-core/kern/mm.c (grub_mm_region): Moved from here ...
 +      (grub_mm_region): ..here. Removed addr. Added pre_size.
 +      All users updated.
 +      * grub-core/kern/mm.c (base): Renamed to ...
 +      (grub_mm_base): ... this. Made global.
 +      (grub_real_malloc): Alloc from end of region.
 +      (grub_memalign): Don't attempt to malloc if grub_mm_base is NULL.
 +      * grub-core/kern/powerpc/cache.S (grub_arch_sync_caches): Move to ...
 +      * grub-core/kern/powerpc/cache_flush.S: ... here.
 +      * grub-core/lib/efi/relocator.c: New file.
 +      * grub-core/lib/i386/relocator.c: Rewritten.
 +      * grub-core/lib/i386/relocator16.S: New file.
 +      * grub-core/lib/i386/relocator32.S: Likewise.
 +      * grub-core/lib/i386/relocator64.S: Likewise.
 +      * grub-core/lib/i386/relocator_asm.S: Rewritten.
 +      * grub-core/lib/i386/relocator_common.S: New file.
 +      * grub-core/lib/ieee1275/relocator.c: Likewise.
 +      * grub-core/lib/mips/relocator.c: Rewritten.
 +      * grub-core/lib/mips/relocator_asm.S: Renamed variables and minor
 +      stylistic adjustments.
 +      * grub-core/lib/powerpc/relocator.c: New file.
 +      * grub-core/lib/powerpc/relocator_asm.S: Likewise.
 +      * grub-core/lib/relocator.c: Rewritten.
 +      * grub-core/lib/x86_64/relocator_asm.S: New file.
 +      * grub-core/loader/aout.c (grub_aout_load): Make load_addr a void *.
 +      * grub-core/loader/i386/bsd.c (NETBSD_DEFAULT_VIDEO_MODE): New const.
 +      (bsd_tag): New struct.
 +      (tags): New variable.
 +      (tags_last): Likewise.
 +      (netbsd_module): New struct.
 +      (netbsd_mods): New variable.
 +      (netbsd_mods_last): Likewise.
 +      (openbsd_opts): New parameter "serial".
 +      (OPENBSD_SERIAL_ARG): New definition.
 +      (netbsd_opts): New parameter "serial".
 +      (NETBSD_SERIAL_ARG): New definition.
 +      (grub_freebsd_add_meta): Reorganised into ...
 +      (grub_bsd_add_meta): ...this. All users updated.
 +      (grub_freebsd_add_mmap): Reorganised into ...
 +      (generate_e820_mmap):  ...this...
 +      (grub_bsd_add_mmap): ...and this.  All users updated.
 +      (grub_freebsd_list_modules): Use tags.
 +      (grub_netbsd_add_meta_module): New function.
 +      (grub_netbsd_list_modules): Likewise.
 +      (grub_freebsd_boot): Use relocator and finish EFI.
 +      (grub_openbsd_boot): Likewise.
 +      (grub_netbsd_setup_video): New function.
 +      (grub_netbsd_add_modules): Likewise.
 +      (grub_netbsd_boot): Use grub_netbsd_add_modules, relocator, netbsd_tags
 +      and finish EFI.
 +      (grub_bsd_unload): Unload tags.
 +      (grub_bsd_load_aout): Use relocator.
 +      (grub_bsd_elf32_size_hook): New function.
 +      (grub_bsd_elf32_hook): Use relocator.
 +      (grub_bsd_elf64_size_hook): New function.
 +      (grub_bsd_elf64_hook): Use relocator.
 +      (grub_bsd_load_elf): Use relocator and call grub_openbsd_find_ramdisk.
 +      (grub_bsd_load): Zero-out openbsd_ramdisk.
 +      (grub_bsd_load): Use relocator.
 +      (grub_cmd_openbsd): Support serial.
 +      (grub_cmd_netbsd): Support modules.
 +      (grub_cmd_freebsd_module): Use relocator.
 +      (grub_netbsd_module_load): New function.
 +      (grub_cmd_netbsd_module): Likewise.
 +      (grub_cmd_openbsd_ramdisk): Likewise.
 +      (GRUB_MOD_INIT): Register knetbsd_module, knetbsd_module_elf and
 +      kopenbsd_ramdisk.
 +      (GRUB_MOD_FINI): Unregister new commands.
 +      * grub-core/loader/i386/bsdXX.c (load): Remove useless checks.
 +      (grub_freebsd_load_elfmodule_obj): Use relocator.
 +      (grub_freebsd_load_elfmodule): Likewise.
 +      (grub_freebsd_load_elf_meta): Likewise.
 +      (grub_netbsd_load_elf_meta): New function.
 +      (grub_openbsd_find_ramdisk): Likewise.
 +      * grub-core/loader/i386/bsd_helper.S: Removed.
 +      * grub-core/loader/i386/bsd_pagetable.c: Support relocator.
 +      * grub-core/loader/i386/bsd_trampoline.S: Removed.
 +      * grub-core/loader/i386/efi/linux.c: Likewise.
 +      * grub-core/loader/i386/ieee1275/linux.c: Likewise.
 +      * grub-core/loader/i386/linux.c (HAS_VGA_TEXT): New const.
 +      (DEFAULT_VIDEO_MODE): Likewise.
 +      (real_mode_target): New variable.
 +      (prot_mode_target): Likewise.
 +      (initrd_mem_target): Likewise.
 +      (relocator): Likewise.
 +      (efi_mmap_buf): Likewise.
 +      (efi_mmap_size): Likewise.
 +      (find_efi_mmap_size): Moved from grub-core/loader/i386/efi/linux.c.
 +      (free_pages): Use relocator.
 +      (allocate_pages): Account for efi_mmap and use relocator. Return error.
 +      (grub_linux_setup_video): Return error.
 +      (grub_linux_trampoline_start): Removed.
 +      (grub_linux_trampoline_end): Likewise.
 +      (grub_linux_boot): Use relocator and DEFAULT_VIDEO_MODE. Pass console
 +      andd video parameters depending on firmware.
 +      [GRUB_MACHINE_IEEE1275]: Pass OFW parameters.
 +      [GRUB_MACHINE_EFI]: Pass EFI parameters.
 +      (grub_cmd_linux) [GRUB_MACHINE_EFI]: Likewise.
 +      (grub_cmd_initrd): Use relocator.
 +      * grub-core/loader/i386/linux_trampoline.S: Removed.
 +      * grub-core/loader/i386/multiboot_mbi.c (elf_sec_num): New variable.
 +      (elf_sec_entsize): Likewise.
 +      (elf_sec_shstrndx): Likewise.
 +      (elf_sections): Likewise.
 +      (grub_multiboot_load): Use relocator.
 +      (grub_multiboot_get_mbi_size): Account for sections.
 +      (grub_multiboot_make_mbi): Use relocator and support sections.
 +      (grub_multiboot_add_elfsyms): New function.
 +      (grub_multiboot_free_mbi): Free sections.
 +      * grub-core/loader/i386/pc/linux.c (relocator): New variable.
 +      (grub_linux_real_target): Likewise.
 +      (grub_linux_real_chunk): Likewise.
 +      (grub_linux16_prot_size): Likewise.
 +      (grub_linux16_boot): Use relocator.
 +      (grub_linux_unload): Unload relocator.
 +      (grub_cmd_linux): Use relocator.
 +      (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/i386/pc/ntldr.c: New file.
 +      * grub-core/loader/i386/xnu.c (guessfsb) [GRUB_MACHINE_IEEE1275]:
 +      Don't try to guess CPU frequency.
 +      (grub_xnu_set_video): Stretch bitmap.
 +      (grub_xnu_boot): Use relocator.
 +      * grub-core/loader/mips/linux.c (grub_linux_boot): Use relocator.
 +      (grub_linux_unload): Free relocator.
 +      (grub_linux_load32): Use relocator.
 +      (grub_linux_load64): Likewise.
 +      (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/multiboot.c (grub_multiboot_boot): Use relocator.
 +      (grub_multiboot_unload): Unload relocator.
 +      (grub_cmd_multiboot): Use relocator.
 +      (grub_cmd_module): Likewise.
 +      * grub-core/loader/multiboot_elfxx.c (grub_multiboot_load_elfXX):
 +      Use relocator and support sections.
 +      * grub-core/loader/multiboot_mbi2.c(elf_sec_num): New variable.
 +      (elf_sec_entsize): Likewise.
 +      (elf_sec_shstrndx): Likewise.
 +      (elf_sections): Likewise.
 +      (grub_multiboot_load): Use relocator.
 +      (grub_multiboot_get_mbi_size): Account for sections.
 +      (grub_multiboot_make_mbi): Use relocator and support sections.
 +      (grub_multiboot_add_elfsyms): New function.
 +      * grub-core/loader/powerpc/ieee1275/linux.c: Remove useless include.
 +      * grub-core/loader/sparc64/ieee1275/linux.c: Likewise.
 +      * grub-core/loader/xnu.c (grub_xnu_heap_malloc): Use relocator.
 +      Prototype changed. All users updated.
 +      (grub_xnu_align_heap): Simplified.
 +      (grub_xnu_writetree_toheap): Likewise.
 +      (grub_xnu_unload): Unload relocator.
 +      (grub_cmd_xnu_kernel): Use relocator.
 +      (grub_cmd_xnu_kernel64): Likewise.
 +      (grub_xnu_register_memory): Simplified.
 +      * grub-core/loader/xnu_resume.c (grub_xnu_resume): Use relocator.
 +      * grub-core/term/efi/console.c (grub_console_putchar): Abort if
 +      EFI is finished.
 +      (grub_console_checkkey): Likewise.
 +      (grub_console_getkey): Likewise.
 +      (grub_console_getwh): Likewise.
 +      (grub_console_getxy): Likewise.
 +      (grub_console_gotoxy): Likewise.
 +      (grub_console_cls): Likewise.
 +      (grub_console_setcolorstate): Likewise.
 +      (grub_console_setcursor): Likewise.
 +      * grub-core/term/ns8250.c (grub_ns8250_hw_get_port): New function.
 +      * grub-core/tests/boot/kbsd.init-i386.S: New file.
 +      * grub-core/tests/boot/kbsd.init-x86_64.S: Likewise.
 +      * grub-core/tests/boot/kbsd.spec.txt: Likewise.
 +      * grub-core/tests/boot/kernel-8086.S: Likewise.
 +      * grub-core/tests/boot/kernel-i386.S: Likewise.
 +      * grub-core/tests/boot/kfreebsd-aout.cfg: Likewise.
 +      * grub-core/tests/boot/kfreebsd.cfg: Likewise.
 +      * grub-core/tests/boot/kfreebsd.init-i386.S: Likewise.
 +      * grub-core/tests/boot/kfreebsd.init-x86_64.S: Likewise.
 +      * grub-core/tests/boot/knetbsd.cfg: Likewise.
 +      * grub-core/tests/boot/kopenbsd.cfg: Likewise.
 +      * grub-core/tests/boot/kopenbsdlabel.txt: Likewise.
 +      * grub-core/tests/boot/linux.cfg: Likewise.
 +      * grub-core/tests/boot/linux.init-i386.S: Likewise.
 +      * grub-core/tests/boot/linux.init-x86_64.S: Likewise.
 +      * grub-core/tests/boot/linux16.cfg: Likewise.
 +      * grub-core/tests/boot/multiboot.cfg: Likewise.
 +      * grub-core/tests/boot/multiboot2.cfg: Likewise.
 +      * grub-core/tests/boot/ntldr.cfg: Likewise.
 +      * grub-core/tests/boot/pc-chainloader.cfg: Likewise.
 +      * include/grub/aout.h (grub_aout_load): Make load_addr a void *.
 +      * include/grub/autoefi.h (grub_autoefi_finish_boot_services):
 +      New definition.
 +      * include/grub/dl.h (grub_dl_unload_all): Removed.
 +      * include/grub/efi/efi.h (grub_efi_exit_boot_services): Likewise.
 +      (grub_efi_finish_boot_services): Change prototype.
 +      (grub_efi_is_finished): New variable.
 +      * include/grub/efiemu/efiemu.h (grub_efiemu_finish_boot_services):
 +      Changed prototype.
 +      (grub_efiemu_finish_boot_services): Removed.
 +      (grub_machine_efiemu_init_tables): New prototype.
 +      * include/grub/elfload.h (grub_elf32_phdr_iterate): Likewise.
 +      (grub_elf64_phdr_iterate): Likewise.
 +      * include/grub/i386/bsd.h: Include relocator.h.
 +      (freebsd_tag_header): New struct.
 +      (grub_openbsd_bios_mmap): Removed.
 +      (grub_unix_real_boot): Removed.
 +      (grub_freebsd_load_elfmodule32): Changed prototype.
 +      (grub_freebsd_load_elfmodule_obj64): Likewise.
 +      (grub_freebsd_load_elf_meta32): Likewise.
 +      (grub_freebsd_load_elf_meta64): Likewise.
 +      (grub_freebsd_add_meta): Removed.
 +      (grub_netbsd_load_elf_meta32): New prototype.
 +      (grub_netbsd_load_elf_meta64): Likewise.
 +      (grub_bsd_add_meta): Likewise.
 +      (grub_openbsd_ramdisk_descriptor): New struct.
 +      (grub_openbsd_find_ramdisk32): New prototype.
 +      (grub_openbsd_find_ramdisk64): Likewise.
 +      * include/grub/i386/coreboot/loader.h: Removed.
 +      * include/grub/i386/efi/loader.h: Likewise.
 +      * include/grub/i386/ieee1275/loader.h: Likewise.
 +      * include/grub/i386/linux.h (linux_kernel_header): Change void *
 +      to grub_uint32_t.
 +      * include/grub/i386/loader.h: Removed.
 +      * include/grub/i386/memory.h (GRUB_MEMORY_CPU_CR4_PAE_ON): Correct the
 +      value.
 +      (GRUB_MEMORY_CPU_CR4_PSE_ON): New definition.
 +      (grub_phys_addr_t): New type.
 +      (grub_vtop): New inline function.
 +      (grub_map_memory): Likewise.
 +      (grub_unmap_memory): Likewise.
 +      * include/grub/i386/multiboot/loader.h: Removed.
 +      * include/grub/i386/netbsd_bootinfo.h (NETBSD_BTINFO_BOOTDISK): Removed.
 +      (NETBSD_BTINFO_CONSOLE): New definition.
 +      (NETBSD_BTINFO_SYMTAB): Likewise.
 +      (NETBSD_BTINFO_MODULES): Likewise.
 +      (NETBSD_BTINFO_FRAMEBUF): Likewise.
 +      (grub_netbsd_bootinfo): New struct.
 +      (grub_netbsd_btinfo_common): Use explicit bitsize.
 +      (grub_netbsd_btinfo_mmap_entry): Removed.
 +      (GRUB_NETBSD_MAX_BOOTPATH_LEN): New definition.
 +      (grub_netbsd_btinfo_bootdisk): New struct.
 +      (grub_netbsd_btinfo_symtab): Likewise.
 +      (grub_netbsd_btinfo_serial): Likewise.
 +      (grub_netbsd_btinfo_modules): Likewise.
 +      (grub_netbsd_btinfo_framebuf): Likewise.
 +      (GRUB_NETBSD_MAX_ROOTDEVICE_LEN): New definition.
 +      * include/grub/i386/openbsd_bootarg.h (OPENBSD_BOOTARG_CONSOLE):
 +      Likewise.
 +      (grub_openbsd_bootargs): Use explicit bitsize.
 +      (grub_openbsd_bootarg_console): New struct.
 +      (GRUB_OPENBSD_COM_MAJOR): New definition.
 +      (GRUB_OPENBSD_VGA_MAJOR): Likewise.
 +      * include/grub/i386/pc/efiemu.h: Removed.
 +      * include/grub/i386/pc/loader.h: Don't include cpu/loader.h.
 +      * include/grub/i386/qemu/loader.h: Removed.
 +      * include/grub/i386/relocator.h: Rewritten.
 +      * include/grub/i386/xnu.h (grub_xnu_heap_will_be_at): Removed.
 +      * include/grub/mips/memory.h: New file.
 +      * include/grub/mips/multiboot.h: Rewritten.
 +      * include/grub/mips/relocator.h: Rewritten.
 +      * include/grub/mips/yeeloong/memory.h (grub_phys_addr_t): New type.
 +      (grub_vtop): New function.
 +      (grub_map_memory): Likewise.
 +      (grub_unmap_memory): Likewise.
 +      * include/grub/misc.h (ALIGN_DOWN): New definition.
 +      * include/grub/mm.h (grub_mm_check_real): New proto.
 +      (GRUB_MM_CHECK): New definition.
 +      * include/grub/mm_private.h: New file.
 +      * include/grub/multiboot.h (grub_multiboot_relocator): New variable.
 +      (grub_multiboot_get_mbi_size): Removed.
 +      (grub_multiboot_make_mbi): Change prottype.
 +      (grub_multiboot_set_accepts_video): New proto.
 +      (grub_multiboot_add_elfsyms): Likewise.
 +      (grub_multiboot_payload_eip): New variable.
 +      * include/grub/ns8250.h (grub_ns8250_hw_get_port) [!ASM_FILE]:
 +      New prototype.
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_MULTIBOOT_PREFIX):
 +      New definition.
 +      (GRUB_KERNEL_I386_MULTIBOOT_DATA_END): Likewise.
 +      (GRUB_KERNEL_I386_MULTIBOOT_MOD_ALIGN): Likewise.
 +      * include/grub/powerpc/ieee1275/loader.h: Removed.
 +      * include/grub/powerpc/memory.h: New file.
 +      * include/grub/powerpc/relocator.h: Likewise.
 +      * include/grub/relocator.h: Likewise.
 +      * include/grub/relocator_private.h: Likewise.
 +      * include/grub/sparc64/ieee1275/loader.h: Removed.
 +      * include/grub/x86_64/memory.h: New file.
 +      * include/grub/xnu.h (grub_xnu_writetree_toheap): Changed prototype.
 +      (grub_xnu_heap_malloc): Likewise.
 +      (grub_xnu_heap_real_start): Removed.
 +      (grub_xnu_heap_start): Likewise.
 +      (grub_xnu_relocator): New variable.
 +      (grub_xnu_heap_target_start): Likewise.
 +      * tests/util/grub-shell.in: Support non-pc.
 +      * util/grub-mkimage.c (image_targets): Fix multiboot target.
 +
 +2010-08-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/charset.c (grub_utf8_to_ucs4_alloc): Avoid deadloop
 +      on malloc error.
 +      (grub_bidi_logical_to_visual): Check that malloc succeded.
 +      * grub-core/normal/term.c (grub_puts_terminal): Fix fallback to dumb
 +      puts.
 +      (grub_xputs_normal): Likewise.
 +
 +2010-08-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def (kernel): Add kern/mips/cache_flush.S to
 +      extra_dist.
 +
 +2010-08-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/efiemu/runtime/efiemu.sh: Removed.
 +
 +2010-08-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * Makefile.util.def (grub-ofpathname): Add missing ldadd.
 +
 +2010-08-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/misc.c (grub_real_dprintf): Always refresh after
 +      dprintf.
 +
 +2010-08-29  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * Makefile.util.def: Use ldadd instead of ldflags for libraries.
 +
 +2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/term.c (print_more): Fix a memory leak.
 +      (grub_puts_terminal): Revert to dumb puts if memory allocation fails.
 +      (grub_xputs_normal): Likewise.
 +
 +2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/script/lexer.c (grub_script_lexer_init): Don't look before
 +      the begining of the string
 +
 +2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/script/script.c (grub_script_parse): Free parsed on
 +      failure.
 +
 +2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/completion.c (grub_normal_do_completion): Free argv
 +      on failure.
 +
 +2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/cmdline.c (grub_cmdline_get): Free cl_terms on
 +      return.
 +
 +2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/gfxterm.c (grub_gfxterm_term_fini): Free the text buffer.
 +      (scroll_up): Fix a memory leak.
 +
 +2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/nilfs2.c (grub_nilfs2_load_sb): Handle grub_disk_read
 +      errors.
 +
 +2010-08-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Handle USB pendrives exposed as floppies.
 +
 +      * grub-core/boot/i386/pc/boot.S: Check LBA even on what appears to be
 +      floppy.
 +      * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise.
 +      Check for partitions on all devices.
 +
 +2010-08-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/ieee1275/ofconsole.c (put): Correct prototype.
 +      (readkey): Likewise.
 +
 +2010-08-25  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Multiple variable names support to "export" command.
 +
 +      * normal/context.c (grub_cmd_export): "export" command supports
 +      multiple variable names.
 +
 +2010-08-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 +
 +      * util/grub.d/30_os-prober.in: Fix conversion from grub-probe
 +      --target=drive output to Mach device name.
 +
 +2010-08-23  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      New Automake based build system for GRUB.
 +
 +      * ABOUT-NLS: New file.
 +      * Makefile.am: New file. GRUB host utils' rules that doesn't fit
 +      in Makefile.util.def file.
 +      * Makefile.util.def: New file.  Autogen build definitions file for
 +      GRUB host utils.
 +      * conf/Makefile.common: New file.  Common variables for GRUB host
 +      utils and target modules.
 +      * conf/Makefile.extra-dist: New file.  Extra files for make dist.
 +      * docs/Makefile.am: New file.  Automake file for docs.
 +      * gentpl.py: New file.  Python script to generate Autogen
 +      template.
 +      * grub-core/Makefile.am: New file.  GRUB target modules' rules
 +      that doesn't fit in Makefile.core.def file.
 +      * grub-core/Makefile.core.def: New file.  Autogen build
 +      definitions file for GRUB target modules.
 +      * grub-core/lib/setjmp.S: New file.  Wrapper for target_cpu
 +      specific setjmp.S file.
 +      * po/Makefile.am: New file.
 +
 +      * .bzrignore: New ignores.
 +      * INSTALL: New requirements, without Ruby.
 +      * acinclude.m4: Use TARGET_IMG_BASE_LDOPT variable instead.
 +      * autogen.sh: Updated to invoke autogen as necessary.
 +      * configure.ac: Separate *FLAGS with HOST_ and TARGET_ prefixes,
 +      and defines for Automake conditionals.
 +      * geninit.sh: Refactoring.
 +
 +      * include/grub/dl.h: Allow build rules to define GRUB_MOD_* if
 +      necessary.
 +      * include/grub/emu/getroot.h (grub_make_system_path_relative_to_its_root):
 +      New prototype.
 +
 +      * include/grub/test.h: Fix functional test modules' naming.
 +      * grub-core/tests/example_functional_test.c: Fix test module name.
 +
 +      * util/misc.c: Hosted versions' of grub functions for libgrub.a
 +      * tests/lib/unit_test.c: Remove hosted versions of grub functions.
 +      * util/grub-editenv.c: Likewise.
 +      * util/grub-fstest.c: Likewise.
 +      * util/grub-mkdevicemap.c: Likewise.
 +      * util/grub-mkfont.c: Likewise.
 +      * util/grub-mkimage.c: Likewise.
 +      * util/grub-mkpasswd-pbkdf2.c: Likewise.
 +      * util/grub-probe.c: Likewise.
 +      * util/grub-script-check.c: Likewise.
 +      * util/i386/pc/grub-setup.c: Likewise.
 +      * util/sparc64/ieee1275/grub-setup.c: Likewise.
 +
 +      * tests/util/grub-shell.in: Fix override directory path.
 +      * util/grub-mkrescue.in: Replace @pkglib_DATA@ with files.
 +      * util/import_gcry.py: Create Makefile.gcry.def file instead.
 +
 +      * util/lvm.c: Update #includes.
 +      * util/raid.c: Likewise.
 +      * util/resolve.c: Likewise.
 +      * grub-core/bus/emu/pci.c: Likewise.
 +      * grub-core/lib/posix_wrap/stdlib.h: Likewise.
 +      * grub-core/lib/posix_wrap/string.h: Likewise.
 +      * grub-core/kern/emu/main.c: Likewise.
 +
 +      * grub-core/gensymlist.sh: New file.  Script for generating kernel
 +      symbols file.
 +      * grub-core/genmoddep.awk: Support new kernel_syms.lst format.
 +
 +      * grub-core/gentrigtables.c: Fix unused variable warnings.
 +
 +      * Makefile.in: Removed.
 +      * conf/any-emu.rmk: Removed.
 +      * conf/common.rmk: Removed.
 +      * conf/i386-coreboot.rmk: Removed.
 +      * conf/i386-efi.rmk: Removed.
 +      * conf/i386-ieee1275.rmk: Removed.
 +      * conf/i386-multiboot.rmk: Removed.
 +      * conf/i386-pc.rmk: Removed.
 +      * conf/i386-qemu.rmk: Removed.
 +      * conf/i386.rmk: Removed.
 +      * conf/mips-yeeloong.rmk: Removed.
 +      * conf/mips.rmk: Removed.
 +      * conf/powerpc-ieee1275.rmk: Removed.
 +      * conf/sparc64-ieee1275.rmk: Removed.
 +      * conf/tests.rmk: Removed.
 +      * conf/x86-efi.rmk: Removed.
 +      * conf/x86_64-efi.rmk: Removed.
 +      * gendistlist.sh: Removed.
 +      * geninitheader.sh: Removed.
 +      * genkernsyms.sh.in: Removed.
 +      * genmk.rb: Removed.
 +      * gensymlist.sh.in: Removed.
 +      * mkinstalldirs: Removed.
 +      * boot: Moved ...
 +      * grub-core/boot: ... to here.
 +      * bus: Moved ...
 +      * grub-core/bus: ... to here.
 +      * commands: Moved ...
 +      * grub-core/commands: ... to here.
 +      * disk: Moved ...
 +      * grub-core/disk: ... to here.
 +      * efiemu: Moved ...
 +      * grub-core/efiemu: ... to here.
 +      * font: Moved ...
 +      * grub-core/font: ... to here.
 +      * fs: Moved ...
 +      * grub-core/fs: ... to here.
 +      * gencmdlist.sh: Moved ...
 +      * grub-core/gencmdlist.sh: ... to here.
 +      * genemuinit.sh: Moved ...
 +      * grub-core/genemuinit.sh: ... to here.
 +      * genemuinitheader.sh: Moved ...
 +      * grub-core/genemuinitheader.sh: ... to here.
 +      * genfslist.sh: Moved ...
 +      * grub-core/genfslist.sh: ... to here.
 +      * genhandlerlist.sh: Moved ...
 +      * grub-core/genhandlerlist.sh: ... to here.
 +      * genmoddep.awk: Moved ...
 +      * grub-core/genmoddep.awk: ... to here.
 +      * genmodsrc.sh: Moved ...
 +      * grub-core/genmodsrc.sh: ... to here.
 +      * genpartmaplist.sh: Moved ...
 +      * grub-core/genpartmaplist.sh: ... to here.
 +      * genparttoollist.sh: Moved ...
 +      * grub-core/genparttoollist.sh: ... to here.
 +      * genterminallist.sh: Moved ...
 +      * grub-core/genterminallist.sh: ... to here.
 +      * gentrigtables.c: Moved ...
 +      * grub-core/gentrigtables.c: ... to here.
 +      * genvideolist.sh: Moved ...
 +      * grub-core/genvideolist.sh: ... to here.
 +      * gettext: Moved ...
 +      * grub-core/gettext: ... to here.
 +      * gfxmenu: Moved ...
 +      * grub-core/gfxmenu: ... to here.
 +      * gnulib: Moved ...
 +      * grub-core/gnulib: ... to here.
 +      * hello: Moved ...
 +      * grub-core/hello: ... to here.
 +      * hook: Moved ...
 +      * grub-core/hook: ... to here.
 +      * io: Moved ...
 +      * grub-core/io: ... to here.
 +      * kern: Moved ...
 +      * grub-core/kern: ... to here.
 +      * lib: Moved ...
 +      * grub-core/lib: ... to here.
 +      * loader: Moved ...
 +      * grub-core/loader: ... to here.
 +      * mmap: Moved ...
 +      * grub-core/mmap: ... to here.
 +      * normal: Moved ...
 +      * grub-core/normal: ... to here.
 +      * partmap: Moved ...
 +      * grub-core/partmap: ... to here.
 +      * parttool: Moved ...
 +      * grub-core/parttool: ... to here.
 +      * script: Moved ...
 +      * grub-core/script: ... to here.
 +      * term: Moved ...
 +      * grub-core/term: ... to here
 +      * tests/example_functional_test.c: Moved ...
 +      * grub-core/tests/example_functional_test.c: ... to here.
 +      * tests/lib/functional_test.c: Moved ...
 +      * grub-core/tests/lib/functional_test.c: ... to here.
 +      * tests/lib/test.c: Moved ...
 +      * grub-core/tests/lib/test.c: ... to here.
 +      * video: Moved ...
 +      * grub-core/video: ... to here.
 +
 +2010-08-23  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Replace --enable-grub-emu-modules with grub-emu-lite.
 +
 +      * kern/emu/cache.S: New file.  Wrapper for $target_cpu specific
 +      cache.S.
 +
 +      * include/grub/emu/misc.h (grub_emu_init): New prototype.
 +      * kern/emu/full.c: New file. For grub-emu specific initialization.
 +      * kern/emu/lite.c: New file. For grub-emu-lite initialization.
 +      * kern/emu/main.c: Call initialization function grub_emu_init.
 +
 +      * Makefile.in: Include grub-emu-lite in install.
 +      * commands/parttool.c: Use grub_no_autoload to differentiate
 +      between grub-emu and grub-emu-lite.
 +      * include/grub/misc.h: New variable grub_no_autoload.
 +
 +      * conf/any-emu.rmk: New rules for grub-emu-lite.
 +      * configure.ac: Remove --enable-grub-emu-modules.
 +      * genmk.rb: Cleanup unnecessary rules.
 +      * include/grub/dl.h: Remove GRUB_NO_MODULES macro.
 +
 +      * normal/main.c: Don't load list files on grub-emu-lite.
 +      * util/misc.c (grub_arch_sync_caches): Removed.
 +
 +2010-08-23  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/mips/startup.S (grub_prefix): Update comment to refer to
 +      grub-mkimage rather than grub-mkelfimage.
 +      * kern/powerpc/ieee1275/startup.S (grub_prefix): Likewise.
 +
 +2010-08-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * term/at_keyboard.c (grub_at_keyboard_getkey_noblock): Don't discard
 +      a key after CapsLock or NumLock. It's just a qemu bug.
 +
 +2010-08-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/usb.h (grub_usb_device): Add 'data' field back. It's
 +      needed by libusb wrapper.
 +
 +2010-08-21  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 +
 +      * docs/grub.texi (GNU/Hurd): Document booting GNU/Hurd.
 +
 +2010-08-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * loader/multiboot.c (grub_cmd_module): Don't unzip module if
 +      --nounzip is passed.
 +
 +2010-08-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      USB hotunplugging and USB serial support.
 +
 +      * bus/usb/ohci.c (grub_ohci_transfer): Fill *actual and respect timeout.
 +      * bus/usb/uhci.c (grub_free_queue): Compute *actual.
 +      (grub_uhci_transfer): Respect timeout and set *actual.
 +      * bus/usb/usb.c (grub_usb_device_initialize): Correctly skip fields of
 +      non-standard length.
 +      (grub_usb_device_attach): Autoload modules.
 +      (GRUB_MOD_INIT): Set grub_term_poll_usb.
 +      (GRUB_MOD_FINI): Unset grub_term_poll_usb.
 +      * bus/usb/usbhub.c (grub_usb_hub): Replace speed with devices. All
 +      users updated.
 +      (grub_usb_add_hub): Fill nports and children.
 +      (attach_root_port): Receive hub instead of controller.
 +      All users updated. Fill hub->devices.
 +      (grub_usb_root_hub): Allocate hub->devices.
 +      (detach_device): New function.
 +      (poll_nonroot_hub): Fill children and detach devices.
 +      * bus/usb/usbtrans.c (grub_usb_bulk_readwrite): Accept timeout and
 +      actual arguments. All users updated.
 +      (grub_usb_bulk_read_extended): New function.
 +      * bus/usb/serial/common.c: New file.
 +      * bus/usb/serial/ftdi.c: Likewise.
 +      * bus/usb/serial/pl2303.c: Likewise.
 +      * commands/terminal.c (handle_command): Support wildcard.
 +      * commands/usbtest.c: Output "Unknown" instead of empty string.
 +      * conf/any-emu.rmk (pkglib_MODULES): Add usbserial_common.mod.
 +      (usbserial_common_mod_SOURCES): New variable.
 +      (usbserial_common_mod_CFLAGS): Likewise.
 +      (usbserial_common_mod_LDFLAGS): Likewise.
 +      (pkglib_MODULES): Add usbserial_pl2303.mod.
 +      (usbserial_pl2303_mod_SOURCES): New variable.
 +      (usbserial_pl2303_mod_CFLAGS): Likewise.
 +      (usbserial_pl2303_mod_LDFLAGS): Likewise.
 +      (pkglib_MODULES): Add usbserial_ftdi.mod.
 +      (usbserial_ftdi_mod_SOURCES): New variable.
 +      (usbserial_ftdi_mod_CFLAGS): Likewise.
 +      (usbserial_ftdi_mod_LDFLAGS): Likewise.
 +      (pkglib_MODULES): Add serial.mod.
 +      (serial_mod_SOURCES): New variable.
 +      (serial_mod_CFLAGS): Likewise.
 +      (serial_mod_LDFLAGS): Likewise.
 +      * conf/i386-pc.rmk: Likewise.
 +      * conf/mips-yeeloong.rmk: Likewise.
 +      * conf/i386.rmk (serial_mod_SOURCES): Add term/ns8250.c.
 +      * conf/mips-yeeloong.rmk (kernel_img_SOURCES): Likewise.
 +      * disk/usbms.c (first_available_slot): New variable.
 +      (grub_usbms_attach): Don't reuse free slots due to potential cache
 +      problems.
 +      * include/grub/serial.h: Moved to ..
 +      * include/grub/ns8250.h: ...this.
 +      * include/grub/serial.h: New file.
 +      * include/grub/term.h (grub_term_poll_usb): New variable.
 +      * include/grub/terminfo.h (grub_terminfo_input_state): Pass term to
 +      readkey. All users updated.
 +      (grub_terminfo_output_state): Pass term to put.
 +      * include/grub/usb.h (GRUB_USB_REQTYPE): New enum.
 +      (grub_usb_controller_dev): Add timeout and actual arguments to
 +      transfer. All users updated.
 +      (grub_usb_interface): New field detach_data.
 +      (grub_usb_device): New fields children and nports.
 +      (grub_usb_ep_type_t): New type.
 +      (grub_usb_get_ep_type): New function.
 +      (grub_usb_bulk_read_extended): Likewise.
 +      * include/grub/usbdesc.h (grub_usb_desc): New type.
 +      * include/grub/usbserial.h: New file.
 +      * include/grub/usbtrans.h (grub_usb_transaction): New field preceding.
 +      * kern/term.c (grub_term_poll_usb): New variable.
 +      (grub_getkey): Call grub_term_poll_usb if set.
 +      (grub_checkkey): Likewise.
 +      (grub_getkeystatus): Likewise.
 +      * term/serial.c: Moved controller-specific parts to ...
 +      * term/ns8250.c: ... here.
 +      * term/serial.c: Mostly rewritten.
 +      * term/usb_keyboard.c: Reorganised to use GET_REPORT only on attaching
 +      according to spec.
 +
 +2010-08-20  Robert Millan  <rmh@gnu.org>
 +
 +      Make kFreeBSD code more generic to support ext2fs as root, ufs as
 +      a separate module and maybe other interesting combinations.
 +
 +      * util/grub.d/10_kfreebsd.in (load_kfreebsd_module): New function.
 +      (kfreebsd_entry): Use load_kfreebsd_module() to load modules.
 +      (kfreebsd_entry): Add generic filesystem module load routine.
 +      Map GRUB `ext2' to kFreeBSD `ext2fs'.
 +
 +2010-08-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * commands/i386/pc/sendkey.c (keysym_table): Rename "numlock" to
 +      "numcenter" (I misunderstood the purpose of this entry).
 +      * docs/grub.texi (sendkey): Likewise.
 +
 +2010-08-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * commands/i386/pc/sendkey.c (options): Remove "keep" from all
 +      status flag options; simply omitting the option is equivalent and
 +      simpler.  Rename "wait" to "pause".  Rename "sysreq" to "sysrq".
 +      (keysym_table): Rename "num5numlock" to "numlock".
 +      (grub_cmd_sendkey): Reinitialise `andmask' and `ormask', so that we
 +      can uniformly say that only the last of multiple `sendkey'
 +      invocations has any effect.
 +      * docs/grub.texi (sendkey): New section.
 +
 +2010-08-19  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * commands/i386/pc/sendkey.c (options): Fix three typos.
 +
 +2010-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Implement sendkey support.
 +
 +      * commands/i386/pc/sendkey.c: New file.
 +      * conf/i386-pc.rmk (pkglib_MODULES): Add sendkey.mod.
 +      (sendkey_mod_SOURCES): New variable.
 +      (sendkey_mod_CFLAGS): Likewise.
 +      (sendkey_mod_LDFLAGS): Likewise.
 +
 +2010-08-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * configure.ac: Move AM_INIT_AUTOMAKE after AC_CANONICAL_TARGET to
 +      fix warnings from Autoconf.
 +
 +2010-08-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * acinclude.m4 (grub_ASM_USCORE): Use a more accurate grep pattern,
 +      to avoid false positives with some assemblers that output things
 +      like "someprefix_func" as part of their output.
 +
 +2010-08-15  Robert Millan  <rmh@gnu.org>
 +
 +      * kern/emu/misc.c (grub_get_libzfs_handle): Handle libzfs_init()
 +      errors.
 +      * kern/emu/getroot.c (find_root_device_from_libzfs): Handle
 +      grub_get_libzfs_handle() errors.
 +
 +2010-08-14  Robert Millan  <rmh@gnu.org>
 +
 +      * kern/emu/misc.c (grub_find_zpool_from_dir): Abort function if
 +      filesystem is not ZFS.
 +
 +2010-08-12  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Fix for misspelled color names defaulting to black/black (bug
 +      reported by Doug Nazar)
 +
 +      * include/grub/normal.h (grub_parse_color_name_pair): Add return
 +      status to prototype.
 +      * normal/color.c (grub_parse_color_name_pair): Return failure
 +      status.
 +      (grub_env_write_color_normal): Ignore bad color names.
 +      (grub_env_write_color_highlight): Likewise.
 +      * normal/main.c (GRUB_MOD_INIT): Set default color names.
 +
 +2010-08-12  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      "shift" command support to GRUB script.
 +
 +      * include/grub/script_sh.h (grub_script_shift): New prototype.
 +      * script/execute.c (grub_script_shift): New function.
 +      * script/main.c (grub_script_init): Register shift command.
 +      (grub_script_fini): Unregister shift command.
 +      * util/grub-script-check.c (grub_script_cmd_shift): New function.
 +
 +      * tests/grub_script_shift.in: New testcase.
 +      * conf/tests.rmk: Rules for new testcase.
 +
 +2010-08-12  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      "continue" command support to GRUB script.
 +
 +      * script/execute.c (grub_script_execute_cmdwhile): Continue support.
 +      (grub_script_break): Continue support.
 +      * script/main.c (grub_script_init): Register continue command.
 +      (grub_script_fini): Unregister continue command.
 +
 +      * tests/grub_script_continue.in: New testcase.
 +      * conf/tests.rmk: Rules for new testcase.
 +
 +2010-08-12  BVK Chaitanya  <bvk@dbook>
 +
 +      "break" command support to GRUB script.
 +
 +      * conf/common.rmk: Rule updates to grub-script-check.
 +      * include/grub/misc.h (grub_min): New function.
 +      * include/grub/script_sh.h (grub_script_init): New prototype.
 +      (grub_script_fini): New prototype.
 +      (grub_script_break): New prototype.
 +      * script/main.c (grub_script_init): New function.
 +      (grub_script_fini): New function.
 +      * script/execute.c (grub_script_break): New function.
 +      * normal/main.c: Calls to grub_script_{init,fini}.
 +      * util/grub-script-check.c (grub_script_break): New function.
 +
 +      * tests/grub_script_break.in: New testcase.
 +      * conf/tests.rmk: Rules for new test case.
 +
 +2010-08-12  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Function parameters support to GRUB script.
 +
 +      * script/yylex.l (VARIABLE): Regular expression update.
 +      * script/function.c (grub_script_function_call): Moved ...
 +      * script/execute.c (grub_script_function_call): ... to here.
 +      (grub_script_execute_arglist_to_argv): Removed.
 +      (grub_script_arglist_to_argv): New function.
 +      * script/argv.c: New file.
 +      (grub_script_argv_free): New function.
 +      (grub_script_argv_next): Likewise.
 +      (grub_script_argv_append): Likewise.
 +      (grub_script_argv_split_append): Likewise.
 +      * include/grub/script_sh.h (grub_script_argv): New struct.
 +      (grub_script_argv_free): New function.
 +      (grub_script_argv_next): Likewise.
 +      (grub_script_argv_append): Likewise.
 +      (grub_script_argv_split_append): Likewise.
 +
 +      * conf/common.rmk (normal.mod): New source script/argv.c.
 +
 +      * tests/grub_script_echo1.in: More tests.
 +      * tests/grub_script_vars1.in: Likewise.
 +      * tests/grub_script_functions.in: New test case.
 +      * conf/tests.rmk: Rules for new testcase.
 +
 +2010-08-12  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Remove grub_script_cmdblock struct.
 +
 +      * include/grub/script_sh.h: Remove grub_script_cmdblock.
 +      * script/parser.y: Likewise.
 +      * script/execute.c: Rename cmdblock suffix to cmdlist.
 +      * script/script.c: Likewise.
 +      * util/grub-script-check.c: Likewise.
 +
 +2010-08-11  Yves Blusseau  <blusseau@zetam.org>
 +
 +      * .bzrignore: add grub-macho2img
 +
 +2010-08-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * kern/i386/qemu/init.c (grub_qemu_init_cirrus): Fix compilation error.
 +
 +2010-08-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove the dump of sm712 initialisation sequence.
 +
 +      * include/grub/pci.h (GRUB_PCI_CLASS_SUBCLASS_VGA): New const.
 +      * include/grub/vga.h (GRUB_VGA_IO_ARX_READ): New register.
 +      (GRUB_VGA_IO_MISC_WRITE): Likewise.
 +      (GRUB_VGA_CR_*): Added many registers.
 +      (GRUB_VGA_SR_*): Likewise.
 +      (GRUB_VGA_GR_*): Likewise.
 +      (grub_vga_write_arx): New function.
 +      (grub_video_hw_config): New struct.
 +      (grub_vga_set_geometry): New function.
 +      * kern/i386/qemu/init.c (load_palette): Use grub_vga_write_arx and
 +      GRUB_PCI_CLASS_SUBCLASS_VGA.
 +      * video/cirrus.c (grub_video_cirrus_setup): Use grub_vga_set_geometry.
 +      * video/sm712.c (grub_sm712_write_reg): New function
 +      (grub_sm712_read_reg): Likewise.
 +      (grub_sm712_sr_write): Likewise.
 +      (grub_sm712_gr_write): Likewise.
 +      (grub_sm712_cr_write): Likewise.
 +      (grub_sm712_write_arx): Likewise.
 +      (grub_sm712_cr_shadow_write): Likewise.
 +      (grub_sm712_write_dda_lookup): Likewise.
 +      (grub_video_sm712_setup): Initialise the video rather then
 +      blindly replay the dump.
 +      (main) [TEST]: Add a routine to be able to compile as standalone for
 +      tests.
 +      * video/sm712_init.c (sm712_init): Removed.
 +      (sm712_sr_seq1): New array.
 +      (sm712_sr_seq2): Likewise.
 +
 +2010-08-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/vga.h: Add missing grub/pci.h include.
 +
 +2010-08-10  Yves Blusseau  <blusseau@zetam.org>
 +
 +      * util/grub-macho2img.c (main): fix typo
 +
 +2010-08-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/vga.h (grub_vga_gr_write): Add GRUB_MACHINE_PCI_IO_BASE.
 +      (grub_vga_gr_read): Likewise.
 +      (grub_vga_cr_write): Likewise.
 +      (grub_vga_cr_read): Likewise.
 +      (grub_vga_sr_write): Likewise.
 +      (grub_vga_sr_read): Likewise.
 +      (grub_vga_palette_read): Likewise.
 +      (grub_vga_palette_write): Likewise.
 +      * video/sm712.c (GRUB_SM712_REG_BASE): New definition.
 +      (grub_sm712_sr_read): New function.
 +      (grub_video_sm712_setup): Use grub_vga_sr_write and grub_sm712_sr_read.
 +      * video/sm712_init.c (sm712_init): Substract GRUB_MACHINE_PCI_IO_BASE.
 +
 +2010-08-09  Robert Millan  <rmh@gnu.org>
 +
 +      * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Filter
 +      out unused variables on non-ZFS build.
 +
 +2010-08-08  Robert Millan  <rmh@gnu.org>
 +
 +      Fix path generation for sub-filesystems in ZFS.
 +
 +      * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Add
 +      missing slash.
 +
 +2010-08-08  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub-fstest.c (read_file, cmd_cmp): Improve error message.
 +
 +2010-08-08  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub.d/10_kfreebsd.in: When files required for ZFS do not
 +      exist, issue a proper error message (rely on `ls' for translated
 +      strings).
 +
 +2010-08-08  Robert Millan  <rmh@gnu.org>
 +
 +      Fix grub-probe invocation.
 +
 +      * util/grub.d/10_kfreebsd.in: s/label/fs_label/g.
 +
 +2010-08-04  Robert Millan  <rmh@gnu.org>
 +
 +      * configure.ac: Remove checks for getfsstat() and getmntany().
 +      Add checks for `<sys/param.h>' and `<sys/mount.h>'.
 +      * kern/emu/misc.c [HAVE_GETMNTANY]: Remove `<sys/mnttab.h>'.
 +      [HAVE_SYS_PARAM_H]: Include `<sys/param.h>'.
 +      [HAVE_SYS_MOUNT_H]: Include `<sys/mount.h>'.
 +      [HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_mount_point_from_dir): Remove
 +      function.
 +      (grub_find_zpool_from_dir): Use statfs() instead of indirect matching
 +      via find_mount_point_from_dir() and getfsstat() / getmntany().
 +
 +2010-08-04  Robert Millan  <rmh@gnu.org>
 +
 +      * include/grub/emu/misc.h (grub_find_mount_point_from_dir)
 +      (grub_find_zpool_from_mount_point): Merge into ...
 +      (grub_find_zpool_from_dir): ... this.
 +      * kern/emu/misc.c: Likewise.
 +
 +      * kern/emu/misc.c
 +      (grub_make_system_path_relative_to_its_root): Replace
 +      grub_find_mount_point_from_dir() / grub_find_zpool_from_mount_point()
 +      with grub_find_zpool_from_dir().
 +      * kern/emu/getroot.c (find_root_device_from_libzfs): Likewise.
 +
 +2010-08-04  Robert Millan  <rmh@gnu.org>
 +
 +      Support OpenSolaris in ZFS device resolution.
 +
 +      * configure.ac: Check for getmntany().
 +      * kern/emu/misc.c [HAVE_GETMNTANY]: Include `<sys/mnttab.h>'.
 +      [HAVE_GETMNTANY] (grub_find_zpool_from_mount_point): Add OpenSolaris
 +      support.
 +
 +2010-08-03  Robert Millan  <rmh@gnu.org>
 +
 +      Fix grub-emu build.
 +
 +      * include/grub/util/misc.h: Move `<grub/util/libzfs.h>' to ...
 +      * include/grub/emu/misc.h: ... here.
 +
 +      * include/grub/util/misc.h (grub_get_libzfs_handle): Move function ...
 +      * include/grub/emu/misc.h (grub_get_libzfs_handle): ... here.
 +
 +      * util/misc.c: Remove `<grub/util/libzfs.h>'.
 +      [HAVE_LIBZFS] (libzfs_handle, fini_libzfs)
 +      (grub_get_libzfs_handle): Move to ...
 +      * kern/emu/misc.c [HAVE_LIBZFS] (__libzfs_handle, fini_libzfs)
 +      (grub_get_libzfs_handle): ... here.
 +
 +2010-08-03  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * script/execute.c (grub_script_execute_cmdline): Check for NULL
 +      as command name case.
 +
 +2010-08-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * disk/raid.c (insert_array): Select unique numbers for named arrays
 +      as well, for use as keys in the disk cache.
 +
 +2010-08-01  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub.d/10_kfreebsd.in: Initialize ${kfreebsd_device} as the
 +      kFreeBSD device name, except on ZFS where the filesystem label is
 +      used.
 +      (kfreebsd_entry): On ZFS root, load `opensolaris.ko', `zfs.ko' and
 +      `/boot/zfs/zpool.cache'.
 +      Set mountfrom kernel variable using ${kfreebsd_device}.
 +
 +2010-08-01  Robert Millan  <rmh@gnu.org>
 +
 +      Make it even harder to use uninitialized `libzfs_handle' (and
 +      make the interface a bit simpler).
 +
 +      * include/grub/util/misc.h (grub_util_init_libzfs)
 +      (libzfs_handle): Remove.
 +      (grub_get_libzfs_handle): New prototype.
 +
 +      * util/misc.c [HAVE_LIBZFS] (libzfs_handle): Add `static'
 +      attribute.
 +      (grub_util_init_libzfs): Remove.
 +      (grub_get_libzfs_handle): New function.
 +
 +      * kern/emu/getroot.c (find_root_device_from_libzfs): Use
 +      grub_get_libzfs_handle() to obtain a libzfs handle instead of
 +      accessing `libzfs_handle' directly.
 +
 +2010-08-01  Robert Millan  <rmh@gnu.org>
 +
 +      * include/grub/emu/misc.h (grub_find_mount_point_from_dir)
 +      (grub_find_zpool_from_mount_point): New function prototypes.
 +
 +      * kern/emu/getroot.c [HAVE_GETFSSTAT]: Move `<sys/mount.h>' to ...
 +      * kern/emu/misc.c [HAVE_GETFSSTAT]: ... here.
 +
 +      * kern/emu/getroot.c (find_mount_point_from_dir): Move to ...
 +      * kern/emu/misc.c (grub_find_mount_point_from_dir): ... this.  Remove
 +      `static' attribute.
 +
 +      * kern/emu/getroot.c (find_root_device_from_libzfs): Split code for
 +      finding zpool from mount point into ...
 +      * kern/emu/misc.c (grub_find_zpool_from_mount_point): ... this.
 +
 +      * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): When
 +      requested path is part of a ZFS pool, use
 +      grub_find_zpool_from_mount_point() to detect its filesystem name,
 +      and generate a path with `/fsname@path' syntax.
 +
 +2010-08-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * include/grub/util/libzfs.h (libzfs_init): Set argument list to
 +      (void) rather than () so that this is a proper prototype.
 +
 +2010-08-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * lib/arg.c (grub_arg_show_help): Add the necessary spacing.
 +
 +2010-08-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * kern/emu/getroot.c (find_mount_point_from_dir): Compile only if
 +      [HAVE_LIBZFS && HAVE_LIBNVPAIR]
 +
 +2010-08-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkrescue.in: Remove ${efi_dir} after building efi.img.
 +
 +2010-08-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * script/yylex.l (NAME): Remove [:digit:], redundant with [:alnum:].
 +
 +2010-08-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Simple configuration): Document GRUB_CMDLINE_XEN
 +      and GRUB_CMDLINE_XEN_DEFAULT.  Recommend setting
 +      GRUB_GFXPAYLOAD_LINUX=text rather than unsetting it in order to
 +      disable gfxpayload.
 +      (Shell-like scripting): Add real content.
 +      (Serial terminal): Suggest `terminal_input serial; terminal_output
 +      serial' rather than putting the two commands on separate lines,
 +      since console input will be inoperative after the first command.
 +      (menuentry): Document --class, --users, and --hotkey options.
 +      (terminfo): Describe what `visually-ordered UTF-8' means (thanks,
 +      Vladimir Serbinenko).
 +
 +2010-08-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +2010-08-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/misc.c (grub_memset): Optimise to reduce cache stalls.
 +
 +2010-08-01  Robert Millan  <rmh@gnu.org>
 +
 +      * include/grub/emu/misc.h (grub_find_mount_point_from_dir)
 +      (grub_find_zpool_from_mount_point): New function prototypes.
 +
 +      * kern/emu/getroot.c [HAVE_GETFSSTAT]: Move `<sys/mount.h>' to ...
 +      * kern/emu/misc.c [HAVE_GETFSSTAT]: ... here.
 +
 +      * kern/emu/getroot.c (find_mount_point_from_dir): Move to ...
 +      * kern/emu/misc.c (grub_find_mount_point_from_dir): ... this.  Remove
 +      `static' attribute.
 +
 +      * kern/emu/getroot.c (find_root_device_from_libzfs): Split code for
 +      finding zpool from mount point into ...
 +      * kern/emu/misc.c (grub_find_zpool_from_mount_point): ... this.
 +
 +      * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): When
 +      requested path is part of a ZFS pool, use
 +      grub_find_zpool_from_mount_point() to detect its filesystem name,
 +      and generate a path with `/fsname@path' syntax.
 +
 +2010-08-01  Robert Millan  <rmh@gnu.org>
 +
 +      Prevent accidental use of uninitialized libzfs_handle.
 +
 +      * util/grub-probe.c (main): Move grub_util_init_libzfs() call to ...
 +      * kern/emu/getroot.c (find_root_device_from_libzfs): ... here.
 +      * util/misc.c (grub_util_init_libzfs): Make this function idempotent.
 +
 +2010-08-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/20_linux_xen.in: Don't use UUID for LVM root (matching
 +      util/grub.d/10_linux.in).  Fixes Debian bug #591093.
 +
 +2010-08-01  Robert Millan  <rmh@gnu.org>
 +
 +      * kern/emu/getroot.c: Include `<grub/util/misc.h>'.
 +
 +2010-07-31  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub.d/10_kfreebsd.in: Make module handling more generic.
 +
 +2010-07-31  Robert Millan  <rmh@gnu.org>
 +
 +      * kern/emu/misc.c: Add missing license header.
 +
 +2010-07-31  Robert Millan  <rmh@gnu.org>
 +
 +      * configure.ac: Check for `libzfs.h' and `libnvpair.h'.
 +
 +      * include/grub/util/libnvpair.h: Include `<config.h>'.
 +      [HAVE_LIBNVPAIR_H]: Include `<libnvpair.h>' instead of
 +      declaring libnvpair prototypes ourselves.
 +      * include/grub/util/libzfs.h: Include `<config.h>'.
 +      [HAVE_LIBZFS_H]: Include `<libzfs.h>' instead of
 +      declaring libzfs prototypes ourselves.
 +
 +      (libzfs_handle): Moved to ...
 +      * include/grub/util/misc.h (libzfs_handle): ... here.
 +      Include `<grub/util/libzfs.h>'.
 +
 +2010-07-30  Robert Millan  <rmh@gnu.org>
 +
 +      * include/grub/emu/misc.h: Add missing license header.
 +
 +2010-07-30  Robert Millan  <rmh@gnu.org>
 +
 +      Enable `grub-probe -t device' resolution on ZFS.
 +
 +      * configure.ac: Check for getfsstat(), libzfs and libnvpair.
 +      * include/grub/util/libnvpair.h: New file.
 +      * include/grub/util/libzfs.h: New file.
 +
 +      * kern/emu/getroot.c: Include `<assert.h>' and `<error.h>'.
 +      [HAVE_LIBZFS && HAVE_LIBNVPAIR]: Include `<grub/util/libzfs.h>' and
 +      `<grub/util/libnvpair.h>'.
 +      [HAVE_GETFSSTAT]: Include `<sys/mount.h>'.
 +
 +      (find_mount_point_from_dir): New static function.
 +      [HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_root_device_from_libzfs): New
 +      function.
 +      [HAVE_LIBZFS && HAVE_LIBNVPAIR] (grub_guess_root_device): Use
 +      find_root_device_from_libzfs() before ressorting to find_root_device().
 +
 +      * include/grub/util/misc.h (grub_util_init_libzfs): New function
 +      prototype.
 +      * util/misc.c: Include `<grub/util/libzfs.h>'.
 +      (grub_util_init_libzfs): New function.
 +      [HAVE_LIBZFS] (libzfs_handle): New global variable.
 +      [HAVE_LIBZFS] (fini_libzfs): New static function.
 +      (grub_util_init_libzfs): New function.
 +      * util/grub-probe.c (main): Call grub_util_init_libzfs().
 +
 +2010-07-30  Robert Millan  <rmh@gnu.org>
 +
 +      * include/grub/emu/misc.h (grub_make_system_path_relative_to_its_root)
 +      (xmalloc, xrealloc, xstrdup, xasprintf): Add
 +      `warn_unused_result' attribute.
 +      * include/grub/misc.h (grub_strdup, grub_strndup, grub_strlen)
 +      (grub_xasprintf, grub_xvasprintf): Likewise.
 +      * include/grub/emu/misc.h (xasprintf): Remove duplicate prototype.
 +
 +2010-07-29  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub-probe.c (PRINT_FS_LABEL): New enum value.
 +      (probe): Handle `PRINT_FS_LABEL'.
 +      (main): Handle `-t fs_label'.
 +
 +2010-07-29  Robert Millan  <rmh@gnu.org>
 +
 +      * configure.ac: Remove grub-mkisofs checks.
 +
 +2010-07-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/ieee1275/grub-install.in: Don't use empty grub_device.
 +      Reported by: Lennart Sorensen.
 +
 +2010-07-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/00_header.in: Remove compatibility with terminal.mod
 +      prior to terminal_input/terminal_output separation. It's been over 1.5
 +      years and those versions weren't widely deployed.
 +
 +2010-07-22  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * disk/raid.c (insert_array): Don't count named arrays when looking
 +      for unused array numbers.
 +      Reported and tested by: Michael Guntsche.
 +
 +2010-07-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * bus/usb/emu/usb.c (grub_usb_poll_devices): Add a dummy
 +      implementation of this so that grub-emu links again, with a note
 +      that this should support hotplugging in the future.
 +
 +2010-07-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/emu/getroot.c (grub_util_get_grub_dev): Use xasprintf.
 +
 +2010-07-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * disk/loopback.c (grub_cmd_loopback): Don't leak a grub_file_t
 +      handle on failure.
 +      (grub_loopback_close): Remove empty function.
 +      (grub_loopback_dev): Remove close method.
 +
 +2010-07-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Disable EFI cursor when the EFI console becomes inactive.
 +
 +      * term/efi/console.c (grub_efi_console_init): New function.
 +      (grub_efi_console_fini): New function.
 +      (grub_console_term_output): Register init and fini methods.
 +
 +2010-07-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * tests/util/grub-shell-tester.in: Remove bashism and declare as
 +      sh script.
 +
 +2010-07-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * disk/loopback.c (grub_loopback): Replace filename with file.
 +      (delete_loopback): Handle new semantics.
 +      (grub_cmd_loopback): Likewise.
 +      (grub_loopback_iterate): Likewise.
 +      (grub_loopback_close): Likewise.
 +
 +2010-07-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/i386/efi/grub-install.in: Revert to platform-specific behaviour
 +      with -p "".
 +      Reported by: Tito Keitel.
 +
 +2010-07-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Naming convention): Document new naming convention.
 +
 +2010-07-20  Vadim Solomin  <vadic052@gmail.com>
 +2010-07-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Generate device.map in something closer to the old ordering.
 +
 +      * util/deviceiter.c (struct device): New declaration.
 +      (compare_file_names): Rename to ...
 +      (compare_devices): ... this.  Sort by kernel name in preference to
 +      the stable by-id name, but keep the latter as a fallback comparison.
 +      Update header comment.
 +      (grub_util_iterate_devices) [__linux__]: Construct and sort an array
 +      of `struct device' rather than of plain file names.
 +
 +2010-07-20  Thomas Frauendorfer  <Thomas.Frauendorfer@googlemail.com>
 +
 +      * lib/i386/relocator_asm.S [! __x86_64__]: Don't try to disable amd64
 +      on i386.
 +
 +2010-07-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * commands/acpi.c (setup_common_tables): Use sizeof instead of
 +      hardcoding size.
 +      (setv1table): Likewise.
 +
 +2010-07-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * disk/raid.c (insert_array): Use md/%s to name mdadm 1.x devices,
 +      removing the homehost if present.
 +      * kern/emu/getroot.c (get_mdadm_name) [__linux__]: New function.
 +      (grub_util_get_grub_dev): Use md/%s to name mdadm 1.x devices,
 +      removing the homehost if present.
 +      (grub_util_get_grub_dev) [__linux__]: Get the array name from mdadm
 +      if possible.
 +      * util/i386/pc/grub-setup.c (main): Handle md/* devices.
 +
 +      * disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Add start_sector
 +      parameter.  Set its pointer target to 0.
 +      * disk/mdraid_linux.c (grub_mdraid_detect): Add start_sector
 +      parameter.  Set its pointer target to 0 for 0.9 metadata, or to the
 +      `data_offset' value from the superblock for 1.x metadata.
 +      * disk/raid.c (grub_raid_read): Offset reads by the start sector of
 +      data on the device.
 +      (insert_array): Record the start sector of data on the device.
 +      (grub_raid_register): Pass start_sector parameters to
 +      grub_raid_list->detect and insert_array.
 +      * include/grub/raid.h (struct grub_raid_array): Add start_sector
 +      member.
 +      (struct grub_raid): Add start_sector parameter to `detect'.
 +
 +      * disk/mdraid_linux.c (struct grub_raid_super_1x): Remove
 +      __attribute__ ((packed)), leaving a comment.
 +      (grub_mdraid_detect): Split out 0.9 and 1.x detection to ...
 +      (grub_mdraid_detect_09): ... here and ...
 +      (grub_mdraid_detect_1x): ... here.
 +
 +2010-07-20  Peter Henn  <peter.henn@web.de>
 +
 +      * disk/mdraid_linux.c (grub_mdraid_detect): Fix calculation of 1.x
 +      chunk size and disk size, which are already given as sector counts
 +      as distinct from the 0.90 units.  Fetch the correct device number
 +      from the role table instead of using the table index.
 +
 +2010-07-20  Felix Zielcke  <fzielcke@z-51.de>
 +
 +      * disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Set array->name to NULL.
 +      * disk/mdraid_linux.c (grub_raid_super_1x): New structure.
 +      (WriteMostly1): New macro.
 +      Set array->name to NULL for metadata format 0.90.  Add support for
 +      metadata 1.x.  Fix some comments.
 +      * disk/raid.c (): Add support for name based RAID arrays.  Fix a
 +      few comments.
 +      * util/getroot.c (grub_util_get_grub_dev): Add support for
 +      /dev/md/name style devices.
 +
 +2010-07-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * .bzrignore: Ignore 20_linux_xen.
 +
 +2010-07-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/import_unicode.py: Remove unnecessary imports.
 +
 +2010-07-17  Aleš Nesrsta <starous@volny.cz>
 +
 +      Hotplugging and USB hub support.
 +
 +      * bus/usb/ohci.c (grub_ohci_td): Add convenience fields.
 +      (grub_ohci): Likewise.
 +      (GRUB_OHCI_REG_CONTROL_BULK_ENABLE): New definition.
 +      (GRUB_OHCI_REG_CONTROL_CONTROL_ENABLE): Likewise.
 +      (GRUB_OHCI_RESET_CONNECT_CHANGE): Likewise.
 +      (GRUB_OHCI_CTRL_EDS): Likewise.
 +      (GRUB_OHCI_BULK_EDS): Likewise.
 +      (GRUB_OHCI_TDS): Likewise.
 +      (GRUB_OHCI_ED_ADDR_MASK): Likewise.
 +      (grub_ohci_ed_phys2virt): New function.
 +      (grub_ohci_virt_to_phys): Likewise.
 +      (grub_ohci_td_phys2virt): Likewise.
 +      (grub_ohci_td_virt2phys): Likewise.
 +      (grub_ohci_pci_iter): Allocate memory and don't wait for stable
 +      attachment.
 +      (grub_ohci_find_ed): New function.
 +      (grub_ohci_alloc_td): Likewise.
 +      (grub_ohci_free_td): Likewise.
 +      (grub_ohci_free_tds): Likewise.
 +      (grub_ohci_transfer): Use previously allocated memory.
 +      (grub_ohci_portstatus): Reset status changed bit.
 +      (grub_ohci_detect_dev): Supply status changed.
 +      (grub_ohci_fini_hw): Free memory.
 +      (grub_ohci_restore_hw): Reallocate memory.
 +      * bus/usb/uhci.c (grub_uhci_portstatus): Don't reset on disable.
 +      Reset status change.
 +      (grub_uhci_detect_dev): Supply status_change.
 +      * bus/usb/usb.c (attach_hooks): New var.
 +      (grub_usb_device_attach): New function.
 +      (grub_usb_register_attach_hook_class): Likewise.
 +      (grub_usb_unregister_attach_hook_class): Likewise.
 +      * bus/usb/usbhub.c (grub_usb_hub_add_dev): Handle errors correctly.
 +      (grub_usb_add_hub): Reset connection changed bit.
 +      (attach_root_port): New function.
 +      (grub_usb_root_hub): Likewise.
 +      (poll_nonroot_hub): Likewise.
 +      (grub_usb_poll_devices): Likewise.
 +      * commands/usbtest.c (grub_cmd_usbtest): Poll devices before listing.
 +      * disk/usbms.c (grub_usbms_open): Use device hooks.
 +      (grub_usbms_iterate) :Poll devices.
 +      (grub_usbms_finddevs): Split into ...
 +      (grub_usbms_attach): ... this ...
 +      (grub_usbms_attach): ... and this.
 +      * include/grub/usb.h (grub_usb_controller_dev): Supply status_changed
 +      in detect_dev.
 +      (grub_usb_interface): New fields attached and detach_hook.
 +      (grub_usb_attach_hook_class): New type.
 +      (grub_usb_attach_desc): New struct.
 +      (grub_usb_register_attach_hook_class): New function.
 +      (grub_usb_unregister_attach_hook_class): Likewise.
 +      (grub_usb_poll_devices): Likewise.
 +      (grub_usb_device_attach): Likewise.
 +      * include/grub/usbtrans.h (GRUB_USB_HUB_FEATURE_C_CONNECTED): New const.
 +      (GRUB_USB_HUB_STATUS_C_CONNECTED): Likewise.
 +
 +2010-07-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/bsdlabel.h (GRUB_PC_PARTITION_BSD_LABEL_WHOLE_DISK_PARTITION): New definition.
 +      * partmap/bsdlabel.c (bsdlabel_partition_map_iterate): Use FreeBSD
 +      delta determination style. Works with most NetBSD partitions too.
 +
 +2010-07-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * kern/partition.c [GRUB_UTIL]: Add missing util/misc.h inclusion.
 +      * partmap/bsdlabel.c [GRUB_UTIL]: Likewise.
 +
 +2010-07-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * disk/scsi.c (grub_scsi_open): Fix incorrect pointer dereference.
 +
 +2010-07-14  Anton Blanchard  <anton@samba.org>
 +
 +      * loader/powerpc/ieee1275/linux.c (grub_cmd_linux): Do not reject
 +      ET_DYN files.
 +
 +2010-07-14  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * Makefile.in: Use the substituted @USE_NLS@ instead of ENABLE_NLS.
 +
 +2010-07-14  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * kern/partition.c (grub_partition_check_containment): New function to
 +      check that a partition is physically contained in a parent.  Since
 +      offsets are relative (and non-negative), this reduces to checking that
 +      the partition ends before its parent.
 +      (grub_partition_map_probe): Discard out-of-range sub-partitions.
 +      (grub_partition_iterate): Likewise.
 +      * include/grub/partition.h (grub_partition_map): Slightly more detailed
 +      comments.
 +      * partmap/bsdlabel.c (bsdlabel_partition_map_iterate): Discard
 +      partitions that start before their parent, and add debug printfs.
 +
 +2010-07-13  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.in (.SUFFIX): Spell correctly, as ...
 +      (.SUFFIXES): ... this.  Fixes bug where `make foo' (where foo is a
 +      bare module name without `.mod', e.g. `test') tried to invoke a
 +      Modula-2 compiler.
 +
 +2010-07-13  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * README: Point to the Info manual.
 +
 +2010-07-13  Jiro SEKIBA <jir@unicus.jp>
 +
 +      * fs/nilfs2.c: fix macro NILFS_2ND_SUPER_BLOCK to calculate
 +      2nd superblock position from partition size.
 +
 +2010-07-10  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.in (MAINTAINER_CLEANFILES): Remove
 +      unicode/UnicodeData.txt, unicode/BidiMirroring.txt, and
 +      unicode/ArabicShaping.txt again; these are inputs to autogen.sh, not
 +      outputs.
 +
 +2010-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Restructure SCSI .id handling.
 +      Reported and tested by: Aleš Nesrsta.
 +
 +      * disk/ata.c (grub_atapi_close): Removed. All users updated.
 +      (grub_atapi_dev): Changed .name to "ata". New field .id.
 +      * disk/usbms.c (grub_usbms_close): Removed. All users updated.
 +      (grub_usbms_dev): New field .id.
 +      * disk/scsi.c (grub_scsi_iterate): Generate name.
 +      (grub_scsi_open): Parse name.
 +      * include/grub/scsi.h (grub_make_scsi_id): New function.
 +      (grub_scsi_dev): Change iterate and open to number instead of naming
 +      busses. All users updated.
 +      (grub_scsi): Remove name. Add .bus.
 +
 +2010-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * commands/help.c (grub_cmd_help): Fix a typo.
 +
 +2010-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * normal/term.c (put_glyphs_terminal): Fix state->num_lines counting.
 +      Reported and tested by: Colin Watson.
 +
 +2010-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Don't use tar GNU-ism since it's not necessary
 +      in this context.
 +
 +2010-07-07  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * tests/util/grub-shell.in: Remove bashisms and declare as sh script.
 +
 +2010-07-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * term/gfxterm.c (grub_gfxterm_background_image_cmd): Fix
 +      indentation.
 +
 +2010-07-06  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * conf/common.rmk (grub_probe_SOURCES): Add disk/raid5_recover.c
 +      and disk/raid6_recover.c.
 +      * conf/i386-pc.rmk (grub_setup_SOURCES): Likewise.
 +      * conf/sparc64-ieee1275.rmk (grub_setup_SOURCES): Likewise.
 +
 +2010-07-06  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * term/gfxterm.c (repaint_schedulded): Rename to ...
 +      (repaint_scheduled): ... this.  Update all callers.
 +      (repaint_was_schedulded): Rename to ...
 +      (repaint_was_scheduled): ... this.  Update all callers.
 +
 +2010-07-06  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/deviceiter.c (grub_util_iterate_devices): Skip MD devices,
 +      which we expect to be handled by upper layers.
 +
 +2010-07-06  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * bus/usb/usbhub.c: #include time.h header.
 +
 +2010-07-06  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * fs/reiserfs.c (grub_reiserfs_iterate_dir): Zero out first byte of
 +      entry_name also for entries without stat blocks (e.g. ".."); fixes
 +      corruption of the first entry in a directory.
 +
 +2010-07-06  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/00_header.in: Process GRUB_THEME and GRUB_BACKGROUND
 +      after setting gfxterm as the active terminal.  GRUB_BACKGROUND
 +      doesn't work otherwise.
 +
 +2010-07-05  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Features): Update list of supported file systems.
 +      (GNU/Linux): Update for GRUB 2.
 +      (Serial terminal): Remove mention of --disable-serial, which was a
 +      GRUB Legacy configure option.  Update instructions to use
 +      `terminal_input' and `terminal_output' rather than `terminal'.
 +      (Vendor power-on keys): Copy-edit.  Add cross-references to `Simple
 +      configuration' and `Installing GRUB using grub-install'.
 +      (Menu entry editor): Update for GRUB 2.
 +      (terminfo): Add vt100-color, ieee1275, and dumb terminal types.
 +      Document new -a, -u, and -v options.
 +      (initrd): New section.
 +      (initrd16): New section.
 +      (linux): New section.
 +      (linux16): New section.
 +      (search): The `var' argument to `--set' is optional.
 +      (GRUB only offers a rescue shell): Go into a little more detail on
 +      drive ordering.
 +
 +2010-07-05  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.in: Set LINGUAS to empty if ENABLE_NLS is undefined.
 +
 +2010-07-05  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.in (MAINTAINER_CLEANFILES): Add unicode/UnicodeData.txt,
 +      unicode/BidiMirroring.txt, unicode/ArabicShaping.txt, and unidata.c.
 +
 +2010-07-05  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/i386/pc/grub-setup.c (setup): Rename prefix to
 +      install_prefix, in line with install_dos_part and install_bsd_part.
 +      Add new prefix variable, which is copied to install_prefix after
 +      comparing core.img in memory with the one read from disk in the
 +      no-embedding case, and use that rather than overwriting
 +      install_prefix immediately when installing to a partition.
 +      Fixes Debian bug #586621; based on patches by Matt Kraai and M. Vefa
 +      Bicakci.
 +
 +2010-07-04  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * configure.ac: Avoid == in test command, it's not portable.
 +      * util/grub.d/30_os-prober.in: Likewise.
 +
 +2010-07-04  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/emu/getroot.c [__GNU__]: Include <sys/mman.h> for munmap.
 +
 +2010-07-04  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * util/i386/pc/grub-setup.c (setup): Do not embed when there are
 +      multiple (top-level) partmaps.
 +
 +2010-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/i386/efi/grub-install.in: Don't use empty grub_device.
 +      Reported by: Tino Keitel.
 +
 +2010-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Bidi and diacritics support.
 +
 +      * Makefile.in (widthspec.bin): New target.
 +      (widthspec.h): Likewise.
 +      (TARGET_CFLAGS): Add -DHAVE_UNIFONT_WIDTHSPEC=1 if font was available.
 +      * autogen.sh: Generate unidata.c.
 +      * commands/cat.c (grub_cmd_cat): Don't use grub_putchar.
 +      * commands/ls.c (grub_ls_list_devices): Likewise.
 +      (grub_ls_list_files): Likewise.
 +      * commands/minicmd.c (grub_mini_cmd_cat): Likewise.
 +      (grub_mini_cmd_lsmod): Likewise.
 +      * commands/read.c: Likewise.
 +      * kern/corecmd.c (grub_core_cmd_ls): Likewise.
 +      * kern/rescue_reader.c (grub_rescue_read_line): Likewise.
 +      * lib/arg.c (grub_arg_show_help): Likewise.
 +      * lib/crypto.c (grub_password_get): Likewise.
 +      * normal/auth.c (grub_username_get): Likewise.
 +      * normal/misc.c (grub_normal_print_device_info): Likewise.
 +      * commands/help.c (grub_cmd_help): Use grub_unicode_aglomerate_comb.
 +      * conf/common.rmk (grub_mkfont_SOURCES): Add unidata.c.
 +      (gfxmenu_mod_SOURCES): Add gfxmenu/font.c.
 +      (normal/charset.c_DEPENDENCIES): New variable.
 +      (normal_mod_SOURCES): Add normal/charset.c and unidata.c.
 +      (pkglib_MODULES): Remove charset.mod.
 +      (charset_mod_SOURCES): Removed.
 +      (charset_mod_CFLAGS): Likewise.
 +      (charset_mod_LDFLAGS): Likewise.
 +      (pkglib_MODULES) [ieee1275]: Remove terminfo.mod.
 +      * conf/powerpc-ieee1275.rmk (kernel_img_SOURCES): Add term/terminfo.c
 +      and term/tparm.c.
 +      * conf/sparc64-ieee1275.rmk (kernel_img_SOURCES): Likewise.
 +      * conf/i386-ieee1275.rmk (kernel_img_SOURCES): Likewise.
 +      (kernel_img_HEADERS): Add terminfo.h.
 +      * font/font.c (ascii_glyph_lookup): Return NULL on failure.
 +      Fill ->font. Reverse ascii bitmaps.
 +      (grub_font_get_xheight): New function.
 +      * font/font.c (grub_font_get_string_width): Moved from here ...
 +      * gfxmenu/font.c (grub_font_get_string_width): ... here.
 +      * font/font.c (grub_font_draw_string): Moved from here ...
 +      * gfxmenu/font.c (grub_font_draw_string): ... here.
 +      * font/font.c (grub_font_dup_glyph): New function.
 +      (grub_font_blit_glyph): Likewise.
 +      (grub_font_blit_glyph_mirror): Likewise.
 +      (blit_comb): Likewise.
 +      (grub_font_construct_dry_run): Likewise.
 +      (grub_font_get_constructed_device_width): Likewise.
 +      (grub_font_construct_glyph): Likewise.
 +      * include/grub/charset.h (grub_ucs4_to_utf8): New proto.
 +      * include/grub/misc.h (grub_utf8_to_ucs4): Moved from here ...
 +      * include/grub/charset.h (grub_utf8_to_ucs4): ... here.
 +      * include/grub/font.h (GRUB_FONT_CODE_CHAR_MASK): New constant.
 +      (GRUB_FONT_CODE_RIGHT_JOINED): Likewise.
 +      (GRUB_FONT_CODE_LEFT_JOINED): Likewise.
 +      (grub_font_get_xheight): New proto.
 +      (grub_font_get_constructed_device_width): Likewise.
 +      (grub_font_construct_glyph): Likewise.
 +      * include/grub/font.h (grub_font_get_string_width): Moved from here ...
 +      * include/grub/gfxmenu_view.h (grub_font_get_string_width): ... here.
 +      * include/grub/font.h (grub_font_draw_string): Moved from here ...
 +      * include/grub/gfxmenu_view.h (grub_font_draw_string): ... here.
 +      * include/grub/i386/vga_common.h (grub_console_putchar): Moved from here..
 +      * include/grub/i386/pc/console.h (grub_console_putchar): ... here.
 +      * include/grub/i386/vga_common.h (grub_console_real_putchar): Removed.
 +      (grub_console_getcharwidth): Likewise.
 +      * include/grub/misc.h (grub_xputs): New proto.
 +      (grub_puts): Inlined.
 +      * include/grub/normal.h (grub_print_ucs4): Add margin specification.
 +      (grub_normal_get_line_counter): Removed.
 +      (grub_install_newline_hook): Likewise.
 +      (grub_normal_get_char_counter): New proto.
 +      (grub_normal_reset_more): Likewise.
 +      (grub_xputs_normal): Likewise.
 +      * include/grub/powerpc/ieee1275/console.h: Removed.
 +      * include/grub/sparc64/ieee1275/console.h: Likewise.
 +      * include/grub/term.h (GRUB_TERM_CODE_TYPE_MASK): New definition.
 +      (GRUB_TERM_CODE_TYPE_ASCII): Likewise.
 +      (GRUB_TERM_CODE_TYPE_CP437): Likewise.
 +      (GRUB_TERM_CODE_TYPE_UTF8_LOGICAL): Likewise.
 +      (GRUB_TERM_CODE_TYPE_UTF8_VISUAL): Likewise.
 +      (GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS): Likewise.
 +      (grub_term_input): Pass reference to self. All users updated.
 +      (grub_term_output): Pass grub_unicode_glyph to putchar and getcharwidth.
 +      Pass reference to self. New fields normal_color, highlight_color and
 +      data. All users updated.
 +      (grub_putchar): Removed.
 +      (grub_putcode): Remove EXPORT_FUNC since it's not in kernel anymore.
 +      (grub_unicode_estimate_width): New function.
 +      (grub_term_getcharwidth): Add defaults.
 +      (GRUB_TERM_DEFAULT_NORMAL_COLOR): New definition.
 +      (GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR): Likewise.
 +      (GRUB_TERM_DEFAULT_STANDARD_COLOR): Likewise.
 +      (grub_cls): Remove EXPORT_FUNC.
 +      (grub_setcolorstate): Inline.
 +      (grub_newline_hook): Removed.
 +      * include/grub/terminfo.h: Rewritten. All users updated.
 +      * include/grub/unicode.h: New file.
 +      * include/grub/video.h (grub_video_signed_rect): New type.
 +      * kern/emu/console.c (grub_console_highlight_color): Removed.
 +      (grub_console_normal_color): Likewise.
 +      (grub_console_standard_color): Made static.
 +      (grub_ncurses_putchar): Remove mapping.
 +      (grub_ncurses_getcharwidth): Removed.
 +      (grub_ncurses_term_output): Declare as GRUB_TERM_CODE_TYPE_ASCII.
 +      (grub_ncurses_setcolor): Removed.
 +      (grub_ncurses_getcolor): Likewise.
 +      * kern/i386/pc/startup.S (grub_console_real_putchar): Renamed to ...
 +      (grub_console_putchar): ... this.
 +      (grub_console_putchar): Handle argument difference.
 +      * kern/ieee1275/init.c (grub_machine_init): Split console_init into
 +      console_init_early and console_init_lately.
 +      * kern/sparc64/ieee1275/init.c (grub_machine_init): Likewise.
 +      * kern/misc.c (grub_puts): Removed.
 +      (grub_vprintf): Store UTF-8 string instead of outputting it directly.
 +      (grub_vsnprintf_real): Remove str = NULL support.
 +      * kern/misc.c (grub_utf8_to_ucs4): Move from here ...
 +      * normal/charset.c (grub_utf8_to_ucs4): ... here.
 +      * kern/term.c (grub_putcode): Renamed to ...
 +      (grub_putcode_dumb): ... this. Pass grub_unicode_glyph instead of code.
 +      (grub_putchar): Removed.
 +      (grub_xputs_dumb): New function.
 +      (grub_xputs): New variable.
 +      * lib/charset.c: Move from here ...
 +      * normal/charset.c: ... to here.
 +      (grub_ucs4_to_utf8): New function.
 +      (grub_ucs4_to_utf8_alloc): Use grub_ucs4_to_utf8.
 +      (join_types): New variable.
 +      (unpack_join): New function.
 +      (bidi_types): New variable.
 +      (unpack_bidi): New function.
 +      (get_bidi_type): Likewise.
 +      (get_join_type): Likewise.
 +      (is_mirrored): Likewise.
 +      (grub_unicode_get_comb_type): Likewise.
 +      (grub_unicode_estimate_width) [HAVE_UNIFONT_WIDTHSPEC]: Likewise.
 +      (is_type_after): Likewise.
 +      (grub_unicode_aglomerate_comb): Likewise.
 +      (bidi_line_wrap): Likewise.
 +      (grub_bidi_line_logical_to_visual): Likewise.
 +      (grub_bidi_logical_to_visual): Likewise.
 +      (grub_unicode_mirror_code): Likewise.
 +      (grub_unicode_shape_code): Likewise.
 +      * normal/cmdline.c (grub_cmdline_get): Reset more counter.
 +      Don't use grub_putchar.
 +      * normal/main.c (grub_normal_init_page): Use grub_putcode.
 +      (grub_normal_reader_init): Likewise.
 +      (grub_xputs_saved): New variable.
 +      (GRUB_MOD_INIT): Set grub_xputs.
 +      (GRUB_MOD_FINI): Restore grub_xputs.
 +      * normal/menu.c (grub_wait_after_message): Don't use grub_putchar.
 +      (menu_init): Avoid printing gfxmenu error.
 +      (show_menu): Use grub_normal_get_char_counter.
 +      * normal/menu_entry.c (update_screen): Fix out-of-array.
 +      (complete): Avoid NULL dereferencing.
 +      * grub_menu_entry_run (grub_menu_entry_run): Don't use putchar.
 +      * normal/menu_text.c (print_spaces): Removed.
 +      (grub_print_ucs4): Likewise.
 +      (grub_print_message_indented): Use grub_print_ucs4.
 +      (print_message): Use grub_putcode.
 +      (print_entry): Hanlde diacritics.
 +      * normal/term.c (term_state): New type.
 +      (grub_more_lines): Removed.
 +      (term_states): New variable.
 +      (grub_normal_line_counter): Renamed to ..
 +      (grub_normal_char_counter): ...this. All users updated.
 +      (grub_normal_get_line_counter): Renamed to ...
 +      (grub_normal_get_char_counter): ... this.
 +      (grub_normal_reset_more): New function.
 +      (process_newline): Removed.
 +      (print_more): New function.
 +      (grub_install_newline_hook): Removed.
 +      (map_code): New function.
 +      (grub_puts_terminal): Use grub_print_ucs4.
 +      (putglyph): New function.
 +      (putcode_real): Likewise.
 +      (grub_putcode): Use putcode_real.
 +      (get_maxwidth): New function.
 +      (get_startwidth): Likewise.
 +      (print_ucs4_terminal): Likewise.
 +      (find_term_state): Likewise.
 +      (put_glyphs_terminal): Likewise.
 +      (print_backlog): Likewise.
 +      (print_ucs4_real): Likewise.
 +      (grub_print_ucs4): Likewise.
 +      (grub_xputs_normal): Likewise.
 +      * term/efi/console.c (grub_console_putchar): Output diacritics.
 +      (grub_console_getcharwidth): Removed.
 +      (grub_console_term_output): Declare as GRUB_TERM_CODE_TYPE_UCS4_VISUAL.
 +      * term/gfxterm.c (clear_char): Free chars.
 +      (scroll_up): Avoid leaking memory.
 +      (grub_gfxterm_putchar): Support diacritics.
 +      (grub_video_term): Declare as GRUB_TERM_CODE_TYPE_UCS4_VISUAL.
 +      * term/i386/pc/console.c (grub_console_term_output): Declare as
 +      GRUB_TERM_CODE_TYPE_VGA.
 +      * term/i386/pc/vga.c (grub_vga_term): Declare as
 +      GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS.
 +      * term/i386/pc/vga_text.c (grub_vga_text_term): Declare as
 +      GRUB_TERM_CODE_TYPE_VGA.
 +      * term/i386/vga_common.c (map_char): Removed.
 +      (grub_console_putchar): Likewise.
 +      (grub_console_getcharwidth): Likewise.
 +      * term/ieee1275/ofconsole.c: Simplify using terminfo.
 +      (colors): Reordered to match terminfo.
 +      (grub_ofconsole_normal_color): Removed.
 +      (grub_ofconsole_writeesc): Likewise.
 +      (grub_ofconsole_highlight_color): Likewise.
 +      (grub_ofconsole_getcharwidth): Likewise.
 +      (grub_ofconsole_setcolorstate): Likewise.
 +      (grub_ofconsole_setcolor): Likewise.
 +      (grub_ofconsole_getcolor): Likewise.
 +      (grub_ofconsole_readkey): Renamed to ...
 +      (readkey): ... this. Remove escape sequence handling. Return -1 on no
 +      key.
 +      (grub_ofconsole_checkkey): Removed.
 +      (grub_ofconsole_getkey): Likewise.
 +      (grub_ofconsole_getxy): Likewise.
 +      (grub_ofconsole_gotoxy): Likewise.
 +      (grub_ofconsole_cls): Likewise.
 +      (grub_ofconsole_refresh): Likewise.
 +      (grub_ofconsole_terminfo_input): New struct.
 +      (grub_ofconsole_terminfo_output): Likewise.
 +      (grub_ofconsole_term_input): Use terminfo.
 +      (grub_ofconsole_term_output): Likewise.
 +      (grub_console_init): Split into ...
 +      (grub_console_init_early): ...this and ...
 +      (grub_console_init_lately): ...this. Use terminfo.
 +      (grub_ofconsole_putchar): Renamed to ...
 +      (put): ... this. Remove mapping.
 +      (grub_ofconsole_term_output): Declare as GRUB_TERM_CODE_TYPE_ASCII.
 +      * term/serial.c: Simplify using terminfo.
 +      (xpos): Removed.
 +      (ypos): Likewise.
 +      (keep_track): Likewise.
 +      (registered): Likewise.
 +      (input_buf): Likewise.
 +      (npending): Likewise.
 +      (serial_translate_key_sequence): Likewise.
 +      (fill_input_buf): Likewise.
 +      (grub_serial_checkkey): Likewise.
 +      (grub_serial_getkey): Likewise.
 +      (grub_serial_getxy): Likewise.
 +      (grub_serial_gotoxy): Likewise.
 +      (grub_serial_putchar): Likewise.
 +      (grub_serial_cls): Likewise.
 +      (grub_serial_setcolorstate): Likewise.
 +      (grub_serial_setcursor): Likewise.
 +      (serial_hw_init): Use serial_hw_fetch.
 +      (grub_serial_terminfo_input): New variable.
 +      (grub_serial_terminfo_output): Likewise.
 +      (grub_serial_term_input): Use terminfo.
 +      (grub_serial_term_output): Likewise.
 +      * term/terminfo.c (putstr): Use put.
 +      (grub_terminfo_all_free): New function
 +      (grub_terminfo_set_current): New types vt100-color, ieee1275 and dumb.
 +      (grub_terminfo_output_register): New function.
 +      (grub_terminfo_output_unregister): Likewise.
 +      (grub_terminfo_getxy): Likewise.
 +      (grub_terminfo_readkey): Likewise.
 +      (grub_terminfo_checkkey): Likewise.
 +      (grub_terminfo_getkey): Likewise.
 +      (grub_terminfo_input_init): Likewise.
 +      (print_terminfo): Likewise.
 +      (grub_cmd_terminfo): Handle encoding.
 +      (grub_terminfo_gotoxy): Track position.
 +      (grub_terminfo_cls): Likewise.
 +      (grub_terminfo_putchar): Likewise.
 +      (grub_terminfo_setcolorstate): Handle colors
 +      (grub_terminfo_cursor_on): This ...
 +      (grub_terminfo_cursor_off): ... and this merged into ...
 +      (grub_terminfo_setcursor): ... this.
 +      * term/tparm.c (grub_terminfo_tparm): Avoid NULL dereferencing.
 +      * unicode/ArabicShaping.txt: New file (imported from Unicode).
 +      * unicode/BidiMirroring.txt: Likewise.
 +      * unicode/UnicodeData.txt: Likewise.
 +      * unicode/COPYING: Likewise.
 +      * util/grub-editenv.c (grub_putchar): Removed.
 +      (grub_xputs_real): New function.
 +      (grub_xputs): New variable.
 +      * util/grub-fstest.c (grub_putchar): Removed.
 +      (grub_xputs_real): New function.
 +      (grub_xputs): New variable.
 +      * util/grub-mkdevicemap.c (grub_putchar): Removed.
 +      (grub_xputs_real): New function.
 +      (grub_xputs): New variable.
 +      * util/grub-probe.c (grub_putchar): Removed.
 +      (grub_xputs_real): New function.
 +      (grub_xputs): New variable.
 +      * util/grub-script-check.c (grub_putchar): Removed.
 +      (grub_xputs_real): New function.
 +      (grub_xputs): New variable.
 +      * util/i386/pc/grub-setup.c (grub_putchar): Removed.
 +      (grub_xputs_real): New function.
 +      (grub_xputs): New variable.
 +      * util/import_unicode.py: New file.
 +      * util/grub-mkfont.c (ft_errmsgs): New array.
 +      (grub_glyph_info): Make bitmap a pointer.
 +      (file_formats): New type WIDTH_SPEC.
 +      (grub_font_info): New members glyphs_unsorted, glyphs_sorted, num_glyphs.
 +      (options): Add width-spec.
 +      (help): Likewise.
 +      (add_char): Renamed to ...
 +      (add_glyph): ... this.
 +      (add_glyph): Use index. Show freetype errors. Cut blank space at borders.
 +      (glyph_replace): New type.
 +      (subst_rightjoin), (subst_leftjoin), (subst_medijoin): New variables.
 +      (add_char): New function.
 +      (add_subst): Likewise.
 +      (process_cursive): Likewise.
 +      (add_font): Handle GSUB.
 +      (write_font_width_spec): New function.
 +      (main): Sort glyphs.
 +      * commands/minicmd.c (grub_mini_cmd_clear): Moved from here ...
 +      * normal/main.c (grub_mini_cmd_clear): ..here. All users updated.
 +      * kern/term.c (grub_cls): Moved from here...
 +      * normal/term.c (grub_cls): ... here.
 +
 +2010-07-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * include/grub/types.h: Define the C99-style PRIxGRUB_SIZE macro,
 +      suitable for using within the format argument of printf when
 +      converting grub_size_t.
 +      * disk/usbms.c (grub_usbms_transfer): Use PRIxGRUB_SIZE rather than
 +      "x" to convert grub_size_t arguments.
 +
 +2010-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * gfxmenu/gui_list.c (draw_menu): Use viewport to simplify code and fix
 +      too long captions.
 +      (list_get_minimal_size): Take selection box into account.
 +
 +2010-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * font/font.c (grub_font_get_glyph_with_fallback): Avoid dereferencing
 +      NULL font.
 +
 +2010-07-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/deviceiter.c (grub_util_iterate_devices): Skip device-mapper
 +      devices when iterating over /dev/disk/by-id; they will be handled
 +      later if appropriate, which they aren't always (e.g. LVM).
 +
 +2010-07-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * include/grub/misc.h (grub_reboot): Declare as noreturn.
 +      * kern/efi/efi.c (grub_reboot): Don't return, even if reset_system
 +      fails.
 +      (grub_halt): Likewise.
 +      * kern/ieee1275/openfw.c (grub_reboot): Don't return, even if
 +      reset-all fails.
 +      (grub_halt): Don't return, even if all of shut-down, power-off, and
 +      poweroff fail.
 +
 +2010-07-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/efi/init.c (grub_efi_init): set_watchdog_timer takes four
 +      arguments, not three.
 +
 +2010-07-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig_lib.in (uses_abstraction): New function.
 +      * util/grub.d/10_linux.in: Use it to check for LVM, so that
 +      LVM-on-RAID is handled correctly.
 +
 +2010-07-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Changes from GRUB Legacy): New section.
 +      (Future): Fix typo.
 +
 +2010-07-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig_lib.in (grub_file_is_not_garbage): Sometimes
 +      grub.d/README accidentally ends up executable for one reason or
 +      another.  Ignore it.
 +
 +2010-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * partmap/gpt.c (MAX_SECTOR_LOG): New definition.
 +      (gpt_partition_map_iterate): Support non-512B sectors.
 +
 +2010-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * kern/efi/init.c (grub_efi_init): Disable watchdog.
 +      Tested by: Seth Goldberg.
 +
 +2010-07-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * loader/multiboot.c (grub_multiboot_boot) [GRUB_USE_MULTIBOOT2]:
 +      Properly align mbi.
 +      Reported by: Seth Goldberg.
 +
 +2010-07-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Avoid module duplication.
 +
 +2010-07-01  Sean Finney  <seanius@seanius.net>
 +
 +      * util/grub.d/10_linux.in: Don't use UUID for LVM root.
 +
 +2010-07-01  Sean Finney  <seanius@seanius.net>
 +
 +      * disk/lvm.c (grub_lvm_scan_device): Skip snapshots.
 +
 +2010-07-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * disk/lvm.c (grub_lvm_checkvalue): New function.
 +      (grub_lvm_check_flag): Likewise.
 +
 +2010-07-01  Robert Millan  <rmh@gnu.org>
 +
 +      * kern/emu/hostdisk.c (convert_system_partition_to_system_disk):
 +      Support 'p' as partition separator on kernel of FreeBSD (used
 +      with GPT labels).
 +      (grub_util_biosdisk_get_grub_dev): Likewise.
 +
 +2010-07-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Yeeloong firmware port.
 +
 +      * boot/mips/yeeloong/fwstart.S: New file.
 +      * bus/cs5536.c (gpiodump): New const.
 +      (set_io_space): New function.
 +      (set_iod): Likewise.
 +      (set_p2d): Likewise.
 +      (grub_cs5536_init_geode): Likewise.
 +      * commands/mips/yeeloong/lsspd.c: New file.
 +      * conf/mips-qemu-mips.rmk (pkglib_MODULES): Add serial.mod.
 +      (serial_mod_SOURCES): New variable.
 +      (serial_mod_CFLAGS): Likewise.
 +      (serial_mod_LDFLAGS): Likewise.
 +      * conf/mips-yeeloong.rmk (kernel_img_SOURCES): Add term/serial.c,
 +      term/terminfo.c and term/tparm.c.
 +      (pkglib_IMAGES): Add fwstart.img.
 +      (fwstart_img_SOURCES): New variable.
 +      (fwstart_img_CFLAGS): Likewise.
 +      (fwstart_img_ASFLAGS): Likewise.
 +      (fwstart_img_LDFLAGS): Likewise.
 +      (fwstart_img_FORMAT): Likewise.
 +      (pkglib_MODULES): Add lsspd.mod.
 +      (lsspd_mod_SOURCES): New variable.
 +      (lsspd_mod_CFLAGS): Likewise.
 +      (lsspd_mod_LDFLAGS): Likewise.
 +      (pkglib_MODULES): Add halt.mod.
 +      (halt_mod_SOURCES): New variable.
 +      (halt_mod_CFLAGS): Likewise.
 +      (halt_mod_LDFLAGS): Likewise.
 +      * conf/mips.rmk (pkglib_MODULES): Remove serial.mod.
 +      (serial_mod_SOURCES): Removed.
 +      (serial_mod_CFLAGS): Likewise.
 +      (serial_mod_LDFLAGS): Likewise.
 +      * disk/ata.c (check_device): New function.
 +      (grub_ata_device_initialize): Use check_device.
 +      (grub_ata_iterate): Recheck devices.
 +      (grub_ata_open): Likewise.
 +      (grub_atapi_iterate): Likewise.
 +      (grub_atapi_open): Likewise.
 +      * include/grub/ata.h (GRUB_ATA_CH0_PORT1): New macro.
 +      (GRUB_ATA_CH1_PORT1): Likewise.
 +      (GRUB_ATA_CH0_PORT2): Likewise.
 +      (GRUB_ATA_CH1_PORT2): Likewise.
 +      * include/grub/mips/loongson.h: New file.
 +      * include/grub/mips/yeeloong/ec.h: Likewise.
 +      * include/grub/mips/yeeloong/serial.h (GRUB_MACHINE_SERIAL_PORT): New definition.
 +      (GRUB_MACHINE_SERIAL_DIVISOR_115200): Likewise.
 +      (GRUB_MACHINE_SERIAL_PORTS) [ASM_FILE]: Remove.
 +      * include/grub/misc.h (grub_halt): Declare as noreturn.
 +      * include/grub/serial.h (UART_ENABLE_FIFO): Renamed to ...
 +      (UART_ENABLE_FIFO_TRIGGER14): ... this. All users updated.
 +      (UART_ENABLE_FIFO_TRIGGER1): New definition.
 +      (UART_ENABLE_DTRRTS): Likewise.
 +      (UART_ENABLE_MODEM): Removed.
 +      (UART_ENABLE_OUT2): New const.
 +      * include/grub/term.h (grub_term_register_input_active): New function.
 +      (grub_term_register_output_active): Likewise.
 +      * kern/mips/startup.S [GRUB_MACHINE_MIPS_YEELOONG]: Handle 0xffffffff
 +      argument.
 +      * kern/mips/yeeloong/init.c (grub_get_rtc): Macroify.
 +      (init_pci): New function.
 +      (grub_machine_init): Execute platform init when firmware. Init serial.
 +      (grub_halt): Implement.
 +      (grub_exit): Likewise.
 +      (grub_reboot): Likewise.
 +      * term/serial.c (serial_hw_init): Update macros.
 +      [GRUB_MACHINE_MIPS_YEELOONG]: Init on startup.
 +      * util/grub-mkimage.c (image_target_desc): New id IMAGE_YEELOONG_FLASH.
 +      (image_targets): New target mipsel-yeeloong-flash.
 +      (generate_image): Support IMAGE_YEELOONG_FLASH.
 +      * video/sm712.c (GRUB_SM712_TOTAL_MEMORY_SPACE): New definition.
 +      (grub_video_sm712_setup): Init card.
 +      (grub_video_sm712_set_palette): Removed.
 +      * video/sm712_init.c: New file.
 +
 +2010-06-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.in (install-local): Temporarily prepend $(builddir) to
 +      PATH when running help2man and then run it on the unadorned
 +      executable names, rather than passing $(builddir)/* paths to
 +      help2man.  This avoids the build directory ending up in generated
 +      manual pages.
 +
 +2010-06-29  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig.in: Use 'set -e' rather than '#! /bin/sh -e',
 +      to avoid accidents when debugging with 'sh -x'.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub.d/00_header.in: Likewise.
 +      * util/grub.d/10_hurd.in: Likewise.
 +      * util/grub.d/10_kfreebsd.in: Likewise.
 +      * util/grub.d/10_linux.in: Likewise.
 +      * util/grub.d/10_netbsd.in: Likewise.
 +      * util/grub.d/10_windows.in: Likewise.
 +      * util/grub.d/20_linux_xen.in: Likewise.
 +      * util/grub.d/30_os-prober.in: Likewise.
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Likewise.
 +
 +2010-06-29  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * commands/cat.c (grub_cmd_cat): Fix buffer overrun if '\r' is the
 +      last character in the buffer.
 +      Reported by: Vladimir Serbinenko.
 +
 +2010-06-29  Robert Millan  <rmh@gnu.org>
 +
 +      * docs/grub.texi (Simple configuration): Document ${GRUB_BADRAM}.
 +      (Command-line and menu entry commands): Document `badram' command.
 +
 +2010-06-28  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub-mkconfig.in: Export `GRUB_BADRAM' variable.
 +      * util/grub.d/00_header.in: When `GRUB_BADRAM' is set, issue badram
 +      command using ${GRUB_BADRAM} as parameter.
 +
 +2010-06-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Device map): New section.
 +      (Themes): New section (stub).
 +      * Makefile.in (docs/grub.info): The info documentation now builds
 +      without errors.  Make sure it stays that way.
 +
 +2010-06-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use normal parser for menu entries.
 +      Reported by: Thomas Frauendorfer
 +
 +      * include/grub/parser.h (grub_parser_execute): Don't export.
 +      * normal/menu.c (grub_menu_execute_entry_real): New function.
 +      (grub_menu_execute_entry): Use grub_menu_execute_entry_real.
 +
 +2010-06-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Embedded configuration): New section (replacing
 +      old "Preset Menu" stub).
 +      (Images): New section.
 +      (configfile): Note that any menu entries defined in `file' are shown
 +      immediately.
 +
 +2010-06-28  Josh Triplett  <josh@joshtriplett.org>
 +
 +      * mmap/i386/pc/mmap_helper.S: Set CF on return.
 +
 +2010-06-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-install.in: Add --debug-image= option.
 +
 +2010-06-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Change grub-mkdevicemap to emit /dev/disk/by-id/ names where
 +      possible on Linux.
 +
 +      * util/deviceiter.c (check_device): Rename to ...
 +      (check_device_readable_unique): ... this.  Update all callers.
 +      Maintain and check a list of which devices (by canonicalized name)
 +      have already been seen.
 +      (clear_seen_devices): New function.
 +      (compare_file_names) [__linux__]: New function.
 +      (grub_util_iterate_devices): Clear the list of seen devices on exit
 +      and (just in case) on entry.
 +      (grub_util_iterate_devices) [__linux__]: Iterate over non-partition
 +      devices in /dev/disk/by-id/, in sorted order.  Remove DM-RAID
 +      seen-devices list, superseded by general code in check_device.
 +
 +2010-06-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * commands/cat.c (options): New variable.
 +      (grub_cmd_cat): Parse options.  If the --dos option is given, print
 +      DOS-style "\r\n" line endings as simple newlines (Debian bug
 +      #586358).
 +      (GRUB_MOD_INIT): Use extcmd.
 +      (GRUB_MOD_FINI): Likewise.
 +      * docs/grub.texi (cat): Document --dos.
 +
 +2010-06-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      XEN with Linux grub-mkconfig support.
 +
 +      * conf/common.rmk (grub-mkconfig_SCRIPTS) [linux]: Add 20_linux_xen.
 +      * util/grub-mkconfig.in: Export GRUB_CMDLINE_XEN and
 +      GRUB_CMDLINE_XEN_DEFAULT.
 +      * util/grub.d/20_linux_xen.in: New file.
 +
 +2010-06-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Initialise VGA video on qemu ourselves.
 +
 +      * boot/i386/qemu/boot.S: Don't call 0xc000.
 +      * conf/i386-qemu.rmk (kern/i386/qemu/init.c_DEPENDENCIES): New variable.
 +      (kernel_img_SOURCES): Add kern/i386/qemu/init.c and bus/pci.c.
 +      (kernel_img_HEADERS): Add pci.h.
 +      * conf/i386.rmk (pkglib_MODULES) [qemu]: Remove pci.mod.
 +      * configure.ac: Force unifont on qemu and yeeloong.
 +      * include/grub/i386/qemu/kernel.h (grub_qemu_init_cirrus): New proto.
 +      (grub_vga_palette_write): Use correct register.
 +      * kern/i386/coreboot/init.c (grub_machine_init) [GRUB_MACHINE_QEMU]:
 +      Call grub_qemu_init_cirrus.
 +      * kern/i386/qemu/init.c: New file.
 +      * term/i386/pc/vga_text.c (inc_y): Never read outside the screen.
 +
 +      * commands/videotest.c (grub_cmd_videotest): Handle double buffering.
 +
 +2010-06-26  Pavel Roskin  <proski@gnu.org>
 +
 +      * util/grub.d/10_linux.in: Add support for initrd images on Fedora
 +      13.
 +
 +2010-06-26  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Simple configuration): Explain that
 +      GRUB_DISABLE_LINUX_RECOVERY and GRUB_DISABLE_NETBSD_RECOVERY must be
 +      set to `true' to disable their respective recovery entries, not
 +      merely set.
 +
 +2010-06-26  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Make the `source' command slightly faster.
 +
 +      * normal/main.c (grub_normal_execute): Don't re-read list files when
 +      nested.
 +
 +2010-06-23  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * loader/i386/multiboot_mbi.c (retrieve_video_parameters): Set red
 +      field position and mask size to red fields from mode_info, not
 +      green.
 +      * loader/multiboot_mbi2.c (retrieve_video_parameters): Likewise.
 +      Remove redundant tag->common.framebuffer_type assignment.
 +      Reported by: Seth Goldberg.
 +
 +2010-06-23  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Sync up other versions of the Linux loader with Robert Millan's
 +      change of 2010-01-09, "Make loader output a bit more user-friendly".
 +
 +      * loader/i386/efi/linux.c (grub_linux_boot): Move debug info to
 +      grub_dprintf().
 +      (grub_cmd_linux): Likewise.
 +      (grub_cmd_initrd): Likewise.
 +      * loader/i386/ieee1275/linux.c (grub_cmd_linux): Likewise.
 +      * loader/i386/pc/linux.c (grub_cmd_linux): Likewise.
 +
 +2010-06-21  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/efi/mm.c (grub_efi_mm_init): Handle systems with memory maps
 +      larger than MEMORY_MAP_SIZE.
 +
 +2010-06-21  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Fix parallel build.
 +
 +      * conf/common.rmk: Add grub_script.tab.h as a grub-script-check
 +      dependency.
 +      * script/parser.y: #include grub_script.tab.h header.
 +
 +2010-06-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support >3GiB and <16MiB RAM in i386-qemu.
 +
 +      * kern/i386/qemu/mmap.c (QEMU_CMOS_MEMSIZE2_HIGH): New const.
 +      (QEMU_CMOS_MEMSIZE2_LOW): Likewise.
 +      (grub_lower_mem): Removed.
 +      (grub_upper_mem): Likewise.
 +      (mem_size): Made static.
 +      (above_4g): New variable.
 +      (grub_machine_mmap_init): Detect small mem_size and above_4g.
 +      (grub_machine_mmap_iterate): Order in ascending order and add above_4g
 +      support.
 +
 +2010-06-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Cirrus 5446 and Bochs video cards support.
 +
 +      * conf/i386.rmk (pkglib_MODULES): Add video_cirrus.mod and
 +      video_bochs.mod
 +      (video_cirrus_mod_SOURCES): New variable.
 +      (video_cirrus_mod_CFLAGS): Likewise.
 +      (video_cirrus_mod_LDFLAGS): Likewise.
 +      (video_bochs_mod_SOURCES): Likewise.
 +      (video_bochs_mod_CFLAGS): Likewise.
 +      (video_bochs_mod_LDFLAGS): Likewise.
 +      * include/grub/vga.h: New file.
 +      * include/grub/video_fb.h (grub_video_fb_doublebuf_blit_init): Removed.
 +      (grub_video_fb_set_page_t): New type.
 +      (grub_video_fb_setup): New prototype.
 +      (grub_video_fb_swap_buffers): Likewise.
 +      (grub_video_fb_get_info_and_fini): Likewise.
 +      * term/i386/pc/vga_text.c (CRTC_ADDR_PORT): Moved to include/grub/vga.h.
 +      (CRTC_DATA_PORT): Likewise.
 +      (CRTC_CURSOR): Likewise.
 +      (CRTC_CURSOR_ADDR_HIGH): Likewise.
 +      (CRTC_CURSOR_ADDR_LOW): Likewise.
 +      (CRTC_CURSOR_DISABLE): Likewise.
 +      (update_cursor): Use grub_vga_cr_write.
 +      (grub_vga_text_setcursor): Likewise.
 +      * video/bochs.c: New file.
 +      * video/fb/video_fb.c (render_target): Moved into framebuffer variable.
 +      (palette): Likewise.
 +      (palette_size): Likewise.
 +      (framebuffer): New variable.
 +      (grub_video_fb_init): Use 'framebuffer'.
 +      (grub_video_fb_fini): Likewise.
 +      (grub_video_fb_get_info): Likewise.
 +      (grub_video_fb_get_palette): Likewise.
 +      (grub_video_fb_set_palette): Likewise.
 +      (grub_video_fb_set_viewport): Likewise.
 +      (grub_video_fb_get_viewport): Likewise.
 +      (grub_video_fb_map_color): Likewise.
 +      (grub_video_fb_map_rgb): Likewise.
 +      (grub_video_fb_map_rgba): Likewise.
 +      (grub_video_fb_unmap_color): Likewise.
 +      (grub_video_fb_unmap_color_int): Likewise.
 +      (grub_video_fb_fill_rect): Likewise.
 +      (grub_video_fb_blit_bitmap): Likewise.
 +      (grub_video_fb_blit_render_target): Likewise.
 +      (grub_video_fb_scroll): Likewise.
 +      (grub_video_fb_create_render_target): Likewise.
 +      (grub_video_fb_doublebuf_blit_init): Likewise.
 +      (grub_video_fb_set_active_render_target): Handle doublebuffering.
 +      (doublebuf_pageflipping_update_screen): New function.
 +      (doublebuf_pageflipping_init): Likewise.
 +      (grub_video_fb_setup): Likewise.
 +      (grub_video_fb_swap_buffers): Likewise.
 +      (grub_video_fb_get_info_and_fini): Likewise.
 +      * video/i386/pc/vbe.c (framebuffer): Remove all doublebuffering fields.
 +      All users updated.
 +      (doublebuf_pageflipping_commit): Restructured into ...
 +      (doublebuf_pageflipping_set_page): ... this.
 +      (doublebuf_pageflipping_update_screen): Removed.
 +      (doublebuf_pageflipping_init): Likewise.
 +      (double_buffering_init): Likewise.
 +      (grub_video_vbe_setup): Use grub_video_fb_setup.
 +      (grub_video_vbe_swap_buffers): Removed.
 +      (grub_video_vbe_set_active_render_target): Likewise.
 +      (grub_video_vbe_get_active_render_target): Likewise.
 +      (grub_video_vbe_get_info_and_fini): Use grub_video_fb_get_info_and_fini.
 +      (grub_video_vbe_adapter): Use grub_video_fb_swap_buffers,
 +      grub_video_fb_set_active_render_target and
 +      grub_video_fb_get_active_render_target.
 +      * video/i386/pc/vga.c (SEQUENCER_ADDR_PORT): Move to include/grub/vga.h.
 +      (SEQUENCER_DATA_PORT): Likewise.
 +      (MAP_MASK_REGISTER): Likewise.
 +      (CRTC_ADDR_PORT): Likewise.
 +      (CRTC_DATA_PORT): Likewise.
 +      (START_ADDR_HIGH_REGISTER): Likewise.
 +      (START_ADDR_LOW_REGISTER): Likewise.
 +      (GRAPHICS_ADDR_PORT): Likewise.
 +      (GRAPHICS_DATA_PORT): Likewise.
 +      (READ_MAP_REGISTER): Likewise.
 +      (INPUT_STATUS1_REGISTER): Likewise.
 +      (INPUT_STATUS1_VERTR_BIT): Likewise.
 +      (get_map_mask): Use grub_vga_sr_read.
 +      (set_map_mask): Use grub_vga_sr_write.
 +      (set_read_map): Use grub_vga_gr_write.
 +      (set_start_address): Use grub_vga_cr_write.
 +      * video/sm712.c (framebuffer): Remove leftover fields.
 +
 +2010-06-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig.in: Capitalise and export GRUB_PREFIX.  Stop
 +      setting GRUB_VIDEO_BACKEND.  Make it available as a user override
 +      instead.  Replace the gfxterm backend check with a check that
 +      ${GRUB_PREFIX}/video.lst is non-empty.
 +      * util/grub.d/00_header.in: Use GRUB_PREFIX rather than computing it
 +      again.
 +      (load_video): New generated function.  Call it before loading
 +      gfxterm rather than loading ${GRUB_VIDEO_BACKEND}.
 +      * util/grub.d/10_linux.in (linux_entry): Call load_video.
 +      * util/grub.d/30_os-prober.in (osx_entry): Likewise.
 +      * docs/grub.texi (Simple configuration): Document
 +      GRUB_VIDEO_BACKEND.
 +
 +2010-06-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use video functions in linux and xnu loaders.
 +
 +      * conf/i386-pc.rmk (xnu_mod_SOURCES): Remove loader/i386/pc/xnu.c.
 +      * conf/x86-efi.rmk (xnu_mod_SOURCES): Remove loader/i386/efi/xnu.c.
 +      * include/grub/i386/xnu.h (grub_xnu_set_video): Removed.
 +      * loader/i386/efi/linux.c (grub_linux_setup_video): Copied from
 +      loader/i386/pc/linux.c.
 +      (grub_linux_boot): Resynced with loader/i386/pc/linux.c.
 +      (find_line_len): Removed.
 +      (find_framebuf): Likewise.
 +      (grub_cmd_linux): Declare grub_linux_boot as possibly returning.
 +      * loader/i386/efi/xnu.c: Removed.
 +      * loader/i386/pc/xnu.c: Moved from here...
 +      * loader/i386/xnu.c: ...here.
 +
 +      Enable priorities in video drivers.
 +
 +      * include/grub/video.h (grub_video_adapter_prio_t): New type.
 +      (grub_video_adapter): New field prio.
 +      (grub_video_register): Respect prio when inserting.
 +      * video/efi_gop.c (grub_video_gop_adapter): Add prio.
 +      * video/efi_uga.c (grub_video_uga_adapter): Likewise.
 +      * video/emu/sdl.c (grub_video_sdl_adapter): Likewise.
 +      * video/i386/pc/vbe.c (grub_video_vbe_adapter): Likewise.
 +      * video/i386/pc/vga.c (grub_video_vga_adapter): Likewise.
 +      * video/ieee1275.c (grub_video_ieee1275_adapter): Likewise.
 +      * video/sm712.c (grub_video_sm712_adapter): Likewise.
 +
 +      Fix SDL driver ID.
 +
 +      * include/grub/video.h (grub_video_driver_id_t): New value
 +      GRUB_VIDEO_DRIVER_SDL.
 +      * video/emu/sdl.c (grub_video_sdl_adapter): Add id.
 +
 +2010-06-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/i386/pc/grub-setup.c (usage): Pass an extra `program_name'
 +      argument to printf.
 +      * util/sparc64/ieee1275/grub-setup.c (usage): Likewise.
 +
 +2010-06-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/i386/pc/grub-setup.c (usage): Fix syntax error.
 +      * util/sparc64/ieee1275/grub-setup.c (usage): Likewise.
 +
 +2010-06-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/i386/pc/grub-setup.c (usage): Warn against running grub-setup
 +      directly, and recommend grub-install instead.
 +      * util/sparc64/ieee1275/grub-setup.c (usage): Likewise.
 +
 +2010-06-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Fix i386-pc prefix handling with nested partitions (Debian bug
 +      #585068).  Note that the case where the core image is booted using
 +      multiboot and relocated from its original location still requires
 +      more work.
 +
 +      * kern/i386/pc/init.c (make_install_device): If the prefix starts
 +      with "(,", fill the boot drive in between those two characters, but
 +      expect that a full partition specification including partition map
 +      names will follow.
 +      * util/i386/pc/grub-setup.c (setup): Unless an explicit prefix was
 +      specified, write a prefix without the drive name but including a
 +      full partition specification.
 +
 +2010-06-16  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig.in: Ignore non-option arguments, for
 +      compatibility with older versions (before 2010-06-12) which did the
 +      same.  In particular, this makes it easier to ship an update-grub
 +      wrapper which is compatible with that used with GRUB Legacy (Debian
 +      bug #586056).
 +
 +2010-06-14  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * Makefile.in (install-local): Use $$file.h2m instead of $$dest.h2m
 +      for manual page generation.
 +
 +2010-06-14  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * po/POTFILES: Remove leftover commands/handler.c.
 +
 +2010-06-14  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig.in: Remove vestige of old argument parsing that
 +      left this script non-functional.
 +
 +2010-06-14  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/man/grub-emu.h2m: New file.
 +
 +2010-06-13  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Commands): Document reduced command set in rescue
 +      mode.
 +      (cpuid): New section.
 +
 +2010-06-13  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev): Use the
 +      new partition naming style.
 +      * util/grub-install.in: Adapt sed subtitutions in grub-probe calls.
 +
 +2010-06-12  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Add "-o grub.iso" like cmdline options support.
 +
 +      * util/grub-install.in: Improve cmdline option parsing.
 +      * util/grub-mkconfig.in: Likewise.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub-reboot.in: Likewise.
 +      * util/grub-set-default.in: Likewise.
 +      * util/i386/efi/grub-install.in: Likewise.
 +      * util/ieee1275/grub-install.in: Likewise.
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Likewise.
 +
 +2010-06-12  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * .bzrignore: Ignore 41_custom.
 +
 +2010-06-12  Thomas Schmitt  <scdbackup@gmx.net>
 +
 +      * util/grub-mkrescue.in: Pass unrecognized options to xorriso.
 +
 +2010-06-12  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Avoid false positives in fs.lst, partmap.lst, and video.lst due to
 +      prototype declarations.
 +
 +      * genmk.rb (PModule::rule): Define GRUB_LST_GENERATOR when
 +      generating fs, partmap, and video lists.
 +      * include/grub/fs.h (grub_fs_register): Omit prototype if
 +      GRUB_LST_GENERATOR is defined.
 +      * include/grub/partition.h (grub_partition_map_register): Likewise.
 +      * include/grub/video.h (grub_video_register): Likewise.
 +
 +2010-06-12  Javier Martín <lordhabbit@gmail.com>
 +
 +      * include/grub/types.h: Check for GRUB_CPU_SIZEOF_LONG when appropriate.
 +
 +2010-06-12  Thomas Schmitt  <scdbackup@gmx.net>
 +
 +      * util/grub-mkrescue.in: Support --xorriso argument.
 +
 +2010-06-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Use -graft-points instead of -pathspecs.
 +      Suggested by: Thomas Schmitt.
 +
 +2010-06-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Add --sort-weight arguments to xorriso.
 +      Suggested by: Thomas Schmitt.
 +
 +2010-06-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      custom.cfg support.
 +
 +      * conf/common.rmk (grub-mkconfig_SCRIPTS): Add 41_custom.
 +      * util/grub.d/41_custom.in: New file.
 +
 +2010-06-12  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkrescue.in (make_image): Remove sh module, which has
 +      been merged back into normal.
 +
 +2010-06-11  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * include/grub/efi/uga_draw.h (GRUB_EFI_UGA_GLT_MAX): Rename to ...
 +      (GRUB_EFI_UGA_BLT_MAX): ... this (typo fix).
 +
 +2010-06-11  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.in (install-local): Include $(srcdir)/docs/man/$$dest.h2m
 +      when generating manual pages.
 +      * docs/man/grub-bin2h.h2m: New file.
 +      * docs/man/grub-editenv.h2m: New file.
 +      * docs/man/grub-fstest.h2m: New file.
 +      * docs/man/grub-install.h2m: New file.
 +      * docs/man/grub-macho2img.h2m: New file.
 +      * docs/man/grub-mkconfig.h2m: New file.
 +      * docs/man/grub-mkdevicemap.h2m: New file.
 +      * docs/man/grub-mkfont.h2m: New file.
 +      * docs/man/grub-mkimage.h2m: New file.
 +      * docs/man/grub-mkpasswd-pbkdf2.h2m: New file.
 +      * docs/man/grub-mkrelpath.h2m: New file.
 +      * docs/man/grub-mkrescue.h2m: New file.
 +      * docs/man/grub-ofpathname.h2m: New file.
 +      * docs/man/grub-pe2elf.h2m: New file.
 +      * docs/man/grub-probe.h2m: New file.
 +      * docs/man/grub-reboot.h2m: New file.
 +      * docs/man/grub-script-check.h2m: New file.
 +      * docs/man/grub-set-default.h2m: New file.
 +      * docs/man/grub-setup.h2m: New file.
 +
 +2010-06-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use FOR_* macros instead of *_iterate whenever possible.
 +
 +      * commands/handler.c: Removed.
 +      * commands/help.c (grub_cmd_help): Use FOR_COMMANDS.
 +      * commands/minicmd.c (grub_mini_cmd_lsmod): Use FOR_DL_MODULES.
 +      * conf/any-emu.rmk (kernel_img_SOURCES): Remove kern/handler.c.
 +      * conf/common.rmk (script/lexer.c_DEPENDENCIES): Add grub_script.yy.h.
 +      (grub_probe_SOURCES): Remove kern/parser.c.
 +      (util/grub-script-check.c_DEPENDENCIES): Removed.
 +      (grub_script_check_SOURCES): Remove kern/handler.c, kern/parser.c
 +      and grub_script_check_init.c.
 +      (grub_script_check_init.lst): Removed.
 +      (grub_script_check_init.h): Likewise.
 +      (grub_script_check_init.c): Likewise.
 +      (pkglib_MODULES): Remove handler.mod and sh.mod.
 +      (handler_mod_SOURCES): Removed.
 +      (handler_mod_CFLAGS): Likewise.
 +      (handler_mod_LDFLAGS): Likewise.
 +      (normal_mod_SOURCES): Remove normal/handler.c.
 +      Add script/main.c, script/script.c, script/execute.c,
 +      script/function.c, script/lexer.c, grub_script.tab.c
 +      and grub_script.yy.c.
 +      * conf/i386-coreboot.rmk (kernel_img_SOURCES): Remove kern/handler.c.
 +      * conf/i386-ieee1275.rmk (kernel_img_SOURCES): Likewise.
 +      * conf/i386-pc.rmk (kernel_img_SOURCES): Likewise.
 +      (grub_setup_SOURCES): Remove kern/parser.c.
 +      * conf/i386-qemu.rmk (kernel_img_SOURCES): Remove kern/handler.c.
 +      * conf/mips-qemu-mips.rmk (kernel_img_SOURCES): Likewise.
 +      * conf/mips-yeeloong.rmk (kernel_img_SOURCES): Likewise.
 +      * conf/powerpc-ieee1275.rmk (kernel_img_SOURCES): Likewise.
 +      * conf/sparc64-ieee1275.rmk (kernel_img_SOURCES): Likewise.
 +      (grub_setup_SOURCES): Remove kern/parser.c.
 +      * conf/x86-efi.rmk (kernel_img_SOURCES): Remove kern/handler.c.
 +      * gettext/gettext.c (grub_gettext_delete_list): Don't use grub_list_pop.
 +      * include/grub/command.h (grub_command_iterate): Removed.
 +      (FOR_COMMANDS): New macro.
 +      * include/grub/dl.h (grub_dl): New member next.
 +      (grub_dl_iterate): Removed.
 +      (grub_dl_head): New variable declaration.
 +      (FOR_DL_MODULES): New macro.
 +      * include/grub/fs.h: Include list.h.
 +      (grub_fs): Make next first element.
 +      (grub_fs_list): New variable declaration.
 +      (grub_fs_register): Make inline.
 +      (grub_fs_unregister): Likewise.
 +      (grub_fs_iterate): Removed.
 +      (FOR_FILESYSTEMS): New macro.
 +      * include/grub/handler.h: Removed.
 +      * include/grub/list.h (grub_list_hook_t): Removed.
 +      (grub_list_test_t): Likewise.
 +      (grub_list_pop): Likewise.
 +      (grub_list_iterate): Likewise.
 +      (grub_list_insert): Likewise.
 +      (FOR_LIST_ELEMENTS): New macro.
 +      * include/grub/parser.h (grub_parser_class): Removed.
 +      (grub_parser_register): Likewise.
 +      (grub_parser_unregister): Likewise.
 +      (grub_parser_get_current): Likewise.
 +      (grub_parser_set_current): Likewise.
 +      (grub_register_rescue_parser): Likewise.
 +      (grub_rescue_parse_line): New function.
 +      * include/grub/partition.h (FOR_PARTITION_MAPS): Use FOR_LIST_ELEMENTS.
 +      * include/grub/script_sh.h (grub_script_function_list): New variable
 +      declaration.
 +      (FOR_SCRIPT_FUNCTIONS): New macro.
 +      (grub_script_function_iterate): Removed.
 +      (grub_normal_parse_line): New prototype.
 +      * include/grub/term.h (FOR_ACTIVE_TERM_INPUTS): Use FOR_LIST_ELEMENTS.
 +      (FOR_DISABLED_TERM_INPUTS): Likewise.
 +      (FOR_ACTIVE_TERM_OUTPUTS): Likewise.
 +      (FOR_DISABLED_TERM_OUTPUTS): Likewise.
 +      * include/grub/video.h (grub_video_adapter): Move 'next' to first
 +      element.
 +      (grub_video_register): Inline.
 +      (grub_video_unregister): Likewise.
 +      (grub_video_adapter_list): New variable declaration.
 +      (grub_video_iterate): Removed.
 +      (FOR_VIDEO_ADAPTERS): New macro.
 +      * kern/dl.c (grub_dl_list): Removed. All users updated.
 +      (grub_dl_iterate): Removed.
 +      * kern/fs.c (grub_fs_list): Make global.
 +      (grub_fs_register): Removed.
 +      (grub_fs_unregister): Likewise.
 +      (grub_fs_iterate): Likewise.
 +      * kern/handler.c: Removed.
 +      * kern/list.c (grub_list_pop): Removed.
 +      (grub_list_iterate): Likewise.
 +      (grub_list_insert): Likewise.
 +      (grub_named_list_find): Use FOR_LIST_ELEMENTS.
 +      (grub_prio_list_insert): Don't use grub_list_insert.
 +      * kern/main.c (grub_register_rescue_parser): Don't call
 +      grub_register_rescue_parser.
 +      * kern/parser.c (grub_parser_class): Removed.
 +      (grub_parser_execute): Use grub_rescue_parse_line.
 +      * kern/rescue_parser.c (grub_rescue_parse_line): Make global.
 +      (grub_rescue_parser): Removed.
 +      (grub_register_rescue_parser): Likewise.
 +      * kern/rescue_reader.c (grub_rescue_run): Use grub_rescue_parse_line.
 +      * normal/auth.c (is_authenticated): Use FOR_LIST_ELEMENTS.
 +      (grub_auth_check_authentication): Likewise.
 +      * normal/completion.c (iterate_command): Removed.
 +      (grub_normal_do_completion): Use FOR_COMMANDS.
 +      * normal/handler.c: Removed.
 +      * normal/main.c (read_config_file): Remove parser changing.
 +      (grub_normal_execute): Don't call read_handler_list.
 +      (grub_normal_read_line_real): Statically allocate prompt.
 +      (grub_cmdline_run): Use grub_normal_parse_line.
 +      (GRUB_MOD_FINI): Don't call free_handler_list.
 +      * normal/menu_entry.c (run): Likewise.
 +      * script/function.c (grub_script_function_list): Make global.
 +      (grub_script_function_iterate): Removed.
 +      * script/main.c (grub_normal_parse_line): Make global.
 +      (grub_sh_parser): Removed.
 +      (GRUB_MOD_INIT): Likewise.
 +      (GRUB_MOD_FINI): Likewise.
 +      * tests/lib/functional_test.c (grub_functional_test): Use
 +      FOR_LIST_ELEMENTS.
 +      * tests/lib/test.c (free_failures): Don't use grub_list_pop.
 +      (grub_test_run): Use FOR_LIST_ELEMENTS.
 +      * tests/lib/unit_test.c (main): Likewise.
 +      * util/deviceiter.c (grub_util_iterate_devices): Don't use
 +      grub_list_pop.
 +      * util/grub-fstest.c (grub_term_input_class): Removed.
 +      (grub_term_output_class): Likewise.
 +      * util/grub-probe.c: Likewise.
 +      * util/i386/pc/grub-setup.c: Likewise.
 +      * util/sparc64/ieee1275/grub-setup.c: Likewise.
 +      * util/grub-script-check.c (main): Don't call grub_init_all and
 +      grub_fini_all.
 +      * video/video.c (grub_video_adapter_list): Make global.
 +      (grub_video_register): Removed.
 +      (grub_video_unregister): Likewise.
 +      (grub_video_iterate): Likewise.
 +
 +2010-06-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Vendor power-on button): Add Asus EeePC 1005PE as
 +      reported by Henrique Ferreiro.
 +
 +2010-06-09  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub.d/10_linux.in: Prefer compressed images over non-compressed
 +      ones, when both are available.
 +
 +2010-06-08  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      Make --version uniform and avoid hard-coded program name.
 +
 +      * util/grub-mkimage.c (main): Use `program_name' instead of
 +      hard-coded string.
 +      * util/i386/pc/grub-setup.c (main): Likewise.
 +      * util/sparc64/ieee1275/grub-setup.c (parse_options): Likewise.
 +      * util/grub-install.in: Save the basename of $0 in $self, and use the
 +      latter in informational messages.  Use the same format for --version
 +      as the binary programs.
 +      * util/grub-mkconfig.in: Likewise.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub-reboot.in: Likewise.
 +      * util/grub-set-default.in: Likewise.
 +      * util/i386/efi/grub-install.in: Likewise.
 +      * util/ieee1275/grub-install.in: Likewise.
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Likewise.
 +
 +2010-06-08  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * util/i386/pc/grub-setup.c (setup): Use absolute offsets for start of
 +      embedding area.  Use <= instead of == when checking for non-emptiness.
 +
 +2010-06-08  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * configure.ac: Add `.' to the directories searched for unifont.
 +
 +2010-06-08  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * .bzrignore: Add ascii.bitmaps, ascii.h, grub_script.yy.c, and
 +      grub_script.yy.h.
 +
 +2010-06-08  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (History): Expand to cover GRUB 2.
 +      (Serial terminal): Refer to `terminal_input' and `terminal_output'
 +      commands, not `terminal'.
 +      (serial): Likewise.
 +      (terminal_input): New section.
 +      (terminal_output): New section.
 +      (uppermem): New section (stub).
 +      (Obtaining and Building GRUB): Refer to Bazaar, not Subversion.
 +
 +2010-06-08  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Security): Menu entries are unrestricted by
 +      default, not restricted to superusers as I had previously thought.
 +      Reword to account for this.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/emu/misc.c (device_mapper_null_log): New function.
 +      (grub_device_mapper_supported): New function.
 +      * include/grub/emu/misc.h (grub_device_mapper_supported): Add
 +      prototype.
 +      * kern/emu/hostdisk.c (find_partition_start): Check whether
 +      device-mapper is supported before trying to use it.
 +      * util/deviceiter.c (grub_util_iterate_devices): Likewise.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Naming convention): Use GRUB 2 syntax.
 +      (File name syntax): Likewise.
 +      (help): --all is no longer supported in GRUB 2.  Be more precise
 +      about pattern matching.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * normal/completion.c (grub_normal_do_completion): When completing
 +      arguments to "set" and the current word contains an equals sign,
 +      skip to after the equals sign before starting completion.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * fs/i386/pc/pxe.c (grub_pxe_open): Fix parsing of gateway_ip.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Network): New section.
 +      (Device syntax): The network device is called `(pxe)' in GRUB 2, not
 +      `(nd)' as in GRUB Legacy.
 +      (pxe_unload): New section.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Troubleshooting): `echo' is not usually available
 +      in the rescue shell, so recommend using `set' instead.  Thanks,
 +      Jordan Uggla.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Filesystem): Refer to `search' instead of `find'.
 +      (password): New section.
 +      (password_pbkdf2): New section.
 +      (search): New section.
 +      (Security): New section.
 +      (Troubleshooting): New section, currently very incomplete.
 +      (Invoking grub-mkpasswd-pbkdf2): New section.
 +      (Internals): New section, currently very incomplete.
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/00_header.in: Add some more quoting (of
 +      "${prev_saved_entry}" and "${boot_once}") needed to make savedefault
 +      work again.
 +      Reported by: Mario 'BitKoenig' Holbe (Debian bug #584812).
 +
 +2010-06-07  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkpasswd-pbkdf2.c (main): Rename top-level `c' variable
 +      to `count', fixing variable shadowing that broke the -c option.
 +
 +2010-06-05  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/00_header.in: Quote values assigned to `saved_entry',
 +      in case they contain spaces.
 +
 +2010-06-04  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Prepend
 +      "part_" to partmap module names, in line with grub-install.
 +      Reported by: Jindřich Makovička (Debian bug #584426).
 +
 +2010-06-04  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkimage.c: Make target-related error messages slightly
 +      more helpful; -O talks about "format".  Explicitly point to the use
 +      of -O if no target is specified.
 +      Reported by: Didier Raboud (Debian bug #584415).
 +
 +2010-06-03  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * INSTALL: Document several build requirements for optional features
 +      (libdevmapper, ncurses, libusb, SDL, FreeType, GNU Unifont).
 +
 +2010-06-02  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * kern/emu/hostdisk.c (convert_system_partition_to_system_disk)
 +      [__NetBSD__]: Handle all device names matching /dev/r[a-z]+[0-9][a-z].
 +      (find_partition_start) [__NetBSD__]: Correct error messages for NetBSD.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Simple configuration): Fix copy-and-paste typo.
 +      Thanks to Jordan Uggla for spotting this.
 +
 +2010-06-02  Aleš Nesrsta <starous@volny.cz>
 +
 +      Finally make USB usable.
 +
 +      * bus/usb/ohci.c (grub_ohci_reg_t): Add missing values.
 +      (GRUB_OHCI_RHUB_PORT_POWER_MASK): New macro.
 +      (GRUB_OHCI_RHUB_PORT_ALL_POWERED): Likewise.
 +      (GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_MASK): Likewise.
 +      (GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_SHIFT): Likewise.
 +      (GRUB_OHCI_REG_FRAME_INTERVAL_FI_SHIFT): Likewise.
 +      (GRUB_OHCI_FSMPS): Likewise.
 +      (GRUB_OHCI_PERIODIC_START): Likewise.
 +      (GRUB_OHCI_FRAME_INTERVAL): Likewise.
 +      (GRUB_OHCI_SET_PORT_ENABLE): Likewise.
 +      (GRUB_OHCI_CLEAR_PORT_ENABLE): Likewise.
 +      (GRUB_OHCI_SET_PORT_RESET): Likewise.
 +      (GRUB_OHCI_SET_PORT_RESET_STATUS_CHANGE): Likewise.
 +      * bus/usb/ohci.c (grub_ohci_pci_iter): Various important fixups.
 +      (grub_ohci_transaction): Likewise.
 +      (grub_ohci_transfer): Improve condition detection algorithms.
 +      Handle toggle property. Program the transactions correctly.
 +      Improve error handling. Various important fixups.
 +      (grub_ohci_portstatus): Put register writes in right order.
 +      * bus/usb/uhci.c (grub_free_queue): Compute last_trans.
 +      (grub_uhci_transfer): Don't show "failed" message on success.
 +      * bus/usb/usb.c (grub_usb_set_configuration): Zero-fill whole "toggle"
 +      array.
 +      (grub_usb_device_initialize): Read first 8 bytes of descriptor to
 +      determine its size.
 +      * bus/usb/usbtrans.c (grub_usb_control_msg): Use descdev.maxsize0 even
 +      before initialization is completed. Use IN direction for empty
 +      transfers. Use last_trans and compute toggle.
 +      * include/grub/usbtrans.h (grub_usb_transfer): New field last_trans.
 +      (GRUB_USB_FEATURE_ENDP_HALT): Correct the value.
 +      (GRUB_USB_FEATURE_DEV_REMOTE_WU): Likewise.
 +      (GRUB_USB_FEATURE_TEST_MODE): Likewise.
 +      * include/grub/usb.h (grub_usb_err_t): New value GRUB_USB_ERR_UNRECOVERABLE.
 +      (grub_usb_device): Increase toggle to 256.
 +      (grub_usbms_subclass_t): New values GRUB_USBMS_SUBCLASS_RBC,
 +      GRUB_USBMS_SUBCLASS_MMC2, GRUB_USBMS_SUBCLASS_UFI and
 +      GRUB_USBMS_SUBCLASS_SFF8070.
 +      * include/grub/scsicmd.h (grub_scsi_test_unit_ready): New structure.
 +      (grub_scsi_inquiry): New member page and alloc_length.
 +      (grub_scsi_request_sense): New structure.
 +      (grub_scsi_request_sense_data): Likewise.
 +      (grub_scsi_read_capacity): New fields logical_block_addr, PMI and
 +      control.
 +      * disk/scsi.c (grub_scsi_request_sense): New function.
 +      (grub_scsi_test_unit_ready): Likewise.
 +      (grub_scsi_inquiry): Fill new fields.
 +      (grub_scsi_read_capacity): Likewise.
 +      (grub_scsi_read10): Add request sense at the end.
 +      (grub_scsi_read12): Likewise.
 +      (grub_scsi_write10): Likewise.
 +      (grub_scsi_write12): Likewise.
 +      (grub_scsi_open): Add Test Unit Ready.
 +      * disk/usbms.c (grub_usbms_finddevs): Check configcnt.
 +      Support additional subclasses. Con't clear halt yet. Activate the
 +      proper config. Calculate LUNs correctly.
 +      (grub_usbms_transfer): Various important fixups.
 +
 +2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * bus/pci.c (grub_pci_iterate) [GRUB_MACHINE_MIPS_YEELOONG]: Skip ghosts.
 +      * bus/usb/ohci.c (grub_ohci_portstatus): Handle R/WC correctly.
 +      (grub_ohci_fini_hw): New function.
 +      (grub_ohci_restore_hw): Likewise.
 +      (GRUB_MOD_INIT(ohci)): Register preboot hook.
 +      (GRUB_MOD_FINI(ohci)): Shutdown OHCI.
 +      * term/usb_keyboard.c: Remove include of grub/machine/console.h.
 +
 +2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Dedicated DMA allocations.
 +
 +      * bus/pci.c (grub_memalign_dma32): New function
 +      (grub_dma_free): Likewise.
 +      (grub_dma_get_virt): Likewise.
 +      (grub_dma_get_phys): Likewise.
 +      * bus/usb/ohci.c (grub_ohci): New members hcca_addr and hcca_chunk.
 +      (grub_ohci_pci_iter): Use dma32_alloc.
 +      (grub_ohci_transfer): Likewise.
 +      * bus/usb/usbtrans.c (grub_usb_control_msg): Likewise.
 +      (grub_usb_bulk_readwrite): Likewise.
 +      * include/grub/pci.h: Add declarations.
 +
 +2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      CS5536 support.
 +
 +      * bus/cs5536.c: New file.
 +      * bus/usb/ohci.c (grub_ohci_pci_iter): Check for CS5536.
 +      * conf/i386.rmk (pkglib_MODULES): Add cs5536.mod.
 +      (cs5536_mod_SOURCES): New variable.
 +      (cs5536_mod_CFLAGS): Likewise.
 +      (cs5536_mod_LDFLAGS): Likewise.
 +      * conf/mips-yeeloong.rmk (kernel_img_HEADERS): Add cs5536.h and
 +      machine/pci.h.
 +      (kernel_img_SOURCES): Add bus/cs5536.c.
 +      (pkglib_MODULES): Add usb.mod, usbtest.mod, ohci.mod, usbms.mod and
 +      usb_keyboard.mod.
 +      (usb_mod_SOURCES): New variable.
 +      (usb_mod_CFLAGS): New variable.
 +      (usb_mod_LDFLAGS): New variable.
 +      (usbtest_mod_SOURCES): New variable.
 +      (usbtest_mod_CFLAGS): New variable.
 +      (usbtest_mod_LDFLAGS): New variable.
 +      (ohci_mod_SOURCES): New variable.
 +      (ohci_mod_CFLAGS): New variable.
 +      (ohci_mod_LDFLAGS): New variable.
 +      (usbms_mod_SOURCES): New variable.
 +      (usbms_mod_CFLAGS): New variable.
 +      (usbms_mod_LDFLAGS): New variable.
 +      (usb_keyboard_mod_SOURCES): New variable.
 +      (usb_keyboard_mod_CFLAGS): New variable.
 +      (usb_keyboard_mod_LDFLAGS): New variable.
 +      * include/grub/smbus.h: New file.
 +      * include/grub/cs5536.h: New file.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/00_header.in: Add safety check to make sure that
 +      ${locale_dir} exists before trying to probe it.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (SCO UnixWare): Remove, at Vladimir's request and
 +      per the GNU Coding Standards; this is now too obscure to be worth
 +      documenting.
 +      (QNX): Likewise.
 +      (chainloader): Remove cross-reference to `SCO UnixWare'.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Chain-loading): New section.
 +      (DOS/Windows): New section, borrowed from GRUB Legacy with details
 +      adjusted for GRUB 2.
 +      (SCO UnixWare): Likewise.
 +      (QNX): Likewise.
 +      (chainloader): Add reference to `Block list syntax'.
 +      (drivemap): New section.
 +      (parttool): New section.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (GNU GRUB manual): Remove reference to `Invoking
 +      the grub shell'.
 +      (Installation): Add reference to `Making a GRUB bootable CD-ROM'.
 +      (Installing GRUB using grub-install): Remove reference to the grub
 +      shell; mention `grub-mkimage' and `grub-setup' instead.
 +      (Invoking grub-install): Likewise.
 +      (Interface): Add reference to `Menu entry editor'.
 +      (serial): Remove `--device' option.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Configuration): New section, documenting
 +      configuration file generation using grub-mkconfig.  I've left a slot
 +      for documenting the full shell scripting format but have not yet
 +      started on writing that up.
 +      (Invoking grub-mkconfig): New section.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (direntry): Remove grub-terminfo reference.
 +      (GNU GRUB manual): Likewise.
 +      (General commands): Update description of `terminfo' for GRUB 2.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * commands/gptsync.c (grub_cmd_gptsync): Fix typos.
 +      (GRUB_MOD_INIT): Fix capitalisation.
 +      * docs/grub.texi (Command-line and menu entry commands): Document
 +      gettext and gptsync commands.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * conf/any-emu.rmk (kernel_img_SOURCES) [!x86]: Include
 +      kern/$(target_cpu)/cache.S even if TARGET_NO_MODULES = yes.
 +
 +2010-06-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Add btrfs probing support, currently only in the single-device case.
 +
 +      * kern/emu/getroot.c (find_root_device_from_mountinfo): New
 +      function.
 +      (grub_guess_root_device): Call find_root_device_from_mountinfo
 +      before looking in /dev.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * disk/i386/pc/biosdisk.c (grub_biosdisk_open): Use
 +      GRUB_DISK_SIZE_UNKNOWN.
 +      * disk/ieee1275/ofdisk.c (grub_ofdisk_open): Likewise.
 +
 +2010-05-31  Jiro SEKIBA <jir@unicus.jp>
 +
 +      * include/grub/disk.h (GRUB_DISK_SIZE_UNKNOWN): New macro.
 +      * fs/nilfs.c: Support 2nd super block in case 1st one is accidently
 +      corrupted or not synced properly.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * normal/main.c (grub_normal_add_menu_entry): Avoid going out of args.
 +      Reported by: Seth Goldberg.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * loader/multiboot_mbi2.c (grub_multiboot_make_mbi): Fix incorrect
 +      addition of dest.
 +      Reported by: Seth Goldberg.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * commands/setpci.c (grub_setpci_iter): Fix an incorrect function check.
 +      Reported by: Seth Goldberg.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * loader/multiboot_elfxx.c (grub_multiboot_load_elfXX) [__mips]: Check
 +      64-bit address as signed on MIPS.
 +
 +2010-05-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * configure.ac: AC_PROG_LEX sets LEX to ":" if lex is missing, not
 +      to the empty string.
 +
 +2010-05-28  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Fix grub-emu issues on NetBSD, with gcc 4.1.3.
 +
 +      * conf/any-emu.rmk: Remove unnecessary COMMON_CFLAGS.
 +      * include/grub/emu/misc.h (canonicalize_file_name): New Prototype.
 +      * kern/misc.c (__enable_execute_stack): Disable on
 +      GRUB_MACHINE_EMU.
 +
 +2010-05-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Make grub-probe work with symbolic links under /dev/mapper as well
 +      as with real block devices.  The Linux world seems to be (at best)
 +      in transition here, and GRUB shouldn't get caught in the middle.
 +
 +      * kern/emu/getroot.c (find_root_device): Follow symbolic links under
 +      /dev/mapper.
 +
 +2010-05-27  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-script-check.c (main): Ensure defined behaviour on empty
 +      input files (in which case exit zero).
 +
 +2010-05-27  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * kern/emu/misc.c (canonicalize_file_name): realpath can still
 +      return NULL for various reasons even if it has a maximum-length
 +      buffer: for example, there might be a symlink loop, or the path
 +      might exceed PATH_MAX.  If this happens, return NULL.
 +
 +2010-05-27  Robert Millan  <rmh@gnu.org>
 +
 +      * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Insert
 +      partmap module to handle cross-partmap setups.
 +      Reported by Orestes Mas.  Gràcies!
 +
 +2010-05-27  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkrescue.in: Initialise override_dir rather than
 +      assuming that it's unset or empty in the environment.
 +
 +2010-05-26  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * kern/emu/hostdisk.c (find_partition_start) [__NetBSD__]: Renamed
 +      variable index into p_index to suppress a warning with -Wshadow.
 +
 +2010-05-25  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * INSTALL: Added flex >= 2.5.35 requirement.
 +
 +2010-05-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * commands/usbtest.c (grub_usb_get_string): Properly support UTF-16.
 +
 +2010-05-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      cmostest support.
 +
 +      * commands/i386/cmostest.c: New file.
 +      * conf/i386-coreboot.rmk (pkglib_MODULES): Add cmostest.mod.
 +      (cmostest_mod_SOURCES): New variable.
 +      (cmostest_mod_CFLAGS): Likewise.
 +      (cmostest_mod_LDFLAGS): Likewise.
 +      * conf/i386-pc.rmk: Likewise.
 +      * docs/grub.texi (Vendor power-on keys): New section.
 +      * util/grub-mkconfig.in: export GRUB_DEFAULT_BUTTON,
 +      GRUB_HIDDEN_TIMEOUT_BUTTON, GRUB_TIMEOUT_BUTTON
 +      and GRUB_BUTTON_CMOS_ADDRESS.
 +      * util/grub.d/00_header.in: Handle powering-on by separate button.
 +
 +2010-05-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * gfxmenu/gui_list.c (draw_menu): Don't add scrollbar width to padding.
 +      Removed drawing_scrollbar argument. All users updated
 +      Fixes #29792.
 +      Reported by Jo Shields
 +
 +2010-05-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * gfxmenu/view.c (grub_gfxmenu_draw_terminal_box): Apply only to current
 +      buffer since gfxterm handles double repaint.
 +
 +2010-05-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * gfxmenu/gfxmenu.c (grub_gfxmenu_try): Change viewport on both buffers.
 +      * term/gfxterm.c (real_scroll): Likewise.
 +
 +2010-05-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * kern/i386/pc/mmap.c (grub_machine_mmap_iterate): Zero-fill entry
 +      before calling BIOS.
 +
 +2010-05-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/i18n.h: Always enable grub_gettext.
 +
 +2010-05-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * kern/i386/pc/init.c (make_install_device): Fix a leftover usage of old
 +      partition naming style.
 +
 +2010-05-21  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig.in: Fix handling of -o so that it works when
 +      not the first option.
 +
 +2010-05-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkrelpath.c (usage): Remove excess apostrophe.
 +
 +2010-05-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/misc.c: Move inclusion of <limits.h> to ...
 +      * kern/emu/misc.c: ... here.  Needed for canonicalize_file_name.
 +
 +2010-05-20  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev) [__NetBSD__]:
 +      Fix merge error in NetBSD code.
 +      (find_partition_start) [__NetBSD__]: Likewise.
 +
 +2010-05-19  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Fix grub-mkrescue usage unit testing.
 +
 +      * tests/util/grub-shell.in: Use --grub-mkimage with grub-mkrescue.
 +
 +2010-05-18  Christian Franke  <franke@computer.org>
 +
 +      * util/grub.d/10_windows.in: Use path names instead of
 +      drive letters to prevent warning from Cygwin 1.7.
 +      Add drivemap command to menuentry if needed.
 +
 +2010-05-18  Justus Winter  <4winter@informatik.uni-hamburg.de>
 +
 +      * util/grub.d/10_hurd.in: Include all gnumach* kernels, not only
 +      gnumach and gnumach.gz.
 +
 +2010-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/i18n.h (gettext): Inline instead of using #define.
 +      (grub_gettext): Likewise.
 +      (_): Likewise.
 +
 +2010-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * Makefile.in (CPPFLAGS): Replace -DGRUB_LIBDIR with
 +      -DGRUB_PKGLIBROOTDIR= and prepend @PACKAGE_TARNAME@. All users updated.
 +      * util/grub-mkimage.c (image_targets): Add i386-multiboot.
 +      (main): Add a slash after pkglibdirroot.
 +
 +2010-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Add missing "in" keyword.
 +
 +2010-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Remove -O i386-pc duplication.
 +      Reported by: Seth Goldberg.
 +
 +2010-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES: Rename util/grub-mkrawimage.c to util/grub-mkimage.c.
 +
 +2010-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * configure.ac: Check for Linux device-mapper support.
 +
 +      * util/hostdisk.c (device_is_mapped): New function.
 +      (find_partition_start): New function, partly broken out from
 +      linux_find_partition and grub_util_biosdisk_get_grub_dev but with
 +      device-mapper support added.
 +      (linux_find_partition): Use find_partition_start.
 +      (convert_system_partition_to_system_disk): Add `st' argument.
 +      Support Linux /dev/mapper/* devices if device-mapper support is
 +      available; only DM-RAID devices are understood at present.
 +      (find_system_device): Add `st' argument.  Pass it to
 +      convert_system_partition_to_system_disk.
 +      (grub_util_biosdisk_get_grub_dev): Pass stat result to
 +      find_system_device and convert_system_partition_to_system_disk.  Use
 +      find_partition_start.
 +
 +      * conf/common.rmk (grub_mkdevicemap_SOURCES): Add kern/env.c,
 +      kern/err.c, kern/list.c, kern/misc.c, and kern/emu/mm.c.
 +      * util/deviceiter.c [__linux__]: Define MINOR.
 +      (grub_util_iterate_devices): Add support for DM-RAID disk devices.
 +      * util/mkdevicemap.c (grub_putchar): New function.
 +      (grub_getkey): New function.
 +      (grub_refresh): New function.
 +      (main): Set debug=all if -v -v is used.
 +
 +2010-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Fix build with non-GNU libcs.
 +
 +      * util/misc.c (canonicalize_file_name): Move to ...
 +      * kern/emu/misc.c (canonicalize_file_name): ... here.  Needed by
 +      grub_make_system_path_relative_to_its_root.
 +
 +2010-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkrescue.in: Sync up with grub-install in terms of how
 +      we handle finding grub-mkimage.  Default to finding grub-mkimage in
 +      ${bindir} with program_transform_name applied, and provide a
 +      --grub-mkimage option to override this.
 +
 +2010-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove grub-mkisofs.
 +
 +      * conf/common.rmk (bin_UTILITIES): Remove grub-mkisofs.
 +      (grub_mkisofs_SOURCES): Removed.
 +      (grub_mkisofs_CFLAGS): Removed.
 +      * util/mkisofs/defaults.h: Removed.
 +      * util/mkisofs/eltorito.c: Likewise.
 +      * util/mkisofs/exclude.h: Likewise.
 +      * util/mkisofs/hash.c: Likewise.
 +      * util/mkisofs/include/: Likewise.
 +      * util/mkisofs/include/fctldefs.h: Likewise.
 +      * util/mkisofs/include/mconfig.h: Likewise.
 +      * util/mkisofs/include/prototyp.h: Likewise.
 +      * util/mkisofs/include/statdefs.h: Likewise.
 +      * util/mkisofs/iso9660.h: Likewise.
 +      * util/mkisofs/joliet.c: Likewise.
 +      * util/mkisofs/match.c: Likewise.
 +      * util/mkisofs/match.h: Likewise.
 +      * util/mkisofs/mkisofs.c: Likewise.
 +      * util/mkisofs/mkisofs.h: Likewise.
 +      * util/mkisofs/msdos_partition.h: Likewise.
 +      * util/mkisofs/multi.c: Likewise.
 +      * util/mkisofs/name.c: Likewise.
 +      * util/mkisofs/rock.c: Likewise.
 +      * util/mkisofs/tree.c: Likewise.
 +      * util/mkisofs/write.c: Likewise.
 +
 +2010-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Unify grub-mkimage accross platforms.
 +
 +      * Makefile.in (CPPFLAGS): Set GRUB_LIBDIR to $(libdir).
 +      * conf/common.rmk (bin_UTILITIES): Removed grub-mkelfimage.
 +      (grub_mkelfimage_SOURCES): Removed.
 +      (util/elf/grub-mkimage.c_DEPENDENCIES): Renamed to ..
 +      (util/grub-mkimage.c_DEPENDENCIES): .. this.
 +      (bin_UTILITIES): Add grub-mkimage.
 +      (grub_mkimage_SOURCES): New variable.
 +      (kernel_img_HEADERS): Remove machine/kernel.h.
 +      * conf/i386-pc.rmk (pkglib_IMAGES): Remove kernel.img.
 +      (pkglib_PROGRAMS): Add kernel.img.
 +      (kernel_img_HEADERS): Add machine/kernel.h.
 +      (kernel_img_FORMAT): Removed.
 +      (bin_UTILITIES): Remove grub-mkimage.
 +      (grub_mkimage_SOURCES): Removed.
 +      (grub_mkimage_CFLAGS): Likewise.
 +      (util/grub-mkrawimage.c_DEPENDENCIES): Likewise.
 +      * conf/i386-qemu.rmk (pkglib_IMAGES): Remove kernel.img.
 +      (pkglib_PROGRAMS): Add kernel.img.
 +      (bin_UTILITIES): Remove grub-mkimage.
 +      (grub_mkimage_SOURCES): Removed.
 +      (grub_mkimage_CFLAGS): Likewise.
 +      (util/grub-mkrawimage.c_DEPENDENCIES): Likewise.
 +      * conf/mips-qemu-mips.rmk (pkglib_IMAGES): Remove kernel.img.
 +      (pkglib_PROGRAMS): Add kernel.img.
 +      * conf/mips-yeeloong.rmk (pkglib_IMAGES): Remove kernel.img.
 +      (pkglib_PROGRAMS): Add kernel.img.
 +      * conf/mips.rmk (bin_UTILITIES): Remove grub-mkimage.
 +      (grub_mkimage_SOURCES): Removed.
 +      (grub_mkimage_CFLAGS): Likewise.
 +      (util/grub-mkrawimage.c_DEPENDENCIES): Likewise.
 +      * conf/sparc64-ieee1275.rmk (pkglib_IMAGES): Remove kernel.img.
 +      (pkglib_PROGRAMS): Add kernel.img.
 +      (bin_UTILITIES): Remove grub-mkimage.
 +      (grub_mkimage_SOURCES): Removed.
 +      (grub_mkimage_CFLAGS): Likewise.
 +      (util/grub-mkrawimage.c_DEPENDENCIES): Likewise.
 +      * conf/x86-efi.rmk (bin_UTILITIES): Remove grub-mkimage.
 +      (grub_mkimage_SOURCES): Removed.
 +      (grub_mkimage_CFLAGS): Likewise.
 +      (util/grub-mkrawimage.c_DEPENDENCIES): Likewise.
 +      * configure.ac (machine_CFLAGS): Add "-DMACHINE".
 +      * include/grub/efi/pe32.h (grub_pe32_optional_header): Split into ...
 +      (grub_pe32_optional_header): ... this.
 +      (grub_pe64_optional_header): ... and this. All users updated.
 +      (GRUB_PE32_PE32_MAGIC): Split into ..
 +      (GRUB_PE32_PE32_MAGIC): .. this.
 +      (GRUB_PE32_PE64_MAGIC): .. and this.
 +      (GRUB_PE32_SIGNATURE_SIZE): New definition.
 +      * include/grub/elf.h (PT_GNU_STACK): New definition.
 +      * include/grub/i386/coreboot/kernel.h: Merged into include/grub/offsets.h. All users updated.
 +      * include/grub/i386/efi/kernel.h: Likewise.
 +      * include/grub/i386/kernel.h: Likewise.
 +      * include/grub/i386/pc/kernel.h: Likewise.
 +      * include/grub/i386/qemu/boot.h: Likewise.
 +      * include/grub/mips/kernel.h: Likewise.
 +      * include/grub/mips/qemu-mips/kernel.h: Likewise.
 +      * include/grub/powerpc/ieee1275/kernel.h: Likewise.
 +      * include/grub/powerpc/kernel.h: Likewise.
 +      * include/grub/sparc64/ieee1275/boot.h: Likewise.
 +      * include/grub/sparc64/ieee1275/kernel.h: Likewise.
 +      * include/grub/sparc64/kernel.h: Likewise.
 +      * include/grub/x86_64/efi/kernel.h: Likewise.
 +      * include/grub/x86_64/kernel.h: Likewise.
 +      * include/grub/offsets.h: New file.
 +      * include/grub/kernel.h (grub_module_info): Split into ...
 +      (grub_module_info32): ... this.
 +      (grub_module_info64): ... and this.
 +      * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_KERNEL_SEG): Moved from here ...
 +      * include/grub/offsets.h (GRUB_BOOT_I386_PC_KERNEL_SEG): ... here.
 +      (grub_boot_blocklist): Moved from here ...
 +      * include/grub/offsets.h (grub_pc_bios_boot_blocklist): ... here.
 +      * include/grub/i386/pc/memory.h (GRUB_MEMORY_MACHINE_UPPER): Moved from here.
 +      * include/grub/offsets.h (GRUB_MEMORY_I386_PC_UPPER): .. here.
 +      * include/grub/types.h (grub_target_to_host16): Removed.
 +      (grub_target_to_host32): Likewise.
 +      (grub_target_to_host64): Likewise.
 +      (grub_host_to_target16): Likewise.
 +      (grub_host_to_target32): Likewise.
 +      (grub_host_to_target64): Likewise.
 +      (grub_host_to_target_addr): Likewise.
 +
 +      Support grub-mkrescue for efi, coreboot and qemu.
 +
 +      * conf/x86-efi.rmk (bin_SCRIPTS): Add grub-mkrescue.
 +      * kern/efi/init.c (grub_efi_set_prefix): Handle baked in prefix.
 +      * util/elf/grub-mkimage.c: Merged into util/grub-mkimage.c.
 +      * util/grub-mkrawimage.c: Moved from here ...
 +      * util/grub-mkimage.c: ... here. All users updated.
 +      (ALIGN_ADDR): Use image_target.
 +      (TARGET_NO_FIELD): New const.
 +      (image_target_desc): New type.
 +      (image_targets): New array.
 +      (grub_target_to_host64): Use image_target.
 +      (grub_target_to_host32): Likewise.
 +      (grub_target_to_host16): Likewise.
 +      (grub_host_to_target64): Likewise.
 +      (grub_host_to_target32): Likewise.
 +      (grub_host_to_target16): Likewise.
 +      (grub_host_to_target_addr): Likewise.
 +      (generate_image): Handle multiimage.
 +      (main): Require -O parameter. All users updated.
 +      * util/grub-mkimagexx.c: New file. Based on util/grub-mkrawimage.c and
 +      util/efi/grub-mkimage.c
 +      * util/grub-mkrescue.in: Handle coreboot, efi and qemu.
 +      New option --rom-directory.
 +      Use xorriso.
 +      * util/i386/efi/grub-mkimage.c: Removed.
 +      * util/i386/pc/grub-setup.c (grub_target_to_host16): New definition.
 +      (grub_target_to_host32): Likewise.
 +      (grub_target_to_host64): Likewise.
 +      (grub_host_to_target16): Likewise.
 +      (grub_host_to_target32): Likewise.
 +      (grub_host_to_target64): Likewise.
 +      * util/sparc64/ieee1275/grub-setup.c (grub_target_to_host16): New definition.
 +      (grub_target_to_host32): Likewise.
 +      (grub_target_to_host64): Likewise.
 +      (grub_host_to_target16): Likewise.
 +      (grub_host_to_target32): Likewise.
 +      (grub_host_to_target64): Likewise.
 +
 +2010-05-17  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      Source tree is reorganized for emu build.
 +
 +      * include/grub/util/console.h: Move from here...
 +      * include/grub/emu/console.h: ...to here.
 +      * include/grub/util/getroot.h: Move from here...
 +      * include/grub/emu/getroot.h: ...to here.
 +      * include/grub/util/hostdisk.h: Move from here...
 +      * include/grub/emu/hostdisk.h: ...to here.
 +      * util/console.c: Move from here...
 +      * kern/emu/console.c: ...to here.
 +      * util/getroot.c: Move from here...
 +      * kern/emu/getroot.c: ...to here.
 +      * util/grub-emu.c: Move from here...
 +      * kern/emu/main.c: ...to here.
 +      * util/hostdisk.c: Move from here...
 +      * kern/emu/hostdisk.c: ...to here.
 +      * util/hostfs.c: Move from here...
 +      * kern/emu/hostfs.c: ...to here.
 +      * util/mm.c: Move from here...
 +      * kern/emu/mm.c: ...to here.
 +      * util/pci.c: Move from here...
 +      * bus/emu/pci.c: ...to here.
 +      * util/sdl.c: Move from here...
 +      * video/emu/sdl.c: ...to here.
 +      * util/time.c: Move from here...
 +      * kern/emu/time.c: ...to here.
 +      * util/usb.c: Move from here...
 +      * bus/usb/emu/usb.c: ...to  here.
 +
 +      * include/grub/emu/misc.h: New header for grub-emu functions.
 +      * kern/emu/misc.c: grub-emu functions separated from util/misc.c
 +
 +      * conf/any-emu.rmk: Rule updates for above renames.
 +      * conf/common.rmk: Likewise.
 +      * conf/i386-pc.rmk: Likewise.
 +      * conf/i386-qemu.rmk: Likewise.
 +      * conf/mips.rmk: Likewise.
 +      * conf/sparc64-ieee1275.rmk: Likewise.
 +      * conf/x86-efi.rmk: Likewise.
 +
 +      * disk/lvm.h: #include updates for above renames.
 +      * util/grub-mkrelpath.c: Likewise.
 +      * util/grub-probe.c: Likewise.
 +      * util/i386/pc/grub-setup.c: Likewise.
 +      * util/sparc64/ieee1275/grub-setup.c: Likewise.
 +      * kern/emu/console.c: Likewise.
 +      * kern/emu/getroot.c: Likewise.
 +      * kern/emu/hostdisk.c: Likewise.
 +      * kern/emu/main.c: Likewise. (was grub-emu.c earlier)
 +
 +      * include/grub/dl.h: Remove grub_dl_{ref,unref}.
 +      * include/grub/util/misc.h: Move grub-emu functions to emu/misc.h.
 +      * kern/dl.c: Handle null mod in grub_dl_{ref,unref}.
 +      * util/misc.c: Remove grub-emu functions.
 +
 +2010-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix gfxmenu crash.
 +      Reported by: Thorsten Grützmacher.
 +
 +      * gfxmenu/gui_circular_progress.c (circprog_destroy): Unregister
 +      timeout hook.
 +      (circprog_set_property): Register and unregister timeout hook.
 +      * gfxmenu/gui_label.c (grub_gui_label): New fields template and value.
 +      (label_destroy): Free template. and unregister hook.
 +      (label_set_state): New function.
 +      (label_set_property): Handle templates and hooks.
 +      * gfxmenu/gui_progress_bar.c (progress_bar_destroy): Unregister
 +      timeout hook.
 +      (progress_bar_set_property): Register and unregister timeout hook.
 +      * gfxmenu/view.c (TIMEOUT_COMPONENT_ID): Move from here ...
 +      * include/grub/gui.h (GRUB_GFXMENU_TIMEOUT_COMPONENT_ID): ...to here
 +      * gfxmenu/view.c (grub_gfxmenu_timeout_notifications): New variable.
 +      (update_timeout_visit): Removed.
 +      (update_timeouts): New function.
 +      (redraw_timeouts): Likewise.
 +      (grub_gfxmenu_print_timeout): Use update_timeouts and redraw_timeouts.
 +      (grub_gfxmenu_clear_timeout): Likewise.
 +      * include/grub/gui.h (grub_gfxmenu_set_state_t): New type.
 +      (grub_gfxmenu_timeout_notify): Likewise.
 +      (grub_gfxmenu_timeout_notifications): New external variable.
 +      (grub_gfxmenu_timeout_register): New function.
 +      (grub_gfxmenu_timeout_unregister): Likewise.
 +
 +2010-05-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Transform (broken) vga terminal into (working) vga video driver.
 +
 +      * conf/i386-pc.rmk (vga_mod_SOURCES): Change term/i386/pc/vga.c to
 +      video/i386/pc/vga.c.
 +      * include/grub/video.h (grub_video_driver_id):
 +      Add GRUB_VIDEO_DRIVER_VGA.
 +      * term/i386/pc/vga.c: Renamed to ...
 +      * video/i386/pc/vga.c: ...this
 +      (DEBUG_VGA): Removed.
 +      (CHAR_WIDTH): Likewise.
 +      (CHAR_HEIGHT): Likewise.
 +      (TEXT_WIDTH): Likewise.
 +      (TEXT_HEIGHT): Likewise.
 +      (DEFAULT_FG_COLOR): Likewise.
 +      (DEFAULT_BG_COLOR): Likewise.
 +      (colored_char): Likewise.
 +      (xpos): Likewise.
 +      (ypos): Likewise.
 +      (cursor_state): Likewise.
 +      (fg_color): Likewise.
 +      (bg_color): Likewise.
 +      (text_buf): Likewise.
 +      (page): Likewise.
 +      (font): Likewise.
 +      (framebuffer): New variable.
 +      (set_read_map): Disabled.
 +      (setup): New variable.
 +      (is_target): Likewise.
 +      (grub_vga_mod_init): Likewise.
 +      (grub_vga_mod_fini): Likewise.
 +      (check_vga_mem): Likewise.
 +      (write_char): Likewise.
 +      (write_cursor): Likewise.
 +      (scroll_up): Likewise.
 +      (grub_vga_putchar): Likewise.
 +      (grub_vga_getcharwidth): Likewise.
 +      (grub_vga_getwh): Likewise.
 +      (grub_vga_getxy): Likewise.
 +      (grub_vga_gotoxy): Likewise.
 +      (grub_vga_cls): Likewise.
 +      (grub_vga_setcolorstate): Likewise.
 +      (grub_vga_setcursor): Likewise.
 +      (grub_video_vga_init): New function.
 +      (grub_video_vga_setup): Likewise.
 +      (grub_video_vga_fini): Likewise.
 +      (update_target): Likewise.
 +      (grub_video_vga_blit_bitmap): Likewise.
 +      (grub_video_vga_blit_render_target): Likewise.
 +      (grub_video_vga_set_active_render_target): Likewise.
 +      (grub_video_vga_get_active_render_target): Likewise.
 +      (grub_video_vga_swap_buffers): Likewise.
 +      (grub_video_vga_set_palette): Likewise.
 +      (grub_video_vga_get_info_and_fini): Likewise.
 +      (grub_vga_term): Removed.
 +      (grub_video_vga_adapter): New variable.
 +      (GRUB_MOD_INIT): Register a video driver instead of terminal.
 +      (GRUB_MOD_FINI): Unrefister a video driver instead of terminal.
 +
 +2010-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * video/readers/jpeg.c: Indented.
 +
 +2010-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Various jpeg cleanups.
 +
 +      * video/readers/jpeg.c (grub_jpeg_get_huff_code): Use ARRAY_SIZE.
 +      (grub_jpeg_decode_quan_table): Use sizeof.
 +      (grub_jpeg_decode_du): Use ARRAY_SIZE.
 +
 +2010-05-05  Peter Hurley <No e-mail available> (tiny change)
 +
 +      * video/readers/jpeg.c (grub_jpeg_decode_huff_table): Loop over all
 +      tables. Ignore non-last ac bit.
 +      (grub_jpeg_decode_quan_table): Likewise.
 +
 +2010-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New value
 +      GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM.
 +      * kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set
 +      GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM on qemu.
 +      * kern/ieee1275/init.c (grub_claim_heap): Don0t allocate below
 +      1.5MiB if GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM is set.
 +
 +2010-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * term/ieee1275/ofconsole.c (grub_ofconsole_getkey): Fix off-by-one
 +      error.
 +
 +2010-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Support C0 code.
 +
  2010-05-03  Vladimir Serbinenko  <phcoder@gmail.com>
  
        * commands/parttool.c (grub_cmd_parttool): Fix #if !GRUB_NO_MODULES
index de308730ba1c103ab8f237362937f1a6805440e1,0000000000000000000000000000000000000000..53ad9c262e460d5734ad91499e37fdddd22454c9
mode 100644,000000..100644
--- /dev/null
@@@ -1,1425 -1,0 +1,1426 @@@
 +AutoGen definitions Makefile.tpl;
 +
 +kernel = {
 +  name = kernel;
 +
 +  nostrip = emu;
 +
 +  emu_ldflags              = '-Wl,-r,-d';
 +  x86_efi_ldflags          = '-Wl,-r,-d';
 +  x86_efi_stripflags       = '--strip-unneeded -K start -R .note -R .comment';
 +
 +  i386_pc_ldflags          = '$(TARGET_IMG_LDFLAGS)';
 +  i386_pc_ldflags          = '$(TARGET_IMG_BASE_LDOPT),$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +
 +  i386_qemu_ldflags        = '$(TARGET_IMG_LDFLAGS)';
 +  i386_qemu_ldflags        = '$(TARGET_IMG_BASE_LDOPT),$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +
 +  i386_coreboot_ldflags    = '-Wl,-Ttext=$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +  i386_multiboot_ldflags   = '-Wl,-Ttext=$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +  i386_ieee1275_ldflags    = '-Wl,-Ttext=$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +  mips_yeeloong_ldflags    = '-Wl,-Ttext,$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +  powerpc_ieee1275_ldflags = '-Wl,-Ttext,$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +
 +  mips_yeeloong_cppflags = '-DUSE_ASCII_FAILBACK';
 +  i386_qemu_cppflags     = '-DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)';
 +  i386_qemu_ccasflags    = '-DGRUB_KERNEL_MACHINE_LINK_ADDR=$(GRUB_KERNEL_MACHINE_LINK_ADDR)';
 +  emu_cflags = '$(CFLAGS_GNULIB)';
 +  emu_cppflags = '$(CPPFLAGS_GNULIB)';
 +
 +  mips_ldadd = '-lgcc';
 +  powerpc_ldadd = '-lgcc';
 +  sparc64_ldadd = '-lgcc';
 +
 +  i386_pc_startup = kern/i386/pc/startup.S;
 +  i386_efi_startup = kern/i386/efi/startup.S;
 +  x86_64_efi_startup = kern/x86_64/efi/startup.S;
 +  i386_qemu_startup = kern/i386/qemu/startup.S;
 +  i386_ieee1275_startup = kern/i386/ieee1275/startup.S;
 +  i386_coreboot_startup = kern/i386/coreboot/startup.S;
 +  i386_multiboot_startup = kern/i386/coreboot/startup.S;
 +  mips_yeeloong_startup = kern/mips/startup.S;
 +  sparc64_ieee1275_startup = kern/sparc64/ieee1275/crt0.S;
 +  powerpc_ieee1275_startup = kern/powerpc/ieee1275/startup.S;
 +
 +  common = kern/command.c;
 +  common = kern/corecmd.c;
 +  common = kern/device.c;
 +  common = kern/disk.c;
 +  common = kern/dl.c;
 +  common = kern/env.c;
 +  common = kern/err.c;
 +  common = kern/file.c;
 +  common = kern/fs.c;
 +  common = kern/list.c;
 +  common = kern/main.c;
 +  common = kern/misc.c;
 +  common = kern/parser.c;
 +  common = kern/partition.c;
 +  common = kern/rescue_parser.c;
 +  common = kern/rescue_reader.c;
 +  common = kern/term.c;
 +
 +  noemu = kern/mm.c;
 +  noemu = kern/time.c;
 +  noemu = kern/generic/millisleep.c;
 +
 +  noemu_nodist = symlist.c;
 +
 +  i386_pc = kern/generic/rtc_get_time_ms.c;
 +  x86_efi = kern/generic/rtc_get_time_ms.c;
 +  i386_qemu = kern/generic/rtc_get_time_ms.c;
 +  i386_coreboot = kern/generic/rtc_get_time_ms.c;
 +  i386_multiboot = kern/generic/rtc_get_time_ms.c;
 +  mips_yeeloong = kern/generic/rtc_get_time_ms.c;
 +
 +  ieee1275 = disk/ieee1275/ofdisk.c;
 +  ieee1275 = kern/ieee1275/cmain.c;
 +  ieee1275 = kern/ieee1275/ieee1275.c;
 +  ieee1275 = kern/ieee1275/mmap.c;
 +  ieee1275 = kern/ieee1275/openfw.c;
 +  ieee1275 = term/ieee1275/ofconsole.c;
 +
 +  ieee1275 = term/terminfo.c;
 +  ieee1275 = term/tparm.c;
 +  mips = term/terminfo.c;
 +  mips = term/tparm.c;
 +
 +  i386 = kern/i386/dl.c;
 +
 +  i386_coreboot_multiboot_qemu = kern/i386/coreboot/init.c;
 +  i386_coreboot_multiboot_qemu = term/i386/pc/vga_text.c;
 +
 +  i386_coreboot_multiboot_qemu = term/i386/vga_common.c;
 +  i386_pc = term/i386/vga_common.c;
 +
 +  x86 = kern/i386/pit.c;
 +
 +  x86_efi = disk/efi/efidisk.c;
 +  x86_efi = kern/efi/efi.c;
 +  x86_efi = kern/efi/init.c;
 +  x86_efi = kern/efi/mm.c;
 +  x86_efi = kern/i386/efi/init.c;
 +  x86_efi = term/efi/console.c;
 +
 +  i386_efi = kern/i386/tsc.c;
 +
 +  x86_64_efi = kern/i386/tsc.c;
 +  x86_64_efi = kern/x86_64/dl.c;
 +  x86_64_efi = kern/x86_64/efi/callwrap.S;
 +
 +  i386_pc = kern/i386/pc/init.c;
 +  i386_pc = kern/i386/pc/mmap.c;
 +  i386_pc = kern/i386/tsc.c;
 +  i386_pc = term/i386/pc/console.c;
 +
 +  i386_qemu = bus/pci.c;
 +  i386_qemu = kern/i386/qemu/init.c;
 +  i386_qemu = kern/i386/qemu/mmap.c;
 +  i386_qemu = kern/i386/tsc.c;
 +
 +  i386_coreboot = kern/i386/coreboot/mmap.c;
 +  i386_coreboot = kern/i386/tsc.c;
 +
 +  i386_multiboot = kern/i386/multiboot_mmap.c;
 +  i386_multiboot = kern/i386/tsc.c;
 +
 +  i386_ieee1275 = kern/ieee1275/init.c;
 +
 +  mips_yeeloong = term/ns8250.c;
 +  mips_yeeloong = bus/bonito.c;
 +  mips_yeeloong = bus/cs5536.c;
 +  mips_yeeloong = bus/pci.c;
 +  mips_yeeloong = kern/mips/cache.S;
 +  mips_yeeloong = kern/mips/dl.c;
 +  mips_yeeloong = kern/mips/init.c;
 +  mips_yeeloong = kern/mips/yeeloong/init.c;
 +  mips_yeeloong = term/at_keyboard.c;
 +  mips_yeeloong = term/serial.c;
 +  mips_yeeloong = video/sm712.c;
 +  extra_dist = video/sm712_init.c;
 +
 +  powerpc_ieee1275 = kern/ieee1275/init.c;
 +  powerpc_ieee1275 = kern/powerpc/cache.S;
 +  powerpc_ieee1275 = kern/powerpc/dl.c;
 +
 +  sparc64_ieee1275 = kern/sparc64/cache.S;
 +  sparc64_ieee1275 = kern/sparc64/dl.c;
 +  sparc64_ieee1275 = kern/sparc64/ieee1275/ieee1275.c;
 +  sparc64_ieee1275 = kern/sparc64/ieee1275/init.c;
 +
 +  emu = disk/host.c;
 +  emu = gnulib/progname.c;
 +  emu = kern/emu/console.c;
 +  emu = kern/emu/getroot.c;
 +  emu = kern/emu/hostdisk.c;
 +  emu = kern/emu/hostfs.c;
 +  emu = kern/emu/main.c;
 +  emu = kern/emu/misc.c;
 +  emu = kern/emu/mm.c;
 +  emu = kern/emu/time.c;
 +
 +  videoinkernel = lib/arg.c;
 +  videoinkernel = term/gfxterm.c;
 +  videoinkernel = commands/extcmd.c;
 +  videoinkernel = font/font.c;
 +  videoinkernel = font/font_cmd.c;
 +  videoinkernel = io/bufio.c;
 +  videoinkernel = video/bitmap.c;
 +  videoinkernel = video/bitmap_scale.c;
 +  videoinkernel = video/fb/fbblit.c;
 +  videoinkernel = video/fb/fbfill.c;
 +  videoinkernel = video/fb/fbutil.c;
 +  videoinkernel = video/fb/video_fb.c;
 +  videoinkernel = video/video.c;
 +
 +  extra_dist = kern/i386/realmode.S;
 +  extra_dist = kern/i386/pc/lzma_decode.S;
 +  extra_dist = kern/mips/cache_flush.S;
 +};
 +
 +program = {
 +  name = grub-emu;
 +  mansection = 1;
 +
 +  emu = kern/emu/full.c;
 +  emu_nodist = grub_emu_init.c;
 +
 +  ldadd = 'kernel.img$(EXEEXT)';
 +  ldadd = '$(MODULE_FILES)';
 +  ldadd = '$(LIBUTIL) $(LIBCURSES) $(LIBSDL) $(LIBUSB) $(LIBPCIACCESS) $(LIBDEVMAPPER)';
 +
 +  enable = emu;
 +};
 +
 +program = {
 +  name = grub-emu-lite;
 +
 +  emu = kern/emu/lite.c;
 +  emu = kern/emu/cache.S;
 +  emu_nodist = symlist.c;
 +
 +  ldadd = 'kernel.img$(EXEEXT)';
 +  ldadd = '$(LIBUTIL) $(LIBCURSES) $(LIBSDL) $(LIBUSB) $(LIBPCIACCESS) $(LIBDEVMAPPER)';
 +
 +  enable = emu;
 +};
 +
 +image = {
 +  name = boot;
 +  i386_pc = boot/i386/pc/boot.S;
 +  i386_qemu = boot/i386/qemu/boot.S;
 +  sparc64_ieee1275 = boot/sparc64/ieee1275/boot.S;
 +
 +  i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
 +  i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x7C00';
 +
 +  i386_qemu_ldflags = '$(TARGET_IMG_LDFLAGS)';
 +  i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),$(GRUB_BOOT_MACHINE_LINK_ADDR)';
 +  i386_qemu_ccasflags = '-DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)';
 +
 +  sparc64_ieee1275_objcopyflags = '-O a.out-sunos-big';
 +  sparc64_ieee1275_ldflags = ' -Wl,-Ttext=0x4000';
 +
 +  objcopyflags = '-O binary';
 +  enable = i386_pc;
 +  enable = i386_qemu;
 +  enable = sparc64_ieee1275;
 +};
 +
 +image = {
 +  name = cdboot;
 +  i386_pc = boot/i386/pc/cdboot.S;
 +  i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
 +  i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x7C00';
 +  objcopyflags = '-O binary';
 +  enable = i386_pc;
 +};
 +
 +image = {
 +  name = pxeboot;
 +  i386_pc = boot/i386/pc/pxeboot.S;
 +
 +  i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
 +  i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x7C00';
 +
 +  objcopyflags = '-O binary';
 +  enable = i386_pc;
 +};
 +
 +image = {
 +  name = diskboot;
 +  i386_pc = boot/i386/pc/diskboot.S;
 +
 +  i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
 +  i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8000';
 +
 +  sparc64_ieee1275 = boot/sparc64/ieee1275/diskboot.S;
 +  sparc64_ieee1275_ldflags = '-Wl,-Ttext=0x4200';
 +
 +  objcopyflags = '-O binary';
 +
 +  enable = i386_pc;
 +  enable = sparc64_ieee1275;
 +};
 +
 +image = {
 +  name = lnxboot;
 +  i386_pc = boot/i386/pc/lnxboot.S;
 +
 +  i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
 +  i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x6000';
 +
 +  objcopyflags = '-O binary';
 +  enable = i386_pc;
 +};
 +
 +image = {
 +  name = fwstart;
 +  mips_yeeloong = boot/mips/yeeloong/fwstart.S;
 +  objcopyflags = '-O binary';
 +  enable = mips_yeeloong;
 +};
 +
 +module = {
 +  name = trig;
 +  common_nodist = trigtables.c;
 +  extra_dist = gentrigtables.c;
 +};
 +
 +module = {
 +  name = cs5536;
 +  x86 = bus/cs5536.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = libusb;
 +  emu = bus/usb/emu/usb.c;
 +  enable = emu;
 +  condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = lsspd;
 +  mips_yeeloong = commands/mips/yeeloong/lsspd.c;
 +  enable = mips_yeeloong;
 +};
 +
 +module = {
 +  name = usb;
 +  common = bus/usb/usb.c;
 +  noemu = bus/usb/usbtrans.c;
 +  noemu = bus/usb/usbhub.c;
 +  enable = emu;
 +  enable = usb;
 +  emu_condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = usbserial_common;
 +  common = bus/usb/serial/common.c;
 +  enable = emu;
 +  enable = usb;
 +  emu_condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = usbserial_pl2303;
 +  common = bus/usb/serial/pl2303.c;
 +  enable = emu;
 +  enable = usb;
 +  emu_condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = usbserial_ftdi;
 +  common = bus/usb/serial/ftdi.c;
 +  enable = emu;
 +  enable = usb;
 +  emu_condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = uhci;
 +  common = bus/usb/uhci.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = ohci;
 +  common = bus/usb/ohci.c;
 +  enable = pci;
 +};
 +
 +module = {
 +  name = pci;
 +  noemu = bus/pci.c;
 +  emu = bus/emu/pci.c;
 +  emu = commands/lspci.c;
 +
 +  enable = emu;
 +  enable = i386_pc;
 +  enable = x86_efi;
 +  enable = i386_ieee1275;
 +  enable = i386_coreboot;
 +  enable = i386_multiboot;
 +  emu_condition = COND_GRUB_EMU_PCI;
 +};
 +
 +library = {
 +  name = libgnulib.a;
 +  common = gnulib/regex.c;
 +
 +  extra_dist = gnulib/regcomp.c;
 +  extra_dist = gnulib/regexec.c;
 +  extra_dist = gnulib/fnmatch_loop.c;
 +  extra_dist = gnulib/regex_internal.c;
 +
 +  cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
 +  cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
 +};
 +
 +module = {
 +  name = cmostest;
 +  common = commands/i386/cmostest.c;
 +  enable = cmos;
 +};
 +
 +module = {
 +  name = iorw;
 +  common = commands/iorw.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = regexp;
 +  common = commands/regexp.c;
 +  common = commands/wildcard.c;
 +  ldadd = libgnulib.a;
 +  cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
 +  cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
 +};
 +
 +module = {
 +  name = acpi;
 +
 +  common = commands/acpi.c;
 +  x86_efi = commands/efi/acpi.c;
 +  i386_pc = commands/i386/pc/acpi.c;
 +  i386_coreboot = commands/i386/pc/acpi.c;
 +  i386_multiboot = commands/i386/pc/acpi.c;
 +
 +  enable = x86_efi;
 +  enable = i386_pc;
 +  enable = i386_coreboot;
 +  enable = i386_multiboot;
 +};
 +
 +module = {
 +  name = lsacpi;
 +
 +  common = commands/lsacpi.c;
 +
 +  enable = x86_efi;
 +  enable = i386_pc;
 +  enable = i386_coreboot;
 +  enable = i386_multiboot;
 +};
 +
 +module = {
 +  name = blocklist;
 +  common = commands/blocklist.c;
 +};
 +
 +module = {
 +  name = boot;
 +  common = commands/boot.c;
 +  i386_pc = lib/i386/pc/biosnum.c;
 +};
 +
 +module = {
 +  name = cat;
 +  common = commands/cat.c;
 +};
 +
 +module = {
 +  name = cmp;
 +  common = commands/cmp.c;
 +};
 +
 +module = {
 +  name = configfile;
 +  common = commands/configfile.c;
 +};
 +
 +module = {
 +  name = cpuid;
 +  x86 = commands/i386/cpuid.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = crc;
 +  common = commands/crc.c;
 +  common = lib/crc.c;
 +};
 +
 +module = {
 +  name = date;
 +  common = commands/date.c;
 +};
 +
 +module = {
 +  name = drivemap;
 +
 +  i386_pc = commands/i386/pc/drivemap.c;
 +  i386_pc = commands/i386/pc/drivemap_int13h.S;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = echo;
 +  common = commands/echo.c;
 +};
 +
 +module = {
 +  name = extcmd;
 +  common = commands/extcmd.c;
 +  common = lib/arg.c;
 +};
 +
 +module = {
 +  name = fixvideo;
 +  x86_efi = commands/efi/fixvideo.c;
 +  enable = x86_efi;
 +};
 +
 +module = {
 +  name = gptsync;
 +  common = commands/gptsync.c;
 +};
 +
 +module = {
 +  name = halt;
 +  nopc = commands/halt.c;
 +  i386_pc = commands/i386/pc/halt.c;
++  i386_pc = commands/acpihalt.c;
 +  i386_multiboot = lib/i386/halt.c;
 +  i386_coreboot = lib/i386/halt.c;
 +  i386_qemu = lib/i386/halt.c;
 +  x86_efi = lib/efi/halt.c;
 +  ieee1275 = lib/ieee1275/halt.c;
 +  emu = lib/emu/halt.c;
 +};
 +
 +module = {
 +  name = hashsum;
 +  common = commands/hashsum.c;
 +};
 +
 +module = {
 +  name = hdparm;
 +  common = commands/hdparm.c;
 +  common = lib/hexdump.c;
 +  enable = pci;
 +};
 +
 +module = {
 +  name = help;
 +  common = commands/help.c;
 +};
 +
 +module = {
 +  name = hexdump;
 +  common = commands/hexdump.c;
 +  common = lib/hexdump.c;
 +};
 +
 +module = {
 +  name = keystatus;
 +  common = commands/keystatus.c;
 +};
 +
 +module = {
 +  name = loadbios;
 +  x86_efi = commands/efi/loadbios.c;
 +  enable = x86_efi;
 +};
 +
 +module = {
 +  name = loadenv;
 +  common = commands/loadenv.c;
 +  common = lib/envblk.c;
 +};
 +
 +module = {
 +  name = ls;
 +  common = commands/ls.c;
 +};
 +
 +module = {
 +  name = lsmmap;
 +  common = commands/lsmmap.c;
 +};
 +
 +module = {
 +  name = lspci;
 +  common = commands/lspci.c;
 +
 +  enable = pci;
 +};
 +
 +module = {
 +  name = memrw;
 +  common = commands/memrw.c;
 +};
 +
 +module = {
 +  name = minicmd;
 +  common = commands/minicmd.c;
 +};
 +
 +module = {
 +  name = parttool;
 +  common = commands/parttool.c;
 +};
 +
 +module = {
 +  name = password;
 +  common = commands/password.c;
 +};
 +
 +module = {
 +  name = password_pbkdf2;
 +  common = commands/password_pbkdf2.c;
 +};
 +
 +module = {
 +  name = play;
 +  x86 = commands/i386/pc/play.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = probe;
 +  common = commands/probe.c;
 +};
 +
 +module = {
 +  name = pxecmd;
 +  i386_pc = commands/i386/pc/pxecmd.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = read;
 +  common = commands/read.c;
 +};
 +
 +module = {
 +  name = reboot;
 +  common = commands/reboot.c;
 +};
 +
 +module = {
 +  name = search;
 +  common = commands/search_wrap.c;
 +  extra_dist = commands/search.c;
 +};
 +
 +module = {
 +  name = search_fs_file;
 +  common = commands/search_file.c;
 +};
 +
 +module = {
 +  name = search_fs_uuid;
 +  common = commands/search_uuid.c;
 +};
 +
 +module = {
 +  name = search_label;
 +  common = commands/search_label.c;
 +};
 +
 +module = {
 +  name = setpci;
 +  common = commands/setpci.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = sleep;
 +  common = commands/sleep.c;
 +};
 +
 +module = {
 +  name = suspend;
 +  ieee1275 = commands/ieee1275/suspend.c;
 +  enable = i386_ieee1275;
 +  enable = powerpc_ieee1275;
 +};
 +
 +module = {
 +  name = terminal;
 +  common = commands/terminal.c;
 +};
 +
 +module = {
 +  name = test;
 +  common = commands/test.c;
 +};
 +
 +module = {
 +  name = true;
 +  common = commands/true.c;
 +};
 +
 +module = {
 +  name = usbtest;
 +  common = commands/usbtest.c;
 +  enable = usb;
 +  enable = emu;
 +  emu_condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = vbeinfo;
 +  i386_pc = commands/i386/pc/vbeinfo.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = vbetest;
 +  i386_pc = commands/i386/pc/vbetest.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = videotest;
 +  common = commands/videotest.c;
 +};
 +
 +module = {
 +  name = xnu_uuid;
 +  common = commands/xnu_uuid.c;
 +};
 +
 +module = {
 +  name = dm_nv;
 +  common = disk/dmraid_nvidia.c;
 +};
 +
 +module = {
 +  name = loopback;
 +  common = disk/loopback.c;
 +};
 +
 +module = {
 +  name = lvm;
 +  common = disk/lvm.c;
 +};
 +
 +module = {
 +  name = mdraid;
 +  common = disk/mdraid_linux.c;
 +};
 +
 +module = {
 +  name = raid;
 +  common = disk/raid.c;
 +};
 +
 +module = {
 +  name = raid5rec;
 +  common = disk/raid5_recover.c;
 +};
 +
 +module = {
 +  name = raid6rec;
 +  common = disk/raid6_recover.c;
 +};
 +
 +module = {
 +  name = scsi;
 +  common = disk/scsi.c;
 +};
 +
 +module = {
 +  name = memdisk;
 +  common = disk/memdisk.c;
 +};
 +
 +module = {
 +  name = ata;
 +  common = disk/ata.c;
 +  enable = pci;
 +};
 +
 +module = {
 +  name = ata_pthru;
 +  common = disk/ata_pthru.c;
 +  enable = pci;
 +};
 +
 +module = {
 +  name = biosdisk;
 +  i386_pc = disk/i386/pc/biosdisk.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = usbms;
 +  common = disk/usbms.c;
 +  enable = usb;
 +  enable = emu;
 +  emu_condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = nand;
 +  ieee1275 = disk/ieee1275/nand.c;
 +  enable = i386_ieee1275;
 +};
 +
 +module = {
 +  name = efiemu;
 +  common = efiemu/main.c;
 +  common = efiemu/i386/loadcore32.c;
 +  common = efiemu/i386/loadcore64.c;
 +  i386_pc = efiemu/i386/pc/cfgtables.c;
 +  i386_coreboot = efiemu/i386/pc/cfgtables.c;
 +  i386_multiboot = efiemu/i386/pc/cfgtables.c;
 +  i386_ieee1275 = efiemu/i386/nocfgtables.c;
 +  i386_qemu = efiemu/i386/nocfgtables.c;
 +  common = efiemu/mm.c;
 +  common = efiemu/loadcore_common.c;
 +  common = efiemu/symbols.c;
 +  common = efiemu/loadcore32.c;
 +  common = efiemu/loadcore64.c;
 +  common = efiemu/prepare32.c;
 +  common = efiemu/prepare64.c;
 +  common = efiemu/pnvram.c;
 +  common = efiemu/i386/coredetect.c;
 +
 +  extra_dist = efiemu/prepare.c;
 +  extra_dist = efiemu/loadcore.c;
 +  extra_dist = efiemu/runtime/efiemu.S;
 +  extra_dist = efiemu/runtime/efiemu.c;
 +
 +  enable = i386_pc;
 +  enable = i386_coreboot;
 +  enable = i386_ieee1275;
 +  enable = i386_multiboot;
 +  enable = i386_qemu;
 +};
 +
 +module = {
 +  name = font;
 +  common = font/font.c;
 +  common = font/font_cmd.c;
 +  enable = videomodules;
 +};
 +
 +module = {
 +  name = affs;
 +  common = fs/affs.c;
 +};
 +
 +module = {
 +  name = afs;
 +  common = fs/afs.c;
 +};
 +
 +module = {
 +  name = afs_be;
 +  common = fs/afs_be.c;
 +};
 +
 +module = {
 +  name = befs;
 +  common = fs/befs.c;
 +};
 +
 +module = {
 +  name = befs_be;
 +  common = fs/befs_be.c;
 +};
 +
 +module = {
 +  name = btrfs;
 +  common = fs/btrfs.c;
 +};
 +
 +module = {
 +  name = cpio;
 +  common = fs/cpio.c;
 +};
 +
 +module = {
 +  name = ext2;
 +  common = fs/ext2.c;
 +};
 +
 +module = {
 +  name = fat;
 +  common = fs/fat.c;
 +};
 +
 +module = {
 +  name = fshelp;
 +  common = fs/fshelp.c;
 +};
 +
 +module = {
 +  name = hfs;
 +  common = fs/hfs.c;
 +};
 +
 +module = {
 +  name = hfsplus;
 +  common = fs/hfsplus.c;
 +};
 +
 +module = {
 +  name = iso9660;
 +  common = fs/iso9660.c;
 +};
 +
 +module = {
 +  name = jfs;
 +  common = fs/jfs.c;
 +};
 +
 +module = {
 +  name = minix;
 +  common = fs/minix.c;
 +};
 +
 +module = {
 +  name = minix2;
 +  common = fs/minix2.c;
 +};
 +
 +module = {
 +  name = nilfs2;
 +  common = fs/nilfs2.c;
 +};
 +
 +module = {
 +  name = ntfs;
 +  common = fs/ntfs.c;
 +};
 +
 +module = {
 +  name = ntfscomp;
 +  common = fs/ntfscomp.c;
 +};
 +
 +module = {
 +  name = reiserfs;
 +  common = fs/reiserfs.c;
 +};
 +
 +module = {
 +  name = sfs;
 +  common = fs/sfs.c;
 +};
 +
 +module = {
 +  name = tar;
 +  common = fs/tar.c;
 +};
 +
 +module = {
 +  name = udf;
 +  common = fs/udf.c;
 +};
 +
 +module = {
 +  name = ufs1;
 +  common = fs/ufs.c;
 +};
 +
 +module = {
 +  name = ufs2;
 +  common = fs/ufs2.c;
 +};
 +
 +module = {
 +  name = xfs;
 +  common = fs/xfs.c;
 +};
 +
 +module = {
 +  name = pxe;
 +  i386_pc = fs/i386/pc/pxe.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = gettext;
 +  common = gettext/gettext.c;
 +};
 +
 +module = {
 +  name = gfxmenu;
 +  common = gfxmenu/gfxmenu.c;
 +  common = gfxmenu/model.c;
 +  common = gfxmenu/view.c;
 +  common = gfxmenu/font.c;
 +  common = gfxmenu/icon_manager.c;
 +  common = gfxmenu/theme_loader.c;
 +  common = gfxmenu/widget-box.c;
 +  common = gfxmenu/gui_canvas.c;
 +  common = gfxmenu/gui_circular_progress.c;
 +  common = gfxmenu/gui_box.c;
 +  common = gfxmenu/gui_label.c;
 +  common = gfxmenu/gui_list.c;
 +  common = gfxmenu/gui_image.c;
 +  common = gfxmenu/gui_progress_bar.c;
 +  common = gfxmenu/gui_util.c;
 +  common = gfxmenu/gui_string_util.c;
 +  common = gfxmenu/named_colors.c;
 +};
 +
 +module = {
 +  name = hello;
 +  common = hello/hello.c;
 +};
 +
 +module = {
 +  name = gzio;
 +  common = io/gzio.c;
 +};
 +
 +module = {
 +  name = bufio;
 +  common = io/bufio.c;
 +  enable = videomodules;
 +};
 +
 +module = {
 +  name = elf;
 +  common = kern/elf.c;
 +};
 +
 +module = {
 +  name = crypto;
 +  common = lib/crypto.c;
 +
 +  extra_dist = lib/libgcrypt-grub/cipher/crypto.lst;
 +};
 +
 +module = {
 +  name = pbkdf2;
 +  common = lib/pbkdf2.c;
 +};
 +
 +module = {
 +  name = relocator;
 +  common = lib/relocator.c;
 +  x86 = lib/i386/relocator16.S;
 +  x86 = lib/i386/relocator32.S;
 +  x86 = lib/i386/relocator64.S;
 +  i386 = lib/i386/relocator_asm.S;
 +  x86_64 = lib/x86_64/relocator_asm.S;
 +  x86 = lib/i386/relocator.c;
 +  ieee1275 = lib/ieee1275/relocator.c;
 +  x86_efi = lib/efi/relocator.c;
 +  mips = lib/mips/relocator_asm.S;
 +  mips = lib/mips/relocator.c;
 +  powerpc = lib/powerpc/relocator_asm.S;
 +  powerpc = lib/powerpc/relocator.c;
 +
 +  extra_dist = lib/i386/relocator_common.S;
 +  extra_dist = kern/powerpc/cache_flush.S;
 +
 +  enable = mips;
 +  enable = powerpc;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = datetime;
 +  cmos = lib/cmos_datetime.c;
 +  x86_efi = lib/efi/datetime.c;
 +  sparc64_ieee1275 = lib/ieee1275/datetime.c;
 +  powerpc_ieee1275 = lib/ieee1275/datetime.c;
 +  enable = noemu;
 +};
 +
 +module = {
 +  name = setjmp;
 +  common = lib/setjmp.S;
 +  extra_dist = lib/i386/setjmp.S;
 +  extra_dist = lib/mips/setjmp.S;
 +  extra_dist = lib/x86_64/setjmp.S;
 +  extra_dist = lib/sparc64/setjmp.S;
 +  extra_dist = lib/powerpc/setjmp.S;
 +};
 +
 +module = {
 +  name = aout;
 +  common = loader/aout.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = bsd;
 +  x86 = loader/i386/bsd.c;
 +  x86 = loader/i386/bsd32.c;
 +  x86 = loader/i386/bsd64.c;
 +
 +  extra_dist = loader/i386/bsdXX.c;
 +  extra_dist = loader/i386/bsd_pagetable.c;
 +
 +  enable = x86;
 +};
 +
 +module = {
 +  name = linux16;
 +  i386_pc = loader/i386/pc/linux.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = ntldr;
 +  i386_pc = loader/i386/pc/ntldr.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = multiboot2;
 +  cppflags = "-DGRUB_USE_MULTIBOOT2";
 +
 +  common = loader/multiboot.c;
 +  common = loader/multiboot_mbi2.c;
 +  enable = x86;
 +  enable = mips;
 +};
 +
 +module = {
 +  name = multiboot;
 +  common = loader/multiboot.c;
 +  x86 = loader/i386/multiboot_mbi.c;
 +  extra_dist = loader/multiboot_elfxx.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = linux;
 +  x86 = loader/i386/linux.c;
 +  mips = loader/mips/linux.c;
 +  powerpc_ieee1275 = loader/powerpc/ieee1275/linux.c;
 +  sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c;
 +  enable = noemu;
 +};
 +
 +module = {
 +  name = xnu;
 +  x86 = loader/xnu_resume.c;
 +  x86 = loader/i386/xnu.c;
 +  x86 = loader/macho32.c;
 +  x86 = loader/macho64.c;
 +  x86 = loader/macho.c;
 +  x86 = loader/xnu.c;
 +
 +  extra_dist = loader/machoXX.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = appleldr;
 +  x86_efi = loader/efi/appleloader.c;
 +  enable = x86_efi;
 +};
 +
 +module = {
 +  name = chain;
 +  x86_efi = loader/efi/chainloader.c;
 +  i386_pc = loader/i386/pc/chainloader.c;
 +  enable = i386_pc;
 +  enable = x86_efi;
 +};
 +
 +module = {
 +  name = mmap;
 +  common = mmap/mmap.c;
 +  x86 = mmap/i386/uppermem.c;
 +  x86 = mmap/i386/mmap.c;
 +
 +  i386_pc = mmap/i386/pc/mmap.c;
 +  i386_pc = mmap/i386/pc/mmap_helper.S;
 +
 +  x86_efi = mmap/efi/mmap.c;
 +
 +  mips_yeeloong = mmap/mips/yeeloong/uppermem.c;
 +
 +  enable = x86;
 +  enable = mips_yeeloong;
 +};
 +
 +module = {
 +  name = normal;
 +  common = normal/main.c;
 +  common = normal/cmdline.c;
 +  common = normal/dyncmd.c;
 +  common = normal/auth.c;
 +  common = normal/autofs.c;
 +  common = normal/color.c;
 +  common = normal/completion.c;
 +  common = normal/datetime.c;
 +  common = normal/menu.c;
 +  common = normal/menu_entry.c;
 +  common = normal/menu_text.c;
 +  common = normal/misc.c;
 +  common = normal/crypto.c;
 +  common = normal/term.c;
 +  common = normal/context.c;
 +  common = normal/charset.c;
 +
 +  common = script/main.c;
 +  common = script/script.c;
 +  common = script/execute.c;
 +  common = script/function.c;
 +  common = script/lexer.c;
 +  common = script/argv.c;
 +
 +  common = commands/menuentry.c;
 +
 +  common = unidata.c;
 +  common_nodist = grub_script.tab.c;
 +  common_nodist = grub_script.yy.c;
 +  common_nodist = grub_script.tab.h;
 +  common_nodist = grub_script.yy.h;
 +
 +  extra_dist = script/yylex.l;
 +  extra_dist = script/parser.y;
 +
 +  cflags = '$(CFLAGS_POSIX) -Wno-error';
 +  cppflags = '$(CPPFLAGS_POSIX)';
 +};
 +
 +module = {
 +  name = part_acorn;
 +  common = partmap/acorn.c;
 +};
 +
 +module = {
 +  name = part_amiga;
 +  common = partmap/amiga.c;
 +};
 +
 +module = {
 +  name = part_apple;
 +  common = partmap/apple.c;
 +};
 +
 +module = {
 +  name = part_gpt;
 +  common = partmap/gpt.c;
 +};
 +
 +module = {
 +  name = part_msdos;
 +  common = partmap/msdos.c;
 +};
 +
 +module = {
 +  name = part_sun;
 +  common = partmap/sun.c;
 +};
 +
 +module = {
 +  name = part_bsd;
 +  common = partmap/bsdlabel.c;
 +};
 +
 +module = {
 +  name = part_sunpc;
 +  common = partmap/sunpc.c;
 +};
 +
 +module = {
 +  name = msdospart;
 +  common = parttool/msdospart.c;
 +};
 +
 +module = {
 +  name = at_keyboard;
 +  common = term/at_keyboard.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = gfxterm;
 +  common = term/gfxterm.c;
 +  enable = videomodules;
 +};
 +
 +module = {
 +  name = serial;
 +  common = term/serial.c;
 +  x86 = term/ns8250.c;
 +
 +  enable = emu;
 +  enable = i386;
 +  enable = x86_64_efi;
 +  emu_condition = COND_GRUB_EMU_USB;
 +};
 +
 +module = {
 +  name = sendkey;
 +  i386_pc = commands/i386/pc/sendkey.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = terminfo;
 +  common = term/terminfo.c;
 +  common = term/tparm.c;
 +};
 +
 +module = {
 +  name = usb_keyboard;
 +  common = term/usb_keyboard.c;
 +  enable = usb;
 +};
 +
 +module = {
 +  name = vga;
 +  i386_pc = video/i386/pc/vga.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = vga_text;
 +  common = term/i386/pc/vga_text.c;
 +  common = term/i386/vga_common.c;
 +  enable = i386_pc;
 +  enable = i386_coreboot;
 +  enable = i386_multiboot;
 +};
 +
 +module = {
 +  name = video_cirrus;
 +  x86 = video/cirrus.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = video_bochs;
 +  x86 = video/bochs.c;
 +  enable = x86;
 +};
 +
 +module = {
 +  name = functional_test;
 +  common = tests/lib/functional_test.c;
 +  common = tests/lib/test.c;
 +};
 +
 +module = {
 +  name = example_functional_test;
 +  common = tests/example_functional_test.c;
 +  cflags = -Wno-format;
 +};
 +
 +module = {
 +  name = bitmap;
 +  common = video/bitmap.c;
 +  enable = videomodules;
 +};
 +
 +module = {
 +  name = bitmap_scale;
 +  common = video/bitmap_scale.c;
 +  enable = videomodules;
 +};
 +
 +module = {
 +  name = efi_gop;
 +  x86_efi = video/efi_gop.c;
 +  enable = x86_efi;
 +};
 +
 +module = {
 +  name = efi_uga;
 +  x86_efi = video/efi_uga.c;
 +  enable = x86_efi;
 +};
 +
 +module = {
 +  name = jpeg;
 +  common = video/readers/jpeg.c;
 +};
 +
 +module = {
 +  name = png;
 +  common = video/readers/png.c;
 +};
 +
 +module = {
 +  name = tga;
 +  common = video/readers/tga.c;
 +};
 +
 +module = {
 +  name = vbe;
 +  i386_pc = video/i386/pc/vbe.c;
 +  enable = i386_pc;
 +};
 +
 +module = {
 +  name = video_fb;
 +  common = video/fb/video_fb.c;
 +  common = video/fb/fbblit.c;
 +  common = video/fb/fbfill.c;
 +  common = video/fb/fbutil.c;
 +  enable = videomodules;
 +};
 +
 +module = {
 +  name = video;
 +  common = video/video.c;
 +  enable = videomodules;
 +};
 +
 +module = {
 +  name = ieee1275_fb;
 +  ieee1275 = video/ieee1275.c;
 +  enable = powerpc;
 +  enable = sparc64;
 +};
 +
 +module = {
 +  name = sdl;
 +  emu = video/emu/sdl.c;
 +  enable = emu;
 +  condition = COND_GRUB_EMU_SDL;
 +};
 +
 +module = {
 +  name = datehook;
 +  common = hook/datehook.c;
 +};
 +
 +module = {
 +  name = test_blockarg;
 +  common = tests/test_blockarg.c;
 +};
 +
 +module = {
 +  name = xzio;
 +  common = io/xzio.c;
 +  common = lib/xzembed/xz_dec_bcj.c;
 +  common = lib/xzembed/xz_dec_lzma2.c;
 +  common = lib/xzembed/xz_dec_stream.c;
 +  cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed';
 +};
 +
 +module = {
 +  name = testload;
 +  common = commands/testload.c;
 +};
index 0000000000000000000000000000000000000000,2ba15468b0cd460780dd7dce1d53285d8a8e9279..2ba15468b0cd460780dd7dce1d53285d8a8e9279
mode 000000,100644..100644
--- /dev/null
index 1e0aefa50f8eff92be575da694a4f9ae656314da,0000000000000000000000000000000000000000..8afae8eb7423ca0a4d9382f3268a1c8a39ccc307
mode 100644,000000..100644
--- /dev/null
@@@ -1,122 -1,0 +1,126 @@@
 +/* halt.c - command to halt the computer.  */
 +/*
 + *  GRUB  --  GRand Unified Bootloader
 + *  Copyright (C) 2005,2007,2009  Free Software Foundation, Inc.
 + *
 + *  GRUB is free software: you can redistribute it and/or modify
 + *  it under the terms of the GNU General Public License as published by
 + *  the Free Software Foundation, either version 3 of the License, or
 + *  (at your option) any later version.
 + *
 + *  GRUB is distributed in the hope that it will be useful,
 + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + *  GNU General Public License for more details.
 + *
 + *  You should have received a copy of the GNU General Public License
 + *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
 + */
 +
 +#include <grub/dl.h>
 +#include <grub/misc.h>
 +#include <grub/extcmd.h>
 +#include <grub/i18n.h>
 +#include <grub/machine/int.h>
++#include <grub/acpi.h>
 +
 +static const struct grub_arg_option options[] =
 +  {
 +    {"no-apm", 'n', 0, N_("Do not use APM to halt the computer."), 0, 0},
 +    {0, 0, 0, 0, 0, 0}
 +  };
 +
 +static inline void __attribute__ ((noreturn))
 +stop (void)
 +{
 +  while (1)
 +    {
 +      asm volatile ("hlt");
 +    }
 +}
 +/*
 + * Halt the system, using APM if possible. If NO_APM is true, don't use
 + * APM even if it is available.
 + */
 +void 
 +grub_halt (int no_apm)
 +{
 +  struct grub_bios_int_registers regs;
 +
 +  if (no_apm)
 +    stop ();
 +
 +  /* detect APM */
 +  regs.eax = 0x5300;
 +  regs.ebx = 0;
 +  regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
 +  grub_bios_interrupt (0x15, &regs);
 +  
 +  if (regs.flags & GRUB_CPU_INT_FLAGS_CARRY)
 +    stop ();
 +
 +  /* disconnect APM first */
 +  regs.eax = 0x5304;
 +  regs.ebx = 0;
 +  regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
 +  grub_bios_interrupt (0x15, &regs);
 +
 +  /* connect APM */
 +  regs.eax = 0x5301;
 +  regs.ebx = 0;
 +  regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
 +  grub_bios_interrupt (0x15, &regs);
 +  if (regs.flags & GRUB_CPU_INT_FLAGS_CARRY)
 +    stop ();
 +
 +  /* set APM protocol level - 1.1 or bust. (this covers APM 1.2 also) */
 +  regs.eax = 0x530E;
 +  regs.ebx = 0;
 +  regs.ecx = 0x0101;
 +  regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
 +  grub_bios_interrupt (0x15, &regs);
 +  if (regs.flags & GRUB_CPU_INT_FLAGS_CARRY)
 +    stop ();
 +
 +  /* set the power state to off */
 +  regs.eax = 0x5307;
 +  regs.ebx = 1;
 +  regs.ecx = 3;
 +  regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
 +  grub_bios_interrupt (0x15, &regs);
 +
 +  /* shouldn't reach here */
 +  stop ();
 +}
 +
 +static grub_err_t
 +grub_cmd_halt (grub_extcmd_context_t ctxt,
 +             int argc __attribute__ ((unused)),
 +             char **args __attribute__ ((unused)))
 +
 +{
 +  struct grub_arg_list *state = ctxt->state;
 +  int no_apm = 0;
++
++  grub_acpi_halt ();
++
 +  if (state[0].set)
 +    no_apm = 1;
 +  grub_halt (no_apm);
 +  return 0;
 +}
 +
 +static grub_extcmd_t cmd;
 +\f
 +GRUB_MOD_INIT(halt)
 +{
 +  cmd = grub_register_extcmd ("halt", grub_cmd_halt, GRUB_COMMAND_FLAG_BOTH,
 +                            "[-n]",
 +                            N_("Halt the system, if possible using APM."),
 +                            options);
 +}
 +
 +GRUB_MOD_FINI(halt)
 +{
 +  grub_unregister_extcmd (cmd);
 +}
index 17ffd7686d9d45da82cf47ad128c777556d45f59,ae83aed3458b8126f24eda847b8541b23a4273b4..aebc8dd4f36d08b5aadb30724c1a74bd2db5ddd2
@@@ -60,83 -58,14 +60,85 @@@ struct grub_acpi_fad
    struct grub_acpi_table_header hdr;
    grub_uint32_t facs_addr;
    grub_uint32_t dsdt_addr;
-   grub_uint8_t somefields1[88];
+   grub_uint8_t somefields1[20];
+   grub_uint32_t pm1a;
+   grub_uint8_t somefields2[64];
    grub_uint64_t facs_xaddr;
    grub_uint64_t dsdt_xaddr;
-   grub_uint8_t somefields2[96];
+   grub_uint8_t somefields3[96];
  } __attribute__ ((packed));
  
 +#define GRUB_ACPI_MADT_SIGNATURE "APIC"
 +
 +struct grub_acpi_madt_entry_header
 +{
 +  grub_uint8_t type;
 +  grub_uint8_t len;
 +};
 +
 +struct grub_acpi_madt
 +{
 +  struct grub_acpi_table_header hdr;
 +  grub_uint32_t lapic_addr;
 +  grub_uint32_t flags;
 +  struct grub_acpi_madt_entry_header entries[0];
 +};
 +
 +enum
 +  {
 +    GRUB_ACPI_MADT_ENTRY_TYPE_INTERRUPT_OVERRIDE = 2,
 +    GRUB_ACPI_MADT_ENTRY_TYPE_SAPIC = 6,
 +    GRUB_ACPI_MADT_ENTRY_TYPE_LSAPIC = 7,
 +    GRUB_ACPI_MADT_ENTRY_TYPE_PLATFORM_INT_SOURCE = 8
 +  };
 +
 +struct grub_acpi_madt_entry_interrupt_override
 +{
 +  struct grub_acpi_madt_entry_header hdr;
 +  grub_uint8_t bus;
 +  grub_uint8_t source;
 +  grub_uint32_t global_sys_interrupt;
 +  grub_uint16_t flags;
 +};
 +
 +struct grub_acpi_madt_entry_sapic
 +{
 +  struct grub_acpi_madt_entry_header hdr;
 +  grub_uint8_t id;
 +  grub_uint8_t pad;
 +  grub_uint32_t global_sys_interrupt_base;
 +  grub_uint64_t addr;
 +};
 +
 +struct grub_acpi_madt_entry_lsapic
 +{
 +  struct grub_acpi_madt_entry_header hdr;
 +  grub_uint8_t cpu_id;
 +  grub_uint8_t id;
 +  grub_uint8_t eid;
 +  grub_uint8_t pad[3];
 +  grub_uint32_t flags;
 +  grub_uint32_t cpu_uid;
 +  grub_uint8_t cpu_uid_str[0];
 +};
 +
 +struct grub_acpi_madt_entry_platform_int_source
 +{
 +  struct grub_acpi_madt_entry_header hdr;
 +  grub_uint16_t flags;
 +  grub_uint8_t inttype;
 +  grub_uint8_t cpu_id;
 +  grub_uint8_t cpu_eid;
 +  grub_uint8_t sapic_vector;
 +  grub_uint32_t global_sys_int;
 +  grub_uint32_t src_flags;
 +};
 +
 +enum
 +  {
 +    GRUB_ACPI_MADT_ENTRY_SAPIC_FLAGS_ENABLED = 1
 +  };
 +
  struct grub_acpi_rsdp_v10 *grub_acpi_get_rsdpv1 (void);
  struct grub_acpi_rsdp_v20 *grub_acpi_get_rsdpv2 (void);
  struct grub_acpi_rsdp_v10 *grub_machine_acpi_get_rsdpv1 (void);