]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* include/grub/partition.h (grub_partition_map): Change prototype of
authorColin Watson <cjwatson@ubuntu.com>
Mon, 27 Feb 2012 21:25:39 +0000 (22:25 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 27 Feb 2012 21:25:39 +0000 (22:25 +0100)
embed to take a maximum value for nsectors.
* include/grub/emu/hostdisk.h (grub_util_ldm_embed): Likewise.
* include/grub/fs.h (grub_fs): Likewise.
* grub-core/partmap/msdos.c (embed_signatures): New array.
(pc_partition_map_embed): Check for and avoid sectors matching any
of the signatures in embed_signatures, up to max_nsectors.
* grub-core/partmap/gpt.c (gpt_partition_map_embed): Restrict
returned sector map to max_nsectors.
* grub-core/disk/ldm.c (grub_util_ldm_embed): Likewise.
* grub-core/fs/btrfs.c (grub_btrfs_embed): Likewise.
* grub-core/fs/zfs/zfs.c (grub_zfs_embed): Likewise.
* util/grub-setup.c (setup): Allow for the embedding area being
split into multiple blocklists.  Tell dest_partmap->embed the
maximum number of sectors we care about.

1  2 
ChangeLog
grub-core/disk/ldm.c
grub-core/fs/btrfs.c
grub-core/fs/zfs/zfs.c
grub-core/partmap/gpt.c
grub-core/partmap/msdos.c
include/grub/emu/hostdisk.h
include/grub/fs.h
include/grub/partition.h
util/grub-setup.c

diff --cc ChangeLog
index 9113c03818c45aa10156f675d7f58bd5ce770954,08b937dcb7e8a52a72dc39b8bc597daad36d37de..eda01e8ec9e476d06c97f4f2b58e465a5684a0ae
+++ b/ChangeLog
++2012-02-27  Colin Watson  <cjwatson@ubuntu.com>
++
++      * include/grub/partition.h (grub_partition_map): Change prototype of
++      embed to take a maximum value for nsectors.
++      * include/grub/emu/hostdisk.h (grub_util_ldm_embed): Likewise.
++      * include/grub/fs.h (grub_fs): Likewise.
++      * grub-core/partmap/msdos.c (embed_signatures): New array.
++      (pc_partition_map_embed): Check for and avoid sectors matching any
++      of the signatures in embed_signatures, up to max_nsectors.
++      * grub-core/partmap/gpt.c (gpt_partition_map_embed): Restrict
++      returned sector map to max_nsectors.
++      * grub-core/disk/ldm.c (grub_util_ldm_embed): Likewise.
++      * grub-core/fs/btrfs.c (grub_btrfs_embed): Likewise.
++      * grub-core/fs/zfs/zfs.c (grub_zfs_embed): Likewise.
++      * util/grub-setup.c (setup): Allow for the embedding area being
++      split into multiple blocklists.  Tell dest_partmap->embed the
++      maximum number of sectors we care about.
++
++2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
++
++      * include/grub/fs.h (grub_fs) [GRUB_UTIL]: Add blocklist_install field.
++      Specify blocklist_install and reserver_first_sector for all fs.
++      * util/grub-setup.c (setup): Use FIBMAP/FIEMAP on Linux. Check resulting
++      blocklists.
++
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Clarify strings.
 +      Fix source dir check.
 +
 +2012-02-27  Richard Laager <rlaager@wiktel.com>
 +
 +      * util/getroot.c (grub_find_root_devices_from_mountinfo): Handle
 +      "zfs" and "fuse.zfs" as synonyms.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Put platform and target_cpu substitutions back since
 +      they are used for directories.
 +
 +2012-02-27  Richard Laager <rlaager@wiktel.com>
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_linux.in: Add ZFS-related arguments.
 +      * util/grub.d/20_linux_xen.in: Likewise.
 +
 +2012-02-27  Richard Laager <rlaager@wiktel.com>
 +
 +      * util/getroot.c (find_root_devices_from_poolname): Handle vdevs
 +      with full paths.
 +
 +2012-02-27  Richard Laager <rlaager@wiktel.com>
 +
 +      * util/getroot.c (grub_find_root_devices_from_mountinfo): Add missing
 +      unescape.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Don't use insecure popen in getroot.
 +
 +      * util/getroot.c (get_mdadm_uuid): Move pipe logic to ...
 +      (exec_pipe): ... here.
 +      (find_root_devices_from_poolname): Use exec_pipe.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove platform and target_cpu replacement.
 +
 +      * configure.ac: Remove platform and target_cpu substitutions.
 +      * tests/util/grub-shell.in: Use modinfo.
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Specify powerpc-ieee1275
 +      explicitly.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Autodetect platform in grub-install but allow override.
 +
 +      * util/grub-install.in: Autodetect platform. Support --target and
 +      --directory. Read platform from modinfo.sh.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support btrfs multi-volume probe.
 +
 +      * util/getroot.c (btrfs_ioctl_dev_info_args) [__linux__]: New struct.
 +      (btrfs_ioctl_fs_info_args) [__linux__]: Likewise.
 +      (BTRFS_IOC_DEV_INFO) [__linux__]: New define.
 +      (BTRFS_IOC_FS_INFO) [__linux__]: Likewise.
 +      (grub_find_root_devices_from_btrfs) [__linux__]: New function.
 +      (grub_find_root_devices_from_mountinfo) [__linux__]: Use
 +      grub_find_root_devices_from_btrfs if on btrfs.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove any awareness of *.c util files about target.
 +
 +      * Makefile.util.def (grub-setup): Split to ...
 +      (grub-bios-setup): ... and this.
 +      (grub-sparc64-setup): ... and this.
 +      * configure.ac: Don't add machine_CPPFLAGS into HOST_CPPFLAGS.
 +      * docs/man/grub-setup.h2m: Split into ...
 +      * docs/man/grub-sparc64-setup.h2m: ... this.
 +      * docs/man/grub-bios-setup.h2m: ... and this.
 +      * include/grub/dl.h (grub_dl) [GRUB_UTIL]: Remove struct.
 +      * include/grub/elf.h (Elf_*) [GRUB_UTIL]: Remove types.
 +      (GRUB_TARGET_WORDSIZE) [GRUB_UTIL]: Remove.
 +      (grub_target_addr_t): Remove.
 +      (grub_target_size_t): Remove.
 +      (grub_target_ssize_t): Remove.
 +      * util/grub-install.in: Use new grub-*-setup.
 +      * util/grub-mkimagexx.c (Elf_Word): New define.
 +      (Elf_Half): Likewise.
 +      (Elf_Section): Likewise.
 +      (ELF_ST_TYPE): Likewise.
 +      * util/grub-setup.c: Switch from GRUB_MACHINE_SPARC64 to
 +      GRUB_SETUP_SPARC64 and from GRUB_MACHINE_PCBIOS to GRUB_SETUP_BIOS.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Replace grub_target_addr with more appropriate types.
 +
 +      * grub-core/commands/efi/fixvideo.c (scan_card): Replace
 +      grub_target_addr with grub_addr.
 +      * grub-core/commands/iorw.c (grub_cmd_read): Replace
 +      grub_target_addr with grub_port.
 +      (grub_cmd_write): Likewise.
 +      * grub-core/commands/memrw.c (grub_cmd_read): Replace
 +      grub_target_addr with grub_addr.
 +      (grub_cmd_write): Likewise.
 +      * grub-core/video/efi_uga.c (find_line_len): Likewise.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/efi/api.h (grub_efi_runtime_services): Add missing
 +      const qualifier for vendor_guid.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/efiemu/runtime/efiemu.c (efiemu_get_variable): Add missing
 +      const qualifier.
 +      (efiemu_memequal): Likewise.
 +      (find_variable): Likewise.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix missing console prototype on qemu-mips.
 +
 +      * include/grub/mips/qemu_mips/console.h: New file.
 +
 +2012-02-27  Matthew Garrett  <mjg@redhat.com>
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/efi/efi.c (grub_efi_get_variable): Add new function.
 +      * include/grub/efi/efi.h: Likewise.
 +      * include/grub/efi/api.h: Add guid for EFI-specified variables.
 +      * include/grub/charset.h (GRUB_MAX_UTF16_PER_UTF8): New definition.
 +      * grub-core/normal/charset.c (grub_utf8_process): Move from here ...
 +      * include/grub/charset.h (grub_utf8_process): ... to here. Inline.
 +      * grub-core/normal/charset.c (grub_utf8_to_utf16): Move from here ...
 +      * include/grub/charset.h (grub_utf8_to_utf16): ... to here. Inline.
 +
 +2012-02-27  Matthew Garrett  <mjg@redhat.com>
 +
 +      * include/grub/efi/pci.h: New file to define EFI PCI protocols.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/diskfilter.c (grub_diskfilter_iterate): Fix off-by-one
 +      error.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Remove inappropriate use of program_transform_name
 +      on grubdir and bootdir but allow explicit specification of those
 +      variables.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mknetdir.in (grub_prefix): Removed.
 +      (subdir): Use @bootdirname@ and @grubdirname@.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Replace PACKAGE_TARNAME with PACKAGE in pkglibdir and pkgdatadir.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES.in: Regenerated.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove improper use of program_transform_name on pkglibrootdir.
 +
 +      * configure.ac (pkglibrootdir): Removed.
 +      (grub-mkimage): Replace PKGLIBROOTDIR with PKGLIBDIR.
 +      * util/grub-mkimage.c: Likewise.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu_text.c (grub_print_message_indented_real): Fix a
 +      warning.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Use file identifier if no UUID is available
 +      or user explicitly prompted for it.
 +
 +2012-02-27  Navdeep Parhar <nparhar@gmail.com>
 +
 +      * grub-core/loader/i386/bsd.c (freebsd_zfsguid): New variable.
 +      (freebsd_get_zfs): New function.
 +      (grub_freebsd_boot): Pass zfs UUID.
 +      (grub_cmd_freebsd): Set zfs UUID.
 +
 +2012-02-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * conf/Makefile.common (platformdir): Base on pkglibdir and not
 +      pkglibrootdir.
 +
 +2012-02-27  Mike Gilbert  <floppym@gentoo.org>
 +
 +      Add configure flag to control libzfs integration.
 +
 +      * configure.ac: Add AC_ARG_ENABLE(libzfs ...) and associated logic.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/diskfilter.c (insert_array): Choose the smallest
 +      device.
 +      * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Reject too
 +      small devices.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove grub_{modname}_init and grub_{modname}_fini. They should never
 +      be used directly if it's really a module and GRUB_MOD_INIT shouldn't
 +      be used on non-modules.
 +
 +      * grub-core/commands/boot.c (GRUB_MOD_INIT) [LOONGSON || QEMU_MIPS]:
 +      Rename to grub_boot_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to grub_boot_fini.
 +      * grub-core/commands/keylayouts.c (GRUB_MOD_INIT)
 +      [LOONGSON || QEMU_MIPS]: Rename to grub_keylayouts_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to grub_keylayouts_fini.
 +      * grub-core/font/font_cmd.c (GRUB_MOD_INIT)
 +      [LOONGSON || QEMU_MIPS]: Rename to grub_font_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to grub_font_fini.
 +      * grub-core/kern/mips/loongson/init.c: Replace explicit protos with
 +      includes.
 +      (grub_machine_init): Remove empty inits.
 +      * grub-core/kern/mips/qemu_mips/init.c: Replace explicit protos with
 +      includes.
 +      (grub_machine_init): Remove empty inits.
 +      * grub-core/term/arc/console.c: Remove explicit proto.
 +      * grub-core/term/at_keyboard.c (GRUB_MOD_INIT)
 +      [LOONGSON || QEMU_MIPS]: Rename to grub_at_keyboard_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
 +      grub_at_keyboard_fini.
 +      * grub-core/term/gfxterm.c (GRUB_MOD_INIT)
 +      [LOONGSON || QEMU_MIPS]: Rename to grub_gfxterm_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
 +      grub_gfxterm_fini.
 +      * grub-core/term/i386/pc/vga_text.c (GRUB_MOD_INIT)
 +      [LOONGSON || QEMU_MIPS]: Rename to grub_vgatext_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
 +      grub_vgatext_fini.
 +      * grub-core/term/ieee1275/console.c: Remove explicit proto.
 +      * grub-core/term/serial.c (GRUB_MOD_INIT)
 +      [LOONGSON || QEMU_MIPS]: Rename to grub_serial_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
 +      grub_serial_fini.
 +      * grub-core/term/terminfo.c (GRUB_MOD_INIT)
 +      [LOONGSON || QEMU_MIPS]: Rename to grub_terminfo_init.
 +      (GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
 +      grub_terminfo_fini.
 +      * grub-core/video/bitmap.c (GRUB_MOD_INIT): Removed.
 +      (GRUB_MOD_FINI): Likewise.
 +      * grub-core/video/radeon_fuloong2e.c (GRUB_MOD_INIT)
 +      [LOONGSON]: Rename to grub_video_radeon_fuloong2e_init.
 +      (GRUB_MOD_FINI) [LOONGSON]: Rename to
 +      grub_video_radeon_fuloong2e_fini.
 +      * grub-core/video/sis315pro.c (GRUB_MOD_INIT)
 +      [LOONGSON]: Rename to grub_video_sis315pro_init.
 +      (GRUB_MOD_FINI) [LOONGSON]: Rename to
 +      grub_video_sis315pro_fini.
 +      * grub-core/video/sm712.c (GRUB_MOD_INIT)
 +      [LOONGSON]: Rename to grub_video_sm712_init.
 +      (GRUB_MOD_FINI) [LOONGSON]: Rename to
 +      grub_video_sm712_fini.
 +      * include/grub/at_keyboard.h (grub_at_keyboard_init): New proto.
 +      (grub_at_keyboard_fini): Likewise.
 +      * include/grub/dl.h (GRUB_MOD_INIT) [!GRUB_UTIL && !EMU]:
 +      Don't declare grub_{modname}_init.
 +      (GRUB_MOD_INIT) [!GRUB_UTIL && !EMU]: Don't declare grub_{modname}_fini.
 +      * include/grub/keyboard_layouts.h (grub_keylayouts_init) [!EMU]:
 +      New proto.
 +      (grub_keylayouts_fini) [!EMU]: Likewise.
 +      * include/grub/serial.h (grub_serial_init) [!EMU]:
 +      New proto.
 +      (grub_serial_fini) [!EMU]: Likewise.
 +      * include/grub/terminfo.h (grub_terminfo_init) [!EMU]:
 +      New proto.
 +      (grub_terminfo_fini) [!EMU]: Likewise.
 +      * include/grub/video.h (grub_font_init) [!EMU]:
 +      New proto.
 +      (grub_font_fini) [!EMU]: Likewise.
 +      (grub_gfxterm_init) [!EMU]: Likewise.
 +      (grub_gfxterm_fini) [!EMU]: Likewise.
 +      (grub_video_sm712_init) [!EMU]: Likewise.
 +      (grub_video_sm712_fini) [!EMU]: Likewise.
 +      (grub_video_sis315pro_init) [!EMU]: Likewise.
 +      (grub_video_sis315pro_fini) [!EMU]: Likewise.
 +      (grub_video_radeon_fuloong2e_init) [!EMU]: Likewise.
 +      (grub_video_radeon_fuloong2e_fini) [!EMU]: Likewise.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make nand a prefix for nand devices.
 +
 +      * grub-core/disk/ieee1275/nand.c (grub_nand_open): Use prefix nand.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/misc.c (grub_stpcpy): Move from here ...
 +      * include/grub/misc.h (grub_stpcpy): ... to here. Inlined.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/env.h (grub_env_find): Remove prototype.
 +      * grub-core/kern/env.c (grub_env_find): Make static.
 +      (grub_env_set): Remove useless set.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/i386/realmode.S: Remove useless align.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/dl.h (grub_dl_load_file): Don't export.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/diskfilter.c (grub_diskfilter_open): Remove useless
 +      grub_dprintf.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Remove useless
 +      grub_errors.
 +      * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Simplify by
 +      not reloading whole superblock but only the part which is really needed.
 +      Remove useless grub_errors.
 +      * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Remove useless
 +      grub_errors.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Don't export grub_get_rtc.
 +
 +      * include/grub/i386/pc/time.h (grub_get_rtc): Don't export.
 +      * grub-core/commands/i386/pc/play.c (play): Use grub_get_time_ms.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/genmod.sh.in: Add -R .note.GNU-stack to strip.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/diskfilter.c (insert_array): Remove scanner_name
 +      argument since it can be deduced from diskfilter. All users updated.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove prio_list.
 +
 +      * include/grub/list.h (grub_prio_list): Removed.
 +      (GRUB_PRIO_LIST_PRIO_MASK): Removed. All users switched to
 +      GRUB_COMMAND_PRIO_MASK.
 +      (GRUB_PRIO_LIST_FLAG_ACTIVE): Removed. All users switched to
 +      GRUB_COMMAND_FLAG_ACTIVE.
 +      (grub_prio_list_insert): Removed.
 +      (grub_prio_list_remove): Likewise.
 +      (GRUB_AS_PRIO_LIST): Likewise.
 +      (GRUB_AS_PRIO_LIST_P): Likewise.
 +      * include/grub/command.h (GRUB_COMMAND_PRIO_MASK): New define.
 +      (GRUB_COMMAND_FLAG_ACTIVE): Likewise.
 +      * grub-core/kern/list.c (grub_prio_list_insert): Remove.
 +      * grub-core/kern/command.c (grub_register_command_prio): Inline
 +      the prio_list code.
 +      (grub_unregister_command): Likewise.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix interrupt mixup from previous commit.
 +
 +      * include/grub/i386/pc/int.h (grub_i386_idt): New struct.
 +      (grub_realidt): New var.
 +      * grub-core/lib/i386/relocator16.S (grub_relocator16_idt): New variable
 +      Load idt.
 +      * grub-core/lib/i386/relocator.c (grub_relocator16_idt):
 +      New declaration.
 +      (grub_relocator16_boot): Set grub_relocator16_idt.
 +      * grub-core/kern/i386/realmode.S (realidt): Renamed to ...
 +      (LOCAL(realidt)): ... this.
 +      * grub-core/boot/i386/pc/startup_raw.S: Pass pointer to realidt in eax.
 +      * grub-core/kern/i386/pc/startup.S: Save pointer to realidt.
 +      (grub_realidt): New variable.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/i386/backtrace.c (grub_cmd_backtrace): Move from ...
 +      * grub-core/lib/backtrace.c (grub_cmd_backtrace): ... to here.
 +      * grub-core/lib/i386/backtrace.c (GRUB_MOD_INIT): Move from ...
 +      * grub-core/lib/backtrace.c (GRUB_MOD_INIT): ... to here.
 +      Gettextize.
 +      * grub-core/lib/i386/backtrace.c (GRUB_MOD_FINI): Move from ...
 +      * grub-core/lib/backtrace.c (GRUB_MOD_FINI): ... to here.
 +      * po/POTFILES.in: Regenerate.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/probe.c (grub_cmd_probe): Gettextise UUID and label
 +      errors.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gnulib/argp-fmtstream.c (__argp_get_display_len): Stop on
 +      \0.
 +      (add_length): Likewise.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +2012-02-26  Lubomir Kundrak  <lkundrak@redhat.com>
 +
 +      GDB serial and backtrace support.
 +
 +      * grub-core/kern/i386/realmode.S (real_to_prot): Reload IDT.
 +      (prot_to_real): Likewise.
 +      * grub-core/kern/i386/int.S (grub_bios_interrupt): Remove IDT reload.
 +      * grub-core/Makefile.core.def (backtrace): New module.
 +      (gdb): Likewise.
 +      * grub-core/gdb/cstub.c: New file.
 +      * grub-core/gdb/gdb.c: Likewise.
 +      * grub-core/gdb/i386/idt.c: Likewise.
 +      * grub-core/gdb/i386/machdep.S: Likewise.
 +      * grub-core/gdb/i386/signal.c: Likewise.
 +      * grub-core/lib/i386/backtrace.c: Likewise.
 +      * grub-core/lib/backtrace.c: Likewise.
 +      * include/grub/backtrace.h: Likewise.
 +      * include/grub/gdb.h: Likewise.
 +      * include/grub/i386/gdb.h: Likewise.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gnulib/argp-fmtstream.c (__argp_get_display_len):
 +      New function.
 +      (add_length): Likewise.
 +      (__argp_fmtstream_update): Handle strings with non-ASCII chars.
 +      * grub-core/gnulib/argp-fmtstream.h (__argp_get_display_len): New
 +      proto.
 +      * grub-core/gnulib/argp-help.c (argp_args_usage): Use
 +      __argp_get_display_len.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      $"..." support in scripts.
 +
 +      * grub-core/script/execute.c (grub_script_arglist_to_argv): Handle
 +      GRUB_SCRIPT_ARG_TYPE_GETTEXT.
 +      * grub-core/script/yylex.l: Likewise.
 +      * include/grub/script_sh.h (GRUB_SCRIPT_ARG_TYPE_GETTEXT): New enum
 +      value.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * gentpl.py: Remove obsolete pkglib_DATA handling.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Don't transform PACKAGE_TARNAME following a discussion on autoconf
 +      mailing list.
 +
 +      * util/grub-install.in: Don't transform PACKAGE_TARNAME.
 +      * util/grub-kbdcomp.in: Likewise.
 +      * util/grub-mkconfig.in: Likewise.
 +      * util/grub-mkconfig_lib.in: Likewise.
 +      * util/grub-mknetdir.in: Likewise.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub-mkstandalone.in: Likewise.
 +      * util/grub-reboot.in: Likewise.
 +      * util/grub-set-default.in: Likewise.
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Likewise.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove GRUB_PREFIX.
 +
 +      * util/grub-mkconfig.in: Remove GRUB_PREFIX.
 +      * util/grub.d/00_header.in: Compute prefix in the only place it's still
 +      used for backward compatibility.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Add new all_video module.
 +
 +      * grub-core/Makefile.am (moddep.lst): Make dependent on video.lst.
 +      * grub-core/Makefile.core.def (all_video): New module.
 +      * grub-core/genmoddep.awk: Generate dependency of all_video from
 +      video.lst.
 +      * grub-core/lib/fake_module.c: New file.
 +      * grub-core/normal/main.c (features): Add feature_all_video_module.
 +      * util/grub.d/00_header.in: Define locale_dir based on $prefix and
 +      don't do explicit search again.
 +      insmod all_video in load_video if available.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Another round of string clarification and adding TRANSLATORS comments.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mknetdir.in: Remove erroneous reference to install_device.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/charset.c (grub_utf8_to_ucs4_alloc): Fix return type
 +      to grub_ssize_t.
 +      * grub-core/normal/main.c (grub_normal_init_page): Fix msg_len type.
 +      * include/grub/charset.h (grub_utf8_to_ucs4_alloc): Fix prototype.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu_text.c (grub_print_message_indented_real): Add
 +      trailing newline implicitly. All users updated.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Implement serial on IEEE1275 and EFI.
 +
 +      * docs/grub.texi (Platform-specific limitations): Fix the columen video
 +      on emu. Mention arc and emu as the only platforms without serial
 +      support.
 +      * grub-core/Makefile.core.def (serial): Enable on all terminfomodule and
 +      ieee1275 platforms.
 +      * grub-core/term/efi/serial.c: New file.
 +      * grub-core/term/ieee1275/serial.c: Likewise.
 +      * grub-core/term/serial.c (grub_serial_find): Disable direct port
 +      specification if no ns8250 driver is available.
 +      (grub_cmd_serial): Likewise.
 +      (GRUB_MOD_INIT) [GRUB_MACHINE_IEEE1275]: Init ofserial.
 +      (GRUB_MOD_INIT) [GRUB_MACHINE_EFI]: Init efiserial.
 +      * include/grub/efi/api.h (GRUB_EFI_SERIAL_IO_GUID): New define.
 +      (grub_efi_parity_type_t): New type.
 +      (grub_efi_stop_bits_t): Likewise.
 +      (grub_efi_serial_io_interface): New struct.
 +      * include/grub/serial.h (grub_serial_port): Make 'broken' field
 +      available for all interfaces.
 +      Add EFI and IEEE1275 fields.
 +      (grub_ofserial_init): New proto.
 +      (grub_efiserial_init): Likeiwse.
 +      * util/grub.d/00_header.in: Don't check for the presence of serial
 +      module.
 +
 +2012-02-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/ieee1275/ofdisk.c (scan): Fix improper use of device
 +      name as if it was an alias.
 +
 +2012-02-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/lsacpi.c (options): Fix typo.
 +
 +2012-02-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Convert grub-emu to argp.
 +
 +      * grub-core/Makefile.core.def (kernel): Add kern/emu/argp_common.c on
 +      emu.
 +      * util/argp_common.c: Rename to ...
 +      * grub-core/kern/emu/argp_common.c: ... this. All users updated.
 +      Add missing includes.
 +      * grub-core/kern/emu/main.c: Convert to argp.
 +      * po/POTFILES.in: Regenerate.
 +      * util/grub-install.in (usage): Make first letter lowcase in messages
 +      for uniformity.
 +      * util/grub-setup.c (options): Likewise.
 +
 +2012-02-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gfxmenu/gui_progress_bar.c (progress_bar_set_property):
 +      Put back accidently commented-out code.
 +
 +2012-02-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_btree_iterate_node): Add btree
 +      loop check using Brent algorithm.
 +      (grub_hfsplus_btree_search): Likewise.
 +
 +2012-02-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Fix usage of wrong device for PreP install.
 +
 +2012-02-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * conf/Makefile.common (CFLAGS_GNULIB): Add
 +      -Wno-unsafe-loop-optimizations.
 +      * configure.ac: Remove -Wmissing-declarations and -Wmissing-prototypes
 +      on tools.
 +      * grub-core/commands/legacycfg.c: Add pragma to skip
 +      -Wunsafe-loop-optimizations.
 +      (check_password_md5_real): Fix loop counter type.
 +      * grub-core/commands/testload.c (grub_cmd_testload): Fix over the EOF
 +      reading.
 +      * grub-core/disk/ldm.c (grub_util_get_ldm): Fix logic error.
 +      * grub-core/fs/zfs/zfs_sha256.c (zio_checksum_SHA256): Add safety
 +      loop condition.
 +      * grub-core/io/gzio.c: Add pragma to skip -Wunsafe-loop-optimizations.
 +      * grub-core/lib/LzmaEnc.c (GetOptimum): Avoid possible infinite loop.
 +      * grub-core/net/net.c (grub_net_route_address): Add safety loop
 +      condition.
 +      * grub-core/normal/charset.c (bidi_line_wrap): Likewise.
 +      * grub-core/normal/cmdline.c (grub_set_history): Fix loop types and
 +      avoid possible infinite loops.
 +      * grub-core/script/parser.y: Add pragma to skip -Wmissing-declarations
 +      and -Wunsafe-loop-optimizations.
 +      * grub-core/script/yylex.l: Likewise.
 +      * util/grub-mkfont.c: Add pragma to skip -Wunsafe-loop-optimizations.
 +      (print_glyphs): Avoid infinite loops.
 +      * util/grub-mkimage.c (compress_kernel_xz): Fix format security.
 +
 +2012-02-24  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * grub-core/commands/lsacpi.c (disp_acpi_xsdt_table): Fix loop condition
 +      to avoid infinite loop.
 +      (disp_acpi_rsdt_table): Likewise.
 +
 +2012-02-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/font/font.c (grub_font_load): Add support for default
 +      path for fonts ($prefix/fonts).
 +      * grub-core/kern/corecmd.c (grub_core_cmd_insmod): Unify condition
 +      for checking if string is a path.
 +      * grub-core/normal/main.c (features): Add feature_default_font_path.
 +      * util/grub-mkconfig.in: Skip mangling of GRUB_FONT into GRUB_FONT_PATH.
 +      * util/grub.d/00_header.in: Use default directory if possible.
 +      * util/grub-install.in: Install unicode.pf2.
 +
 +2012-02-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/README: Add de_CH and en@quot to po/LINGUAS generation command.
 +      * po/Rules-swiss: New file.
 +      * po/swiss.sed: Likewise.
 +
 +2012-02-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/btrfs.c (find_device): Fix typos.
 +      * grub-core/fs/zfs/zfs.c (read_device): Likewise.
 +      * util/grub-mkrelpath.c (argp_parser): Likewise.
 +      Reported by: Yuri Chornoivan.
 +
 +2012-02-23  Dalet Omega <daletomega@gmail.com>
 +
 +      * grub-core/gfxmenu/gui_label.c (label_set_property): Add template
 +      for usual informative messages.
 +
 +2012-02-23  Dalet Omega <daletomega@gmail.com>
 +
 +      Starfield theme.
 +
 +      * Makefile.am: Define starfield_DATA and dejavu.pf2 generation.
 +      * conf/Makefile.common: Define starfielddir.
 +      * configure.ac: Configure starfield.
 +      * themes/starfield/COPYING.CC-BY-SA-3.0: New file.
 +      * themes/starfield/README: Likewise.
 +      * themes/starfield/blob_w.png: Likewise.
 +      * themes/starfield/boot_menu_c.png: Likewise.
 +      * themes/starfield/boot_menu_e.png: Likewise.
 +      * themes/starfield/boot_menu_n.png: Likewise.
 +      * themes/starfield/boot_menu_ne.png: Likewise.
 +      * themes/starfield/boot_menu_nw.png: Likewise.
 +      * themes/starfield/boot_menu_s.png: Likewise.
 +      * themes/starfield/boot_menu_se.png: Likewise.
 +      * themes/starfield/boot_menu_sw.png: Likewise.
 +      * themes/starfield/boot_menu_w.png: Likewise.
 +      * themes/starfield/slider_c.png: Likewise.
 +      * themes/starfield/slider_n.png: Likewise.
 +      * themes/starfield/slider_s.png: Likewise.
 +      * themes/starfield/src/blob_nw.xcf: Likewise.
 +      * themes/starfield/src/bootmenu/: Likewise.
 +      * themes/starfield/src/bootmenu/center.xcf: Likewise.
 +      * themes/starfield/src/bootmenu/corner.xcf: Likewise.
 +      * themes/starfield/src/bootmenu/side.xcf: Likewise.
 +      * themes/starfield/src/slider_c.xcf: Likewise.
 +      * themes/starfield/src/slider_n.xcf: Likewise.
 +      * themes/starfield/src/slider_s.xcf: Likewise.
 +      * themes/starfield/src/terminalbox/: Likewise.
 +      * themes/starfield/src/terminalbox/center.xcf: Likewise.
 +      * themes/starfield/src/terminalbox/corner.xcf: Likewise.
 +      * themes/starfield/src/terminalbox/side.xcf: Likewise.
 +      * themes/starfield/starfield.png: Likewise.
 +      * themes/starfield/terminal_box_c.png: Likewise.
 +      * themes/starfield/terminal_box_e.png: Likewise.
 +      * themes/starfield/terminal_box_n.png: Likewise.
 +      * themes/starfield/terminal_box_ne.png: Likewise.
 +      * themes/starfield/terminal_box_nw.png: Likewise.
 +      * themes/starfield/terminal_box_s.png: Likewise.
 +      * themes/starfield/terminal_box_se.png: Likewise.
 +      * themes/starfield/terminal_box_sw.png: Likewise.
 +      * themes/starfield/terminal_box_w.png: Likewise.
 +      * themes/starfield/theme.txt: Likewise.
 +
 +2012-02-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/00_header.in: Add missing export theme.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/ieee1275/ofpath.c: Remove include of malloc.h since stdlib is
 +      already included.
 +      Reported by: Eren D.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * conf/Makefile.common (grubdatadir): Removed.
 +      (Makefile.am): Move eveything grubdata to pkgdata.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/acpihalt.c (get_sleep_type):
 +      Remove unused variable.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/acpi.h (GRUB_ASCII_OPCODE): Add
 +      GRUB_ACPI_OPCODE_STRING_CONST, GRUB_ACPI_OPCODE_BUFFER,
 +      GRUB_ACPI_OPCODE_CREATE_WORD_FIELD
 +      and GRUB_ACPI_OPCODE_CREATE_BYTE_FIELD.
 +      * grub-core/commands/acpihalt.c [GRUB_DSDT_TEST]: Replace include of
 +      i18n with gettext no-op.
 +      (skip_data_ref_object): Support GRUB_ACPI_OPCODE_BUFFER and
 +      GRUB_ACPI_OPCODE_STRING_CONST.
 +      (get_sleep_type): Support GRUB_ACPI_OPCODE_CREATE_WORD_FIELD and
 +      GRUB_ACPI_OPCODE_CREATE_BYTE_FIELD. Add handling of unknown opcodes.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES.in: Regenerate.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * Makefile.util.def (libgrubmods.a): Add -Wno-error=logical-op
 +      -Wno-error=missing-noreturn.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/affs.c (grub_affs_read_block): Avoid <= in loop
 +      condition to avoid possibly infinite loops.
 +      * grub-core/lib/pbkdf2.c (grub_crypto_pbkdf2): Likewise.
 +      * grub-core/lib/xzembed/xz_dec_bcj.c (bcj_powerpc): Likewise.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/charset.c (bidi_line_wrap): Avoid <= in loop
 +      condition to avoid possibly infinite loops.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (read_device_map): Add missing noreturn
 +      on show_error.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/disk.c (grub_disk_write): Add missing const qualifier.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/corecmd.c (grub_core_cmd_ls): Add missing var init.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/bin2h.c (usage): Add missing attribute noreturn.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/testload.c (grub_cmd_testload): Fix overflow
 +      if the size isn't divisible by 512.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make list_push and list_remove functions rather than inline functions
 +      to decrease size and avoid aliasing violations.
 +
 +      * include/grub/list.h (grub_list_push): Move to ...
 +      * grub-core/kern/list.c (grub_list_push): ... here. Don't inline.
 +      * include/grub/list.h (grub_list_remove): Move to ...
 +      * grub-core/kern/list.c (grub_list_remove): ... here. Don't inline.
 +
 +2012-02-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Disable for now -Wstack-protector, -Wunreachable-code
 +      and -Wunused-result.
 +
 +2012-02-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/net.c (grub_cmd_deladdr): Fix index.
 +      Reported by: Seth Goldberg
 +
 +2012-02-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Add -fno-builtin-gettext on host if NLS is disabled.
 +
 +2012-02-19  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 +
 +      * util/grub-mkconfig.in (GRUB_CMDLINE_GNUMACH): Export variable.
 +      * util/grub.d/10_hurd.in: Include GRUB_CMDLINE_GNUMACH in gnumach
 +      command line.
 +      * docs/grub.texi (Simple configuration): Document
 +      GRUB_CMDLINE_GNUMACH.
 +
 +2012-02-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * conf/Makefile.common (platform_SCRIPTS): New variable.
 +      (platform_PROGRAMS): Likewise.
 +      * gentpl.py: Mark *,module and *.image for install.
 +      * grub-core/gdb_grub.in: Add a notice of expected environment.
 +      * grub-core/Makefile.core.def (gdb_grub): Mark for install.
 +      (gmodule.pl): Likewise.
 +
 +2012-02-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Replace grub_checkkey with grub_getkey_noblock.
 +
 +      * grub-core/kern/term.c (grub_checkkey): Replaced with ...
 +      (grub_getkey_noblock): ... this. All users updated.
 +
 +2012-02-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/console.c: Move to ...
 +      * grub-core/term/emu/console.c: ...here.
 +      (grub_ncurses_getkey): Fix return value if no key is detected.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/test.h (grub_unit_test_init): Add missing prototype.
 +      (grub_unit_test_fini): Likewise.
 +      * tests/lib/unit_test.c (main): Remove extra nested external prototype.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/test.h (GRUB_UNIT_TEST)
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/script/execute.c (grub_script_break): Clarify logic.
 +      Better error handling.
 +      (grub_script_return): Likewise.
 +      * grub-core/script/lexer.c (grub_script_lexer_yywrap): Likewise.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/libgcrypt_wrap/cipher_wrap.h (__GNU_LIBRARY__): Avoid
 +      rimplicit redifinition.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Internationalisation): Detail (lack of) collation in
 +      GRUB.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/cmdline.c (grub_cmdline_get): Don't gettext prompt.
 +      * grub-core/normal/main.c (grub_normal_read_line_real): Gettext
 +      prompt here.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (zfs_fetch_nvlist): Mark unknown member here
 +      as GRUB_ERR_BUG. Don't malloc if no device is available.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/terminfo.c (grub_terminfo_output_unregister):
 +      Mark calling with invalid term as GRUB_ERR_BUG.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/tftp.c (tftp_receive): Silently discard too short
 +      packets rather than raising an error.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/xnu.c (grub_xnu_writetree_toheap_real): Avoid set
 +      in if.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/efi/appleloader.c (grub_cmd_appleloader): Move
 +      diagnostic to dprintf.
 +      * grub-core/loader/i386/pc/linux.c (grub_cmd_linux): Likewise.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/corecmd.c (grub_core_cmd_ls): Handle error in parsing
 +      device name.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ntfs.c (locate_attr): Avoid set in if.
 +      (grub_ntfs_iterate_dir): Likewise.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Efiemu stylistic fixes and gettext.
 +
 +      * grub-core/efiemu/i386/loadcore32.c
 +      (grub_arch_efiemu_relocate_symbols32): Avoid set in if.
 +      * grub-core/efiemu/i386/loadcore64.c
 +      (grub_arch_efiemu_relocate_symbols64): Likewise.
 +      * grub-core/efiemu/i386/pc/cfgtables.c
 +      (grub_machine_efiemu_init_tables): Likewise.
 +      * grub-core/efiemu/loadcore.c (grub_efiemu_resolve_symbols): Likewise.
 +      (grub_efiemu_loadcore_initXX): Add a filename argument.
 +      All users updated.
 +      Improved error message.
 +      * grub-core/efiemu/loadcore_common.c (grub_efiemu_loadcore_init):
 +      Add a filename argument.
 +      All users updated.
 +      * grub-core/efiemu/symbols.c (grub_efiemu_set_virtual_address_map):
 +      Reclassify double relocation as GRUB_ERR_BUG.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/i386/pc/play.c (grub_cmd_play): Improve error
 +      handling.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/hdparm.c (grub_cmd_hdparm): Allow running
 +      on partition.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/misc.h (grub_error_save): Fix cleaning grub_errno.
 +
 +2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Improve string. Gettextize.
 +
 +2012-02-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Remove -Winline altogether and -Wmissing-prototypes on
 +      utils.
 +      * util/import_gcry.py: Add -Wno-strict-aliasing on checked modules.
 +
 +2012-02-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/diskfilter.c (grub_diskfilter_print_partmap)
 +      [GRUB_UTIL]: New function.
 +      (insert_array) [GRUB_UTIL]: Store partmaps.
 +      * include/grub/diskfilter.h (grub_diskfilter_pv) [GRUB_UTIL]: New member
 +      partmaps.
 +      (grub_diskfilter_print_partmap) [GRUB_UTIL]: New proto.
 +      * util/grub-probe.c (probe_partmap): Call grub_diskfilter_print_partmap.
 +      (probe_abstraction): Print diskfilter and not raid.
 +      Reported by: Lennart Sorensen
 +
 +2012-02-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (generate_image): Explicitly init decompress_size.
 +      * util/grub-mkimagexx.c (MASK3): New define.
 +      (add_value_to_slot_20b): Use MASK3.
 +      (add_value_to_slot_21): Likewise.
 +      (relocate_addresses): Fix format specification.
 +      (load_image): Explicitly init symtab_section.
 +
 +2012-02-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/getroot.c (grub_find_root_devices_from_mountinfo): Fix types.
 +      (grub_util_biosdisk_get_grub_dev): Fix format specification.
 +
 +2012-02-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/full.c (grub_arch_dl_get_tramp_got_size): Enable
 +      on powerpc.
 +      Reported by: Lennart Sorensen
 +
 +2012-02-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * gentpl.py: Add missing license header.
 +      * docs/grub.texi: Update copyright year.
 +
 +2012-02-10  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      Source grub-mkconfig_lib from the build directory at build time.
 +      Suggested by: Vladimir Serbinenko.
 +
 +      * gentpl.py (manpage): Set pkgdatadir to $(builddir) on help2man call.
 +      * util/grub-install.in: Define pkgdatadir if not already set, and source
 +      grub-mkconfig_lib from there.
 +      * util/grub-kbdcomp.in: Likewise.
 +      * util/grub-mkconfig.in: Likewise.
 +      * util/grub-mknetdir.in: Likewise.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub-mkstandalone.in: Likewise.
 +      * util/grub-reboot.in: Likewise.
 +      * util/grub-set-default.in: Likewise.
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Increase warning level.
 +
 +      * conf/Makefile.common (CFLAGS_GNULIB): Add -Wno-redundant-decls
 +      -Wno-unreachable-code -Wno-conversion -Wno-old-style-definition.
 +      * configure.ac (HOST_CFLAGS): Add bunch of -W arguments.
 +      (TARGET_CFLAGS): Likewise.
 +      (HOST_CFLAGS): Add -Werror unless --disable-werror is activated.
 +      * grub-core/Makefile.core.def (decompressor_xz): Add
 +      -Wno-unreachable-code.
 +      (normal): Add -Wno-redundant-decls.
 +      (xzio): Add -Wno-unreachable-code.
 +      (lzopio): Add -Wno-redundant-decls -Wno-error.
 +      * grub-core/commands/acpi.c: Add exception to -Wcast-align.
 +      * grub-core/commands/lsacpi.c: Add exception to -Wcast-align.
 +      * grub-core/gensymlist.sh: Add exception to -Wmissing-format-attribute.
 +      * grub-core/kern/dl.c: Add exception to -Wcast-align.
 +      * grub-core/kern/efi/efi.c (grub_efi_modules_addr): Likewise.
 +      * grub-core/kern/i386/coreboot/init.c: Add exception to
 +      -Wsuggest-attribute=noreturn.
 +      * grub-core/kern/ia64/dl.c: Add exception to -Wcast-align.
 +      * grub-core/kern/ia64/dl_helper.c: Likewise.
 +      * grub-core/kern/mips/dl.c: Likewise.
 +      * grub-core/kern/sparc64/dl.c: Likewise.
 +      * grub-core/lib/LzmaEnc.c: Add exception to -Wshadow.
 +      * grub-core/lib/libgcrypt_wrap/cipher_wrap.h (memcpy): Likewise.
 +      (memcmp): Likewise.
 +      * grub-core/lib/pbkdf2.c: Add exception to -Wunreachable-code.
 +      * grub-core/loader/ia64/efi/linux.c: Add exception to -Wcast-align.
 +      * grub-core/loader/mips/linux.c: Likewise.
 +      * grub-core/loader/multiboot_elfxx.c: Likewise.
 +      * grub-core/script/parser.y: Add exception to -Wunreachable-code.
 +      * grub-core/video/sm712.c: Add exception to -Wcast-align.
 +      * util/import_gcry.py: Add -Wno-cast-align to modules checked by hand.
 +      * grub-core/font/font.c (grub_font_loader_init): Add explicit cast and
 +      fixme.
 +      * grub-core/fs/iso9660.c (grub_iso9660_iterate_dir): Likewise.
 +      * grub-core/kern/i386/multiboot_mmap.c (grub_machine_mmap_init):
 +      Fix prototype.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/i386/relocator16.S: Fix incorrect use of absolute
 +      address.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/legacycfg.c (grub_cmd_legacy_kernel):
 +      Avoid improper use of strings.
 +      (grub_cmd_legacy_initrdnounzip): Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/emu/misc.h (grub_util_warn): Add missing format
 +      attribute.
 +      (grub_util_info): Likewise.
 +      (grub_util_error): Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mount.c (fuse_init): Avoid improper use of strings.
 +      * util/grub-fstest.c (fstest): Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/geli.c (grub_md_sha256_real): Respect format security.
 +      (grub_md_sha512_real): Likewise.
 +      (grub_util_get_geli_uuid): Likewise.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors): Likewise.
 +      (grub_util_biosdisk_open): Fix format specification.
 +      Respect format security.
 +      * grub-core/kern/emu/misc.c (xmalloc): Respect format security.
 +      (xrealloc): Likewise.
 +      (xasprintf): Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/import_gcry.py: Include grub/crypto.h in init.c.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (compress_kernel_lzma): Respect format security.
 +      (generate_image): Make prefix a const char *.
 +      Fix format specifications. Respect format security.
 +      Avoid void * arithmetics.
 +      Avoid shadowing.
 +      (argp_parser): Remove unused variable. Respect format security.
 +      * util/grub-mkimagexx.c (relocate_symbols): Avoid shadowing.
 +      (count_funcs) [!MKIMAGE_ELF64]: #if-out.
 +      (count_funcs): Remove unused variable.
 +      (relocate_addresses): Fix format specification.
 +      Disable x86-64 with elf32. Remove unused variables.
 +      (add_fixup_entry): Avoid shadowing.
 +      (make_reloc_section): Fix format specification.
 +      Use assert.
 +      (locate_sections): Fix format specifications.
 +      (load_image): Avoid shadowing.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-setup.c (setup): Remove unused variable. Avoid shadowing.
 +      Fix format specifications. Respect format security.
 +      Don't translate already translated grub_errmsg.
 +      (argp_parser): Remove unused variable
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrelpath.c (argp_parser): Remove unused variable.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkpasswd-pbkdf2.c (argp_parser): Remove unused variable.
 +      (main): Likewise. Use xmalloc. Respect format security.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mklayout.c (console_grub_equivalence): Make "layout"
 +      a const char *.
 +      (argp_parser): Remove unused variable.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkfont.c (grub_font_info): Make name a const char *.
 +      (add_pixel): Make static.
 +      (add_font): Likewise.
 +      (write_string_section): Make name and str a const char *.
 +      (write_be16_section): Make name a const char *.
 +      (print_glyphs): Make static.
 +      (write_font_ascii_bitmap): Likewise.
 +      (write_font_width_spec): Likewise.
 +      (write_font_pf2): Likewise.
 +      (argp_parser): Remove unused variable.
 +      Respect format security.
 +      (main): Avoid shadowing. Respect format security.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-editenv.c (argp_parser): Make static.
 +      (create_envblk_file): Use xmalloc.
 +      (open_envblk_file): Likewise.
 +      Resepect format security.
 +      (set_variables): Respect format security.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/getroot.c (grub_find_device): Respect format security.
 +      (get_mdadm_uuid): Remove unused variable.
 +      (grub_util_pull_device): Dont call gettext on already translated
 +      grub_errmsg.
 +      (find_system_device): Remove unused variable.
 +      (grub_util_get_grub_dev): Likewise.
 +      (grub_make_system_path_relative_to_its_root): Respect format security.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-fstest.c (execute_command): Make first argument
 +      a const char *.
 +      (read_file): Avoid shadowing.
 +      Reuse underlying error message if device open fails.
 +      (cmd_cmp): Respect format security.
 +      (root): Make const char *.
 +      (fstest): Remove args argument and use global copy.
 +      Respect format security.
 +      (argp_parser): Make static.
 +      (main): Make default_root const char *.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mount.c (root): Make const char *.
 +      (execute_command): Make first argument a const char *.
 +      (fuse_init): Respect format security.
 +      (argp_parser): Make static. Remove unused variable.
 +      (main):  Make default_root a const char *.
 +      Respect format security.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-probe.c (probe): Don't call gettext on already translated
 +      grub_errmsg.
 +      Remove unused variables.
 +      (argp_parser): Remove unused variable.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-script-check.c (argp_parser): Remove unused variable.
 +      (main): Rename read to curread to avoid shadowing.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/misc.c (grub_util_write_image_at): Fix format specification.
 +      (grub_util_write_image): Likewise.
 +      (grub_script_execute_argument_to_string): Removed (unused).
 +      (grub_script_execute_menuentry): Likewise.
 +      (grub_putchar): Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/symbol.h (EXT_C) [GRUB_UTIL]: Removed.
 +      (FUNCTION) [GRUB_UTIL]: Likewise.
 +      (VARIABLE) [GRUB_UTIL]: Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/misc.h: Avoid evaluationg NEED_ENABLE_EXECUTE_STACK and
 +      NEED_REGISTER_FRAME_INFO in GRUB_UTIL.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/bsdlabel.c (iterate_real): Fix freeing of static
 +      buffer.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/LzmaEnc.c (LzmaEnc_FastPosInit): Made static.
 +      (LzmaEnc_SaveState): Removed (unused).
 +      (LzmaEnc_RestoreState): Likewise.
 +      (LzmaEnc_InitPriceTables): Made static.
 +      (LzmaEnc_Construct): Likewise.
 +      (LzmaEnc_FreeLits): Likewise.
 +      (LzmaEnc_Destruct): Likewise.
 +      (LzmaEnc_Init): Likewise.
 +      (LzmaEnc_InitPrices): Likewise.
 +      (LzmaEnc_Finish): Likewise.
 +      (LzmaEnc_PrepareForLzma2): Removed (unused).
 +      (LzmaEnc_MemPrepare): Likewise.
 +      (LzmaEnc_GetNumAvailableBytes): Likewise.
 +      (LzmaEnc_GetCurBuf): Likewise.
 +      (LzmaEnc_CodeOneMemBlock): Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/ldm.c (grub_util_get_ldm): Remove unused variables.
 +      (grub_util_ldm_embed): Likewise.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-editenv.c (print_var): Rename name to varname to
 +      avoid shadowing.
 +      (main): Rename index to curindex to avoid shadowing.
 +      Make filename a const char *.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/script/lexer.c (grub_script_lexer_init): Rename getline
 +      to arg_getline to avoid shadowing.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/gpt.c (gpt_partition_map_embed): Rename disk to
 +      disk_ to avoid shadowing.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/LzFind.c (MatchFinder_GetIndexByte): Rename index to
 +      curindex to avoid shadowing.
 +      Make static.
 +      (MatchFinder_GetNumAvailableBytes): Make static.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/squash4.c (direct_read): Rename read to curread to
 +      avoid shadowing.
 +
 +2012-02-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/cryptodisk.c (grub_cryptodisk_endecrypt): Rename
 +      argument from encrypt to do_encrypt to avoid shadowing.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/multiboot_elfxx.c (grub_multiboot_load_elf): Fix
 +      incorrect nesting of #if's.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/lsacpi.c (disp_acpi_xsdt_table): #if'-out the
 +      checks which are always false on some platforms.
 +      (grub_cmd_lsacpi): Likewise.
 +      * grub-core/kern/misc.c (grub_strtoul): Likewise.
 +      * grub-core/loader/multiboot.c (grub_multiboot_set_video_mode):
 +      Likewise.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/diskfilter.c (read_segment): Renome unreachable code.
 +      * grub-core/net/ip.c (grub_net_recv_ip4_packets): Likewise.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gnulib/regex.h (re_pattern_buffer): Declare buffer as
 +      re_dfa_t to avoid breaking alignment invariants.
 +      * grub-core/gnulib/regex_internal.h (re_dfa_t): Moved to ...
 +      * grub-core/gnulib/regex.h (re_dfa_t): ... here.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/xnu.c (grub_xnu_boot): Fix printf.
 +      * grub-core/loader/ia64/efi/linux.c (grub_cmd_fpswa): Likewise.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/i386/qemu/mmap.c (grub_machine_mmap_init):
 +      Fix declaration.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/usb/ehci.c (grub_ehci_ehcc_read32): Restructure to
 +      conserve alignment invariants.
 +      (grub_ehci_ehcc_read16): Likewise.
 +      (grub_ehci_oper_read32): Likewise.
 +      (grub_ehci_oper_write32): Likewise.
 +      (grub_ehci_pci_iter) [!GRUB_HAVE_UNALIGNED_ACCESS]: Check alignment.
 +      Conserve alignment invariants.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/full.c (grub_emu_post_init): Remove raid reinit.
 +      * include/grub/disk.h [GRUB_MACHINE_EMU]: Remove now useless LVM/RAID
 +      declarations.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostfs.c (grub_hostfs_close):
 +      Remove unused variable.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/efiemu/loadcore_common.c (grub_efiemu_loadcore_load):
 +      Remove set in if.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/net.h: Remove double declarations.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove "payload" command in ia64 Linux loader since I couldn't
 +      find any evidence of it being used for anything.
 +      Replace "relocate" command with an environment variable
 +
 +      * grub-core/loader/ia64/efi/linux.c (ia64_boot_param): Remove extra
 +      fields.
 +      (ia64_boot_payload): Removed.
 +      (last_payload): Likewise.
 +      (RELOCATE_OFF): Likewise.
 +      (RELOCATE_ON): Likewise.
 +      (RELOCATE_FORCE): Likewise.
 +      (relocate): Likewise.
 +      (free_pages): Don't free payloads.
 +      (grub_load_elf64): Use common error messages.
 +      Use "linux_relocate" variable.
 +      Increase the space after boot_params.
 +      (grub_cmd_payload): Removed.
 +      (grub_cmd_relocate): Likewise.
 +      (grub_cmd_fpswa): Improve messages.
 +      (cmd_payload): Removed.
 +      (cmd_relocate): Likewise.
 +      (GRUB_MOD_INIT): Don't register "payload" and "relocate".
 +      (GRUB_MOD_FINI): Don't unregister "payload" and "relocate".
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Convert UHCI to DMA framework.
 +
 +      * grub-core/bus/usb/uhci.c (grub_uhci): Add chunk and phys members.
 +      (grub_uhci_pci_iter): Fill new members
 +      (grub_alloc_td): Use P2V and V2P functions.
 +      (grub_free_queue): Likewise.
 +      (grub_alloc_qh): Likewise.
 +      (grub_uhci_setup_transfer): Likewise.
 +      (grub_uhci_check_transfer): Likewise.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/video/colors.c (grub_video_parse_color): Fix error message.
 +      Remove assignment in if while on it.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkstandalone.in: Fix modules directory.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (image_targets): Set default_compression to lzma
 +      on i386-pc target.
 +      (argp_parser): Accept "auto" as compression specification.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix `help' with unloaded modules.
 +
 +      * include/grub/normal.h (grub_dyncmd_get_cmd): New proto.
 +      * grub-core/normal/dyncmd.c (grub_dyncmd_get_cmd): New function.
 +      (grub_dyncmd_dispatcher): Small stylistic fix.
 +      * grub-core/commands/help.c (grub_cmd_help): Load missing modules when
 +      explicit help is requested.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/cpio.c (grub_cpio_dir): Fix a bug with multiple listing.
 +      Explicitly init restart while on it.
 +
 +2012-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/wchar.h (mbrtowc): Set pwc to zero to avoid
 +      uninited variable.
 +
 +2012-02-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mknetdir.in: Use . rather than source for POSIX
 +      compatibility.
 +
 +2012-02-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-probe.c (main): Fix trailing space in compatibility hint.
 +
 +2012-02-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/partition.c (grub_partition_get_name): Fix uninited
 +      variable.
 +
 +2012-02-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/hdparm.c (grub_cmd_hdparm): Accept device name
 +      without quotes.
 +
 +2012-02-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/net.c (GRUB_MOD_INIT): Don't register netfs.
 +
 +2012-02-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/partition.c (grub_partition_get_name): Fix reverse
 +      iteration of partitions.
 +
 +2012-02-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Improve gettext support. Stylistic fixes and error handling fixes while
 +      on it.
 +
 +2012-02-07  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/i386/relocator16.S: Revert moving A20 code into PM
 +      part. Instead setup the correct stack in RM.
 +      * grub-core/lib/i386/relocator.c (grub_relocator16_boot): Reserve place
 +      for stack.
 +      * include/grub/i386/relocator_private.h: New file.
 +
 +2012-02-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/minicmd.c (GRUB_MOD_INIT): Add missing SIZE
 +      argument.
 +      * util/grub-fstest.c (options): Add missing DEVICE part.
 +
 +2012-02-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Clarify and unify messages.
 +
 +      * grub-core/commands/hashsum.c (options): Unify messages.
 +      * grub-core/commands/keystatus.c (GRUB_MOD_INIT): Don't mark a
 +      literal-only message as translatable.
 +      * grub-core/commands/lsacpi.c (GRUB_MOD_INIT): Likewise.
 +      * grub-core/loader/ia64/efi/linux.c (GRUB_MOD_INIT): Likewise.
 +      * grub-core/commands/legacycfg.c (GRUB_MOD_INIT): Add quoting around
 +      commands.
 +      * grub-core/commands/menuentry.c (options): Clarify that it's a keyboard
 +      key, not the key used to unlock. Clarify what it's used for.
 +      * grub-core/kern/emu/hostdisk.c (read_device_map): Unify error message.
 +      * grub-core/loader/xnu.c (grub_xnu_load_driver): Remove erroneous colon.
 +      * grub-core/script/main.c (GRUB_MOD_INIT): Clarify [n] to be [NUM].
 +      * util/grub-editenv.c (options): Unify "verbose" message.
 +      * util/grub-fstest.c (read_file): Unify error message.
 +      (fstest): Add quotes around commands.
 +      (options): Unify "verbose" message.
 +      * util/grub-install.in: Add quotes around variable name.
 +      * util/grub-kbdcomp.in: Unify error message.
 +      * util/grub-mkfont.c (main): Likewise.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub-mklayout.c (options): Unify "verbose" message.
 +      * util/grub-mkstandalone.in: Unify help and verbose messages.
 +      * util/grub-mount.c (options): Unify "verbose" message.
 +      * util/grub-probe.c (options): Likewise.
 +      * util/grub-script-check.c (options): Likewise.
 +      * util/grub-setup.c (setup): Unify no-terminator message.
 +      (options): Use DEVICE and not DEV.
 +      Unify "verbose" message.
 +      * util/ieee1275/ofpath.c (xrealpath): Unify error message.
 +
 +2012-02-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Improve and unify messages.
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors): Add argument
 +      name. All users updated.
 +      Print filename in error.
 +      (read_device_map): Print filename in error.
 +      * util/getroot.c (grub_guess_root_devices): Print filename in error.
 +      (grub_util_get_os_disk): Likewise.
 +      (grub_util_biosdisk_get_grub_dev): Likewise.
 +      (grub_util_check_block_device): Likewise.
 +      (grub_util_check_char_device): Likewise.
 +      (grub_make_system_path_relative_to_its_root): Likewise.
 +      * util/grub-editenv.c (create_envblk_file): Likewise.
 +      (open_envblk_file): Likewise.
 +      (write_envblk): Likewise.
 +      * util/grub-fstest.c (cmd_cp): Likewise.
 +      (cmd_cat): Likewise.
 +      (cmd_cmp): Likewise.
 +      * util/grub-menulst2cfg.c (main): Likewise.
 +      * util/grub-mkfont.c (write_font_ascii_bitmap): Likewise.
 +      (write_font_width_spec): Likewise.
 +      (write_font_pf2): Likewise.
 +      * util/grub-mkimage.c (generate_image): New argument outname.
 +      All users updated.
 +      Remove unreacheable message.
 +      (options): Unify messages.
 +      (help_filter): Likewise.
 +      * util/grub-mklayout.c (usage): Removed (unused).
 +      (main): Print filename in error.
 +      * util/grub-mkrescue.in: Fix wrong quoting.
 +      * util/grub-setup.c (setup): Print filename in error.
 +      * util/ieee1275/ofpath.c (vendor_is_ATA): Likewise.
 +      (check_sas): Likewise.
 +      * util/misc.c (grub_util_get_fp_size): Removed.
 +      (grub_util_get_image_size): Print filename in error.
 +      (grub_util_read_at): Removed.
 +      (grub_util_read_image): Print filename in error.
 +      (grub_util_load_image): Likewise.
 +      (grub_util_write_image_at): New argument filename. All users updated.
 +      Print filename in error.
 +      (grub_util_write_image): New argument filename. All users updated.
 +      Print filename in error.
 +      * util/raid.c (grub_util_raid_getmembers): Print filename in error.
 +      * util/resolve.c (grub_util_resolve_dependencies): Likewise.
 +
 +2012-02-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def (pxechain): New module.
 +      * grub-core/loader/i386/pc/pxechainloader.c: New file.
 +      * grub-core/net/drivers/i386/pc/pxe.c (grub_pxe_get_cached): New
 +      function.
 +      (grub_pc_net_config_real): Use grub_pxe_get_cached.
 +      * include/grub/i386/pc/pxe.h (grub_pxe_get_cached): New proto.
 +
 +2012-02-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/err.c (GRUB_MAX_ERRMSG): Move to ...
 +      * include/grub/err.h (GRUB_MAX_ERRMSG): ... here.
 +      * include/grub/err.h (grub_error_saved): New struct.
 +      (grub_errmsg): Make array size explicit.
 +      * include/grub/misc.h (grub_error_save): New function.
 +      (grub_error_load): Likewise.
 +      * grub-core/kern/err.c (grub_error_stack_items): Use grub_error_saved.
 +      (grub_error_push): Update `errno' member name.
 +      (grub_error_pop): Likewise
 +      * grub-core/net/tftp.c (tftp_data): New member save_err.
 +      (tftp_receive): Save error.
 +      (tftp_open): Restore error.
 +
 +2012-02-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/i386/relocator16.S (grub_relocator16_start): Move switch
 +      to real mode down to execute A20-related code in protected mode as
 +      intended.
 +
 +2012-02-05  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * grub-core/disk/diskfilter.c (grub_diskfilter_make_raid): Return
 +      NULL when the argument `level' has an unexpected value.
 +
 +2012-02-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Move platform-dependent files from $prefix to $prefix/$platform.
 +
 +      * config.h.in (GRUB_TARGET_CPU): New definition.
 +      (GRUB_PLATFORM): Likewise.
 +      * configure.ac: Define GRUB_TARGET_CPU and GRUB_PLATFORM.
 +      * grub-core/commands/parttool.c (grub_cmd_parttool): Update dir.
 +      * grub-core/efiemu/main.c (grub_efiemu_autocore): Likewise.
 +      * grub-core/kern/dl.c (grub_dl_load): Likewise.
 +      * grub-core/normal/autofs.c (read_fs_list): Likewise.
 +      * grub-core/normal/crypto.c (read_crypto_list): Likewise.
 +      * grub-core/normal/dyncmd.c (read_command_list): Likewise.
 +      * grub-core/normal/term.c (read_terminal_list): Likewise.
 +      * grub-core/gettext/gettext.c (grub_mofile_open_lang): Use
 +      $prefix/locale.
 +      (grub_gettext_init_ext): Likewise.
 +      * grub-core/normal/main.c (GRUB_MOD_INIT): Define grub_cpu and
 +      grub_platform.
 +      * util/grub-install.in: Update directories.
 +      * util/grub-mknetdir.in: Likewise.
 +      * util/grub-mkrescue.in: Likewise.
 +
 +2012-02-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/openfw.c (grub_claimmap): Change to
 +      grub_error framework. All users updated.
 +
 +2012-02-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gettext/gettext.c: Mostly rewritten to avoid using
 +      lists (by always binsearching), improve caching (cache strings
 +      used for binsearch, not only results), improve
 +      maintainability (by using more structured binary search) and correct
 +      error handling.
 +
 +2012-02-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/script/execute.c (grub_script_return): Fix warning.
 +
 +2012-02-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/script/execute.c (grub_script_return): Fix potential
 +      NULL-dereference.
 +      Reported by: Jim Meyering.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES.in: Regenerate.
 +      * util/grub-install.in: Gettextize the strings missed in first pass.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * Makefile.util.def (grub-mkdevicemap): Removed.
 +      * include/grub/emu/hostdisk.h (grub_util_get_os_disk): New proto.
 +      * include/grub/util/deviceiter.h: Removed.
 +      * util/deviceiter.c: Likewise.
 +      * util/getroot.c (grub_util_get_os_disk): New function.
 +      * util/grub-install.in: Remove grub-mkdevicemap. Use -t disk as
 +      replacement for EFI.
 +      * util/grub-mkdevicemap.c: Removed.
 +      * util/grub-probe.c (probe): Handle PRINT_DISK.
 +      (argp_parser): Handle -t disk.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkfont.c: Migrate to argp.
 +      * util/grub-mklayout.c: Likewise.
 +      * util/grub-mkpasswd-pbkdf2.c: Likewise.
 +      * util/grub-mkrelpath.c: Likewise.
 +      * util/grub-probe.c: Likewise.
 +      * util/grub-script-check.c: Likewise.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-reboot.in: Add missing datarootdir.
 +      Add missing newline.
 +      * util/grub-set-default.in: Add missing datarootdir.
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Add missing newline.
 +      * util/grub-mkrescue.in: Likewise.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/30_os-prober.in: Fix TRANSLATORS comment.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-kbdcomp.in: Add decent help and gettextize.
 +      * docs/man/grub-kbdcomp.h2m: New file.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Migrate grub-mkimage.c to argp.
 +
 +      * Makefile.util.def (grub-mkimage): Add util/argp_common.c.
 +      (grub-setup): Likewise.
 +      * util/grub-setup.c (print_version): Move to ...
 +      * util/argp_common.c (print_version): ... here.
 +      * util/grub-setup.c (argp_program_version_hook): Move to ...
 +      * util/argp_common.c (argp_program_version_hook): ... here.
 +      * util/grub-setup.c (argp_parser): Add exit (1) on fatal error for
 +      safety.
 +      * util/grub-mkimage.c (main): Migrate to argp.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Use same message as
 +      util/powerpc/ieee1275/grub-mkrescue.in with %s in place of command
 +      for better translations.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/powerpc/ieee1275/grub-mkrescue.in: Gettextize. Unify the command
 +      options with generic grub-mkrescue.in with the goal of future
 +      merge.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mm.c: Add missing include of i18n.h
 +      * grub-core/lib/relocator.c: Likewise.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/ia64/efi/linux.c (find_mmap_size): Replace fatal with
 +      error.
 +      (allocate_pages): Check return value.
 +      Replace fatal with error.
 +      (grub_linux_boot): Replace printf with dprintf.
 +      Check find_mmap_size return value.
 +      Replace fatal with error.
 +      Don't call grub_machine_fini.
 +      (grub_load_elf64): Replace printf with dprintf.
 +      (grub_cmd_linux): Likewise.
 +      (grub_cmd_initrd): Likewise.
 +      (grub_cmd_payload): Likewise.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/xnu.c (grub_cmd_devprop_load): Fix error
 +      message.
 +      * grub-core/video/radeon_fuloong2e.c
 +      (grub_video_radeon_fuloong2e_setup): Likewise.
 +      * grub-core/video/sis315pro.c (grub_video_sis315pro_setup): Likewise.
 +      * grub-core/video/video.c (grub_video_set_mode): Don't override
 +      standard out of memory message.
 +
 +2012-02-03  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      NetBSD disk wedge support.
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_hostdisk_find_partition_start)
 +      [__NetBSD__]: Handle NetBSD disk wedges.
 +      * util/getroot.c (convert_system_partition_to_system_disk)
 +      [__NetBSD__]: Likewise.
 +
 +2012-02-03  Mark Wooding <mdw@distorted.org.uk>
 +
 +      * util/grub-mkconfig.in: Use umask rather than chmod to create
 +      grub.cfg.new to avoid insecure grub.cfg.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +        * grub-core/commands/ls.c: Gettextize.
 +        * grub-core/commands/setpci.c: Likewise.
 +        * grub-core/commands/videotest.c: Likewise.
 +        * grub-core/disk/geli.c: Likewise.
 +        * grub-core/kern/mm.c: Likewise.
 +        * grub-core/lib/relocator.c: Likewise.
 +        * grub-core/loader/efi/appleloader.c: Likewise.
 +        * grub-core/loader/i386/xnu.c: Likewise.
 +        * grub-core/loader/ia64/efi/linux.c: Likewise.
 +        * grub-core/loader/xnu.c: Likewise.
 +        * grub-core/net/dns.c: Likewise.
 +        * grub-core/net/net.c: Likewise.
 +        * grub-core/script/lexer.c: Likewise.
 +        * grub-core/script/parser.y: Likewise.
 +        * grub-core/script/yylex.l: Likewise.
 +        * util/getroot.c: Likewise.
 +        * util/grub-setup.c: Likewise.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/reiserfs.c (grub_reiserfs_get_item): Use proper error
 +      number.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/ldm.c (grub_util_ldm_embed): Correct error message.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/search_file.c (SEARCH_TARGET): Remove obsolete
 +      macro.
 +      * grub-core/commands/search_label.c (SEARCH_TARGET): Likewise.
 +      * grub-core/commands/search_uuid.c (SEARCH_TARGET): Likewise.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkstandalone.in: Fix help messages. Gettextize.
 +      * util/grub-install.in: Gettextize.
 +      * util/grub-mkconfig.in: Likewise.
 +      * util/grub-mkconfig_lib.in: Replace gettext with echo -n and not echo
 +      if not available.
 +      (grub_warn): Gettextize.
 +      * util/grub-mknetdir.in: Gettextize.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub-mkstandalone.in: Likewise.
 +      * util/grub-reboot.in: Likewise.
 +      * util/grub-set-default.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.
 +      * po/POTFILES-shell.in: Regenerate.
 +
 +2012-02-03  Richard Laager <rlaager@wiktel.com>
 +
 +      * util/grub-mkimage.c (main): Fix format-security warning.
 +      * util/grub-mkrelpath.c (main): Likewise.
 +      * util/grub-probe.c (main): Likewise.
 +
 +2012-02-03  Richard Laager <rlaager@wiktel.com>
 +
 +      * util/grub-probe.c (probe): Don't crash on canonicalize_file_name
 +      failure.
 +      Put back lost PRINT_DRIVE.
 +
 +2012-02-03  Richard Laager <rlaager@wiktel.com>
 +
 +      * util/getroot.c (find_root_devices_from_libzfs): Fix compilation error.
 +      (grub_guess_root_devices): Replace strlen with sizeof.
 +      Avoid crash.
 +      (find_root_devices_from_poolname): Remove unused variable.
 +      Handle raidzN.
 +
 +2012-02-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support install on multi-device filesystems.
 +
 +      * include/grub/emu/getroot.h (grub_guess_root_device): Renamed to ...
 +      (grub_guess_root_devices): ...this. Return char **. All users updated.
 +      * include/grub/emu/misc.h (grub_find_root_device_from_mountinfo):
 +      Removed.
 +      * util/getroot.c (find_root_device_from_libzfs): Moved pool logic to ...
 +      (find_root_devices_from_poolname): ... here.
 +      (grub_find_root_devices_from_mountinfo): Return char **. Make static.
 +      Support zfs-fuse.
 +      (grub_guess_root_device): Rename to ...
 +      (grub_guess_root_devices): ... this. Return char **. All users updated.
 +      * util/grub-install.in: Handle multi-device filesystems.
 +      * util/grub-probe.c (probe). Make device_names a char **. Add delim
 +      argument. All users updated.
 +      Handle multi-device filesystems.
 +      Use 'delim' as separator.
 +      Remove device check to allow filesystems on file.
 +      (main): Support -0 argument. Handle multi-device.
 +      * util/grub-setup.c (setup): Remove root argument. Handle multi-device.
 +      Fix a cross-device check while on it.
 +      (arguments): Remove root_dev.
 +      (argp_parser): Remove -r.
 +      (main): Remove root_dev.
 +
 +2012-02-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfscrypt.c: Add link to documentation.
 +
 +2012-02-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/videotest.c (grub_cmd_videotest): Fix subset
 +      symbol.
 +      Reported by: NODA, Kai <nodakai>.
 +
 +2012-02-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix ehci on amd64.
 +
 +      * grub-core/bus/usb/usbhub.c (grub_usb_hub_add_dev): Use %p to print
 +      pointers.
 +      * grub-core/bus/usb/ehci.c (grub_ehci_pci_iter): Likewise.
 +      (grub_ehci_setup_qh): Likewise.
 +      (grub_ehci_find_qh): Likewise.
 +      (grub_ehci_transaction): Likewise.
 +      (grub_ehci_setup_transfer): Likewise.
 +      (grub_ehci_check_transfer): Likewise.
 +      (grub_ehci_portstatus): Likewise.
 +      (grub_ehci_detect_dev): Likewise.
 +      (grub_ehci_transfer_controller_data): New field td_last_phys.
 +      (grub_ehci_setup_transfer): Fill td_last_phys.
 +      (grub_ehci_check_transfer): Use td_last_phys.
 +
 +2012-02-01  Seth Goldberg <seth.goldberg@oracle.com>
 +
 +      * grub-core/normal/context.c (grub_env_extractor_close): Don't crash
 +      if no submenu is present.
 +
 +2012-02-01  AleÅ¡ Nesrsta <starous@volny.cz>
 +
 +      CBI support.
 +
 +      * include/grub/usb.h (grub_usbms_protocol_t): New values
 +      GRUB_USBMS_PROTOCOL_CB and GRUB_USBMS_PROTOCOL_CBI.
 +      * grub-core/disk/usbms.c (GRUB_USBMS_CBI_CMD_SIZE): New define.
 +      (GRUB_USBMS_CBI_ADSC_REQ): Likewise.
 +      (grub_usbms_dev): Add subclass, protocol and intrpt.
 +      Remove in_maxsz and out_maxsz.
 +      (grub_usbms_reset): Rename to ...
 +      (grub_usbms_bo_reset): .. this.
 +      (grub_usbms_cbi_cmd): New function.
 +      (grub_usbms_cbi_reset): Likewise.
 +      (grub_usbms_reset): Likewise.
 +      (grub_usbms_attach): Recognize cbi. Same subclass and protocol.
 +      (grub_usbms_transfer): Rename to ...
 +      (grub_usbms_transfer_bo): ... this.
 +      (grub_usbms_transfer_cbi): Likewise.
 +      (grub_usbms_transfer): Likewise.
 +
 +2012-02-01  AleÅ¡ Nesrsta <starous@volny.cz>
 +2012-02-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      EHCI support. All of the credit goes to AleÅ¡ Nesrsta. I've just added
 +      the support for the CS5536 modification thereos and few bugfixes.
 +
 +      * grub-core/Makefile.core.def (ehci): New module.
 +      * grub-core/bus/usb/ehci.c: New file.
 +      * grub-core/bus/usb/usbhub.c (grub_usb_hub_add_dev): New arguments
 +      port and hubaddr. All users updated.
 +      Save port and hubaddr into dev structure.
 +      * include/grub/cs5536.h (GRUB_CS5536_MSR_USB_BASE_SMI_ENABLE): New
 +      define.
 +      * include/grub/pci.h (grub_dma_phys2virt): New function.
 +      (grub_dma_virt2phys): Likewise.
 +      * include/grub/usb.h (grub_usb_device): New members port and hubaddr.
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/fat.c (grub_fat_mount) [!MODE_EXFAT]: Remove fstype
 +      check as some mkfs implementations omit it.
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Unicode): Mention identifier and space limitations.
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/jfs.c (grub_jfs_sblock): Make volname a char array.
 +      Add new member volname2.
 +      (grub_jfs_label): Use volname2 if available.
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/nilfs2.c (grub_nilfs2_super_block): Expand volume_name
 +      over last_mounted as seen in image generated by mkfs.nilfs2.
 +      (grub_nilfs2_label): Use sizeof for the size of s_volume_name.
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/fat.c (grub_fat_dir_entry) [MODE_EXFAT]: Expand label
 +      to 15 UTF-16 characters as seen in FS generated by mkexfatfs.
 +      (grub_fat_label) [MODE_EXFAT]: Use macros for size.
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/romfs.c (grub_romfs_mount): Fix a bug with labels going
 +      over the sector.
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (get_filesystem_dnode): Support space in
 +      subvolume name (by removing a bogus and useless check).
 +
 +2012-01-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ext2.c (grub_ext2_label): Fix field size. Change to
 +      sizeof while on it.
 +
 +2012-01-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/scsi.c (grub_scsi_read_capacity): Renamed to ...
 +      (grub_scsi_read_capacity10): ... this.
 +      (grub_scsi_read_capacity16): New function.
 +      (grub_scsi_open): Use read_capacity16 if read_capacity10 returned
 +      0xffffffff.
 +      Fix off-by-one error.
 +      * include/grub/scsi.h (grub_scsi): Rename size to last_block and make it
 +      64-bit unsigned.
 +      * include/grub/scsicmd.h (grub_scsi_read_capacity): Rename to ...
 +      (grub_scsi_read_capacity10): ... this.
 +      (grub_scsi_read_capacity_data): Rename to ...
 +      (grub_scsi_read_capacity10_data): ... this. Rename size to last_block.
 +      (grub_scsi_read_capacity16): New struct.
 +      (grub_scsi_read_capacity16_data): Likewise.
 +      (grub_scsi_cmd_t): Rename grub_scsi_cmd_read_capacity to
 +      grub_scsi_cmd_read_capacity10.
 +      New command grub_scsi_cmd_read_capacity16.
 +
 +2012-01-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      SCSI >2TiB support.
 +
 +      * grub-core/disk/scsi.c (grub_scsi_read16): New function.
 +      (grub_scsi_write16): Likewise.
 +      (grub_scsi_read): Use read16 when necessary.
 +      (grub_scsi_write): Likewise.
 +      * include/grub/scsicmd.h (grub_scsi_read16): New struct.
 +      (grub_scsi_write16): Likewise.
 +      (grub_scsi_cmd_t): Add READ16 and WRITE16.
 +
 +2012-01-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      SCSI write support (for usbms mainly).
 +
 +      * grub-core/disk/scsi.c (grub_scsi_write10): Uncomment. Make buffer
 +      a const pointer.
 +      (grub_scsi_write): Implement.
 +      * include/grub/scsi.h (grub_scsi_dev): Make write buffer a const pointer
 +
 +2012-01-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/io/lzopio.c (uncompress_block): Fix use of incorrect
 +      variable.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/string.h (memchr): New function.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES.in: Regenerate.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/assert.h (assert_real): Replace grub_fatal
 +      with grub_printf to avoid unnecessary fatal failure.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/limits.h (SHRT_MAX): New define.
 +      (INT_MAX): Likewise.
 +      * grub-core/lib/posix_wrap/stdio.h (snprintf): New function.
 +      * grub-core/lib/posix_wrap/stdlib.h (abs): Likewise.
 +      * grub-core/lib/posix_wrap/string.h (memcmp): Likewise.
 +      (strcpy): Likewise.
 +      (strstr): Likewise.
 +      (strchr): Likewise.
 +      (strncpy): Likewise.
 +      (strcat): Likewise.
 +      (strncat): Likewise.
 +      (strcoll): Likewise.
 +      * include/grub/types.h (GRUB_SHRT_MAX): New define.
 +      (GRUB_INT_MAX): Likewise.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gnulib/regcomp.c (regerror): Don't use abort on
 +      unexpected error.
 +      (optimize_utf8): Likewise.
 +      * grub-core/lib/posix_wrap/stdlib.h (abort): Removed.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/i386/pc/lnxboot.S: Use
 +      GRUB_DECOMPRESSOR_MAX_DECOMPRESSOR_SIZE.
 +      * grub-core/boot/i386/pc/startup_raw.S: Ensure about boot_dev
 +      location.
 +      * include/grub/offsets.h (GRUB_DECOMPRESSOR_I386_PC_BOOT_DEVICE): New
 +      definition.
 +      (GRUB_DECOMPRESSOR_I386_PC_MAX_DECOMPRESSOR_SIZE): Likewise.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/getroot.c (grub_util_get_dm_node_linear_info): Fix memory leak.
 +      * grub-core/disk/cryptodisk.c (cryptodisk_cleanup): Disable for
 +      now to avoid double free.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_dev): Rename to
 +      hostdisk.
 +      * include/grub/disk.h (grub_disk_dev_id): New id HOSTDISK.
 +      * util/grub-probe.c (escape_of_path): Always return a new copy.
 +      (print_full_name): Escape path.
 +      (probe): Don't call grub_util_devname_to_ofpath on NULL.
 +      Fix hints on abstractions.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkconfig_lib.in (prepare_grub_to_access_device):
 +      Don't add "root" line if no compatibility hont is available.
 +      Suggested by: Seth Goldberg.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/ata.h (grub_ata): Add a new element maxbuffer.
 +      * grub-core/disk/ata.c (grub_ata_readwrite): Limit to ata->maxbuffer.
 +      * grub-core/disk/pata.c (grub_pata_open): Set ata->maxbuffer.
 +      * grub-core/disk/ahci.c (grub_ahci_open): Likewise.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/zfs/dnode.h (DN_MIN_INDBLKSHIFT): Removed.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-pe2elf.c (ehdr): Make static.
 +      (shdr): Likewise.
 +      (num_sections): Likewise.
 +      (offset): Likewise.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Eliminate ofpath limits and possible overflows.
 +
 +      * util/ieee1275/ofpath.c (grub_util_info) [STANDALONE]: New function.
 +      (OF_PATH_MAX): Removed.
 +      (MAX_DISK_CAT): New const.
 +      (find_obppath): Use allocated rather than preallocated buffer.
 +      Return result. Argument of_path removed. All users updated.
 +      Add missing fdstat.
 +      (xrealpath): New function.
 +      (block_device_get_sysfs_path_and_link): Remove sysfs argument.
 +      Allocate rather than use preallocated buffer. All users updated.
 +      (__of_path_common): Use allocated rather than preallocatecd buffer.
 +      Return result. Argument of_path removed. All users updated.
 +      (vendor_is_ATA): Read only needed part form the file.
 +      (check_sas): Allocate depending on contents rather than fixed.
 +      (main) [STANDALONE]: Handle NULL result.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/completion.c (iterate_dev): Close the disk.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Cryptodisk write support.
 +
 +      * grub-core/disk/cryptodisk.c (grub_crypto_pcbc_encrypt): New function.
 +      (grub_cryptodisk_decrypt): Moved logic to ...
 +      (grub_cryptodisk_endecrypt): ...this. New argument "encrypt".
 +      (grub_cryptodisk_write): Implement.
 +      * grub-core/kern/emu/hostdisk.c (nwrite): Rename to ...
 +      (grub_util_fd_write): ... this. Make global.
 +      * include/grub/emu/hostdisk.h (grub_util_fd_write): New proto.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/list.h (grub_list_remove): Don't crash if element is
 +      removed twice.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Rename ofconsole to console.
 +
 +      * grub-core/commands/terminal.c (handle_command): Handle ofconsole
 +      as sysnonym to console.
 +      * grub-core/term/ieee1275/ofconsole.c: Renamed to ..
 +      * grub-core/term/ieee1275/console.c: ... this. All users updated.
 +      Rename grub_ofconsole_ to grub_console_. All users updated
 +      (grub_console_term_output): Rename "ofconsole" to "console".
 +      * grub-core/term/terminfo.c (grub_cmd_terminfo): Handle "ofconsole"
 +      as "console".
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/pc/plan9.c (grub_cmd_plan9): Remove PXE
 +      handling.
 +      * include/grub/disk.h (grub_disk_dev_id): Remove obsolete
 +      GRUB_DISK_DEVICE_UUID_ID, GRUB_DISK_DEVICE_PXE_ID and
 +      GRUB_DISK_DEVICE_FILE_ID.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/partition.c (grub_partition_get_name): Simplify logic
 +      and improve performance.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/openfw.c (grub_ieee1275_encode_devname): Fix
 +      missing ieee1275/ prefix on whole disk.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/powerpc/ieee1275/util/biosdisk.h: Remove.
 +      * include/grub/powerpc/ieee1275/biosdisk.h: Likewise.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/cpio.c (handle_symlink): Fix a bug.
 +
 +2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Merge common RAID and LVM logic to an abstract diskfilter.
 +      Add LDM support using the same framework.
 +
 +      * Makefile.util.def (libgrubkern): Add grub-core/disk/ldm.c,
 +      grub-core/disk/diskfilter.c and grub-core/partmap/gpt.c.
 +      (libgrubmods): Remove grub-core/disk/raid.c and
 +      grub-core/partmap/gpt.c.
 +      * grub-core/Makefile.core.def (ldm): New module.
 +      (raid): Renamed to diskfilter. All users updated.
 +      * grub-core/disk/raid.c: Moved to ...
 +      * grub-core/disk/diskfilter.c: ... here.
 +      * grub-core/disk/diskfilter.c: Rename grub_raid_ to grub_diskfilter_.
 +      (lv_num): New var.
 +      (find_array): Renamed to ...
 +      (find_lv): ... this. Support multi-LV. Skip nameless LVs
 +      (grub_is_array_readable): Renamed to ...
 +      (grub_is_lv_readable): ... this. Support multinode hierarchy.
 +      (insert_array): New argument id.
 +      (is_node_readable): New function.
 +      (scan_device): Rename to ...
 +      (scan_disk): .. this. Restrict to one disk.
 +      (scan_devices): New function.
 +      (grub_diskfilter_iterate): Support multi-LV.
 +      Skip invisible and nameless LVs.
 +      (grub_diskfilter_memberlist): Support multi-LV.
 +      (grub_diskfilter_read_node): New function.
 +      (grub_raid_read): Most of logic moved to ...
 +      (read_segment): ... here
 +      (read_lv): New function.
 +      (grub_diskfilter_get_vg_by_uuid): New function.
 +      (grub_diskfilter_make_raid): Likewise.
 +      * grub-core/disk/ldm.c: New file.
 +      * grub-core/disk/lvm.c (vg_list): Removed.
 +      (lv_count): Likewise.
 +      (scan_depth): Likewise.
 +      (is_lv_readable): Likewise.
 +      (grub_lvm_getvalue): Advance pointer past the number.
 +      (find_lv): Removed.
 +      (do_lvm_scan): Refactored into ...
 +      (grub_lvm_detect): ... this. Support raid.
 +      (grub_lvm_iterate): Removed.
 +      (grub_lvm_memberlist): Likewise.
 +      (grub_lvm_open): Likewise.
 +      (grub_lvm_close): Likewise.
 +      (read_lv): Likewise.
 +      (read_node): Likewise.
 +      (is_node_readable): Likewise.
 +      (is_lv_readable): Likewise.
 +      (grub_lvm_read): Likewise.
 +      (grub_lvm_write): Likewise.
 +      (grub_lvm_dev): Use diskfilter
 +      (GRUB_MOD_INIT): Likewise.
 +      (GRUB_MOD_FINI): Likewise.
 +      * grub-core/disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Use
 +      new interface.
 +      * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Likewise.
 +      * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
 +      * grub-core/disk/raid5_recover.c (grub_raid5_recover): Use
 +      grub_diskfilter_read_node.
 +      Fix a bug with xor.
 +      * grub-core/disk/raid6_recover.c (grub_raid6_recover): Use
 +      grub_diskfilter_read_node.
 +      Support GRUB_RAID_LAYOUT_MUL_FROM_POS.
 +      * grub-core/kern/disk.c (grub_disk_dev_list): Make global.
 +      (grub_disk_dev_iterate): Move from here...
 +      * include/grub/disk.h (grub_disk_dev_iterate): ... to here. Inlined.
 +      * grub-core/kern/emu/hostdisk.c (grub_hostdisk_find_partition_start):
 +      Make global.
 +      (grub_hostdisk_find_partition_start): Likewise.
 +      (grub_hostdisk_os_dev_to_grub_drive): New function.
 +      (grub_util_biosdisk_get_osdev): Check that disk is biosdisk.
 +      * grub-core/kern/emu/hostdisk.c (make_device_name): Move to ...
 +      * util/getroot.c (make_device_name): ... here.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_get_dm_node_linear_info):
 +      Move to ...
 +      * util/getroot.c (grub_util_get_dm_node_linear_info): ...here.
 +      * grub-core/kern/emu/hostdisk.c
 +      (convert_system_partition_to_system_disk): Move to ...
 +      * util/getroot.c (convert_system_partition_to_system_disk): ...here.
 +      * grub-core/kern/emu/hostdisk.c (device_is_wholedisk): Move to ...
 +      * util/getroot.c (device_is_wholedisk): ... here.
 +      * grub-core/kern/emu/hostdisk.c (find_system_device): Move to ...
 +      * util/getroot.c (find_system_device): ... here.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_present):
 +      Move to ...
 +      * util/getroot.c (grub_util_biosdisk_is_present): ...here.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev):
 +      Move to ...
 +      * util/getroot.c (grub_util_biosdisk_get_grub_dev): ... here.
 +      Handle LDM.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_floppy):
 +      Move to ...
 +      * util/getroot.c (grub_util_biosdisk_is_floppy): ... here.
 +      * grub-core/partmap/gpt.c (grub_gpt_partition_map_iterate): Made global.
 +      * include/grub/disk.h (grub_disk_dev_id): Replaced RAID and LVM with
 +      DISKFILTER.
 +      * include/grub/raid.h: Renamed to ...
 +      * include/grub/diskfilter.h: ... this.
 +      * include/grub/diskfilter.h: Rename grub_raid_* to grub_diskfilter_*
 +      (GRUB_RAID_LAYOUT_*): Make into array.
 +      (GRUB_RAID_LAYOUT_MUL_FROM_POS): New value.
 +      (grub_diskfilter_vg): New struct.
 +      (grub_diskfilter_pv_id): Likewise.
 +      (grub_raid_member): Removed.
 +      (grub_raid_array): Likewise.
 +      (grub_diskfilter_pv): New struct.
 +      (grub_diskfilter_lv): Likewise.
 +      (grub_diskfilter_segment): Likewise.
 +      (grub_diskfilter_node): Likewise.
 +      (grub_diskfilter_get_vg_by_uuid): New proto.
 +      (grub_raid_register): Inline.
 +      (grub_diskfilter_unregister): Likewise.
 +      (grub_diskfilter_make_raid): New proto.
 +      (grub_diskfilter_vg_register): Likewise.
 +      (grub_diskfilter_read_node): Likewise.
 +      (grub_diskfilter_get_pv_from_disk) [GRUB_UTIL]: Likewise.
 +      * include/grub/emu/hostdisk.h (grub_util_get_ldm): New proto.
 +      (grub_util_is_ldm): Likewise.
 +      (grub_util_ldm_embed) [GRUB_UTIL]: Likewise.
 +      (grub_hostdisk_find_partition_start): Likewise.
 +      (grub_hostdisk_os_dev_to_grub_drive): Likewise.
 +      * include/grub/gpt_partition.h (GRUB_GPT_PARTITION_TYPE_LDM):
 +      New definition.
 +      (grub_gpt_partition_map_iterate): New proto.
 +      * include/grub/lvm.h (grub_lvm_vg): Removed.
 +      (grub_lvm_pv): Likewise.
 +      (grub_lvm_lv): Likewise.
 +      (grub_lvm_segment): Likewise.
 +      (grub_lvm_node): Likewise.
 +      * util/getroot.c [...]
 +      * util/grub-probe.c (probe_raid_level): Handle diskfilter.
 +      (probe_abstraction): Likewise.
 +      * util/grub-setup.c (setup): Remove must_embed. Support LDM.
 +      (main): Remove dead logic.
 +
 +2012-01-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Simplify root device discover and don't fail when trying to open
 +      incorrect devices.
 +
 +      * grub-core/disk/efi/efidisk.c (get_diskname_from_path_real): New
 +      function.
 +      (get_diskname_from_path): Likewise.
 +      (grub_efidisk_get_device_name): Use get_diskname_from_path instead
 +      of iterating.
 +
 +2012-01-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def (setpci): Enable on all PCI platforms.
 +
 +2012-01-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (nvlist_find_value): Check that we don't go
 +      pastthe end.
 +
 +2012-01-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Add missing \.
 +      Reported by: gentoofan
 +
 +2012-01-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/squash4.c (xz_decompress): Fix return value.
 +      (direct_read): Use correct compressed size.
 +      (grub_squash_read_data): Likewise.
 +
 +2012-01-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Platform limitations): New section.
 +      (Platform-specific operations): Likewise.
 +      * docs/grub-dev.texi (Porting): Likewise.
 +
 +2012-01-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      IEEE1275 disk write support.
 +
 +      * grub-core/kern/ieee1275/ieee1275.c (grub_ieee1275_write): Make buffer
 +      const void *.
 +      * include/grub/ieee1275/ieee1275.h (grub_ieee1275_write): Likewise.
 +      * grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_read): Move open
 +      and seek loginc to ...
 +      (grub_ofdisk_prepare): ... here.
 +      (grub_ofdisk_write): Implement.
 +
 +2012-01-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      ARC disk write support.
 +
 +      * grub-core/disk/arc/arcdisk.c (handle_writable): New var.
 +      (reopen): New argument writable. All users updated.
 +      Handle required access mode.
 +      (grub_arcdisk_write): Implement.
 +      * include/grub/arc/arc.h (grub_arc_file_access): New enum.
 +      (grub_arc_firmware_vector): Make buffer to write a const buffer.
 +
 +2012-01-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_device): New field size.
 +      (read_sblock): Don't attempt to read superblocks outside the disk size.
 +
 +2012-01-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/nilfs2.c (grub_nilfs2_load_sb): Use device size from
 +      first superblock to find the second one when possible.
 +
 +2012-01-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Fix an ARC bug.
 +      Print a warning if no platform-specific setup is available.
 +
 +2012-01-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use static allocation rather than scratch pointer in reed_solomon.
 +      It decreases its size significantly and avoids a variable in .text.
 +
 +      * grub-core/lib/reed_solomon.c (scratch): Removed.
 +      (chosenstat): New const or static array.
 +      (sigma): Likewise.
 +      (errpot): Likewise.
 +      (errpos): Likewise.
 +      (sy): Likewise.
 +      (mstat): Likewise.
 +      (errvals): Likewise.
 +      (eqstat): Likewise.
 +      (pol_evaluate): Replace x with log_x argument. All users updated.
 +      (syndroms): Removed.
 +      (gauss_solve): Use statically allocated arrays.
 +      (rs_recover): Likewise.
 +      Calculate syndroms directly.
 +      (decode_block): Use statically allocated arrays.
 +      (grub_reed_solomon_add_redundancy) [TEST]: Fix -DTEST compilation.
 +      (main) [TEST]: Allow -DTEST -DSTANDALONE.
 +
 +2012-01-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Eliminate fixed limit on reed solomon decoder length.
 +
 +      * grub-core/boot/i386/pc/lnxboot.S: Scan for multiboot signature
 +      rather than hardcoding the address.
 +      * grub-core/boot/i386/pc/startup_raw.S: Add new data field
 +      no_reed_solomon_length.
 +      Move gate_a20 to no-reed-solomon part.
 +      Don't force a particular size of no reed-solomon part.
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART):
 +      Removed.
 +      (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_LENGTH): New define.
 +      * util/grub-setup.c (setup): Read no_rs_length from the image itself.
 +
 +2012-01-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/wildcard.c (match_files): Handle filenames
 +      without explicit device.
 +      (wildcard_expand): Don't add explicit device if not already present.
 +      * tests/grub_script_echo1.in: Add a new expansion test.
 +
 +2012-01-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Replace single-linked with double-linked lists. It results in more
 +      compact and more efficient code.
 +
 +      * grub-core/kern/list.c (grub_list_push): Moved from here ...
 +      * include/grub/list.h (grub_list_push): ... to here. Set prev.
 +      (grub_list_remove): Moved from here ...
 +      * include/grub/list.h (grub_list_remove): ... here. Use and set prev.
 +      (grub_prio_list_insert): Set prev.
 +      * include/grub/list.h (grub_list): Add prev. All users updated.
 +
 +2012-01-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Handle newer autotools. Add some missing quotes while on it.
 +
 +      * Makefile.am (pkglib_DATA): Remove update-grub_lib.
 +      (pkglib_DATA): Move grub-mkconfig_lib from here ...
 +      (pkgdata_DATA): ... here.
 +      * Makefile.util.def (update-grub_lib): Removed.
 +      * conf/Makefile.common (pkglib_DATA): Removed.
 +      (pkglib_SCRIPTS): Likewise.
 +      (pkgdata_DATA): New variable.
 +      * tests/util/grub-shell-tester.in: Replace pkglib with pkgdata where
 +      needed.
 +      Add missing quotes.
 +      Remove unused variable while on it.
 +      * tests/util/grub-shell.in: Likewise.
 +      * util/grub-install.in: Likewise.
 +      * util/grub-mkconfig.in: Likewise.
 +      * util/grub-mknetdir.in: Likewise.
 +      * util/grub-mkrescue.in: Likewise.
 +      * util/grub-mkstandalone.in: Likewise.
 +      * util/grub.d/00_header.in: Likewise.
 +      * util/grub.d/10_hurd.in: Likewise.
 +      * util/grub.d/10_illumos.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/update-grub_lib.in: Removed.
 +
 +2012-01-24  Seth Goldberg <seth.goldberg@oracle.com>
 +
 +      * grub-core/net/drivers/i386/pc/pxe.c (grub_pxe_recv): Relax checks as
 +      a workaround for intel problem.
 +
 +2012-01-23  Paulo de Rezende Pinatti <ppinatti@linux.vnet.ibm.com>
 +2012-01-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +2012-01-23  pfsmorigo
 +
 +      * util/grub-install.in: Support dd'in into PreP partition.
 +      * util/grub-probe.c (probe): Support discovering partition type.
 +      (main): Support -t msdos_parttype.
 +
 +2012-01-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/crypto.c (grub_crypto_autoload): Prevent
 +      infinite recursion using counter.
 +      * grub-core/lib/xzembed/xz_dec_stream.c (xz_dec_init): Defer s->crc32
 +      init to skip it if the magic check fails.
 +      (dec_stream_header): Init s->crc32.
 +
 +2012-01-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +2012-01-22  Zachary Bedell <pendorbound@gmail.com>
 +2012-01-22  Richard Laager <rlaager@wiktel.com>
 +
 +      * grub-core/fs/zfs/zfs.c (uberblock_verify): New parameter size.
 +      All users updated.
 +      (find_bestub): Determine correct size.
 +      (fill_vdev_info_real): Fill ashift. New argument. All users updated.
 +      (scan_disk): Align the size down.
 +      Call check pool before find_bestub to have ashift.
 +
 +2012-01-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/relocator.c (malloc_in_range): Remove couple of
 +      dprintf in no-malloc zone.
 +
 +2012-01-22  Mario Limonciello <mario_limonciello@dell.com>
 +
 +      * configure.ac: Add back in test for limits.h.
 +
 +2012-01-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support 4K-sector NTFS.
 +
 +      * include/grub/ntfs.h (GRUB_NTFS_MAX_MFT): Increase to 8.
 +      (grub_ntfs_data): Remove blocksize.
 +      * grub-core/fs/ntfs.c (fixup): Fix size comparison.
 +      Remove data argument. All users updated.
 +
 +2012-01-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mips/arc/init.c (grub_total_modules_size): Mark as
 +      being in .text to avoid dprel references.
 +      * include/grub/mips/loongson/kernel.h (grub_arch_machine): Likewise.
 +      * include/grub/mips/loongson/memory.h (grub_arch_memsize): Likewise.
 +      (grub_arch_highmemsize): Likewise.
 +      * include/grub/mips/loongson/time.h (grub_arch_busclock): Likewise.
 +      * include/grub/mips/qemu_mips/memory.h (grub_arch_memsize): Likewise.
 +      * include/grub/mips/time.h (grub_arch_cpuclock): Likewise.
 +
 +2012-01-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support powerpc with GCC that defines __PPC__ but not __powerpc__.
 +
 +      * config.h.in (__powerpc__) [__PPC__ && !__powerpc__]: New definition.
 +      * grub-core/lib/setjmp.S: Treat __PPC__ as equivalent to __powerpc__.
 +
 +2012-01-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/datetime.h (grub_get_datetime_cmos): Don't define in
 +      GRUB_UTIL.
 +      (grub_set_datetime_cmos): Likewise.
 +
 +2012-01-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make XZ compression parameters dependent on target and not host CPU.
 +
 +      * configure.ac: Define GRUB_TARGET_CPU_XYZ series.
 +      * grub-core/lib/xzembed/xz_config.h: Use GRUB_TARGET_CPU_XYZ.
 +
 +2012-01-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/powerpc/dl.c (grub_arch_dl_get_tramp_got_size): Remove
 +      set but not used variable.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/reiserfs.c (grub_reiserfs_uuid): Reject 0-uuid as
 +      created when no uuid support is compiled into mkfs.reiser.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/hfs.c (macroman_to_utf8): Convert / to :.
 +      (utf8_to_macroman): Do the opposite.
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_iterate_dir): Convert / to :.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Refise build qemu_mips w/o unifont.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Eliminate grub_min/grub_max prone to overflow usage.
 +
 +      * grub-core/bus/usb/usbhub.c (grub_usb_add_hub): Eliminate grub_min.
 +      (poll_nonroot_hub): Likewise.
 +      * grub-core/fs/affs.c (grub_affs_iterate_dir): Likewise.
 +      (grub_affs_label): Likewise.
 +      * grub-core/fs/btrfs.c (grub_btrfs_lzo_decompress): Likewise.
 +      * grub-core/fs/hfs.c (grub_hfs_dir): Likewise.
 +      (grub_hfs_label): Likewise.
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_cmp_catkey): Likewise.
 +      * grub-core/fs/zfs/zfs.c (MIN): Remove.
 +      (zap_leaf_array_equal): Use grub_size. Remove MIN.
 +      (zap_leaf_array_get): Likewise.
 +      (dnode_get_path): Likewise.
 +      * grub-core/io/lzopio.c (grub_lzopio_read): Eliminate grub_min.
 +      * grub-core/io/xzio.c (grub_xzio_read): Likewise.
 +      * grub-core/script/execute.c (grub_script_break): Likewise.
 +      * grub-core/script/lexer.c (grub_script_lexer_record): Eliminate
 +      grub_max.
 +      * grub-core/script/yylex.l (grub_lexer_yyrealloc): Likewise.
 +      * include/grub/misc.h (grub_min): Removed.
 +      (grub_max): Likewise.
 +
 +2012-01-14  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 +
 +      * grub-core/fs/ext2.c (grub_ext2_iterate_dir): Ignore entries with
 +      direct.inode = 0.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/wctype.h (CHARCLASS_NAME_MAX): New define.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/datetime.h (grub_datetime2unixtime): Fix offset.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/stdlib.h (MB_CUR_MAX): Moved from here ...
 +      * grub-core/lib/posix_wrap/wchar.h (MB_CUR_MAX): ... here. Value fixed.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/fshelp.c (grub_fshelp_find_file): Use grub_strcasecmp
 +      rather than a hack for grub_strncasemap.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support multiple initrds
 +      Note: part of this was accidently committed in r3739.
 +
 +      * grub-core/loader/i386/linux.c (grub_cmd_initrd): Support multiple
 +      initrd.
 +      * grub-core/loader/i386/pc/linux.c (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/ia64/efi/linux.c (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/mips/linux.c (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/powerpc/ieee1275/linux.c (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/sparc64/ieee1275/linux.c (grub_cmd_initrd): Likewise.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Skip
 +      disks with unknown size.
 +      * grub-core/disk/raid.c (scan_devices): Allow disks with unknown sizes.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove defines pertaining to arbitrary limits not affecting GRUB
 +      anymore.
 +
 +      * grub-core/fs/ext2.c (EXT2_PATH_MAX): Removed.
 +      (EXT2_MAX_SYMLINKCNT): Likewise.
 +      * grub-core/fs/nilfs2.c (NILFS_BTREE_LEVEL_MAX): Likewise.
 +      * grub-core/net/tftp.c (TFTP_MAX_PACKET): Likewise.
 +      * include/grub/i386/pc/pxe.h (GRUB_PXE_MIN_BLKSIZE): Likewise.
 +      (GRUB_PXE_MAX_BLKSIZE): Likewise.
 +      * include/grub/normal.h (GRUB_MAX_CMDLINE): Likewise.
 +      * include/grub/zfs/dnode.h (DN_MAX_INDBLKSHIFT): Likewise.
 +      (DN_MAX_OBJECT_SHIFT): Likewise.
 +      (DN_MAX_OFFSET_SHIFT): Likewise.
 +      (DN_MAX_OBJECT): Likewise.
 +      (DNODES_PER_LEVEL_SHIFT): Likewise.
 +      * include/grub/zfs/spa.h (SPA_MAXBLOCKSHIFT): Likewise.
 +      (SPA_MAXBLOCKSIZE): Likewise.
 +      (SPA_BLOCKSIZES): Likewise.
 +      * include/grub/zfs/zap_impl.h (MZAP_MAX_BLKSHIFT): Likewise.
 +      (MZAP_MAX_BLKSZ): Likewise.
 +
 +2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (grub_zfs_read): Remove useless alloc and
 +      handle NULL appropriately.
 +      Remove MIN.
 +
 +2012-01-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix efiemu.
 +
 +      * grub-core/efiemu/runtime/efiemu.c: explicitly include right
 +      cpu/types.h.
 +      (efiemu_set_virtual_address_map): Remove UINT_TO_PTR.
 +      * configure.ac: Fix efiemu check.
 +
 +2012-01-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/30_os-prober.in: Fix occurence of grub-probe instead of
 +      grub_probe.
 +      Reported by: adamwill
 +
 +2012-01-12  Seth Goldberg <seth.goldberg@oracle.com>
 +
 +      * grub-core/lib/arg.c (grub_arg_parse): Fix NULL pointer dereference.
 +
 +2012-01-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix handling of wide characters in gfxterm.
 +
 +      * grub-core/term/gfxterm.c (grub_colored_char): Remove width and index.
 +      (clear_char): Likewise.
 +      (paint_char): Skip code == NULL chars.
 +      (grub_gfxterm_putchar): Set code = NULL on "shadowed" positions.
 +
 +2012-01-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/charset.c: Move comment to right place.
 +
 +2012-01-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/affs.c (grub_affs_bblock): Revert flags.
 +      (GRUB_AFFS_FLAG_FFS): Put back where it was.
 +      (grub_affs_mount): Revert the correct version checking.
 +
 +2012-01-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Unicode): Mention several other unsupported features.
 +
 +2011-12-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/squash4.c (squash_mount): Mark endian conversion in
 +      case statements as compile-time one.
 +      (direct_read): Prevent spurious warnings.
 +      (grub_squash_read_data): Likewise.
 +
 +2011-12-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Various squash4 fixes and LZO and XZ support.
 +
 +      * Makefile.util.def (libgrubmods.a): Add xzembed directory to cppflags.
 +      Add xzembed source files.
 +      * grub-core/Makefile.core.def (squash4): Add xzembed and minilzo flags.
 +      * grub-core/fs/squash4.c (grub_squash_super): New field compression.
 +      (grub_squash_inode): New subtype long_dir.
 +      (SQUASH_TYPE_LONG_DIR): New inode type.
 +      (COMPRESSION): New enum.
 +      (XZBUFSIZ): New const.
 +      (grub_squash_data): New fields blksz, decompress, xzdec, xzbuf.
 +      (read_chunk): Use data->decompress.
 +      (zlib_decompress): New function.
 +      (lzo_decompress): Likewise.
 +      (xz_decompress): Likewise.
 +      (squash_mount): Set new data fields.
 +      (grub_squash_iterate_dir): Handle long dir.
 +      (squash_unmount): Free xzdec and xzbuf.
 +      (grub_squash_open): Check ino type.
 +      (direct_read): Stylistic fixes. Use data->decompress.
 +      (grub_squash_read_data): Likewise.
 +      * grub-core/io/gzio.c (grub_gzio): Remove disk_input.
 +      (get_byte): Likewise.
 +      (grub_zlib_disk_read): Removed.
 +      * grub-core/lib/posix_wrap/sys/types.h (ssize_t): New type.
 +      (GRUB_POSIX_BOOL_DEFINED): New define.
 +      * grub-core/lib/posix_wrap/unistd.h: Include sys/types.h.
 +      * grub-core/lib/xzembed/xz.h: Addmissing includes.
 +      [!GRUB_POSIX_BOOL_DEFINED]: Define bool.
 +      * include/grub/deflate.h (grub_zlib_disk_read): Removed.
 +
 +2011-12-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Don't override more informative errors.
 +
 +      * grub-core/commands/acpi.c (grub_cmd_acpi): Don't override errors.
 +      * grub-core/font/font.c (open_section): Likewise.
 +      * grub-core/loader/i386/bsd.c (grub_bsd_load_aout): New argument
 +      filename. Don't override errors.
 +      (grub_cmd_openbsd_ramdisk): Don't override errors.
 +      * grub-core/loader/i386/linux.c (grub_cmd_linux): Likewise.
 +      (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/i386/pc/linux.c (grub_cmd_linux): Likewise.
 +      (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/ia64/efi/linux.c (grub_load_elf64): Likewise.
 +      (grub_cmd_linux): Likewise.
 +      (grub_cmd_initrd): Likewise.
 +      (grub_cmd_payload): Likewise.
 +      * grub-core/loader/mips/linux.c (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/multiboot.c (grub_cmd_multiboot): Likewise.
 +      (grub_cmd_module): Likewise.
 +      * grub-core/loader/powerpc/ieee1275/linux.c (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/sparc64/ieee1275/linux.c (grub_cmd_initrd): Likewise.
 +      * grub-core/loader/xnu.c (grub_xnu_load_driver): Likewise.
 +      (grub_cmd_xnu_mkext): Likewise.
 +      (grub_cmd_xnu_ramdisk): Likewise.
 +      (grub_xnu_check_os_bundle_required): Likewise.
 +      (grub_xnu_load_kext_from_dir): Likewise.
 +      (grub_cmd_xnu_kextdir): Likewise.
 +      * grub-core/loader/xnu_resume.c (grub_xnu_resume): Likewise.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/minix.c (grub_minix_mount) [MODE_MINIX3]: Treat 0xffff
 +      as 1024 in block size field. Found on one of my test images.
 +      Small optimisation while on it.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Filesystems): Mention SFS as Latin1 filesystem.
 +      * grub-core/fs/sfs.c (grub_sfs_mount): Fix a memory leak while on it.
 +      (grub_sfs_iterate_dir): Convert Latin1 to UTF8. Stylistic and
 +      performance fixes while on it.
 +      (grub_sfs_close): Fix memory leak while on it.
 +      (grub_sfs_label): Convert Latin1 to UTF-8.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/hfs.c (grub_hfs_dir): Cap keylen to actually available
 +      space to avoid overflows.
 +      (grub_hfs_label): Convert from macroman to UTF-8.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/affs.c (grub_affs_label): Interpret label as latin1.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu.c (menu_init): Don't stop menu init at gfxterm.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * unicode: Import Unicode 6.0 data.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/gfxterm.c (grub_gfxterm_putchar): Don't set values
 +      outside of range.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Avoid cutting in the middle of UTF-8 character.
 +
 +      * include/grub/charset.h (grub_getend): New function.
 +      * grub-core/script/function.c (grub_script_function_find): Use
 +      grub_getend.
 +      * grub-core/normal/completion.c (add_completion): Likewise.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/charset.c (grub_ucs4_to_utf8): Small stylistic fix.
 +      (grub_bidi_line_logical_to_visual): Skip tags. They are deprecated.
 +      * include/grub/unicode.h (GRUB_UNICODE_TAG_START): New enum value.
 +      (GRUB_UNICODE_TAG_END): Likewise.
 +      (GRUB_UNICODE_LAST_VALID): Likewise.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/unicode.h (grub_unicode_compact_range): Replace end with
 +      len and make it smaller. All users updated.
 +      * util/import_unicode.py: Put length and not end character.
 +      Check length.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make better Unicode-compliant and unify some UTF-8 code pathes.
 +
 +      * grub-core/normal/charset.c (grub_utf8_to_utf16): Don't eat possibly
 +      valid character.
 +      (grub_is_valid_utf8): Use grub_utf8_process.
 +      Check resulting code range.
 +      (grub_utf8_to_ucs4): Use grub_utf8_process.
 +      * include/grub/charset.h (grub_utf16_to_utf8): Don't eat up a possibly
 +      valid character.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/io/bufio.c (grub_bufio_read): Fix handling of corner cases.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Filesystems): Mention AFS.
 +
 +2011-12-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Filesystems): Clarify restrictions.
 +      (Regexp): Mention non-Unicode regexp behaviour.
 +      (Other): Mention non-Unicode matching behaviour.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make HFS implementation use MacRoman.
 +
 +      * grub-core/fs/hfs.c (MAX_UTF8_PER_MAC_ROMAN): New define.
 +      (macroman): New const array.
 +      (macroman_to_utf8): New function.
 +      (utf8_to_macroman): Likewise.
 +      (grub_hfs_find_dir): Use utf8_to_macroman.
 +      (grub_hfs_dir): Use macroman_to_utf8.
 +      Set case_insensitive.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Filesystems): Add IEEE1275 full-path example.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Integrate hints into autogeneration scripts.
 +
 +      * docs/grub.texi (Filesystems): Add a hostdisk example.
 +      * Makefile.util.def (grub-mkdevicemap): Remove ofpath.
 +      (grub-probe): Add ofpath.
 +      * gentpl.py: Remove group nosparc64.
 +      * grub-core/commands/search.c (cache_entry): New struct.
 +      (cache): New var.
 +      (FUNC_NAME): Use and save cache. Fix handling of trailing comma.
 +      * grub-core/commands/search_wrap.c (options): Add platform-specific
 +      hint options.
 +      (grub_cmd_search): Handle platform-specific hints.
 +      (GRUB_MOD_INIT): Declare grub_cmd_search as accept_dash.
 +      * grub-core/kern/emu/hostdisk.c (map): New field device_map.
 +      (grub_util_biosdisk_data): Likewise.
 +      (grub_util_biosdisk_open): Set device_map.
 +      (read_device_map): Handle "" as indication of no map.
 +      Set device_map.
 +      (find_system_device): Add hostdisk/ prefix for autogenerated entries.
 +      (grub_util_biosdisk_get_compatibility_hint): New function.
 +      * grub-core/normal/main.c (features): Add feature_platform_search_hint.
 +      * include/grub/emu/hostdisk.h
 +      (grub_util_biosdisk_get_compatibility_hint): New proto.
 +      * util/grub-install.in: Don't call grub-mkdevicemap.
 +      Add platform-specific hint to load.cfg.
 +      * util/grub-mkconfig.in: Don't call grub-mkdevicemap.
 +      * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Add
 +      hints. Set root preliminary to compatibility hint, not to OS name.
 +      * util/grub-probe.c (PRINT_*): Add hints.
 +      (print): Make static.
 +      (escape_of_path): New function.
 +      (guess_bios_drive): Likewise.
 +      (guess_efi_drive): Likewise.
 +      (guess_baremetal_drive): Likewise.
 +      (print_full_name): Likewise.
 +      (probe): Handle hints.
 +      (main): Likewise.
 +      * util/ieee1275/devicemap.c: Removed.
 +      * util/ieee1275/ofpath.c (find_obppath): Allow to fail. All users
 +      updated.
 +      (grub_util_devname_to_ofpath): Return NULL on failure.
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev): Fix
 +      resource leak.
 +      * util/getroot.c (grub_util_pull_device): Fix memory leak.
 +
 +      * po/POTFILES.in: Regenerated.
 +
 +      Allow purely long options
 +
 +      * grub-core/lib/arg.c (SHORT_ARG_HELP): Removed.
 +      (SHORT_ARG_USAGE): Likewise.
 +      (grub_arg_show_help): Compare opt with help_options.
 +      (parse_option): Receive opt as argument. If makes big simplificatons.
 +      All users updated
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/libgcrypt_wrap/cipher_wrap.h (WORDS_BIGENDIAN):
 +      Restructure to avoid warning.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Account for possible escaped comma in device
 +      name.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/ieee1275/ofpath.c (of_path_of_ide): Fix address for secondary
 +      channel.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/openfw.c (grub_devalias_iterate): Fix
 +      allocation and zero-setting.
 +      (grub_ieee1275_get_devname): Check that alias is complete.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/disk.c (grub_disk_read): Fix hook calling for
 +      unaligned segments.
 +
 +2011-12-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Add ieee1275/
 +      prefix.
 +      (grub_ofdisk_open): Check and discard ieee1275 prefix.
 +      * grub-core/kern/ieee1275/openfw.c (grub_ieee1275_encode_devname):
 +      Add ieee1275 prefix.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Filesystems): Update.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support odc, newc and bigendian cpio formats.
 +
 +      * Makefile.util.def (libgrubmods): Add odc.c, newc.c and cpio_be.c.
 +      * grub-core/Makefile.core.def (newc): New module.
 +      (odc): Likewise.
 +      (cpio_be): Likewise.
 +      * grub-core/fs/cpio.c (ALIGN_CPIO): New macro.
 +      (MAGIC): Likewise.
 +      (MAGIC2): Likewise.
 +      (head) [MODE_ODC]: Adapt for the format.
 +      (head) [MODE_NEWC]: Likewise.
 +      (head) [!MODE_*]: Write fields of interest as arrays.
 +      (MAGIC_USTAR): Removed.
 +      (read_number) [MODE_NEWC]: Change to hex.
 +      (read_number) [!MODE_*]: Parse binary arrays.
 +      (grub_cpio_find_file): Factor out the code for better structure and
 +      always use read_number.
 +      (grub_cpio_mount): Use MAGIC and MAGIC2.
 +      (grub_cpio_dir): Exit on first hook non-0 return.
 +      (grub_cpio_fs) [MODE_ODC]: Set name to odc.
 +      (grub_cpio_fs) [MODE_NEWC]: Set name to newc.
 +      (GRUB_MOD_INIT) [MODE_ODC]: Set name to odc.
 +      (GRUB_MOD_INIT) [MODE_NEWC]: Set name to newc.
 +      (GRUB_MOD_FINI) [MODE_ODC]: Set name to odc.
 +      (GRUB_MOD_FINI) [MODE_NEWC]: Set name to newc.
 +      * grub-core/fs/newc.c: New file.
 +      * grub-core/fs/odc.c: Likewise.
 +      * grub-core/fs/cpio_be.c: Likewise.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix handling of tar numbers occupying the whole field.
 +
 +      * grub-core/fs/cpio.c (read_number): New function.
 +      (grub_cpio_find_file): Use read_number instead of strtoull.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/cpio.c (grub_cpio_find_file): Fix handling of names
 +      occupying the whole field size.
 +
 +2011-12-23  Lukas Anzinger <l.anzinger@gmail.com>
 +
 +      * util/grub-mkconfig_lib.in (version_test_gt): Fix variable names.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/net.c (grub_cmd_delroute): Add missing out condition.
 +
 +2011-12-23  Seth Goldberg <seth.goldberg@oracle.com>
 +
 +      * grub-core/Makefile.core.def (lzma_decompress): Add missing
 +      TARGET_IMG_LDFLAGS.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/getroot.c (ESCAPED_PATH_MAX): New define.
 +      (mountinfo_entry): Increase the field size to take escaping into
 +      account.
 +      (find_root_device_from_libzfs): Add one byte to size of strings for
 +      security.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/reed_solomon.c (grub_reed_solomon_add_redundancy): Add
 +      an assert.
 +      * util/grub-setup.c (setup): Likewise.
 +
 +2011-12-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/i386/pc/startup_raw.S: Add missing argument for
 +      _LzmaDecodeA.
 +
 +2011-12-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Internationalisation): New section.
 +
 +2011-12-22  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Loopback booting): New section.
 +
 +2011-12-22  Keshav P R  <the.ridikulus.rat@gmail.com>
 +
 +      * util/grub-mkstandalone.in: Fix minor typo errors.
 +
 +2011-12-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      IPv6, TCP, HTTP, ICMP and DNS support. Several cleanups and bugfixes.
 +
 +      * grub-core/Makefile.core.def (net): Add net/dns.c, net/tcp.c,
 +      net/icmp.c and net/icmp6.c.
 +      (http): New module.
 +      (priority_queue): Likewise.
 +      * grub-core/io/bufio.c: Rewritten.
 +      * grub-core/lib/legacy_parse.c (legacy_command): New argument type
 +      TYPE_WITH_CONFIGFILE_OPTION.
 +      (legacy_commands): Add bootp and dhcp.
 +      (is_option): Handle TYPE_WITH_CONFIGFILE_OPTION.
 +      (grub_legacy_parse): Likewise.
 +      * grub-core/lib/priority_queue.c: New file.
 +      * grub-core/net/arp.c: Add missing license header.
 +      (arp_find_entry): Removed.
 +      (arp_find_entry): Likewise.
 +      (grub_net_arp_resolve): Rename to ...
 +      (grub_net_arp_send_request): ...this.
 +      (grub_net_arp_receive): New card argument.
 +      * grub-core/net/bootp.c (parse_dhcp_vendor): Clean up.
 +      Set router and DNS server.
 +      (grub_net_configure_by_dhcp_ack): Handle routing information.
 +      (grub_cmd_bootp): Set checksum.
 +      (grub_bootp_init): Remove net_dhcp.
 +      * grub-core/net/dns.c: New file.
 +      * grub-core/net/drivers/efi/efinet.c (send_card_buffer): Wait for
 +      completion.
 +      (get_card_packet): Handle allocation.
 +      (grub_efinet_findcards): Set mtu.
 +      * grub-core/net/drivers/emu/emunet.c: Add missing license header.
 +      (get_card_packet): Handle allocation.
 +      (emucard): Set mtu.
 +      * grub-core/net/drivers/i386/pc/pxe.c (grub_pxe_recv): Handle allocation
 +      (GRUB_MOD_INIT): Set mtu.
 +      * grub-core/net/drivers/ieee1275/ofnet.c (grub_ofnetcard_data): Remove
 +      mtu.
 +      (get_card_packet): Handle allocation.
 +      (grub_ofnet_findcards): Set mtu.
 +      * grub-core/net/ethernet.c (send_ethernet_packet): Add compile time
 +      assert.
 +      (grub_net_recv_ethernet_packet): Handle IPv6.
 +      * grub-core/net/http.c: New file.
 +      * grub-core/net/icmp.c: Likewise.
 +      * grub-core/net/icmp6.c: Likewise.
 +      * grub-core/net/ip.c (ip6addr): New type.
 +      (ip6hdr): Likewise.
 +      (reassemble): Likewise.
 +      (cmp): New function.
 +      (reassembles): New variable.
 +      (grub_net_ip_chksum): Handle 0xffff sum and unaligned buffers.
 +      (id): New variable.
 +      (send_fragmented): New function.
 +      (grub_net_send_ip_packet): Rename to ...
 +      (grub_net_send_ip4_packet): ... this. Send fragmented if needed.
 +      Handle non-UDP.
 +      (grub_net_recv_ip_packets): Rename to ...
 +      (handle_dgram): ... this. Check checksum. Handle non-UDP.
 +      (free_rsm): New function.
 +      (free_old_fragments): Likewise.
 +      (grub_net_recv_ip4_packets): New function.
 +      (grub_net_send_ip6_packet): Likewise.
 +      (grub_net_send_ip_packet): Likewise.
 +      (grub_net_recv_ip6_packets): Likewise.
 +      (grub_net_recv_ip_packets): Likewise.
 +      * grub-core/net/net.c (grub_net_link_layer_entry): New struct.
 +      (LINK_LAYER_CACHE_SIZE): New const.
 +      (link_layer_find_entry): New function.
 +      (grub_net_link_layer_add_address): Likewise.
 +      (grub_net_link_layer_resolve_check): Likewise.
 +      (grub_net_link_layer_resolve): Likewise.
 +      (grub_net_ipv6_get_slaac): Likewise.
 +      (grub_net_ipv6_get_link_local): Likewise.
 +      (grub_cmd_ipv6_autoconf): Likewise.
 +      (parse_ip): Handle one number representation.
 +      (parse_ip6): New functoion.
 +      (match_net): Handle IPv6.
 +      (grub_net_resolve_address): Handle IPv6 and DNS.
 +      (grub_net_resolve_net_address): Handle IPv6.
 +      (route_cmp): New function.
 +      (grub_net_route_address): Find best route.
 +      (grub_net_addr_to_str): Handle IPv6.
 +      (grub_net_addr_cmp): New function.
 +      (grub_net_add_addr): Register local route.
 +      (print_net_address): Handle net address.
 +      (grub_net_poll_cards): Retransmit TCP.
 +      (grub_net_poll_cards_idle_real): Likewise.
 +      (have_ahead): New function.
 +      (grub_net_seek_real): Use underlying seek.
 +      (GRUB_MOD_INIT): Register net_ipv6_autoconf and init dns.
 +      * grub-core/net/tcp.c: New file.
 +      * grub-core/net/tftp.c (tftp_data): Add priority_queue.
 +      (cmp): New function.
 +      (ack): Likewise.
 +      (tftp_receive): Handle unordered input.
 +      (destroy_pq): New function.
 +      (tftp_close): Close pq.
 +      * grub-core/net/udp.c: Put missing license header.
 +      (grub_net_udp_socket): New function.
 +      (udp_socket_register): Likewise.
 +      (grub_net_udp_close): Likewise.
 +      (grub_net_recv_udp_packet): Check checksum.
 +      * include/grub/efi/api.h (grub_efi_simple_network): Add status.
 +      * include/grub/misc.h (grub_memchr): New function.
 +      * include/grub/net.h (GRUB_NET_*_SIZE): New enum.
 +      (grub_net_card_driver): Return buf in recv.
 +      (grub_net_slaac_mac_list): New struct.
 +      (grub_network_level_protocol_id): Add ipv6.
 +      (grub_net_network_level_addr): Likewise.
 +      (grub_net_network_level_net_addr): Likewise.
 +      (grub_net_app_protocol): Add seek.
 +      (grub_net_socket): Removed.
 +      (grub_net_sockets): Likewise.
 +      (grub_net_socket_register): Likewise.
 +      (grub_net_socket_unregister): Likewise.
 +      (FOR_NET_SOCKETS): Likewise.
 +      (grub_net_add_addr): Add const.
 +      (GRUB_NET_BOOTP_*): New enum.
 +      (grub_net_addr_cmp): New proto.
 +      (GRUB_NET_MAX_STR_ADDR_LEN): Take IPV6 into account.
 +      (GRUB_NET_MAX_STR_HWADDR_LEN): New define.
 +      (grub_net_hwaddr_to_str): NEw proto.
 +      (FOR_NET_NETWORK_LEVEL_INTERFACES): New macro.
 +      (FOR_NET_NETWORK_LEVEL_INTERFACES_SAFE): Handle NULL.
 +      (grub_dns_init): New proto.
 +      (grub_dns_fini): Likewise.
 +      (grub_net_tcp_retransmit): Likewise.
 +      (grub_net_link_layer_add_address): Likewise.
 +      (grub_net_link_layer_resolve_check): Likewise.
 +      (grub_net_link_layer_resolve): Likewise.
 +      (grub_net_dns_lookup): Likewise.
 +      (grub_net_add_dns_server): Likewise.
 +      (grub_net_remove_dns_server): Likewise.
 +      (GRUB_NET_TRIES): New const.
 +      (GRUB_NET_INTERVAL): Likewise.
 +      * include/grub/net/arp.h: Mostly rewritten.
 +      * include/grub/net/ethernet.h (grub_net_ethertype_t): New enum.
 +      * include/grub/net/ip.h: Mostly rewritten.
 +      * include/grub/net/netbuff.h: Indent.
 +      * include/grub/net/tcp.h: New file.
 +      * include/grub/net/udp.h: Mostly rewritten.
 +      * include/grub/priority_queue.h: New file.
 +      * include/grub/types.h (PRIdGRUB_SSIZE): New define.
 +      (grub_swap_bytes64_compile_time): Likewise.
 +      (grub_cpu_to_be16_compile_time): Likewise.
 +      (grub_cpu_to_be32_compile_time): Likewise.
 +      (grub_cpu_to_be64_compile_time): Likewise.
 +      (grub_be_to_cpu64_compile_time): Likewise.
 +
 +2011-12-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/i386/pc/drivemap.c (int13slot): Replace
 +      UINT_TO_PTR with cast.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/import_gcry.py: Skip _gcry_rmd160_mixblock and serpent_test. We
 +      don't use them.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/import_gcry.py: Don't add include camellia.h to camellia.c. It's
 +      already there.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (generate_image): Clean multiboot header to avoid
 +      confusing ipxe.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/libgcrypt/cipher/md4.c (transform) [WORDS_BIGENDIAN]:
 +      Add missing const attribute.
 +      * grub-core/lib/libgcrypt/cipher/md5.c (transform) [WORDS_BIGENDIAN]:
 +      Likewise.
 +      * grub-core/lib/libgcrypt/cipher/rmd160.c (transform) [WORDS_BIGENDIAN]:
 +      Likewise.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/libgcrypt/cipher/serpent.c (serpent_key_prepare): Fix
 +      misaligned access.
 +      (serpent_setkey): Likewise.
 +      (serpent_encrypt_internal): Likewise.
 +      (serpent_decrypt_internal): Likewise.
 +      (serpent_encrypt): Don't put an alignment-increasing cast.
 +      (serpent_decrypt): Likewise.
 +      (serpent_test): Likewise.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/multiboot.c (grub_cmd_module): Fix target address.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Replace UINT_TO_PTR and PTR_TO_UINT with explicit grub_addr_t casts.
 +
 +      * include/grub/types.h (UINT_TO_PTR): Removed. All users switched to
 +      grub_addr_t casts.
 +      (PTR_TO_UINT64): Likewise.
 +      (PTR_TO_UINT32): Likewise.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (generate_image): Decrease the higher limit
 +      because of stack.
 +      * util/grub-setup.c (setup): Don't add redundancy past the higher load
 +      limit.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gfxmenu/gui_label.c (label_paint): Handle the case
 +      text_width > available width a bit more gracefully.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/bsdXX.c (grub_freebsd_load_elfmodule): Fix
 +      current address calculation.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/reed_solomon.c (decode_block): Allocate on heap and not
 +      stack.
 +      (encode_block): Likewise.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/i386/pc/startup_raw.S: Clear direction flag for
 +      certainety.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/i386/pc/startup_raw.S: Move realmode routines to
 +      non-RS part to avoid RS messing with GDT.
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART):
 +      Increase to suit in realmode routines.
 +
 +2011-12-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/i386/realmode.S: Increase alignment.
 +      * grub-core/boot/i386/pc/startup_raw.S: Likewise.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/reed_solomon.c (init_powx): Set gf_powx_inv[0] just to
 +      be deterministic.
 +      (syndroms): Compute 0 syndrom.
 +      (rs_recover): Use 0 syndrom.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/kernel.h (FOR_MODULES): Make it a bit faster.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/types.h (GRUB_PROPERLY_ALIGNED_ARRAY): Add missing
 +      brackets.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gfxmenu/widget-box.c (get_left_pad): Take corners into
 +      account.
 +      (get_top_pad): Likewise.
 +      (get_right_pad): Likewise.
 +      (get_bottom_pad): Likewise.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gfxmenu/gui_list.c (draw_menu): Don't use assignment in if.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/efi/api.h (grub_efi_memory_descriptor): Add packed
 +      attribute as the structure isn't guaranteed to be properly aligned.
 +      (grub_efi_pci_device_path): Likewise.
 +      (grub_efi_pccard_device_path): Likewise.
 +      (grub_efi_memory_mapped_device_path): Likewise. Additionaly explicitly
 +      specify the size of `memory_type'.
 +      (grub_efi_vendor_device_path): Likewise.
 +      (grub_efi_controller_device_path): Likewise.
 +      (grub_efi_acpi_device_path): Likewise.
 +      (grub_efi_expanded_acpi_device_path): Likewise.
 +      (grub_efi_atapi_device_path): Likewise.
 +      (grub_efi_scsi_device_path): Likewise.
 +      (grub_efi_fibre_channel_device_path): Likewise.
 +      (grub_efi_1394_device_path): Likewise.
 +      (grub_efi_usb_device_path): Likewise.
 +      (grub_efi_usb_class_device_path): Likewise.
 +      (grub_efi_i2o_device_path): Likewise.
 +      (grub_efi_mac_address_device_path): Likewise.
 +      (grub_efi_ipv4_device_path): Likewise.
 +      (grub_efi_ipv6_device_path): Likewise.
 +      (grub_efi_infiniband_device_path): Likewise.
 +      (grub_efi_uart_device_path): Likewise.
 +      (grub_efi_vendor_messaging_device_path): Likewise.
 +      (grub_efi_hard_drive_device_path): Likewise.
 +      (grub_efi_cdrom_device_path): Likewise.
 +      (grub_efi_vendor_media_device_path): Likewise.
 +      (grub_efi_file_path_device_path): Likewise.
 +      (grub_efi_protocol_device_path): Likewise.
 +      (grub_efi_piwg_device_path): Likewise.
 +      (grub_efi_bios_device_path): Likewise.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/charset.h (grub_utf16_to_utf8): Make src a const pointer.
 +      (grub_ucs4_to_utf8_alloc): Likewise.
 +      (grub_ucs4_to_utf8): Likewise.
 +      * grub-core/normal/charset.c (grub_ucs4_to_utf8): Likewise.
 +      (grub_ucs4_to_utf8_alloc): Likewise.
 +
 +2011-12-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      AFFS never uses unicode.
 +
 +      * include/grub/charset.h (GRUB_MAX_UTF8_PER_LATIN1): New const.
 +      (grub_latin1_to_utf8): New inline function.
 +      * grub-core/fs/affs.c (grub_affs_iterate_dir): Convert latin1 to UTF8.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/romfs.c (grub_romfs_mount): Fix pointer comparison
 +      overflow.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/squash4.c (grub_squash_inode): Fix field sizes.
 +      (grub_squash_dirent_header): Likewise.
 +      (read_chunk): Don't double swap.
 +      (grub_squash_iterate_dir): Fix swap sizes.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/jfs.c (grub_jfs_getent): Handle UTF16 endianness.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/hfs.c (grub_hfs_find_node): Handle unaligned keys.
 +      (grub_hfs_iterate_dir): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix video on platforms where unaligned access is forbidden.
 +      Make several optimisations while on it.
 +
 +      * grub-core/video/fb/fbblit.c (grub_video_fbblit_replace_directN):
 +      Optimise and use GRUB_VIDEO_FB_ADVANCE_POINTER.
 +      (grub_video_fbblit_replace_32bit_1bit): Likewise.
 +      (grub_video_fbblit_replace_24bit_1bit) [!GRUB_HAVE_UNALIGNED_ACCESS]:
 +      Disable.
 +      (grub_video_fbblit_replace_16bit_1bit):
 +      Optimise and use GRUB_VIDEO_FB_ADVANCE_POINTER.
 +      (grub_video_fbblit_replace_8bit_1bit): Likewise.
 +      (grub_video_fbblit_replace_BGRX8888_RGBX8888): Likewise.
 +      (grub_video_fbblit_replace_BGRX8888_RGB888): Likewise.
 +      (grub_video_fbblit_replace_BGR888_RGBX8888): Likewise.
 +      (grub_video_fbblit_replace_BGR888_RGBX8888): Likewise.
 +      (grub_video_fbblit_replace_BGR888_RGB888): Likewise.
 +      (grub_video_fbblit_replace_RGBX8888_RGB88): Likewise.
 +      (grub_video_fbblit_replace_RGB888_RGBX888): Likewise.
 +      (grub_video_fbblit_replace_RGB888_RGBX8888): Likewise.
 +      (grub_video_fbblit_replace_index_RGBX8888): Likewise.
 +      (grub_video_fbblit_replace_index_RGB888): Likewise.
 +      (grub_video_fbblit_blend_BGRA8888_RGBA8888): Likewise.
 +      (grub_video_fbblit_blend_BGR888_RGBA8888): Likewise.
 +      (grub_video_fbblit_blend_RGBA8888_RGBA8888): Likewise.
 +      (grub_video_fbblit_blend_RGB888_RGBA8888): Likewise.
 +      (grub_video_fbblit_blend_index_RGBA8888): Likewise.
 +      (grub_video_fbblit_blend_XXXA8888_1bit): Likewise.
 +      (grub_video_fbblit_blend_XXX888_1bit) [!GRUB_HAVE_UNALIGNED_ACCESS]:
 +      Disable.
 +      (grub_video_fbblit_blend_XXX565_1bit):
 +      Optimise and use GRUB_VIDEO_FB_ADVANCE_POINTER.
 +      * grub-core/video/fb/fbfill.c (grub_video_fbfill_direct32): Likewise.
 +      * grub-core/video/fb/fbutil.c (grub_video_fb_get_video_ptr): Return
 +      void *.
 +      * grub-core/video/fb/video_fb.c (common_blitter)
 +      [!GRUB_HAVE_UNALIGNED_ACCESS]: Skip disabled blitters.
 +      (grub_video_fb_create_render_target_from_pointer)
 +      [!GRUB_HAVE_UNALIGNED_ACCESS]: Check alignment.
 +      * include/grub/fbutil.h (grub_video_fb_get_video_ptr): Return void *.
 +      * include/grub/i386/types.h (GRUB_HAVE_UNALIGNED_ACCESS): New
 +      definition.
 +      * include/grub/x86_64/types.h (GRUB_HAVE_UNALIGNED_ACCESS): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Support
 +      HH22 and HM10 relocations.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/misc.c (grub_vsnprintf_real): Fix fmt2 parsing.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/videotest.c (grub_cmd_videotest): Check that
 +      allocation succeeded.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/iso9660.c (grub_iso9660_convert_string): Make first
 +      argument a u8 pointer. All users updated.
 +      Handle unaligned buffers.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/iso9660.c (grub_iso9660_iterate_dir): Force inlining of
 +      add_part to workaround compiler bug.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/kernel.h (FOR_MODULES): Preserve alignment invariants.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/multiboot_mbi2.c (grub_multiboot_add_elfsyms):
 +      Reserve alignment invariants.
 +      (grub_multiboot_load): Likewise.
 +      (retrieve_video_parameters): Likewise.
 +      (grub_multiboot_make_mbi): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/xnu.c (grub_xnu_devprop_remove_property): Fix
 +      incorrect pointer.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/pata.c (grub_pata_pio_read): Handle unaligned buffer.
 +      (grub_pata_pio_write): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Add noreturn attributes and remove unreachable code.
 +
 +      * grub-core/bus/cs5536.c (grub_cs5536_smbus_wait): Remove unreachable
 +      code.
 +      * grub-core/commands/halt.c (grub_cmd_halt): Remove unreachable
 +      code. Mark as noreturn.
 +      * grub-core/commands/minicmd.c (grub_mini_cmd_exit): Likewise.
 +      * grub-core/commands/reboot.c (grub_cmd_reboot): Likewise.
 +      * grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name): Remove
 +      unreachable code.
 +      * grub-core/kern/main.c (grub_main): Mark as noreturn.
 +      * grub-core/kern/rescue_reader.c (grub_rescue_run): Likewise.
 +      * grub-core/lib/posix_wrap/stdlib.h (abort): Likewise.
 +      * grub-core/normal/menu.c (run_menu): Remove unreachable code.
 +      * include/grub/kernel.h (grub_main): Mark as noreturn.
 +      * include/grub/reader.h (grub_rescue_run): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/i386/qemu/memory.h (grub_machine_mmap_init): Remove
 +      redundant declaration.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/net.h (grub_net_network_level_interfaces): Remove
 +      redundant declaration.
 +      (FOR_NET_NETWORK_LEVEL_INTERFACES): Move to appropriate place.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/hdparm.c (le16_to_char): Make src and dest uint16 *
 +      to ensure alignment.
 +      (grub_hdparm_print_identify): Make argument uint16 * to ensure
 +      alignment. Ensure tmp alignment.
 +      (grub_cmd_hdparm): Ensure buf alignment.
 +      * grub-core/disk/ata.c (grub_ata_strncpy): Make src and dest uint16 *
 +      to ensure alignment.
 +      (grub_ata_dumpinfo): Ensure text alignment.
 +      (grub_atapi_identify): Preserve alignment invariant.
 +      (grub_ata_identify): Likewise. Use grub_get_unaligned32 when necessary.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/emu/misc.h (xasprintf): Add missing format attribute.
 +      * include/grub/mips/kernel.h (grub_halt): Remove redundant declaration.
 +      * include/grub/mips/qemu_mips/kernel.h (grub_halt): Likewise.
 +      * include/grub/misc.h (grub_reboot)
 +      [GRUB_MACHINE_EMU || GRUB_MACHINE_QEMU_MIPS]: Export.
 +      (grub_halt) [__mips__]: Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/efi/memory.h (grub_machine_mmap_iterate):
 +      Remove redundant declaration.
 +      (grub_mmap_get_post64): Likewise.
 +      (grub_mmap_get_upper): Likewise.
 +      (grub_mmap_get_lower): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/dvh.c (grub_dvh_is_valid): Make argument
 +      uint32_t * to ensure alignment.
 +      (dvh_partition_map_iterate): Make `block' a union to ensure alignment.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/sunpc.c (grub_sun_is_valid): Make argument
 +      uint16_t * to ensure alignment.
 +      (sun_pc_partition_map_iterate): Make `block' a union to ensure
 +      alignment.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/sun.c (grub_sun_is_valid): Make argument uint16_t *
 +      to ensure alignment.
 +      (sun_partition_map_iterate): Make `block' a union to ensure alignment.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ntfs.c (u16at): Make into inline function.
 +      Handle unaligned pointers.
 +      (u32at): Likewise.
 +      (u64at): Likewise.
 +      (fixup): Use byte access instead of v16at.
 +      (find_attr): Fix imporper usage of v32at.
 +      (read_data): Likewise.
 +      (list_file): Handle byte-swapping and unaligned strings.
 +      (grub_ntfs_label): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/udf.c (grub_udf_partmap): Add packed attribute
 +      as it's not necessarily aligned.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mips/qemu_mips/init.c (grub_at_keyboard_init): Remove
 +      redundant declaration.
 +      (grub_serial_init): Likewise.
 +      (grub_terminfo_init): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (DVA_OFFSET_TO_PHYS_SECTOR): Make into inline
 +      function.
 +      (ZAP_HASH_IDX): Likewise.
 +      (ZAP_LEAF_HASH_SHIFT): Likewise.
 +      (ZAP_LEAF_HASH_NUMENTRIES): Likewise.
 +      (LEAF_HASH): Likewise.
 +      (ZAP_LEAF_NUMCHUNKS): Likewise.
 +      (ZAP_LEAF_CHUNK): Likewise. Changed pointer arithmetic to preserve
 +      alignment invariants. Return pointer. All users updated.
 +      (ZAP_LEAF_ENTRY): Make into inline function.
 +      (NBBY): Removed.
 +      (xor): LIkewise.
 +      (xor_out): Use grub_crypto_xor.
 +      (dnode_get_path): Use grub_get_unaligned.
 +      (nvlist_find_value): Likewise.
 +      (grub_zfs_nvlist_lookup_uint64): Likewise.
 +      (grub_zfs_nvlist_lookup_string): Likewise.
 +      (get_nvlist_size): Likewise.
 +      (grub_zfs_open): Likewise.
 +      (fill_fs_info): Likewise.
 +      (grub_zfs_dir): Likewise.
 +      * include/grub/zfs/zap_leaf.h (zap_leaf_phys): Adapt to preserve
 +      alignment invariants.
 +      * include/grub/zfs/zio.h (zio_eck_t): Mark as packed as it's not
 +      necessarily aligned.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/netbuff.c (grub_netbuff_alloc): Ensure proper alignment.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Change pointer
 +      arithmetic to conserve alignment invariants.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/efiemu/efiemu.h (grub_efiemu_get_memory_map): Remove
 +      redundant declaration.
 +      (grub_efiemu_mm_obtain_request): Likewise.
 +      (grub_efiemu_prepare): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/list.h: Explicitly cast return of grub_bad_type_cast
 +      to match types.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_btree_recoffset): Handle the
 +      case of aunaligned recptr.
 +      (grub_hfsplus_read_block): Declare extoverflow as key to ensure
 +      alignment.
 +      (grub_hfsplus_btree_search): Handle unaligned index.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/xfs.c (grub_xfs_iterate_dir): Use grub_get_unaligned16
 +      to get freetag and skip.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/nilfs2.c (grub_nilfs2_btree_node): Add zero-size keys
 +      array.
 +      (grub_nilfs2_btree_node_dkeys): Ensure return pointer alignment.
 +      (grub_nilfs2_btree_lookup): Ensure buffer alignment.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/romfs.c (grub_romfs_iterate_dir): Properly align
 +      name for checksum and fix allocation algorithm.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/types.h (grub_properly_aligned_t): New type.
 +      (GRUB_PROPERLY_ALIGNED_ARRAY): New macro.
 +      (grub_get_unaligned16): Add explicit casts.
 +      (grub_get_unaligned32): Likewise.
 +      (grub_get_unaligned64): Likewise.
 +      (grub_set_unaligned16): New function.
 +      (grub_set_unaligned32): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/datetime.c (grub_weekday_names): Make const.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/udf.c (read_string): Macroify GRUB_MAX_UTF8_PER_UTF16.
 +      * grub-core/fs/jfs.c (grub_jfs_diropen): Likewise.
 +      * grub-core/fs/fat.c (grub_fat_iterate_dir): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/at_keyboard.c (set_scancodes): Fix preprocessor
 +      conditionals.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/main.c (main): Add missing const qualifier.
 +      * grub-core/loader/efi/appleloader.c (devdata): Likewise.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Unify and improve RAID and crypto xor.
 +
 +      * grub-core/disk/raid.c (grub_raid_block_xor): Removed. All users
 +      changed to grub_crypto_xor
 +      * grub-core/lib/crypto.c (grub_crypto_xor): Moved from here ...
 +      * include/grub/crypto.h (grub_crypto_xor): ... here. Inlined.
 +      Use bigger types when possible.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/raid.c (scan_devices): Fix condition.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/drivers/ieee1275/ofnet.c (bootp_response_properties):
 +      Make name a const ptr.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/ieee1275.c (grub_ieee1275_finddevice): Make
 +      first argument a const pointer.
 +      * grub-core/kern/ieee1275/openfw.c (grub_children_iterate): Likewise.
 +      * include/grub/ieee1275/ieee1275.h (grub_ieee1275_finddevice): Update
 +      proto.
 +      (grub_children_iterate): Likewise.
 +      (grub_machine_mmap_iterate): Remove redundant declaration.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/acpi.c (grub_acpi_create_ebda) [!x86]: Disable.
 +      (grub_cmd_acpi) [!x86]: Disable EBDA.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Enable UTF8 in gnulib regexp.
 +
 +      * config.h.in (RE_ENABLE_I18N) [!GRUB_UTIL]: New define.
 +      * grub-core/lib/posix_wrap/ctype.h (islower): Use grub_islower.
 +      (isupper): Use grub_isupper.
 +      (isascii): New inline function.
 +      * grub-core/lib/posix_wrap/wchar.h: Replace dummy with real contents.
 +      * grub-core/lib/posix_wrap/wctype.h: Likewise.
 +      * grub-core/normal/charset.c (grub_utf8_process): New function.
 +      (grub_utf8_to_utf16): Use grub_utf8_process.
 +      (grub_encode_utf8_character): New function.
 +      (grub_ucs4_to_utf8): Use grub_encode_utf8_character.
 +      * include/grub/charset.h (grub_utf8_process): New declaration.
 +      (grub_encode_utf8_character): Likewise.
 +      * include/grub/misc.h (grub_islower): New inline function.
 +      (grub_isupper): Likewise.
 +      (grub_strchrsub): Moved down to fix the definitions.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/usb/ohci.c (grub_ohci_check_transfer): Add an unsigned
 +      specification.
 +
 +2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/loader.h (grub_loader_register_preboot_hook):
 +      Use struct preboot * and not void * for handle. All users updated.
 +      (grub_loader_unregister_preboot_hook): Likewise.
 +
 +2011-12-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/charset.h (GRUB_MAX_UTF8_PER_UTF16): New const.
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_catkey_internal): Change to
 +      UTF-16-BE. All users updated.
 +      (grub_hfsplus_cmp_catkey): Fix unicode handling.
 +      (grub_hfsplus_iterate_dir): Likewise.
 +      (grub_hfsplus_label): Likewise.
 +
 +2011-12-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/ahci.c (grub_ahci_pciinit): Fix compat condition.
 +
 +2011-11-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Add missing const qualifiers.
 +
 +      * grub-core/commands/i386/pc/sendkey.c (keysym): Add missing const.
 +      * grub-core/commands/lspci.c (grub_pci_classname): Likewise.
 +      * grub-core/commands/menuentry.c (hotkey_aliases): Likewise.
 +      * grub-core/disk/lvm.c (grub_lvm_getvalue): Likewise.
 +      (grub_lvm_check_flag): Likewise.
 +      * grub-core/efiemu/i386/coredetect.c
 +      (grub_efiemu_get_default_core_name): Likewise
 +      * grub-core/efiemu/main.c (grub_efiemu_autocore): Likewise.
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_catkey_internal): Likewise.
 +      * grub-core/fs/ntfs.c (fixup): Likewise.
 +      * grub-core/fs/xfs.c (grub_xfs_iterate_dir): Likewise.
 +      * grub-core/fs/zfs/zfs.c (decomp_entry): Likewise.
 +      (fzap_lookup): Likewise.
 +      (zap_lookup): Likewise.
 +      * grub-core/gnulib/regcomp.c (init_dfa): Likewise.
 +      * grub-core/lib/legacy_parse.c (check_option): Likewise.
 +      * grub-core/lib/posix_wrap/langinfo.h (nl_langinfo): Likewise.
 +      * grub-core/loader/i386/bsd.c (grub_bsd_add_meta): Likewise.
 +      (grub_freebsd_add_meta_module): Likewise.
 +      (grub_cmd_freebsd_module): Likewise.
 +      * grub-core/loader/i386/xnu.c (tbl_alias): Likewise.
 +      * grub-core/loader/xnu.c (grub_xnu_register_memory): Likewise.
 +      (grub_xnu_writetree_get_size): Likewise.
 +      (grub_xnu_writetree_toheap_real): Likewise.
 +      (grub_xnu_find_key): Likewise.
 +      (grub_xnu_create_key): Likewise.
 +      (grub_xnu_create_value): Likewise.
 +      (grub_xnu_register_memory): Likewise.
 +      (grub_xnu_check_os_bundle_required): Likewise.
 +      (grub_xnu_scan_dir_for_kexts): Likewise.
 +      (grub_xnu_load_kext_from_dir): Likewise.
 +      * grub-core/normal/color.c (color_list): Likewise.
 +      * grub-core/normal/completion.c (current_word): Likewise.
 +      * grub-core/normal/menu_entry.c (insert_string): Likewise.
 +      * grub-core/term/serial.c (grub_serial_find): Likewise.
 +      * grub-core/term/tparm.c (grub_terminfo_tparm): Likewise.
 +      * include/grub/efiemu/efiemu.h (grub_efiemu_get_default_core_name):
 +      Likewise.
 +      * include/grub/i386/bsd.h (grub_bsd_add_meta): Likewise.
 +      (grub_freebsd_add_meta_module): Likewise.
 +      * include/grub/lib/arg.h (grub_arg_option): Likewise.
 +      * include/grub/net.h (grub_net_card_driver): Likewise.
 +      (grub_net_card): Likewise.
 +      (grub_net_app_protocol): Likewise.
 +      * include/grub/parttool.h (grub_parttool_argdesc): Likewise.
 +      * include/grub/serial.h (grub_serial_find): Likewise.
 +      * include/grub/tparm.h (grub_terminfo_tparm): Likewise.
 +      * include/grub/xnu.h (grub_xnu_create_key): Likewise.
 +      (grub_xnu_create_value): Likewise.
 +      (grub_xnu_find_key): Likewise.
 +      (grub_xnu_scan_dir_for_kexts): Likewise.
 +      (grub_xnu_load_kext_from_dir): Likewise.
 +
 +      * include/grub/zfs/zio_checksum.h (zio_checksum_t): Moved from here ...
 +      * grub-core/fs/zfs/zfs.c (zio_checksum_t): ...here.
 +      * include/grub/zfs/zio_checksum.h (zio_checksum_info):
 +      Moved from here ...
 +      * grub-core/fs/zfs/zfs.c (zio_checksum_info): ... here. Added missing const.
 +
 +2011-11-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/getroot.c (find_root_device_from_libzfs): Use xasprintf.
 +
 +2011-11-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (recovery): Fix spelling.
 +      (read_device): Fix size calculation.
 +
 +2011-11-25  Robert Millan  <rmh@gnu.org>
 +
 +      * util/getroot.c [HAVE_LIMITS_H]: Include `<limits.h>'.
 +      (find_root_device_from_libzfs): Add zpool output parser to be used
 +      as fallback when libzfs isn't available.
 +
 +2011-11-25  Seth Goldberg <seth.goldberg@oracle.com>
 +
 +      * po/Makefile.in.in: Add missing escape-continuation.
 +
 +2011-11-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/cpio.c (grub_cpio_dir): Handle subdirs correctly.
 +
 +2011-11-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/dl.c (grub_dl_load_segments): Fix alignment handling.
 +
 +2011-11-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/dl.c (grub_dl_unload): Fix freeing segments.
 +
 +2011-11-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/x86_64/efi/callwrap.S: Fix the comment.
 +
 +2011-11-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/adler32.c: Add missing license specification.
 +      * grub-core/lib/crc64.c: Likewise.
 +      * grub-core/loader/i386/pc/plan9.c: Likewise.
 +      * grub-core/partmap/plan.c: Likewise.
 +
 +2011-11-13  Lubomir Kundrak  <lkundrak@redhat.com>
 +
 +      Add facility to debug GRUB with gdb under qemu.
 +
 +      * grub-core/gdb_grub.in: New file.
 +      * grub-core/gmodule.pl.in: Likewise.
 +      * grub-core/Makefile.core.def (gmodule.pl): New script.
 +      (gdb_grub): Likewise.
 +
 +2011-11-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mount.c (argp_parser): Accept relative pathes.
 +      * util/grub-fstest.c (argp_parser): Likewise.
 +
 +2011-11-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Plan9 support.
 +
 +      * Makefile.util.def (libgrubmods): Add
 +      grub-core/partmap/plan.c.
 +      * docs/grub.texi: Notice Plan9 support.
 +      * grub-core/Makefile.core.def (plan9): New module.
 +      (part_plan): Likewise.
 +      * grub-core/loader/i386/pc/plan9.c: New file.
 +      * grub-core/partmap/plan.c: Likewise.
 +      * include/grub/msdos_partition.h (GRUB_PC_PARTITION_TYPE_PLAN9): New
 +      define.
 +      (GRUB_PC_PARTITION_TYPE_LINUX_SWAP): Likewise.
 +      * include/grub/mm.h (grub_extend_alloc): New inline function.
 +
 +2011-11-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make Reed-Solomon faster by using power of generator representation of
 +      GF(256)*.
 +
 +      * grub-core/lib/reed_solomon.c (grub_uint16_t) [TEST]: Removed.
 +      (gf_double_t): Likewise.
 +      (gf_invert): Removed.
 +      (gf_powx): New array.
 +      (gf_powx_inv): Likewise.
 +      (scratch): Move higher.
 +      (gf_reduce): Removed.
 +      (gf_mul): Use powx.
 +      (gf_invert): Likewise.
 +      (init_inverts): Replaced with ...
 +      (init_powx): ...this. All users updated.
 +      (pol_evaluate): Replace multiplications with additions.
 +      (rs_encode): Likewise.
 +      (gauss_eliminate): Call gf_invert.
 +      (grub_reed_solomon_add_redundancy): Call init_powx.
 +      (grub_reed_solomon_recover): Call init_powx unconditionally.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/gpt.c (gpt_partition_map_embed): Fix spelling.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/gpt.c (gpt_partition_map_embed): Restore
 +      disk->partiton for safety.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev):
 +      Fix a memory leak.
 +      (grub_util_biosdisk_get_grub_dev): Add a useful debug info.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (find_system_device): Fix a memory leak.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/lvm.h (grub_lvm_pv): Correct start type.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix spaces handling in proc/self/mountinfo.
 +
 +      * util/getroot.c (unescape): New function.
 +      (grub_find_root_device_from_mountinfo): Use unescape.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support ZFS embedding.
 +
 +      * grub-core/fs/zfs/zfs.c (grub_zfs_embed): New function.
 +      (grub_zfs_fs): Register grub_zfs_embed.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix MIPS compilation.
 +
 +      * grub-core/boot/mips/startup_raw.S: Use GRUB_DECOMPRESSOR_*
 +      * include/grub/offsets.h: Rename decompressor fields from
 +      GRUB_KERNEL_* to GRUB_DECOMPRESSOR_*.
 +      * util/grub-mkimage.c (image_targets): Use new names.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Defer multiboot device parsing until we're in compressed part.
 +
 +      * grub-core/boot/i386/pc/lnxboot.S: Remove setting dos_part and
 +      bsd_part. setdevice has fallen into disuse.
 +      * grub-core/boot/i386/pc/startup_raw.S (dos_part): Removed.
 +      (bsd_part): Likewise.
 +      (boot_dev): New variable.
 +      (multiboot_trampoline): Don't parse multiboot device.
 +      Pass multiboot device in %edx.
 +      * grub-core/disk/i386/pc/biosdisk.c (GRUB_MOD_INIT): Parse
 +      grub_boot_device.
 +      * grub-core/kern/i386/pc/init.c (grub_machine_get_bootlocation):
 +      Likewise.
 +      * grub-core/kern/i386/pc/startup.S: Save edx.
 +      (grub_boot_drive): Removed.
 +      (grub_install_dos_part): Likewise.
 +      (grub_install_bsd_part): Likewise.
 +      (grub_boot_device): New variable.
 +      * include/grub/i386/pc/kernel.h (grub_install_dos_part): Removed.
 +      (grub_install_bsd_part): Likewise.
 +      (grub_boot_drive): Likewise.
 +      (grub_boot_device): New variable.
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_PC_INSTALL_DOS_PART):
 +      Removed.
 +      (GRUB_KERNEL_I386_PC_INSTALL_BSD_PART): Likewise.
 +      (GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY): Moved lower.
 +      (GRUB_KERNEL_MACHINE_INSTALL_BSD_PART): Removed.
 +      (GRUB_KERNEL_MACHINE_INSTALL_DOS_PART): Likewise.
 +      * util/grub-install.in: Remove redundant condition.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix bug introduced by previous commit.
 +
 +      * grub-core/boot/i386/pc/startup_raw.S: Compute RS start correctly.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use decompressors framework on i386-pc. It increases core size
 +      by 46 bytes but improves compatibility and maintainability.
 +
 +      * grub-core/Makefile.core.def (lzma_decompress): New image.
 +      (kernel): Add i386_pc_ldflags.
 +      * grub-core/kern/i386/pc/startup.S: Move intial part to ..
 +      * grub-core/boot/i386/pc/startup_raw.S: ... here. Pass pointers
 +      to real_to_prot, prot_to_real and device info.
 +      * include/grub/offsets.h: Renamed decompressor offsets.
 +      * util/grub-mkimage.c (grub_compression_t): New cmpression lzma.
 +      (image_target_desc): Remove raw_size and rename decompressor fields.
 +      (compress_kernel): Handle lzma.
 +      (generate_image): Handle decompressors on i386-pc.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Add -fno-asynchronous-unwind-tables.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Move assembly code to C by using intwrap. It increases core size
 +      by 88 bytes but improves compatibility and maintainability.
 +
 +      * grub-core/kern/i386/pc/startup.S (grub_console_putchar): Moved to ...
 +      * grub-core/term/i386/pc/console.c (grub_console_putchar_real):
 +      ... here. Translated to C.
 +      * grub-core/kern/i386/pc/startup.S (grub_console_getkey): Moved to ...
 +      * grub-core/term/i386/pc/console.c (grub_console_getkey):
 +      ... here. Translated to C.
 +      * grub-core/kern/i386/pc/startup.S (grub_console_getxy): Moved to ...
 +      * grub-core/term/i386/pc/console.c (grub_console_getxy):
 +      ... here. Translated to C.
 +      * grub-core/kern/i386/pc/startup.S (grub_console_gotoxy): Moved to ...
 +      * grub-core/term/i386/pc/console.c (grub_console_gotoxy):
 +      ... here. Translated to C.
 +      * grub-core/kern/i386/pc/startup.S (grub_console_cls): Moved to ...
 +      * grub-core/term/i386/pc/console.c (grub_console_cls):
 +      ... here. Translated to C.
 +      * grub-core/kern/i386/pc/startup.S (grub_console_setcursor): Moved to ..
 +      * grub-core/term/i386/pc/console.c (grub_console_setcursor):
 +      ... here. Translated to C.
 +      * grub-core/kern/i386/pc/startup.S (grub_get_rtc): Moved to ..
 +      * grub-core/kern/i386/pc/init.c (grub_get_rtc): ... here.
 +      Translated to C.
 +      * grub-core/term/i386/pc/console.c (int10_9): New function.
 +      (grub_console_putchar): Likewise.
 +      * include/grub/i386/pc/console.h: Removed the not anymore shared
 +      functions.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Move grub_chainloader_real_boot out of the kernel.
 +
 +      * grub-core/Makefile.am: Remove machine/loader.h.
 +      * grub-core/kern/i386/pc/startup.S (grub_chainloader_real_boot):
 +      Removed.
 +      * grub-core/lib/i386/relocator.c (grub_relocator16_esi): New extern
 +      variable.
 +      (grub_relocator16_keep_a20_enabled): Likewise.
 +      (grub_relocator16_boot): Fill new variables.
 +      * grub-core/lib/i386/relocator16.S: Add gate a20 handling.
 +      * grub-core/loader/i386/pc/chainloader.c (grub_chainloader_boot): Use
 +      relocator.
 +      (grub_chainloader_unload): Likewise.
 +      (grub_chainloader_cmd): Likewise.
 +      * include/grub/i386/pc/loader.h: Removed.
 +      * include/grub/i386/relocator.h (grub_relocator16_state): Add a20
 +      and esi. All initialisers updated.
 +
 +2011-11-12  Vladimir Serbinenko  <phcoder@gmail.com>
 +2011-11-12  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.util.def (grub-mount): New util.
 +      * .bzrignore: Add grub-mount.
 +      * configure.ac: Check for fuse and enable grub-mount if available.
 +      * docs/man/grub-mount.h2m: New file.
 +      * util/grub-mount.c: Likewise.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/efi/fixvideo.c: Gettextize.
 +      * grub-core/commands/hashsum.c: Likewise.
 +      * grub-core/commands/i386/cmostest.c: Likewise.
 +      * grub-core/commands/i386/pc/drivemap.c: Likewise.
 +      * grub-core/commands/i386/pc/lsapm.c: Likewise.
 +      * grub-core/commands/i386/pc/sendkey.c: Likewise.
 +      * grub-core/commands/lsmmap.c: Likewise.
 +      * grub-core/commands/menuentry.c: Likewise.
 +      * grub-core/commands/mips/loongson/lsspd.c: Likewise.
 +      * grub-core/commands/setpci.c: Likewise.
 +      * grub-core/loader/i386/bsd.c: Likewise.
 +      * grub-core/loader/i386/linux.c: Likewise.
 +      * util/getroot.c: Likewise.
 +      * util/grub-editenv.c: Likewise.
 +      * util/grub-fstest.c: Likewise.
 +      * util/grub-mkfont.c: Likewise.
 +      * util/grub-mkimage.c: Likewise.
 +      * util/grub-mkpasswd-pbkdf2.c: Likewise.
 +      * util/grub-pe2elf.c: Likewise.
 +      * util/grub-probe.c: Likewise.
 +      * util/grub-setup.c: Likewise.
 +      * util/ieee1275/ofpath.c: Likewise.
 +      * util/misc.c: Likewise.
 +      * util/raid.c: Likewise.
 +
 +2011-11-11  Robert Millan  <rmh@gnu.org>
 +
 +      * util/getroot.c (grub_util_get_geom_abstraction): Remove
 +      __attribute__((unused)) from `os_dev', which *is* being used.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/dl.h (GRUB_ARCH_DL_TRAMP_SIZE) [__ia64__]: Add back
 +      forgotten define.
 +      (GRUB_ARCH_DL_GOT_ALIGN) [__ia64__]: Redefine in terms of
 +      GRUB_IA64_DL_GOT_ALIGN.
 +      (GRUB_ARCH_DL_TRAMP_ALIGN) [__ia64__]: Redefine in terms of
 +      GRUB_IA64_DL_TRAMP_ALIGN.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Replace grub_fatal with normal errors in i386 linux loader.
 +
 +      * grub-core/loader/i386/linux.c (find_efi_mmap_size): Return 0 on error.
 +      (allocate_pages): Check find_efi_mmap_size return value.
 +      (grub_e820_add_region): Return error.
 +      (grub_linux_boot): Check mmap return value.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/acpihalt.c: Gettextized.
 +      * grub-core/commands/cacheinfo.c: Likewise.
 +      * grub-core/commands/cmp.c: Likewise.
 +      * grub-core/commands/efi/loadbios.c: Likewise.
 +      * grub-core/commands/gptsync.c: Likewise.
 +      * grub-core/commands/ieee1275/suspend.c: Likewise.
 +      * grub-core/commands/legacycfg.c: Likewise.
 +      * grub-core/commands/memrw.c: Likewise.
 +      * grub-core/commands/minicmd.c: Likewise.
 +      * grub-core/commands/parttool.c: Likewise.
 +      * grub-core/commands/time.c: Likewise.
 +      * grub-core/commands/videoinfo.c: Likewise.
 +      * grub-core/disk/geli.c: Likewise.
 +      * grub-core/disk/i386/pc/biosdisk.c: Likewise.
 +      * grub-core/disk/luks.c: Likewise.
 +      * grub-core/disk/lvm.c: Likewise.
 +      * grub-core/font/font_cmd.c: Likewise.
 +      * grub-core/fs/zfs/zfscrypt.c: Likewise.
 +      * grub-core/fs/zfs/zfsinfo.c: Likewise.
 +      * grub-core/gfxmenu/view.c: Likewise.
 +      * grub-core/kern/emu/hostdisk.c: Likewise.
 +      * grub-core/kern/emu/main.c: Likewise.
 +      * grub-core/kern/emu/misc.c: Likewise.
 +      * grub-core/kern/emu/mm.c: Likewise.
 +      * grub-core/kern/mips/arc/init.c: Likewise.
 +      * grub-core/kern/mips/loongson/init.c: Likewise.
 +      * grub-core/kern/partition.c: Likewise.
 +      * grub-core/lib/i386/halt.c: Likewise.
 +      * grub-core/lib/mips/arc/reboot.c: Likewise.
 +      * grub-core/lib/mips/loongson/reboot.c: Likewise.
 +      * grub-core/loader/i386/pc/chainloader.c: Likewise.
 +      * grub-core/loader/i386/xnu.c: Likewise.
 +      * grub-core/loader/multiboot.c: Likewise.
 +      * grub-core/net/bootp.c: Likewise.
 +      * grub-core/net/net.c: Likewise.
 +      * grub-core/normal/term.c: Likewise.
 +      * grub-core/partmap/bsdlabel.c: Likewise.
 +      * grub-core/parttool/msdospart.c: Likewise.
 +      * grub-core/term/gfxterm.c: Likewise.
 +      * grub-core/term/terminfo.c: Likewise.
 +      * grub-core/video/i386/pc/vbe.c: Likewise.
 +      * util/grub-menulst2cfg.c: Likewise.
 +      * util/grub-mkdevicemap.c: Likewise.
 +      * util/grub-mklayout.c: Likewise.
 +      * util/grub-mkrelpath.c: Likewise.
 +      * util/grub-script-check.c: Likewise.
 +      * util/ieee1275/grub-ofpathname.c: Likewise.
 +      * util/resolve.c: Likewise.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support %1$d syntax.
 +
 +      * tests/printf_unit_test.c: New file.
 +      * Makefile.util.def (printf_test): New test.
 +      * grub-core/kern/misc.c (grub_vsnprintf_real): Support %1$d syntax.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/hook/datehook.c (grub_read_hook_datetime): Small stylistic
 +      fix.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/efiemu/mm.c (grub_efiemu_mmap_fill): Change printf into
 +      dprintf.
 +      * grub-core/font/font.c (grub_font_load): Likewise.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-macho2img.c: Add comment concerning gettext.
 +      * grub-core/lib/legacy_parse.c: Likewise.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/misc.c (grub_vprintf): Add missing va_end.
 +      (grub_xvasprintf): Likewise.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Add const keyword to grub_env_get and gettextize week days.
 +
 +      * grub-core/hook/datehook.c (grub_datetime_names): Make const.
 +      (grub_read_hook_datetime): Return const char *.
 +      * grub-core/kern/env.c (grub_env_get): Return const char *. All users
 +      updated.
 +      * grub-core/normal/datetime.c (grub_weekday_names): Make const.
 +      Mark for gettext.
 +      (grub_get_weekday_name): Return const char *. Call gettext.
 +      * grub-core/script/argv.c (grub_script_argv_append): Receive const
 +      char * and len as the argument. All users updated.
 +      (grub_script_argv_split_append): Receive const char *.
 +      * include/grub/datetime.h (grub_get_weekday_name): Update proto.
 +      * include/grub/env.h (grub_env_get): Likewise.
 +      (grub_env_read_hook_t): Return const char *.
 +      * include/grub/script_sh.h (grub_script_argv_append): Update proto.
 +      (grub_script_argv_split_append): Likewise.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/main.c (grub_normal_execute): Remove leftover call.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/misc.c (grub_strstr): Moved from here ...
 +      * include/grub/misc.h (grub_strstr): ... here. Make static and inline.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/ieee1275/ieee1275.h (grub_ieee1275_set_property):
 +      Fix prototype.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix mips compilation.
 +
 +      * grub-core/lib/xzembed/xz_dec_stream.c (xz_dec): Restrict hash_id to
 +      normal decoder.
 +      (hashes): Use in embed decoder as well (for sizes).
 +      (dec_stream_header): Fix embed decompressor logic.
 +      (dec_stream_footer): Likewise.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/x86_64/dl.c (grub_arch_dl_relocate_symbols): Issue
 +      an error and not a fatal on unrecognised relocation types.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/openfw.c (grub_ieee1275_parse_args):
 +      Issue error rather than printf on unknown arguments.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/ieee1275.c (grub_ieee1275_set_property):
 +      Make buf a const.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfscrypt.c (GRUB_MOD_INIT), (GRUB_MOD_FINI):
 +      Fix module name.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ntfs.c (grub_ntfs_read_symlink): Stylistic fix. Remove
 +      leftover debug printf.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_embed): Spelling fix.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/efiemu/main.c (grub_efiemu_register_configuration_table):
 +      A stylistic fix.
 +
 +2011-11-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/probe.c (grub_cmd_probe): Fix error message.
 +
 +2011-11-10  Shea Levy  <slevy@tieronedesign.com>
 +
 +      Allow all modules to perform serial IO
 +
 +      * grub-core/term-serial.c (grub_serial_find): Remove static qualifier
 +      * include/grub/serial.h (grub_serial_port_configure): New inline
 +      function.
 +      (grub_serial_port_fetch): Likewise.
 +      (grub_serial_port_put): Likewise.
 +      (grub_serial_port_fini): Likewise.
 +      (grub_serial_find): New proto.
 +
 +2011-11-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Put symlink at the end of the node and fix a potential
 +      memory corruption.
 +
 +      * grub-core/fs/iso9660.c (grub_fshelp_node): New field have_symlink.
 +      Make symlink into an array.
 +      (set_rockridge): Set have_symlink and alloc_dirents.
 +      (grub_iso9660_read_symlink): Use new layout.
 +      (grub_iso9660_iterate_dir): Fix memory corruption.
 +      Use new layout.
 +      (grub_iso9660_dir): Set have_symlink.
 +      (grub_iso9660_open): Likewise.
 +
 +2011-11-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove local keyword.
 +
 +      * util/grub-mkconfig_lib.in (version_test_numeric): Remove local.
 +      (version_test_gt): Likewise.
 +      (version_find_latest): Likewise.
 +      (gettext_printf): Likewise.
 +      * util/grub.d/10_windows.in (get_os_name_from_boot_ini): Likewise.
 +
 +2011-11-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (zfs_mount): Fix spurious warning.
 +
 +2011-11-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix ZFS memory and resource leaks.
 +
 +      * grub-core/fs/zfs/zfs.c (fill_vdev_info_real): New paramter inserted.
 +      All users updated.
 +      Free type on exit.
 +      (fill_vdev_info): New parameter inserted. All users updated.
 +      (check_pool_label): Likewise.
 +      (scan_disk): Likewise.
 +      (scan_devices): Close non-inserted disks.
 +      (fzap_iterate): Free l.
 +      (unmount_device): Free children descripto memory.
 +
 +2011-11-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/iso9660.c (grub_iso9660_iterate_dir): Fix grub_strncat
 +      argument (access out of bounds).
 +
 +2011-11-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_read_logical): Fix RAID10 logic for
 +      >= 6 drives.
 +
 +2011-11-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/i386/netbsd_bootinfo.h (grub_netbsd_btinfo_bootwedge):
 +      Fix declaration.
 +
 +2011-11-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix several memory leaks.
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_dir): Fix memory leak.
 +      * grub-core/fs/cpio.c (grub_cpio_find_file): Likewise.
 +      (grub_cpio_dir): Likewise.
 +      * grub-core/fs/fat.c (grub_fat_label): Likewise.
 +      * grub-core/fs/jfs.c (grub_jfs_label): Likewise.
 +      * grub-core/fs/romfs.c (grub_romfs_close): Likewise.
 +      (grub_romfs_label): Likewise.
 +      * grub-core/fs/squash4.c (squash_mount): Use zalloc for safety.
 +      (squash_unmount): New function.
 +      (grub_squash_dir): Fix memory leak.
 +      (grub_squash_open): Likewise.
 +      (grub_squash_read): Likewise.
 +      (grub_squash_mtime): Likewise.
 +      * grub-core/fs/xfs.c (grub_xfs_open): Likewise.
 +      * grub-core/fs/zfs/zfs.c (check_pool_label): Likewise.
 +      * util/grub-fstest.c (fstest): Likewise.
 +
 +2011-11-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/misc.h (grub_strncat): Fix the order of conditionals to
 +      avoid accessing beyond the array.
 +
 +2011-11-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Add missing -mXX to TARGET_CPPFLAGS.
 +
 +2011-11-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Several AFFS fixes.
 +
 +      * grub-core/fs/affs.c (grub_affs_bblock): Replace flags with version.
 +      (GRUB_AFFS_FLAG_FFS): Removed.
 +      (GRUB_AFFS_SYMLINK_SIZE): Likewise.
 +      (GRUB_AFFS_FILETYPE_DIR): Make positive and unsigned.
 +      (GRUB_AFFS_FILETYPE_DIR), (GRUB_AFFS_FILETYPE_REG): Fix a mix-up.
 +      (grub_fshelp_node): Make block 32-bit.
 +      Add block_cache and last_block_cache.
 +      (grub_affs_read_block): Fill and use block cache.
 +      (grub_affs_read_file): Removed.
 +      (grub_affs_mount): Zero-fill node. Fix version check. Don't reread
 +      boot block.
 +      (grub_affs_read_symlink): Fix symlink size. Add a \0 at the end for
 +      safety.
 +      (grub_affs_iterate_dir): Use more appropriate types. Zero-fill allocated
 +      space.
 +      (grub_affs_close): Free block cache.
 +      (grub_affs_read): Use grub_fshelp_read_file directly.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (read_dva): Issue an error if read failed
 +      with no error set.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/LzmaEnc.c (LzmaEnc_CodeOneBlock): Remove set but not
 +      used variable.
 +      * grub-core/kern/ia64/dl_helper.c (grub_ia64_dl_get_tramp_got_size):
 +      Likewise.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix potential problem with calling zfs_to_cpu and cpu_to_be in a row.
 +
 +      * grub-core/fs/zfs/zfscrypt.c (grub_zfs_decrypt_real): Use explicit
 +      byteswap when needed.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix FreeBSD compilation.
 +
 +      * grub-core/disk/geli.c (GRUB_MD_SHA256) [GRUB_UTIL]: Redefine in a way
 +      to avoid circular dependency.
 +      (GRUB_MD_SHA512) [GRUB_UTIL]: Likewise.
 +      * util/getroot.c (grub_util_follow_gpart_up): Move from here...
 +      * grub-core/kern/emu/hostdisk.c (+grub_util_follow_gpart_up): ... here.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix ZFS crypto error types.
 +
 +      * grub-core/fs/zfs/zfscrypt.c (grub_ccm_decrypt): Fix return type.
 +      (grub_gcm_decrypt): Likewise.
 +      (grub_zfs_load_key_real): Fix error code type. Handle possible error
 +      from PBKDF2.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Illumos support.
 +
 +      * Makefile.util.def (10_illumos): New script.
 +      * configure.ac: Set COND_HOST_ILLUMOS.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors) [__sun__]:
 +      Support Illumos calls.
 +      (find_partition_start) [__sun__]: Likewise.
 +      (convert_system_partition_to_system_disk) [__sun__]: Likewise.
 +      (device_is_wholedisk) [__sun__]: Handle Illumos naming scheme.
 +      (grub_util_biosdisk_get_grub_dev) [__sun__]: Handle Illumos.
 +      * util/getroot.c (find_root_device_from_libzfs) [__sun__]: Return raw
 +      device.
 +      * util/grub-probe.c (probe) [__sun__]: Do character check.
 +      * util/grub.d/10_illumos.in: New file.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support escaped commas in hostdisk.
 +
 +      * grub-core/kern/emu/hostdisk.c (unescape_cmp): New function.
 +      (find_grub_drive): Use unescape_cmp.
 +      (make_device_name): Escape commas.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_kfreebsd.in: Use ${grub_mkrelpath} not grub-mkrelpath.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (zap_iterate): Remove set but not used
 +      variable.
 +
 +2011-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support trampoline jumps on powerpc.
 +
 +      * grub-core/kern/dl.c (grub_dl_load_segments) [__powerpc__]: Follow
 +      __ia64__ path.
 +      (grub_dl_load_segments): Set mod->sz.
 +      (grub_dl_flush_cache): Flush whole space occupied by module, not just
 +      segments.
 +      * grub-core/kern/ia64/dl.c (nopm): Make const while on it.
 +      (jump): Likewise.
 +      * grub-core/kern/powerpc/dl.c (grub_arch_dl_get_tramp_got_size): New
 +      function.
 +      (trampoline): New struct.
 +      (trampoline_template): New const.
 +      (grub_arch_dl_relocate_symbols): Create trampolines on overflow.
 +      * include/grub/dl.h (grub_dl): Add sz element.
 +      [__powerpc__]: Follow __ia64__.
 +      (GRUB_ARCH_DL_TRAMP_ALIGN): Define on ppc.
 +      (GRUB_ARCH_DL_GOT_ALIGN): Likewise.
 +      (GRUB_ARCH_DL_TRAMP_SIZE): Likewise.
 +      (grub_arch_dl_get_tramp_got_size) [__powerpc__]: New proto.
 +
 +2011-11-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      ZFS crypto support.
 +
 +      * Makefile.util.def (libgrubmods): Add grub-core/fs/zfs/zfscrypt.c.
 +      * grub-core/Makefile.core.def (zfscrypt): New module.
 +      * grub-core/fs/zfs/zfs.c (subvolume): New structure.
 +      (grub_zfs_data): Replace mdn with subvol. Put case_insensitivity inside
 +      it. All users updated.
 +      (grub_zfs_decrypt): New var.
 +      (grub_zfs_load_key): Likewise.
 +      (zio_checksum_functions): Add SHA256+MAC.
 +      (zio_checksum_verify): Handle incomplete comparison due to MAC.
 +      (zio_read): Handle encrypted blocks.
 +      (zap_verify): Remove incorrect check.
 +      (fzap_iterate): Handle non-standard fzap.
 +      (zap_iterate): Likewise.
 +      (zap_iterate_u64): New function.
 +      (dnode_get_fullpath): Load keys.
 +      * grub-core/fs/zfs/zfscrypt.c: New file.
 +      * grub-core/lib/crypto.c (grub_crypto_cipher_close): Removed.
 +      (grub_crypto_ecb_encrypt): Make input const.
 +      * include/grub/crypto.h (grub_crypto_cipher_close): Inline.
 +      (grub_crypto_ecb_encrypt): Make input const.
 +      (GRUB_CIPHER_AES): New macro.
 +      * include/grub/zfs/dmu.h (dmu_object_type): Add DMU_OT_DSL_KEYCHAIN.
 +      * include/grub/zfs/dsl_dir.h (dsl_dir_phys): Add keychain.
 +      * include/grub/zfs/spa.h (grub_zfs_endian): Moved from here ...
 +      * include/grub/zfs/zfs.h (grub_zfs_endian): ... here. Added GURB_ZFS_
 +      prefix. All users updated.
 +      (grub_zfs_add_key): New proto.
 +      (grub_zfs_decrypt): Likewise.
 +      (grub_zfs_load_key): Likewise.
 +      * include/grub/zfs/zio.h (zio_checksum): Add SHA256+MAC.
 +      * util/grub-fstest.c (options): Add -K option.
 +      (argp_parser): Likewise.
 +
 +2011-11-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support zle compression on ZFS.
 +
 +      * grub-core/fs/zfs/zfs.c (zle_decompress): New function.
 +      (decomp_table): Add zle.
 +      * include/grub/zfs/zio.h (zio_compress): Add zle.
 +
 +2011-11-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support BtrFS embedding.
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_embed) [GRUB_UTIL]: New function.
 +      (grub_btrfs_fs) [GRUB_UTIL]: Set embed.
 +      * include/grub/fs.h (grub_fs) [GRUB_UTIL]: New field embed.
 +      * util/grub-setup.c (setup): Use fs embedding if available.
 +      Add additional sanity check.
 +
 +2011-11-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Fix condition for config_opt.
 +
 +2011-11-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support third redundancy strip on raidz3.
 +
 +      * grub-core/fs/zfs/zfs.c (recovery): Add Gauss for general case.
 +      Return error on singularity. All users updated.
 +      (read_device): Don't stop on 3rd failure on raidz3.
 +
 +2011-11-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support case-insensitive ZFS subvolumes.
 +
 +      * grub-core/fs/zfs/zfs.c (mzap_lookup): New parameter case_insensitive.
 +      All users updated.
 +      (zap_hash): Likewise.
 +      (name_cmp): New function.
 +      (zap_leaf_array_equal): New parameter case_insensitive.
 +      All users updated.
 +      (zap_leaf_lookup): Likewise.
 +      (fzap_lookup): Likewise.
 +      (zap_lookup): Likewise.
 +      (dnode_get_path): New parameter case_insensitive. Retrieve case
 +      sensitiviness of a volume. All users updated.
 +      (dnode_get_fullpath): New parameter case_insensitive.
 +      All users updated.
 +      (grub_zfs_dir): Set info.case_insensitiveness.
 +
 +2011-11-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support second redundancy strip on raidz(2,3).
 +
 +      * grub-core/fs/zfs/zfs.c (powx): New array.
 +      (powx_inv): Likewise.
 +      (poly): New const.
 +      (xor_out): New function.
 +      (gf_mul): Likewise.
 +      (recovery): Likewise.
 +      (read_device): Use second redundancy strip.
 +
 +2011-11-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use a power of generator representation of GF(256) multiplication group
 +      to save space time and complexity.
 +
 +      * grub-core/disk/raid6_recover.c (raid6_table1): Removed.
 +      (raid6_table2): Likewise.
 +      (powx): New array.
 +      (powx_inv): Likewise.
 +      (poly): New const.
 +      (grub_raid_block_mul): Replace with ...
 +      (grub_raid_block_mulx): ...this.
 +      (grub_raid6_init_table): Rewritten.
 +      (grub_raid6_recover): Use power of generator representation.
 +
 +2011-11-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/raid6_recover.c (grub_raid6_recover): Get start_sector
 +      for the right device.
 +
 +2011-11-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/kernel.h (grub_module_header): Make type into uint32 as
 +      expected by grub-mkimage and it's more clear since there is no implicit
 +      padding.
 +
 +2011-11-04  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/raid.c (scan_devices): Don't derference NULL on whole
 +      disk.
 +      * grub-core/disk/lvm.c (do_lvm_scan): Likewise.
 +
 +2011-11-03  Philipp Matthias Hahn <pmhahn@debian.org>
 +
 +      * util/grub-mkrescue.in: Fix handling xorriso option.
 +
 +2011-11-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gettext/gettext.c (grub_gettext_init_ext): Exit if local is
 +      NULL.
 +
 +2011-11-03  crocket <crockabiscuit@gmail.com>
 +
 +      * util/grub.d/10_linux.in: Add Slackware initrd naming.
 +
 +2011-11-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      XZ CRC64 and SHA256 support.
 +
 +      * Makefile.util.def (libgrubmods): Add crc64.c.
 +      * grub-core/Makefile.core.def (crc64): New module.
 +      * grub-core/lib/crc64.c: New file.
 +      * grub-core/lib/xzembed/xz_dec_stream.c (xz_dec_hash)
 +      [!GRUB_EMBED_DECOMPRESSOR]: Rename crc32_context to hash_context.
 +      Fix the type.
 +      (MAX_HASH_SIZE): New define.
 +      (xz_dec) [!GRUB_EMBED_DECOMPRESSOR]: Add generic hash fields.
 +      (dec_block) [!GRUB_EMBED_DECOMPRESSOR]: Handle non-crc32 hashes.
 +      (index_update) [!GRUB_EMBED_DECOMPRESSOR]: Likewise.
 +      (dec_index) [!GRUB_EMBED_DECOMPRESSOR]: Likewise.
 +      (crc32_validate) [!GRUB_EMBED_DECOMPRESSOR]: Rename to ...
 +      (hash_validate) [!GRUB_EMBED_DECOMPRESSOR]: ... this.
 +      Handle non-crc32 hashes.
 +      (hashes) [!GRUB_EMBED_DECOMPRESSOR]: New variable.
 +      (dec_stream_header): Handle non-crc32 hashes.
 +      (dec_stream_footer): Likewise.
 +      (dec_block_header): Likewise.
 +      (dec_main): Likewise.
 +      (xz_dec_init): Likewise.
 +      (xz_dec_reset): Likewise.
 +      (xz_dec_end): Likewise.
 +      * util/import_gcry.py: Add CRC64 line.
 +
 +2011-11-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ufs.c (grub_ufs_mtime) [MODE_UFS2]: Check mtime field
 +      as well.
 +
 +2011-11-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make reiserfs label retrieval similar to other *_label functions.
 +
 +      * grub-core/fs/reiserfs.c (grub_reiserfs_superblock): New field label.
 +      (REISERFS_MAX_LABEL_LENGTH): Removed.
 +      (REISERFS_LABEL_OFFSET): Likewise.
 +      (grub_reiserfs_label): Rewritten.
 +
 +2011-11-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/nilfs2.c (grub_nilfs2_mtime): Use correct superblock
 +      field.
 +
 +2011-11-03  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (read_device): Support raidz3.
 +
 +2011-11-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (read_device): Add ability to sustain a single
 +      drive failure on both raidz and raidz2.
 +
 +2011-11-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix RAIDZ(2) for >= 5 devices.
 +
 +      * grub-core/fs/zfs/zfs.c (read_device): Fix length formula. Remove
 +      asize argument. All users updated.
 +
 +2011-11-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix RAIDZ(2).
 +
 +      * grub-core/fs/zfs/zfs.c (grub_zfs_device_desc): New member ashift.
 +      (fill_vdev_info_real): Set ashift.
 +      (read_device): Rewrite RAIDZ part based on reverse engineering.
 +
 +2011-10-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_extent_read): Add sanity check and
 +      don't report potentially unavialiable fields in debug output.
 +      (find_path): Fix double-free and memory leak.
 +
 +2011-10-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Read label on UFS1.
 +
 +      * grub-core/fs/ufs.c (grub_ufs_label): Remove MODE_UFS2 condition.
 +      (grub_ufs_fs): Always set .label.
 +
 +2011-10-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use shifts in UFS.
 +
 +      * grub-core/fs/ufs.c (UFS_LOG_BLKSZ): New macro.
 +      (grub_ufs_data): New field log2_blksz.
 +      (grub_ufs_read_file): Use shifts.
 +      (grub_ufs_mount): Check block size and logarithm it.
 +
 +2011-10-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ufs.c (grub_ufs_lookup_symlink): Fix handling of
 +      long symlinks.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Handle symlinks and long names on tar and cpio.
 +
 +      * grub-core/fs/cpio.c (ATTR_TYPE): New definition.
 +      (ATTR_FILE): Likewise.
 +      (ATTR_DIR): Likewise.
 +      (ATTR_LNK): Likewise.
 +      (grub_cpio_data) [MODE_USTAR]: New fields linkname and linkname_alloc.
 +      (grub_cpio_find_file): Fill mode, handle linkname field as well as
 +      L and K entries.
 +      (grub_cpio_mount): Zero-fill data.
 +      (handle_symlink): New function.
 +      (grub_cpio_dir): Handle symlinks.
 +      (grub_cpio_open): Likewise.
 +      (grub_cpio_close) [MODE_USTAR]: Free linkname.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix iso9660 filename limitations and fix memory leaks.
 +
 +      * grub-core/fs/iso9660.c (set_rockridge): Free sua at the end.
 +      (grub_iso9660_iterate_dir): Fix slash handling in symlinks.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix JFS file name length limitations.
 +
 +      * grub-core/fs/jfs.c (grub_jfs_inode): Fix in-place symlink length.
 +      (grub_jfs_diropen): Fix maximum filename length.
 +      (grub_jfs_getent): Fix filename length.
 +      (grub_jfs_lookup_symlink): Fix size checks.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/mips/linux.c (loongson_machtypes): Fix fuloong type
 +      string.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Leverage BFS implementation to read AFS.
 +
 +      * Makefile.util.def (libgrubmods): Add afs.c.
 +      * grub-core/Makefile.core.def (afs): New module
 +      * grub-core/fs/afs.c: New file.
 +      * grub-core/fs/bfs.c [MODE_AFS]: Adapt for AFS.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/bfs.c: Macroify and add some necessary sanity checks.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/bfs.c: Run indent.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      BFS implementation based on the specification.
 +
 +      * grub-core/fs/bfs.c: New file.
 +      * Makefile.util.def (libgrubmods): Add bfs.c.
 +      * grub-core/Makefile.core.def (bfs): New module.
 +
 +2011-10-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-fstest.c (cmd_cp): Clarify error message.
 +      (cmd_cmp): Likewise.
 +
 +2011-10-30  Yves Blusseau  <blusseau@zetam.org>
 +
 +      * po/POTFILES.in: Regenerate because of the removal of afs, afs_be, befs
 +      and befs_be.
 +
 +2011-10-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove afs and befs because of copyright problem.
 +
 +      * grub-core/fs/afs.c: Removed.
 +      * grub-core/fs/afs_be.c: Removed.
 +      * grub-core/fs/befs.c: Removed.
 +      * grub-core/fs/befs_be.c: Removed.
 +      * Makefile.util.def (libgrubkern): Remove afs, afs_be, befs and befs_be.
 +      * grub-core/Makefile.core.def (afs): Removed.
 +      (afs_be): Likewise.
 +      (befs): Likewise.
 +      (befs_be): Likewise.
 +
 +2011-10-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Prefer rockridge over Joliet.
 +
 +      * grub-core/fs/iso9660.c (grub_iso9660_mount): Move rockridge detection
 +      to ...
 +      (set_rockridge): ... here.
 +      (grub_iso9660_mount): Check rockridge on the primary label when
 +      discovering. Ignore Joliet if Rockridge is present.
 +
 +2011-10-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use shifts in nilfs2.
 +
 +      * grub-core/fs/nilfs2.c (LOG_INODE_SIZE): New definition.
 +      (LOG_NILFS_DAT_ENTRY_SIZE): Likewise.
 +      (grub_nilfs2_palloc_entries_per_group): Replace with ...
 +      (grub_nilfs2_log_palloc_entries_per_group): ... this.
 +      (grub_nilfs2_palloc_group): Use shifts and bitmasks.
 +      (grub_nilfs2_entries_per_block): Replaced with ...
 +      (grub_nilfs2_log_entries_per_block_log): ... this.
 +      (grub_nilfs2_blocks_per_group): Replaced with ...
 +      (grub_nilfs2_blocks_per_group_log): ... this.
 +      (grub_nilfs2_blocks_per_desc_block): Replaced with ...
 +      (grub_nilfs2_blocks_per_desc_block_log): ... this.
 +      (grub_nilfs2_palloc_desc_block_offset): Replaced with ...
 +      (grub_nilfs2_palloc_desc_block_offset_log): ... this.
 +      (grub_nilfs2_palloc_entry_offset): Replaced ...
 +      (grub_nilfs2_palloc_entry_offset_log): ... this. Use shifts.
 +      (grub_nilfs2_dat_translate): Use shifts.
 +      (grub_nilfs2_read_inode): Likewise.
 +      (GRUB_MOD_INIT): Ensure that logs are correct.
 +
 +2011-10-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use shifts in minix filesystem.
 +
 +      * grub-core/fs/minix.c (GRUB_MINIX_ZONESZ): Use log_block_size.
 +      (GRUB_MINIX_ZONE2SECT): Likewise.
 +      (grub_minix_data): Replace block_size with log_block_size.
 +      (grub_minix_read_file): Use shifts.
 +      (grub_minix_mount): Check block size and take a logarithm.
 +
 +2011-10-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use shifts in squash4.
 +
 +      * grub-core/fs/squash4.c (grub_squash_data): New field log2_blksz.
 +      (squash_mount): Check block size and take logarithm.
 +      (direct_read): Use shifts.
 +
 +2011-10-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Correct befs block counting logic.
 +
 +      * grub-core/fs/afs.c (GRUB_AFS_BLOCKS_PER_DI_RUN): Replaced with...
 +      (GRUB_AFS_LOG_BLOCKS_PER_DI_RUN): ... this.
 +      (GRUB_AFS_BLOCKRUN_LOG_SIZE): New definition.
 +      (grub_afs_read_inode): Use block_shift.
 +      (RANGE_SHIFT): New definition.
 +      (grub_afs_read_block): Account for RANGE_SHIFT, emit errors on
 +      unexpected conditions, use shifts and appropriate types.
 +      (GRUB_MOD_INIT): Check the value of GRUB_AFS_BLOCKRUN_LOG_SIZE.
 +
 +2011-10-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/raid.c (scan_devices): Check partition.
 +      * grub-core/disk/lvm.c (do_lvm_scan): Likewise.
 +
 +2011-10-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support BFS (befs) UUID.
 +
 +      * grub-core/fs/afs.c (grub_afs_inode): Make small_data zero-size.
 +      (grub_afs_small_data_element_header): New struct.
 +      (grub_afs_read_inode): Read complete inode. Fix ino type while on it.
 +      (grub_afs_read_attribute) [MODE_BFS]: New function.
 +      (grub_afs_iterate_dir): Allocate for complete inode.
 +      (grub_afs_mount): Likewise.
 +      (grub_afs_uuid) [MODE_BFS]: New function.
 +      (grub_afs_fs) [MODE_BFS]: Add .uuid.
 +
 +2011-10-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/zfs/zfs.c (read_device): Silence spurious warning.
 +      (zfs_unmount): Fix memory leak.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support NTFS reparse points.
 +
 +      * grub-core/fs/ntfs.c (list_file): Set symlink type when appropriate.
 +      (symlink_descriptor): New struct.
 +      (grub_ntfs_read_symlink): New function.
 +      (grub_ntfs_iterate_dir): Use grub_ntfs_read_symlink.
 +      (grub_ntfs_open): Likewise.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/ntfs.h: Add GRUB_NTFS_ prefix. All users updated.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      fstest xnu_uuid subcommand.
 +
 +      * grub-core/commands/xnu_uuid.c (libgrubkrn): Add
 +      grub-core/commands/xnu_uuid.c.
 +      * util/grub-fstest.c (CMD_XNU_UUID): New enum value.
 +      (fstest): Handle xnu_uuid.
 +      (options): Document xnu_uuid.
 +      (argp_parser): Parse xnu_uuid.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/xnu_uuid.c (grub_cmd_xnu_uuid): Support
 +      -l argument. Add newline at the end if printing.
 +      (GRUB_MOD_INIT): Document -l.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/nilfs2.c (grub_nilfs2_uuid): Add missing field length.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      ZFS multi-device and version 33 support.
 +
 +      * Makefile.util.def (libgrubkern): Add grub-core/fs/zfs/zfsinfo.c.
 +      * grub-core/fs/zfs/zfs.c (grub_zfs_device_desc): New struct.
 +      (grub_zfs_data): Add multidev-ice-related fields.
 +      (zio_checksum_verify): Zero-pad printed values. Print checksum name.
 +      (dva_get_offset): Make dva const.
 +      (zfs_fetch_nvlist): New function.
 +      (fill_vdev_info_real): Likewise.
 +      (fill_vdev_info): Likewise.
 +      (check_pool_label): Likewise.
 +      (scan_disk): Likewise.
 +      (scan_devices): Likewise.
 +      (read_device): Likewise.
 +      (read_dva): Likewise.
 +      (zio_read_gang): Use read_dva.
 +      (zio_read_data): Likewise.
 +      (zap_leaf_lookup): Add missing endian conversion.
 +      (zap_verify): Add missing endian conversion. All users updated.
 +      (fzap_lookup): Likewise.
 +      (fzap_iterate): Likewise.
 +      (dnode_get_path): Handle SA bonus.
 +      (nvlist_find_value): Make input const. All users updated.
 +      (unmount_device): New function.
 +      (zfs_unmount): Use unmount_device.
 +      (zfs_mount): Use scan_disk.
 +      (zfs_mtime): New function.
 +      (grub_zfs_open): Handle system attributes.
 +      (fill_fs_info): Likewise.
 +      (grub_zfs_dir): Likewise.
 +      (grub_zfs_fs): Add mtime.
 +      * grub-core/fs/zfs/zfsinfo.c (print_vdev_info): Add missing return.
 +      * include/grub/zfs/sa_impl.h (SA_TYPE_OFFSET): New definition.
 +      (SA_MTIME_OFFSET): Likewise.
 +      (SA_SYMLINK_OFFSET): Likewise.
 +      * include/grub/zfs/zfs.h (SPA_VERSION): Increase to 33.
 +      * util/grub-fstest.c (CMD_ZFSINFO): New enum value.
 +      (fstest): Support zfsinfo.
 +      (argp_parser): Likewise.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/datetime.h (grub_datetime2unixtime): Fix off-by-one
 +      error.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      ZFS fixes.
 +
 +      * grub-core/fs/zfs/zfs.c (fzap_iterate): Fix handling of indexes
 +      sharing the same block. Iterate over correct number of indices.
 +      (dnode_get_path): Handle symlinks correctly.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/jfs.c (grub_jfs_sblock): Fix offset to volname.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Read label on HFS+.
 +
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_cmp_catkey_id): New function.
 +      (grub_hfsplus_btree_search): Fix types.
 +      (grub_hfsplus_label): Implement.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ntfs.c (grub_ntfs_uuid): Fix a memory leak.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/fat.c (grub_fat_uuid): Make uppercase to match Linux.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix symlink handling on iso9660.
 +
 +      * grub-core/fs/iso9660.c (grub_fshelp_node): Remove dir_off. Add symlink
 +      All users updated.
 +      (grub_iso9660_susp_iterate): Accept zero-size iterate.
 +      (grub_iso9660_read_symlink): Moved most of code ...
 +      (grub_iso9660_iterate_dir): ... here. Fill node->symlink.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/bsd.c (grub_netbsd_add_boot_disk_and_wedge):
 +      Use union to avoid breaking strict-aliasing rules.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support multi-extent iso files.
 +
 +      * grub-core/fs/iso9660.c (grub_iso9660_data): Remove first_sector.
 +      Add node.
 +      (grub_fshelp_node): Revamp. All users updated.
 +      (FLAG_*): New enum.
 +      (read_node): New function.
 +      (grub_iso9660_susp_iterate): Use read_node. Receive a node as argument.
 +      All users updated.
 +      (grub_iso9660_mount): Don't attempt to read sua when there is none.
 +      (get_node_size): New function.
 +      (grub_iso9660_iterate_dir): Use read_node. Agglomerate multi-extent
 +      entries.
 +      Fix memory leak on . and ..
 +      (grub_iso9660_read): Use read_node.
 +      (grub_iso9660_close): Free node.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix tar 4G limit and handle paths containing dot.
 +
 +      * grub-core/fs/cpio.c (grub_cpio_data): Use grub_off_t for offsets.
 +      (canonicalize): New function.
 +      (grub_cpio_find_file): Use canonicalize. Store offs in
 +      grub_disk_addr_t.
 +      (grub_cpio_dir): Use grub_disk_addr_t.
 +      (grub_cpio_open): Likewise.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix handling of uncompressed blocks on squashfs and break 4G limit.
 +
 +      * grub-core/fs/squash4.c (grub_squash_super): Add block_size. Remove
 +      unused flags.
 +      (grub_squash_inode): Add long_file and block_size.
 +      (grub_squash_cache_inode): New struct.
 +      (grub_squash_dirent): Make types into enum.
 +      (SQUASH_TYPE_LONG_REGULAR): New type.
 +      (grub_squash_frag_desc): Add field size.
 +      (SQUASH_BLOCK_FLAGS): New enum.
 +      (grub_squash_data): Use grub_squash_cache_inode.
 +      (grub_fshelp_node): Make ino_chunk 64-bit.
 +      (read_chunk): Minor argument change. All users updated.
 +      (squash_mount): Use correct le_to_cpu.
 +      (grub_squash_open): Handle LONG_REGULAR.
 +      (direct_read): New function.
 +      (grub_squash_read_data): Handle blocks correctly.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/disk.c (grub_disk_read_small): Fix memory leak.
 +
 +2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/romfs.c (grub_romfs_open): Add missing return.
 +
 +2011-10-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix 2G limit on ZFS.
 +
 +      * grub-core/fs/zfs/zfs.c (zio_checksum_verify): Use more appropriate
 +      types.
 +      (uberblock_verify): Likewise.
 +      (dmu_read): Likewise.
 +      (grub_zfs_read): Likewise. Remove invalid cast.
 +
 +2011-10-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/jfs.c (grub_jfs_blkno): Use more appropriate types.
 +      (grub_jfs_blkno): Fix incorrect shift.
 +      (grub_jfs_read_file): Use more appropriate types.
 +
 +2011-10-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support triple indirect on minix2 and minix3.
 +
 +      * grub-core/fs/minix.c (grub_minix_inode) [MODE_MINIX2 || MODE_MINIX3]:
 +      Declare triple_indir_zone.
 +      (grub_minix_get_file_block) [MODE_MINIX2 || MODE_MINIX3]: Handle triple
 +      indirect.
 +
 +2011-10-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Minix FS fixes.
 +
 +      * grub-core/fs/minix.c (GRUB_MINIX_INODE_SIZE): Size is always 32-bit.
 +      (grub_minix_inode) [!MODE_MINIX2 && !MODE_MINIX3]: Make size 32-bit.
 +      Rename ctime to mtime. All users updated.
 +      (grub_minix_get_file_block): Fix types and double indirect computations.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/fat.c (grub_fat_label) [MODE_EXFAT]: Set *label to 0
 +      if no label is found.
 +      (grub_fat_iterate_dir): Fix file size type.
 +      (grub_fat_iterate_dir): Likewise.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/reed_solomon.c (gf_invert): Declare as const and
 +      save some space.
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_PC_RAW_SIZE): Decrease.
 +      (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART): Likewise.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/import_gcry.py: Automatically fix camellia.c and camellia.h.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/import_gcry.py: Accept space between # and include.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/setjmp.S [__ia64__]: Include ./ia64/longjmp.S.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fine grainely disable warnings on lexer. Remove Wno-error on it.
 +
 +      * grub-core/Makefile.core.def (normal): Remove -Wno-error.
 +      * grub-core/script/lexer.c: Declare yytext_ptr to avoid having
 +      yylex_strncpy.
 +      * grub-core/script/yylex.l: Add fine-grained #pragma.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/string.h (memcpy) [GRUB_UTIL]:
 +      New inline function.
 +      * grub-core/lib/libgcrypt_wrap/cipher_wrap.h (memcpy) [GRUB_UTIL]:
 +      Likewise.
 +      (memset) [GRUB_UTIL]: Likewise.
 +      (memcmp) [GRUB_UTIL]: Likewise.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/misc.h (grub_memcpy): Declare grub_memcpy with static
 +      inline function rather than a define.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-setup.c: Add missing include.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/ieee1275/grub-ofpathname.c: Add missing include.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/i386/pc/startup.S (grub_exit): Add missing zeroing-out.
 +      * grub-core/lib/i386/reboot_trampoline.S (grub_reboot_start):
 +      Likewise.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/io/lzopio.c (test_header): Fix incorrect memcmp instead of
 +      grub_memcmp usage.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Add datarootdir as per automake manual
 +      suggestion.
 +      * util/grub-mknetdir.in: Likewise.
 +
 +2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_hurd.in: Add datarootdir as per automake manual
 +      suggestion.
 +      * 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.
 +
 +2011-10-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove redundant grub_kernel_image_size.
 +
 +      * grub-core/kern/i386/coreboot/init.c (grub_machine_init): Use
 +      _edata and _start.
 +      * grub-core/kern/i386/coreboot/startup.S: Move multiboot header after
 +      the small code. It moves it only by few bytes but simplifies the code.
 +      * grub-core/kern/i386/pc/init.c (grub_machine_init): Use _edata and
 +      _start.
 +      * grub-core/kern/i386/pc/startup.S: Use _edata and _start.
 +      (grub_kernel_image_size): Removed.
 +      * grub-core/kern/i386/qemu/startup.S: Use _edata and _start.
 +      (grub_kernel_image_size): Removed.
 +      [APPLE_CC]: Remove apple compiler support. i386-qemu port can't be
 +      compiled with Apple toolchain.
 +      * grub-core/kern/sparc64/ieee1275/crt0.S: Remove leftover fields.
 +      * include/grub/i386/pc/kernel.h (grub_kernel_image_size): Removed.
 +      * include/grub/i386/qemu/kernel.h (grub_kernel_image_size): Removed.
 +      (grub_total_module_size): Likewise.
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_PC_KERNEL_IMAGE_SIZE):
 +      Removed.
 +      (GRUB_KERNEL_I386_PC_COMPRESSED_SIZE): Put it lower.
 +      (GRUB_KERNEL_I386_PC_INSTALL_DOS_PART): Likewise.
 +      (GRUB_KERNEL_I386_PC_INSTALL_BSD_PART): Likewise.
 +      (GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY): Likewise.
 +      (GRUB_KERNEL_I386_QEMU_KERNEL_IMAGE_SIZE): Removed.
 +      (GRUB_KERNEL_SPARC64_IEEE1275_KERNEL_IMAGE_SIZE): Likewise.
 +      (GRUB_KERNEL_SPARC64_IEEE1275_COMPRESSED_SIZE): Likewise.
 +      * include/grub/sparc64/ieee1275/kernel.h (grub_kernel_image_size):
 +      Removed.
 +      (grub_total_module_size): Removed.
 +      * util/grub-mkimage.c (image_target_desc): Remove image_size.
 +      (image_targets): Likewise.
 +      Set .compressed_size to no field on sparc.
 +      (generate_image): Remove kernel_image_size handling.
 +
 +2011-10-19  Szymon Janc <szymon@janc.net.pl>
 +
 +      * grub-core/bus/usb/uhci.c (grub_uhci_setup_transfer): Fix possible
 +      NULL pointer dereference.
 +
 +2011-10-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Removed unused GRUB_BOOT_VERSION. Check for kernel version is better
 +      done with a dedicated section.
 +
 +      * grub-core/boot/sparc64/ieee1275/boot.S: Remove GRUB_BOOT_VERSION.
 +      Ensure the correct position of boot_path.
 +      * grub-core/kern/i386/efi/startup.S: Remove GRUB_BOOT_VERSION.
 +      * grub-core/kern/i386/pc/startup.S: Likewise. Ensure correct position of
 +      other fields.
 +      * grub-core/kern/x86_64/efi/startup.S: Remove GRUB_BOOT_VERSION.
 +      * include/grub/boot.h: Removed. All references removed.
 +      * include/grub/sparc64/ieee1275/boot.h (GRUB_BOOT_MACHINE_VER_MAJ):
 +      Removed.
 +      (GRUB_BOOT_MACHINE_BOOT_DEVPATH): Make it lower.
 +
 +2011-10-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Declare IEEE1275 as able to find out the disk
 +      name.
 +
 +2011-10-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/main.c (grub_set_prefix_and_root): Init prefix.
 +
 +2011-10-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ieee1275/openfw.c (grub_ieee1275_encode_devname):
 +      Don't add the bogus brackets.
 +
 +2011-10-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      ExFAT support.
 +
 +      * Makefile.util.def (libgrubmods.a): Add grub-core/fs/exfat.c.
 +      * grub-core/Makefile.core.def (exfat): New module.
 +      * grub-core/fs/exfat.c: New file.
 +      * grub-core/fs/fat.c (GRUB_FAT_DIR_ENTRY_SIZE): Removed.
 +      (GRUB_FAT_ATTR_*): Make into an enum.
 +      (GRUB_FAT_ATTR_LONG_NAME) [MODE_EXFAT]: Removed.
 +      (GRUB_FAT_ATTR_VALID) [MODE_EXFAT]: Remove GRUB_FAT_ATTR_VOLUME_ID.
 +      (GRUB_FAT_ATTR_VOLUME_ID) [MODE_EXFAT]: Removed.
 +      (GRUB_FAT_MAXFILE): Removed.
 +      (grub_exfat_bpb) [MODE_EXFAT]: New struct.
 +      (grub_current_fat_bpb_t): New type.
 +      (grub_fat_dir_entry) [MODE_EXFAT]: New struct.
 +      (grub_fat_dir_node) [MODE_EXFAT]: New struct.
 +      (grub_fat_dir_node_t): New type.
 +      (grub_fat_data) [MODE_EXFAT]: Remove root_sector and num_root_sectors.
 +      (fat_log2) [MODE_EXFAT]: Removed.
 +      (grub_fat_mount): Use grub_current_fat_bpb_t. Add some sanity checks.
 +      (grub_fat_mount) [MODE_EXFAT]: Handle ExFAT.
 +      (grub_fat_iterate_dir) [MODE_EXFAT]: New function.
 +      (grub_fat_find_dir) [MODE_EXFAT]: Handle ExFAT.
 +      (grub_fat_label) [MODE_EXFAT]: New function.
 +      (grub_fat_fs) [MODE_EXFAT]: Set name to "exfat" and
 +      reserved_first_sector to 0.
 +
 +2011-10-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Move grub_reboot out of the kernel.
 +
 +      * grub-core/Makefile.core.def (reboot): Add platform-specific files.
 +      * grub-core/kern/efi/efi.c (grub_reboot): Moved to ...
 +      * grub-core/lib/efi/reboot.c: ... here.
 +      * grub-core/kern/i386/efi/startup.S: Remove including of realmode.S.
 +      * grub-core/kern/i386/ieee1275/startup.S: Likewise.
 +      * grub-core/kern/i386/pc/startup.S (grub_exit): Inline cold_reboot.
 +      * grub-core/kern/i386/realmode.S (grub_reboot): Moved to...
 +      * grub-core/lib/i386/reboot_trampoline.S: ... here.
 +      * grub-core/kern/ieee1275/openfw.c (grub_reboot): Moved to...
 +      * grub-core/lib/ieee1275/reboot.c: ... here.
 +      * grub-core/kern/mips/arc/init.c (grub_reboot): Moved to...
 +      * grub-core/lib/mips/arc/reboot.c: ... here.
 +      * grub-core/kern/mips/loongson/init.c (grub_reboot): Moved to...
 +      * grub-core/lib/mips/loongson/reboot.c: ...here.
 +      * grub-core/kern/mips/qemu_mips/init.c (grub_reboot): Moved to...
 +      * grub-core/lib/mips/qemu_mips/reboot.c: ... here.
 +      * include/grub/emu/misc.h (grub_reboot): New function declaration.
 +      * include/grub/i386/reboot.h: New file.
 +      * include/grub/mips/loongson/ec.h: Fix includes.
 +      * include/grub/mips/qemu_mips/kernel.h (grub_reboot): Removed.
 +      * include/grub/misc.h (grub_reboot): Don't mark as kernel function.
 +      * grub-core/lib/i386/reboot.c: New file.
 +
 +2011-10-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Make grub_prefix into module to fix the arbitrary limit and save
 +      some space.
 +
 +      * grub-core/kern/emu/main.c (grub_prefix): Removed.
 +      * grub-core/kern/i386/coreboot/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/i386/efi/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/i386/ieee1275/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/i386/pc/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/i386/qemu/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/ia64/efi/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/mips/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/powerpc/ieee1275/startup.S (grub_prefix): Likewise.
 +      * grub-core/kern/sparc64/ieee1275/crt0.S (grub_prefix): Likewise.
 +      * grub-core/kern/x86_64/efi/startup.S (grub_prefix): Likewise.
 +      * include/grub/ia64/efi/kernel.h: Removed.
 +      * include/grub/kernel.h: New module type OBJ_TYPE_PREFIX.
 +      (grub_prefix): Removed.
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_PC_PREFIX): Removed.
 +      (GRUB_KERNEL_I386_PC_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_I386_QEMU_PREFIX): Likewise.
 +      (GRUB_KERNEL_I386_QEMU_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_SPARC64_IEEE1275_PREFIX): Likewise.
 +      (GRUB_KERNEL_SPARC64_IEEE1275_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_POWERPC_IEEE1275_PREFIX): Likewise.
 +      (GRUB_KERNEL_POWERPC_IEEE1275_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_MIPS_LOONGSON_PREFIX): Likewise.
 +      (GRUB_KERNEL_MIPS_LOONGSON_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_PREFIX): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_I386_EFI_PREFIX): Likewise.
 +      (GRUB_KERNEL_I386_EFI_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_IA64_EFI_PREFIX): Likewise.
 +      (GRUB_KERNEL_IA64_EFI_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_X86_64_EFI_PREFIX): Likewise.
 +      (GRUB_KERNEL_X86_64_EFI_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_I386_COREBOOT_PREFIX): Likewise.
 +      (GRUB_KERNEL_I386_COREBOOT_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_I386_MULTIBOOT_PREFIX): Likewise.
 +      (GRUB_KERNEL_I386_MULTIBOOT_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_I386_IEEE1275_PREFIX): Likewise.
 +      (GRUB_KERNEL_I386_IEEE1275_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_MACHINE_PREFIX): Likewise.
 +      (GRUB_KERNEL_MACHINE_PREFIX_END): Likewise.
 +      * grub-core/kern/main.c (grub_set_prefix_and_root): Retrieve grub_prefix
 +      from module.
 +      * util/grub-mkimage.c (image_target_desc): Removed prefix and
 +      prefix_end.
 +      (image_targets): Likewise.
 +      (generate_image): Put prefix as a module.
 +
 +2011-10-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Replace grub_module_iterate with FOR_MODULES.
 +
 +      * grub-core/disk/memdisk.c (GRUB_MOD_INIT): Switched to new interface.
 +      * grub-core/kern/efi/efi.c (grub_arch_modules_addr): Renamed to...
 +      (grub_efi_modules_addr): ...this.
 +      * grub-core/kern/efi/init.c (grub_modbase): New variable.
 +      (grub_efi_init): Set grub_modbase.
 +      * grub-core/kern/emu/main.c (grub_arch_modules_addr): Removed.
 +      (grub_modbase): New variable.
 +      * grub-core/kern/i386/coreboot/init.c (grub_arch_modules_addr): Removed.
 +      (grub_modbase): New variable.
 +      (grub_machine_init): Set grub_modbase.
 +      * grub-core/kern/i386/pc/init.c (grub_arch_modules_addr): Removed.
 +      (grub_modbase): New variable.
 +      (grub_machine_init): Set grub_modbase.
 +      * grub-core/kern/ieee1275/init.c (grub_arch_modules_addr): Removed.
 +      (grub_modbase): New variable.
 +      (grub_machine_init): Set grub_modbase.
 +      * grub-core/kern/main.c (grub_module_iterate): Remove.
 +      (grub_modules_get_end): Use grub_modbase.
 +      (grub_load_modules): Use FOR_MODULES.
 +      (grub_load_config): Likewise.
 +      * grub-core/kern/mips/arc/init.c (grub_arch_modules_addr): Removed.
 +      (grub_modbase): New variable.
 +      (grub_machine_init): Set grub_modbase.
 +      * grub-core/kern/mips/loongson/init.c (grub_arch_modules_addr): Removed.
 +      (grub_modbase): New variable.
 +      (grub_machine_init): Set grub_modbase.
 +      * grub-core/kern/mips/qemu_mips/init.c (grub_arch_modules_addr):
 +      Removed.
 +      (grub_modbase): New variable.
 +      (grub_machine_init): Set grub_modbase.
 +      * include/grub/efi/efi.h (grub_efi_modules_addr): New declaration.
 +      * include/grub/kernel.h (grub_arch_modules_addr): Removed.
 +      (grub_module_iterate): Likewise.
 +      (grub_modbase): New variable declaration.
 +      (FOR_MODULES): New macro.
 +
 +2011-10-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Check for __ctzdi2 and __ctzsi2.
 +      * include/grub/libgcc.h: Include __ctzdi2 and __ctzsi2 if present.
 +
 +2011-10-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix few obvious type discrepancies.
 +
 +      * grub-core/fs/affs.c (grub_affs_read_file): Use grub_off_t for offset.
 +      * grub-core/fs/afs.c (grub_afs_read_file): Likewise.
 +      * grub-core/fs/fshelp.c (grub_fshelp_find_file): Remove leftover
 +      variable.
 +      * grub-core/fs/hfs.c (grub_hfs_read_file): Use grub_off_t for offset
 +      and connected types.
 +      * grub-core/fs/nilfs2.c (grub_nilfs2_read_file): Use grub_off_t for
 +      offset.
 +      (grub_nilfs2_iterate_dir): Use grub_off_t for fpos.
 +      * grub-core/fs/sfs.c (grub_sfs_read_file): Use grub_off_t for offset.
 +      * grub-core/fs/ufs.c (grub_ufs_read_file): Use grub_off_t for offset
 +      and connected types.
 +
 +2011-10-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix python 3.x incompatibilities.
 +
 +      * gentpl.py: Put brackets around print strings.
 +      * util/import_gcry.py: Open explicitly as utf-8.
 +      Use in instead of has_key.
 +
 +2011-10-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/xfs.c (grub_xfs_inode): New field fork_offset.
 +      (GRUB_XFS_INO_AGBITS): Make into inline function.
 +      (GRUB_XFS_INO_INOINAG): Likewise.
 +      (GRUB_XFS_INO_AG): Likewise.
 +      (GRUB_XFS_FSB_TO_BLOCK): Likewise.
 +      (GRUB_XFS_EXTENT_OFFSET): Likewise.
 +      (GRUB_XFS_EXTENT_BLOCK): Likewise.
 +      (GRUB_XFS_EXTENT_SIZE): Likewise.
 +      (GRUB_XFS_ROUND_TO_DIRENT): Likewise.
 +      (GRUB_XFS_NEXT_DIRENT): Likewise.
 +      (grub_xfs_read_block): Rewrite the btree parsing. Fixes invalid BMAP.
 +      (grub_xfs_read_file): Fix offset type.
 +
 +2011-10-15  Robert Millan  <rmh@gnu.org>
 +
 +      * util/getroot.c (grub_util_get_grub_dev): Fix OS selection #ifdefs.
 +
 +2011-10-15  Robert Millan  <rmh@gnu.org>
 +
 +      Fix build problem on FreeBSD and GNU/kFreeBSD.
 +
 +      * util/getroot.c [__FreeBSD_kernel__]: Include `<sys/mount.h>'.
 +
 +2011-10-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix overflow with >2GiB file on HFS+. >4GiB wasn't tested.
 +
 +      * grub-core/fs/hfsplus.c (grub_hfsplus_btree): Use more appropriate
 +      types.
 +      (grub_hfsplus_btree_recoffset): Likewise.
 +      (grub_hfsplus_btree_recptr): Likewise.
 +      (grub_hfsplus_find_block): Likewise.
 +      (grub_hfsplus_btree_search): Likewise.
 +      (grub_hfsplus_read_block): Likewise.
 +      (grub_hfsplus_read_file): Likewise.
 +      (grub_hfsplus_mount): Likewise.
 +      (grub_hfsplus_btree_iterate_node): Likewise.
 +      (grub_hfsplus_btree_search): Likewise.
 +      (grub_hfsplus_iterate_dir): Likewise.
 +      (grub_hfsplus_read): A small code simplification.
 +
 +2011-10-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c
 +      (convert_system_partition_to_system_disk): Don't assume that children
 +      of mapper nodes are mapper nodes.
 +
 +2011-10-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/posix_wrap/ctype.h (isxdigit): Use grub_isxdigit.
 +      * include/grub/misc.h (grub_isxdigit): New function.
 +      * grub-core/video/colors.c (my_isxdigit): Removed. All users
 +      switched to grub_isxdigit.
 +      * grub-core/term/serial.c (grub_serial_find): Fix in case of port
 +      number starting with a letter.
 +
 +2011-10-09  Robert Millan  <rmh@gnu.org>
 +
 +      LVM support for FreeBSD and GNU/kFreeBSD.
 +
 +      * util/lvm.c (grub_util_lvm_isvolume): Enable on FreeBSD and
 +      GNU/kFreeBSD.
 +      (LVM_DEV_MAPPER_STRING): Move from here ...
 +      * include/grub/util/lvm.h (LVM_DEV_MAPPER_STRING): ... to here.
 +      * util/getroot.c: Include `<grub/util/lvm.h>'.
 +      (grub_util_get_dev_abstraction): Enable
 +      grub_util_biosdisk_is_present() on FreeBSD and GNU/kFreeBSD.
 +      Check for LVM abstraction on FreeBSD and GNU/kFreeBSD.
 +      (grub_util_get_grub_dev): Replace "/dev/mapper/" with
 +      `LVM_DEV_MAPPER_STRING'.  Enable LVM and mdRAID only on platforms that
 +      support it.
 +      * util/grub-setup.c (main): Check for LVM also on FreeBSD and
 +      GNU/kFreeBSD.
 +      * util/grub.d/10_kfreebsd.in: Load `geom_linux_lvm' kernel module
 +      when LVM abstraction is required for ${GRUB_DEVICE}.
 +
 +2011-10-06  Szymon Janc <szymon@janc.net.pl>
 +
 +      Add support for LZO compression in GRUB:
 +      - import of minilzo library, 
 +      - LZO decompression for btrfs,
 +      - lzop files decompression.
 +
 +      * grub-core/io/lzopio.c: New file.
 +      * grub-core/lib/adler32.c: Likewise.
 +      * grub-core/lib/minilzo/lzoconf.h: Likewise.
 +      * grub-core/lib/minilzo/lzodefs.h: Likewise.
 +      * grub-core/lib/minilzo/minilzo.c: Likewise.
 +      * grub-core/lib/minilzo/minilzo.h: Likewise.
 +      * Makefile.util.def (libgrubmods.a): Add grub-core/io/lzopio.c,
 +      grub-core/lib/adler32.c, grub-core/io/lzopio.c,
 +      grub-core/lib/minilzo/minilzo.c to common.
 +      * Makefile.util.def (libgrubmods.a): Add flags required by minilzo to
 +      cflags in cppflags.
 +      * grub-core/Makefile.core.def (btrfs): Likewise.
 +      * grub-core/Makefile.core.def (lzopio): New module.
 +      (adler32): Likewise.
 +      * grub-core/fs/btrfs.c: Include minilzo.h.
 +      (GRUB_BTRFS_COMPRESSION_LZO): New define.
 +      (GRUB_BTRFS_LZO_BLOCK_SIZE): Likewise.
 +      (GRUB_BTRFS_LZO_BLOCK_MAX_CSIZE): Likewise.
 +      (grub_btrfs_lzo_decompress): New function.
 +      (grub_btrfs_extent_read): Add support for LZO compression type.
 +      * include/grub/types.h (GRUB_UCHAR_MAX): New define.
 +      (GRUB_USHRT_MAX): Likewise.
 +      (GRUB_UINT_MAX): Likewise.
 +      * grub-core/lib/posix_wrap/limits.h (USHRT_MAX): Likewise.
 +      (UINT_MAX): Likewise.
 +      (CHAR_BIT): Likewise.
 +      * grub-core/lib/posix_wrap/sys/types.h (ULONG_MAX): Moved to
 +      grub-core/lib/posix_wrap/limits.h
 +      (UCHAR_MAX): Likewise.
 +      * include/grub/file.h (grub_file_filter_id): New compression filter
 +      GRUB_FILE_FILTER_LZOPIO.
 +      * include/grub/file.h (grub_file_filter_id): Set
 +      GRUB_FILE_FILTER_LZOPIO as GRUB_FILE_FILTER_COMPRESSION_LAST.
 +      * include/grub/types.h (grub_get_unaligned16): New function.
 +      (grub_get_unaligned32): Likewise.
 +      (grub_get_unaligned64): Likewise.
 +      * util/import_gcry.py (cryptolist): Add adler32.
 +
 +2011-10-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def: Eliminate rarely used emu_condition. This
 +      in perspective decreases the complexity of build system and fixes
 +      compilation right now.
 +
 +2011-10-01  Ales Nesrsta <starous@volny.cz>
 +
 +      * grub-core/bus/usb/uhci.c: Changes made by Rock Cui - thanks!
 +      (fixed problem related to using UHCI with coreboot).
 +
 +2011-08-25  BVK Chaitanya  <bvk.groups@gmail.com>
 +
 +      * gentpl.py: Use Autogen macros so that the output template file
 +      (Makefile.tpl) size is reduced.
 +
 +2011-09-29  Mads Kiilerich <mads@kiilerich.com>
 +
 +      * grub-core/Makefile.core.def (kernel): Add kern/i386/int.S to
 +      extra_dist.
 +
 +2011-09-29  Mario Limonciello <mario_limonciello@dell.com>
 +
 +      * util/misc.c (grub_util_get_disk_size) [__MINGW32__]: Strip trailing
 +      slashes on PHYSICALDRIVE%d paths when making Windows CreateFile calls.
 +
 +2011-09-29  Mario Limonciello <mario_limonciello@dell.com>
 +
 +      * grub-core/kern/emu/misc.c (canonicalize_file_name) [__MINGW32__]: Use
 +      _fullpath.
 +
 +2011-09-29  Mario Limonciello <mario_limonciello@dell.com>
 +
 +      Remove extra declaration of sleep for mingw32.
 +
 +      * util/misc.c (sleep) [__MINGW32__]: Removed.
 +      * include/grub/util/misc.h (sleep) [__MINGW32__]: Likewise.
 +
 +2011-09-28  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * include/grub/bsdlabel.h (grub_partition_bsd_disk_label): Add fields
 +      type and packname.
 +      * include/grub/i386/netbsd_bootinfo.h (NETBSD_BTINFO_BOOTDISK):
 +      Resurrected.
 +      (NETBSD_BTINFO_BOOTWEDGE): New definition.
 +      (grub_netbsd_btinfo_bootwedge): New struct.
 +      * grub-core/loader/i386/bsd.c (grub_netbsd_add_boot_disk_and_wedge):
 +      New function.
 +      (grub_cmd_netbsd): Call grub_netbsd_add_boot_disk_and_wedge.
 +
 +2011-09-28  Thomas Haller <thomas.haller@fen-net.de>
 +
 +      * grub-core/loader/multiboot_elfxx.c (Elf_Shdr): Set according to
 +      loader.
 +
 +2011-09-28  Andreas Born  <futur.andy@googlemail.com>
 +
 +      Fix incorrect identifiers in bash-completion.
 +
 +      * util/bash-completion.d/grub-completion.bash.in
 +      (_grub_mkpasswd-pbkdf2): Rename to ...
 +      (_grub_mkpasswd_pbkdf2): ... this. All users updated.
 +      (_grub_script-check): Rename to ...
 +      (_grub_script_check): ... this. All users updated.
 +
 +2011-09-28  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_floppy):
 +      Return 0 if disk isn't biosdisk.
 +
 +2011-09-17  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * Makefile.util.def (grub-mkrelpath): Add LIBUTIL for getrawpartition(3)
 +      on NetBSD.
 +      * Makefile.util.def (grub-fstest): Likewise.
 +
 +2011-09-17  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors) [__NetBSD__]:
 +      Get sector size from disk label.
 +
 +2011-09-05  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig_lib.in (grub_file_is_not_garbage): Return 1 for
 +      */README* as well as README*.
 +      Reported by: Axel Beckert.
 +
 +2011-08-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mips/loongson/init.c (grub_machine_init): Handle the
 +      case of less than 256 MiB of RAM.
 +
 +2011-08-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/wildcard.c (make_regex): Handle @.
 +
 +2011-08-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Move cryptodisk logic to appropriate place.
 +
 +2011-08-21 Szymon Janc <szymon@janc.net.pl>
 +
 +      * acinclude.m4: Use AC_LANG_PROGRAM macro to generate source code for
 +       AC_LANG_CONFTEST macros.
 +
 +2011-08-20  Szymon Janc <szymon@janc.net.pl>
 +
 +      Add grub-fstest option to uncompress data for commands.
 +
 +      * util/grub-fstest.c (uncompress): New var.
 +      (options): New option -u.
 +
 +2011-08-20  Szymon Janc <szymon@janc.net.pl>
 +
 +      * grub-core/loader/i386/linux.c (grub_linux_setup_video): Add
 +      GRUB_VIDEO_DRIVER_RADEON_FULOONG2E to switch case statement.
 +
 +2011-08-20  Szymon Janc <szymon@janc.net.pl>
 +
 +      * grub-core/io/gzio.c (grub_gzio_open): Always return original io if
 +      file type was not recognized correctly (not gzip or corrupted).
 +
 +2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mips/loongson/init.c (grub_reboot): Reboot Fuloong.
 +      * include/grub/cs5536.h (GRUB_CS5536_MSR_DIVIL_RESET): New definition.
 +
 +2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def (kernel): Add video/radeon_fuloong2e.c on
 +      loongson.
 +      * grub-core/kern/mips/loongson/init.c (grub_machine_init): Init
 +      video_radeon_fuloong2e.
 +      * grub-core/video/radeon_fuloong2e.c: New file.
 +      * include/grub/video.h (grub_video_id_t): Add new ID
 +      GRUB_VIDEO_DRIVER_RADEON_FULOONG2E.
 +
 +2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/mips/loongson.h (GRUB_CPU_LOONGSON_COP0_PRID): New
 +      define.
 +      * grub-core/kern/mips/loongson/init.c (grub_machine_init): Check
 +      that PRID matches the detected subplatform and reset the subplatform
 +      if it doesn't.
 +
 +2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/misc.c (grub_vprintf): Fix a bug on malloc failure.
 +
 +2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix PCI iterating on functions >= 4.
 +
 +      * grub-core/bus/pci.c (grub_pci_iterate): Remove useless ghost skipping.
 +      * include/grub/mips/loongson/pci.h (GRUB_LOONGSON_OHCI_GHOST_FUNCTION):
 +      Removed.
 +      (GRUB_LOONGSON_EHCI_GHOST_FUNCTION): Likewise.
 +      (grub_pci_read): Fix bitmask.
 +      (grub_pci_read_word): Likewise.
 +      (grub_pci_read_byte): Likewise.
 +      (grub_pci_write): Likewise.
 +      (grub_pci_write_word): Likewise.
 +      (grub_pci_write_byte): Likewise.
 +
 +2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Don't impose march=loongson2f on loongson platform. (It
 +      can still be specified in TARGET_CFLAGS)
 +
 +2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Rename Fuloong into Fuloong 2F. Add new ID for Fuloong2E.
 +
 +      * grub-core/Makefile.core.def (fwstart_fuloong): Rename fwstart_fuloong
 +      into fwstart_fuloong2f. Use boot/mips/loongson/fuloong2f.S.
 +      * grub-core/boot/mips/loongson/fuloong.S: Rename to ...
 +      * grub-core/boot/mips/loongson/fuloong2f.S: ... this.
 +      (FULOONG): Rename to ...
 +      (FULOONG2F): ... this. All users updated.
 +      * grub-core/boot/mips/startup_raw.S (machtype_fuloong_str): Rename to
 +      (machtype_fuloong2f_str): ... this.
 +      (machtype_fuloong2e_str): New string.
 +      Check for machtype_fuloong2e_str.
 +      * grub-core/loader/mips/linux.c (loongson_machtypes)
 +      [GRUB_MACHINE_MIPS_LOONGSON]: Add GRUB_ARCH_MACHINE_FULOONG2E.
 +      * grub-core/term/serial.c (loongson_defserial)
 +      [GRUB_MACHINE_MIPS_LOONGSON]: New array.
 +      (grub_serial_register) [GRUB_MACHINE_MIPS_LOONGSON]: Use
 +      loongson_defserial.
 +      * include/grub/mips/loongson/kernel.h (GRUB_ARCH_MACHINE_FULOONG):
 +      Rename to ...
 +      (GRUB_ARCH_MACHINE_FULOONG2F): ... this.
 +      (GRUB_ARCH_MACHINE_FULOONG2E): New const.
 +      * util/grub-mkimage.c (image_target_desc): Rename IMAGE_FULOONG_FLASH
 +      to IMAGE_FULOONG2F_FLASH. All users updated.
 +      (image_targets): Rename images.
 +      * util/grub-mkstandalone.in: Accept fuloong2f and fuloong2e.
 +
 +2011-08-19  Szymon Janc <szymon@janc.net.pl>
 +
 +      Make enable of disk cache statistics code configurable.
 +
 +      * configure.ac: --enable-cache-stats added.
 +      * config.h.in (DISK_CACHE_STATS): New define.
 +      * grub-core/Makefile.core.def (cacheinfo): New command.
 +      * include/grub/disk.h(grub_disk_cache_get_performance): New function.
 +      * grub-core/commands/cacheinfo.c: New file.
 +      * grub-core/commands/minicmd.c (grub_rescue_cmd_info): Updated and
 +      moved to cacheinfo.c.
 +      * grub-core/kern/disk.c: Use DISK_CACHE_STATS to disable disk cache
 +      debug code.
 +      * include/grub/disk.h: Likewise.
 +
 +2011-08-19  Szymon Janc <szymon@janc.net.pl>
 +
 +      * Makefile.am (AUTOMAKE_OPTIONS): = Added -Wno-portability flag.
 +      * grub-core/Makefile.am: Likewise.
 +
 +2011-08-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_iterate): Skip with
 +      non-zero pull.
 +
 +2011-08-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/jfs.c (grub_jfs_read_file): New parameter ino.
 +      All users updated.
 +      (grub_jfs_lookup_symlink): Use correct starting inode.
 +
 +2011-08-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-setup.c (main): Add missing gcry initialisation.
 +
 +2011-08-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Don't accept text modes on EFI when booting Linux.
 +
 +      * grub-core/loader/i386/linux.c (ACCEPTS_PURE_TEXT): New define.
 +      (grub_linux_boot) [!ACCEPTS_PURE_TEXT]: Restrict to graphics modes.
 +
 +2011-08-15  Mario Limonciello  <mario_limonciello@dell.com>
 +2011-08-15  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-probe.c (probe): Canonicalise the path argument, fixing
 +      use of "/path/.." as in grub-install for EFI as well as handling
 +      symlinks correctly.
 +      Fixes Debian bug #637768.
 +
 +2011-08-15  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-probe.c: Remove duplicate #include.
 +
 +2011-08-10  Robert Millan  <rmh@gnu.org>
 +
 +      Detect LSI MegaRAID SAS (`mfi') devices on GNU/kFreeBSD.
 +
 +      * util/deviceiter.c [__FreeBSD_kernel__] (get_mfi_disk_name): New
 +      function.
 +      [__FreeBSD_kernel__] (grub_util_iterate_devices): Scan for mfi
 +      (/dev/mfid[0-9]+) devices using get_mfi_disk_name().
 +
 +2011-08-03  Robert Millan  <rmh@gnu.org>
 +
 +      * include/grub/zfs/zap_leaf.h (typedef union zap_leaf_chunk): Mark
 +      la_array as packed.
 +      Reported by: Zachary Bedell
 +
 +2011-07-26  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * configure.ac: The Loongson port requires grub-mkfont due to its
 +      use of -DUSE_ASCII_FAILBACK.  Raise an error if it is not going to
 +      be built.
 +
 +2011-07-26  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-install.in: Don't source grub-mkconfig_lib until after
 +      processing arguments (otherwise help2man fails when GRUB has not yet
 +      been installed).
 +
 +2011-07-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      New script grub-mkstandalone.
 +
 +      * Makefile.util.def (grub-mkstandalone): New script.
 +      * docs/man/grub-mkstandalone.h2m: New file.
 +      * util/grub-mkstandalone.in: Likewise.
 +
 +2011-07-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support ATA disks with 4K sectors.
 +
 +      * include/grub/ata.h (grub_ata): New member log_sector_size.
 +      * grub-core/disk/ata.c (grub_ata_dumpinfo): Show sector size.
 +      (grub_ata_identify): Read sector size.
 +      (grub_ata_readwrite): Use log_sector_size rather than hardcoded value.
 +
 +2011-07-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Don't use uhci outside of x86.
 +
 +2011-07-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Add missing quotes.
 +
 +2011-07-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu.c (grub_menu_execute_entry): Fix NULL
 +      dereference.
 +
 +2011-07-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/pata.c (grub_pata_readwrite): Add missing wait.
 +
 +2011-07-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/video.h: add missing EXPORT_FUND on
 +      grub_video_edid_checksum and grub_video_edid_preferred_mode.
 +
 +2011-07-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/mips/kernel.h: Fix define conflict.
 +
 +2011-07-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mips/cache_flush.S [GRUB_MACHINE_MIPS_LOONGSON]: Flush
 +      all four ways.
 +
 +2011-07-21  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Preferred resolution detection for VBE.
 +
 +      * grub-core/video/video.c (grub_video_edid_checksum): New function.
 +      (grub_video_edid_preferred_mode): Likewise.  Try EDID followed by
 +      the Flat Panel extension, in line with the X.org VESA driver.
 +      * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_flat_panel_info):
 +      New function.
 +      (grub_vbe_bios_get_ddc_capabilities): Likewise.
 +      (grub_vbe_bios_read_edid): Likewise.
 +      (grub_vbe_get_preferred_mode): Likewise.
 +      (grub_video_vbe_setup): When the mode is "auto", try to get the
 +      preferred mode from VBE, and use the largest mode that is no larger
 +      than the preferred mode (some BIOSes expose a preferred mode that is
 +      not in their mode list!).  If this fails, fall back to 640x480 as a
 +      safe conservative choice.
 +      (grub_video_vbe_get_edid): New function.
 +      (grub_video_vbe_adapter): Add get_edid.
 +      * include/grub/video.h (struct grub_vbe_edid_info): New structure.
 +      (struct grub_video_adapter): Add get_edid.
 +      (grub_video_edid_checksum): Add prototype.
 +      (grub_video_edid_preferred_mode): Likewise.
 +      * include/grub/i386/pc/vbe.h (struct grub_vbe_flat_panel_info): New
 +      structure.
 +
 +      * grub-core/commands/videoinfo.c (print_edid): New function.
 +      (grub_cmd_videoinfo): Print EDID if available.
 +
 +      * util/grub.d/00_header.in (GRUB_GFXMODE): Default to "auto".  This
 +      is more appropriate on a wider range of platforms than 640x480.
 +      * docs/grub.texi (Simple configuration): Update GRUB_GFXMODE
 +      documentation.
 +
 +2011-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Recognize ESP mounted at /boot/EFI.
 +
 +2011-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES.in: Regenerate.
 +
 +2011-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name): Fix
 +      incorrect memory usage.
 +
 +2011-07-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Source grub-mkconfig_lib.
 +
 +2011-07-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Remove getroot.c from core on emu platform.
 +
 +      * grub-core/Makefile.core.def (kernel): Remove kern/emu/getroot.c and
 +      kern/emu/raid.c.
 +      * grub-core/kern/emu/main.c (main): Don't try to guess root device. It's
 +      useless.
 +      * grub-core/kern/emu/misc.c (get_win32_path): Moved from here...
 +      * util/getroot.c (get_win32_path): ... here.
 +      * grub-core/kern/emu/misc.c (fini_libzfs): Moved from here...
 +      * util/getroot.c (fini_libzfs): ... here.
 +      * grub-core/kern/emu/misc.c (grub_get_libzfs_handle): Moved from here...
 +      * util/getroot.c (grub_get_libzfs_handle): ... here.
 +      * grub-core/kern/emu/misc.c (grub_find_zpool_from_dir):
 +      Moved from here...
 +      * util/getroot.c (grub_find_zpool_from_dir): ... here.
 +      * grub-core/kern/emu/misc.c
 +      (grub_make_system_path_relative_to_its_root): Moved from here...
 +      * util/getroot.c (grub_make_system_path_relative_to_its_root): ... here.
 +      * grub-core/kern/emu/getroot.c: Moved from here ...
 +      * util/getroot.c: ... here. All users updated.
 +      * grub-core/kern/emu/raid.c: Moved from here ...
 +      * util/raid.c: ... here. All users updated.
 +
 +2011-07-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES.in: Regenerate.
 +
 +2011-07-07  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix compilation on GNU/Linux.
 +
 +      * grub-core/kern/emu/getroot.c (grub_util_pull_device) [!FreeBSD]:
 +      Disable geli.
 +      (grub_util_get_grub_dev) [!FreeBSD]: Likewise.
 +      (grub_util_pull_device) [HAVE_DEVICE_MAPPER]: Fix const and func name.
 +      * grub-core/disk/cryptodisk.c (grub_cryptodisk_open): Fix proto.
 +
 +2011-07-07  Vladimir Serbinenko  <phcoder@gmail.com>
 +2011-07-07  Michael Gorven  <michael@gorven.za.net>
 +2011-07-07  Clemens Fruhwirth <clemens@endorphin.org>
 +
 +      LUKS and GELI support.
 +
 +      * Makefile.util.def (libgrubkern.a): Add grub-core/lib/crypto.c,
 +      grub-core/disk/luks.c, grub-core/disk/geli.c,
 +      grub-core/disk/cryptodisk.c, grub-core/disk/AFSplitter.c,
 +      grub-core/lib/pbkdf2.c, grub-core/commands/extcmd.c,
 +      grub-core/lib/arg.c.
 +      (libgrubmods.a): Remove gcrypts cflags and cppflags.
 +      Remove grub-core/commands/extcmd.c, grub-core/lib/arg.c,
 +      grub-core/lib/crypto.c, grub-core/lib/libgcrypt-grub/cipher/sha512.c,
 +      grub-core/lib/libgcrypt-grub/cipher/crc.c and grub-core/lib/pbkdf2.c.
 +      (grub-bin2h): Add libgcry.a.
 +      (grub-mkimage): Likewise.
 +      (grub-mkrelpath): Likewise.
 +      (grub-script-check): Likewise.
 +      (grub-editenv): Likewise.
 +      (grub-mkpasswd-pbkdf2): Likewise.
 +      (grub-pe2elf): Likewise.
 +      (grub-fstest): Likewise.
 +      (grub-mkfont): Likewise.
 +      (grub-mkdevicemap): Likewise.
 +      (grub-probe): Likewise.
 +      (grub-ofpath): Likewise.
 +      (grub-mklayout): Likewise.
 +      (example_unit_test): Likewise.
 +      (grub-menulst2cfg): Likewise.
 +      * autogen.sh (UTIL_DEFS): Add Makefile.utilgcry.def.
 +      * grub-core/Makefile.core.def (cryptodisk): New module.
 +      (luks): Likewise.
 +      (geli): Likewise.
 +      * grub-core/disk/AFSplitter.c: New file.
 +      * grub-core/disk/cryptodisk.c: Likewise.
 +      * grub-core/disk/geli.c: Likewise.
 +      * grub-core/disk/luks.c: Likewise.
 +      * grub-core/kern/emu/getroot.c (get_dm_uuid): New function based on
 +      grub_util_is_lvm.
 +      (grub_util_get_dm_abstraction): New function.
 +      (grub_util_follow_gpart_up): Likewise.
 +      (grub_util_get_geom_abstraction): Likewise.
 +      (grub_util_get_dev_abstraction): Use new functions.
 +      (grub_util_pull_device): Pull GELI and LUKS.
 +      (grub_util_get_grub_dev): Handle LUKS and GELI.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors): New function.
 +      (grub_util_biosdisk_open): Use grub_util_get_fd_sectors.
 +      (follow_geom_up): Removed.
 +      (grub_util_fd_seek): New function.
 +      (open_device): Use grub_util_fd_seek.
 +      (nread): Rename to ..
 +      (grub_util_fd_read): ... this. All users updated.
 +      * grub-core/lib/crypto.c (grub_crypto_ecb_decrypt): A better prototype.
 +      (grub_crypto_cbc_decrypt): Likewise.
 +      (grub_crypto_hmac_write): Likewise.
 +      (grub_crypto_hmac_buffer): Likewise.
 +      (grub_password_get): Extend to util.
 +      * include/grub/crypto.h (gcry_cipher_spec) [GRUB_UTIL]:
 +      New member modname.
 +      (gcry_md_spec) [GRUB_UTIL]: Likewise.
 +      * include/grub/cryptodisk.h: New file.
 +      * include/grub/disk.h (grub_disk_dev_id): Rename LUKS to CRYPTODISK.
 +      * include/grub/emu/getroot.h (grub_dev_abstraction_types): Add
 +      LUKS and GELI.
 +      (grub_util_follow_gpart_up): New proto.
 +      * include/grub/emu/hostdisk.h (grub_util_fd_seek): Likewise.
 +      (grub_util_fd_read): Likewise.
 +      (grub_cryptodisk_cheat_mount): Likewise.
 +      (grub_util_cryptodisk_print_uuid): Likewise.
 +      (grub_util_get_fd_sectors): Likewise.
 +      * util/grub-fstest.c (mount_crypt): New var.
 +      (fstest): Mount crypto if requested.
 +      (options): New option -C.
 +      (argp_parser): Parse -C.
 +      (main): Init and fini gcry.
 +      * util/grub-install.in: Support cryptodisk install.
 +      * util/grub-mkconfig.in: Export GRUB_ENABLE_CRYPTODISK.
 +      * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Support
 +      cryptodisk.
 +      (prepare_grub_to_access_device): Likewise.
 +      * util/grub-mkpasswd-pbkdf2.c (main): Use grub_password_get.
 +      * util/grub-probe.c (probe_partmap): Support cryptodisk UUID probe.
 +      (probe_cryptodisk_uuid): New function.
 +      (probe_abstraction): Likewise.
 +      (probe): Use new functions.
 +      * util/import_gcry.py: Create Makefile.utilgcry.def.
 +      Add modname member.
 +
 +2011-07-07  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Lazy device scanning.
 +
 +      * Makefile.util.def (libgrubkern.a): Add grub-core/kern/emu/raid.c.
 +      (grub-setup): Remove util/raid.c.
 +      * grub-core/Makefile.core.def (kernel): Add kern/emu/raid.c on emu.
 +      * grub-core/disk/lvm.c (scan_depth): New variable.
 +      (grub_lvm_iterate): Rescan if necessary.
 +      (find_lv): New function based on grub_lvm_open.
 +      (grub_lvm_open): Use find_lv. Rescan on error.
 +      (is_node_readable): New function.
 +      (is_lv_readable): Likewise.
 +      (grub_lvm_scan_device): Skip already found disks.
 +      (do_lvm_scan): New function. Move grub_lvm_scan_device inside of it.
 +      Stop if searched device is found and readable.
 +      * grub-core/disk/raid.c (inscnt): New variable.
 +      (scan_depth): Likewise.
 +      (scan_devices): New function based on grub_raid_register. Abort if
 +      looked for device is found.
 +      (grub_raid_iterate): Rescan if needed.
 +      (find_array): NEw function based on -grub_raid_open.
 +      (grub_raid_open): Use find_array and rescan.
 +      (insert_array): Set became_readable_at.
 +      * grub-core/kern/disk.c (grub_disk_dev_iterate): Iterate though "pull.
 +      * grub-core/kern/emu/getroot.c (grub_util_open_dm) [HAVE_DEVICE_MAPPER]:
 +      New function.
 +      (grub_util_is_lvm) [HAVE_DEVICE_MAPPER]: Use grub_util_open_dm.
 +      (grub_util_pull_device): New function.
 +      (grub_util_get_grub_dev): Call grub_util_pull_device.
 +      * util/raid.c: Moved to ..
 +      * grub-core/kern/emu/raid.c: ... here.
 +      (grub_util_raid_getmembers): New parameter "bootable".
 +      All users updated. Support 1.x.
 +      * include/grub/ata.h (grub_ata_dev): Change iterate prototype.
 +      All users updated.
 +      * include/grub/disk.h (grub_disk_pull_t): New enum.
 +      (grub_disk_dev): Change iterate prototype.
 +      All users updated.
 +      * include/grub/emu/getroot.h (grub_util_raid_getmembers) [__linux__]:
 +      New proto.
 +      * include/grub/emu/hostdisk.h (grub_util_pull_device): Likewise.
 +      * include/grub/lvm.h (grub_lvm_lv): New members fullname and compatname.
 +      * include/grub/raid.h (grub_raid_array): New member became_readable_at.
 +      * include/grub/scsi.h (grub_scsi_dev): Change iterate prototype.
 +      All users updated.
 +      * include/grub/util/raid.h: Removed.
 +
 +2011-07-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * po/POTFILES.in: Regenerate.
 +
 +2011-07-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Unify sparc init with other ieee1275.
 +
 +      * grub-core/Makefile.core.def (kernel): Use kern/ieee1275/init.c
 +      instead of kern/sparc64/ieee1275/init.c.
 +      * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options)
 +      [__sparc__]: Set GRUB_IEEE1275_FLAG_NO_PARTITION_0.
 +      * grub-core/kern/ieee1275/init.c [__sparc__]: Include
 +      grub/machine/kernel.h.
 +      (grub_ieee1275_original_stack) [__sparc__]: New variable.
 +      (grub_claim_heap) [__sparc__]: Use sparc version.
 +      (grub_machine_init): Moved args parsing to
 +      (grub_parse_cmdline): ...this.
 +      * grub-core/kern/sparc64/ieee1275/init.c: Removed.
 +      * include/grub/offsets.h (GRUB_KERNEL_SPARC64_IEEE1275_MOD_GAP):
 +      New definition.
 +      (GRUB_KERNEL_SPARC64_IEEE1275_MOD_ALIGN): Likewise.
 +
 +      Move BOOTP to separate file.
 +
 +      * grub-core/Makefile.core.def (net): Add net/bootp.c.
 +      * grub-core/net/net.c: Move all BOOTP functions to
 +      * grub-core/net/bootp.c: ... here.
 +
 +      Use frame interface on PXE.
 +
 +      * grub-core/Makefile.core.def (pxecmd): Removed.
 +      (pxe): Use net/drivers/i386/pc/pxe.c rather than net/i386/pc/pxe.c.
 +      * grub-core/commands/i386/pc/pxecmd.c: Removed.
 +      * grub-core/i386/pc/pxe.c: Moved from here ...
 +      * grub-core/net/i386/pc/pxe.c: ... here. Rewritten.
 +      * grub-core/net/net.c (grub_net_open_real): Handle old pxe syntax.
 +      * include/grub/i386/pc/pxe.h (grub_pxe_unload): Removed.
 +
 +      EFI network support.
 +
 +      * grub-core/Makefile.core.def (efinet): New module.
 +      * grub-core/disk/efi/efidisk.c (compare_device_paths): Moved from
 +      here...
 +      * grub-core/kern/efi/efi.c (grub_efi_compare_device_paths): ... here.
 +      All users updated.
 +      * grub-core/kern/efi/init.c (grub_efi_net_config): New variable.
 +      (grub_machine_get_bootlocation): Call grub_efi_net_config if needed.
 +      * grub-core/kern/x86_64/efi/callwrap.S (efi_wrap_7): New function.
 +      * grub-core/net/drivers/efi/efinet.c: New file.
 +      * include/grub/efi/efi.h (grub_efi_compare_device_paths): New proto.
 +      (grub_efi_net_config): New extern var.
 +
 +      Various cleanups and bugfixes.
 +
 +      * grub-core/disk/efi/efidisk.c (grub_efidisk_open): Fix off-by-one
 +      error.
 +      (grub_efidisk_get_device_name): Unify similar codepaths. Accept whole
 +      disk declared as partition.
 +      * grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_open): Fix memory
 +      leak on failure.
 +      * grub-core/kern/dl.c (grub_dl_load_file): Fix memory leak.
 +      * grub-core/kern/mm.c (grub_debug_malloc): Don't use unsupported %zx.
 +      (grub_debug_zalloc): Likewise.
 +      (grub_debug_realloc): Likewise.
 +      (grub_debug_memalign): Likewise.
 +      * grub-core/net/arp.c (grub_net_arp_receive): IPv4 is 4-byte wide.
 +      Check that target is IPv4.
 +      * grub-core/net/drivers/ieee1275/ofnet.c (grub_ofnet_findcards): Use
 +      local-mac-address as fallback.
 +      * grub-core/net/ethernet.c (grub_net_recv_ethernet_packet): Prevent
 +      memory leak.
 +      * grub-core/net/ip.c (ipchksum): Rename to ...
 +      (grub_net_ip_chksum): ... this. All users updated.
 +      (grub_net_recv_ip_packets): Special handling for DHCP.
 +      * util/grub-mkimage.c (generate_image): Zero-out aout header.
 +
 +      Unify prefix handling
 +
 +      * grub-core/kern/efi/init.c (grub_efi_set_prefix): Revamped into ...
 +      (grub_machine_get_bootlocation): ... this.
 +      * grub-core/kern/emu/main.c (grub_machine_set_prefix): Revamped into ...
 +      (grub_machine_get_bootlocation): ... this.
 +      (grub_prefix): New variable.
 +      (prefix): Removed.
 +      (root_dev): New variable.
 +      (dir): Likewise.
 +      (main): Use new variables.
 +      * grub-core/kern/i386/coreboot/init.c (grub_machine_set_prefix):
 +      Revamped into ...
 +      (grub_machine_get_bootlocation): ... this.
 +      * grub-core/kern/i386/efi/init.c (grub_machine_set_prefix): Removed.
 +      * grub-core/kern/i386/pc/init.c (make_install_device): Revamped into ...
 +      (grub_machine_get_bootlocation): ... this.
 +      (grub_machine_set_prefix): Removed.
 +      * grub-core/kern/ia64/efi/init.c (grub_machine_set_prefix): Removed.
 +      * grub-core/kern/ieee1275/init.c (grub_machine_set_prefix):
 +      Revamped into ...
 +      (grub_machine_get_bootlocation): ... this.
 +      * grub-core/kern/main.c (grub_set_root_dev): Revamped into ...
 +      (grub_set_prefix_and_root): ... this. All users updated.
 +      * grub-core/kern/mips/init.c (grub_machine_set_prefix):
 +      Revamped into ...
 +      (grub_machine_get_bootlocation): ... this.
 +      * include/grub/kernel.h (grub_machine_set_prefix): Removed.
 +      (grub_machine_get_bootlocation): New proto.
 +      * include/grub/i386/pc/kernel.h (grub_pc_net_config): New var.
 +
 +      Less intrusive and more reliable seek on network implementation.
 +
 +      * grub-core/kern/file.c (grub_file_net_seek): Removed.
 +      (grub_file_seek): Don't call grub_file_net_seek.
 +      * grub-core/net/net.c (grub_net_fs_read): Renamed to ...
 +      (grub_net_fs_read_real): .. this.
 +      (grub_net_seek_real): Use net->offset.
 +      (grub_net_fs_read): Seek if necessary.
 +
 +      Unify IEEE1275 netwotk config with the other platforms.
 +
 +      * grub-core/kern/ieee1275/init.c (grub_ieee1275_net_config):
 +      New variable.
 +      (grub_machine_get_bootlocation): Support network.
 +      * grub-core/kern/ieee1275/openfw.c (grub_ieee1275_parse_args):
 +      Support type and device parsing.
 +      (grub_ieee1275_get_device_type): New function.
 +      * grub-core/net/drivers/ieee1275/ofnet.c (grub_getbootp_real): Revamped
 +      into ...
 +      (grub_ieee1275_net_config_real): ... this.
 +      (grub_ofnet_probecards): Removed.
 +      * grub-core/Makefile.am (KERNEL_HEADER_FILES): Remove ofnet.h.
 +      * include/grub/ieee1275/ofnet.h: Removed.
 +      * include/grub/ieee1275/ieee1275.h (grub_ieee1275_net_config): NEw
 +      extern var.
 +      (grub_ieee1275_get_device_type): New function.
 +
 +      Unify network device closing across platforms and make more robust.
 +
 +      * grub-core/kern/ieee1275/init.c (grub_machine_fini): Don't call
 +      grub_grubnet_fini.
 +      * grub-core/net/ethernet.c (send_ethernet_packet): Open card if it isn't
 +      already.
 +      * grub-core/net/net.c (grub_net_network_level_interface_register):
 +      Update num_ifaces.
 +      (grub_net_card_unregister): Close all interfaces.
 +      (receive_packets): Don't poll if no iterfaces are registered.
 +      Open if necessary.
 +      (grub_net_fini_hw): New function.
 +      (grub_net_restore_hw): Likewise.
 +      (fini_hnd): New variable.
 +      (GRUB_MOD_INIT): Register preboot hook.
 +      (GRUB_MOD_FINI): Run and unregister preboot hook.
 +
 +      Poll network cards when idle.
 +
 +      * grub-core/kern/term.c (grub_net_poll_cards_idle): New variable.
 +      (grub_checkkey): Call grub_net_poll_cards_idle if it's not NULL.
 +      * grub-core/net/net.c (receive_packets): Save last poll time.
 +      (grub_net_poll_cards_idle_real): New function.
 +      (GRUB_MOD_INIT): Register grub_net_poll_cards_idle.
 +      (GRUB_MOD_FINI): Unregister grub_net_poll_cards_idle.
 +      * include/grub/kernel.h (grub_poll_cards_idle): New extern variable.
 +
 +      Rename ofnet interfaces.
 +
 +      * grub-core/net/drivers/ieee1275/ofnet.c (find_alias): New function.
 +      (grub_ofnet_findcards): Use ofnet_%s names.
 +
 +      * util/grub-mknetdir.in: Support for EFI and IEEE1275.
 +
 +      Cleanup socket opening.
 +
 +      * grub-core/net/net.c (grub_net_fs_open): Rewritten.
 +      (grub_net_fs_close): Likewise.
 +      (grub_net_fs_read_real): Use eof member.
 +      * include/grub/net/udp.h (+grub_net_udp_open): New proto.
 +      (+grub_net_udp_close): New inline function.
 +
 +      * include/grub/net/tftp.h: Moved to the top of ...
 +      * grub-core/net/tftp.c: ... here.
 +      * include/grub/net/ip.h: Moved mostly to the top of ...
 +      * grub-core/net/ip.c: ... here.
 +      * include/grub/net/ethernet.h: Moved mostly to the top of ...
 +      * grub-core/net/ethernet.c: ... here.
 +
 +      * grub-core/kern/device.c (grub_device_close): Free device->net->server.
 +
 +      * grub-core/commands/probe.c (grub_cmd_probe): Use protocol name for
 +      FS name.
 +
 +      * include/grub/net/ip.h (ipv4_ini): Removed.
 +      (ipv4_fini): Likewise.
 +
 +      * include/grub/net/ip.h (grub_net_recv_ip_packets): New proto.
 +      (grub_net_send_ip_packets): Likewise.
 +
 +2011-07-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/i386/qemu/mmap.c (grub_machine_mmap_init): Use new
 +      grub_read_cmos prototype.
 +
 +2011-07-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      VGA text support in qemu-mips
 +
 +      * grub-core/Makefile.core.def (kernel): Add term/i386/pc/vga_text.c,
 +      term/i386/vga_common.c and kern/vga_init.c on qemu-mips.
 +      * grub-core/kern/mips/qemu_mips/init.c (grub_machine_init): Init vga
 +      text.
 +      * grub-core/kern/i386/qemu/init.c: Renamed to ...
 +      * grub-core/kern/vga_init.c: ... this.
 +      * grub-core/kern/vga_init.c (VGA_ADDR) [__mips__]: Adjust.
 +      (grub_qemu_init_cirrus) [__mips__]: Skip PCI and adjust the I/O base.
 +      * grub-core/term/i386/pc/vga_text.c (VGA_TEXT_SCREEN) [__mips__]:
 +      Adjust.
 +      * include/grub/vga.h [GRUB_MACHINE_MIPS_QEMU_MIPS]: Declare
 +      GRUB_MACHINE_PCI_IO_BASE.
 +
 +2011-07-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      MIPS qemu flash support.
 +
 +      * grub-core/boot/mips/startup_raw.S [GRUB_MACHINE_MIPS_QEMU_MIPS]: Check
 +      magic.
 +      * grub-core/kern/mips/qemu_mips/init.c (probe_mem): New function.
 +      (grub_machine_init): Probe memory if its size isn't known.
 +      * util/grub-mkimage.c (image_targets): Add flash targets.
 +      (generate_image): Handle flash targets.
 +
 +2011-07-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      MIPS qemu at_keyboard support.
 +
 +      * gentpl.py (videoinkernel): Add qemu-mips.
 +      * grub-core/Makefile.am (KERNEL_HEADER_FILES): Add necessary headers.
 +      * grub-core/Makefile.core.def (kernel): Add at_keyboard and layout.
 +      * grub-core/kern/mips/qemu_mips/init.c (grub_machine_init): Init new
 +      modules.
 +      * grub-core/term/at_keyboard.c (grub_keyboard_controller_init)
 +      [GRUB_MACHINE_MIPS_QEMU_MIPS]: Don't consider original set.
 +      * grub-core/term/serial.c (grub_serial_register)
 +      [GRUB_MACHINE_MIPS_QEMU_MIPS]: Make com0 explicitly active.
 +
 +2011-07-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      CMOS support on sparc.
 +
 +      * gentpl.py (cmos): Add powerpc and sparc.
 +      * grub-core/Makefile.core.def (datetime): Add lib/ieee1275/cmos.c on
 +      powerpc and sparc.
 +      * grub-core/lib/cmos_datetime.c (grub_get_datetime)
 +      [__powerpc__ || __sparc__]: Rename to grub_get_datetime_cmos.
 +      (grub_set_datetime) [__powerpc__ || __sparc__]: Likewise to
 +      grub_set_datetime_cmos.
 +      * grub-core/lib/ieee1275/cmos.c: New file.
 +      * grub-core/lib/ieee1275/datetime.c (no_ieee1275_rtc): New vaiable.
 +      (find_rtc): Set no_ieee1275_rtc on error.
 +      (grub_get_datetime): Call grub_get_datetime_cmos on error.
 +      (grub_set_datetime): Call grub_set_datetime_cmos on error.
 +      * include/grub/cmos.h (grub_cmos_read): Return grub_err_t since it may
 +      fail. Move value to argument. All users updated
 +      (grub_cmos_write): Likewise.
 +      (grub_cmos_read) [__powerpc__ || __sparc__]: Rewritten.
 +      (grub_cmos_write) [__powerpc__ || __sparc__]: Likewise.
 +      * include/grub/datetime.h [__powerpc__ || __sparc__]: Declare
 +      grub_get_datetime_cmos and grub_set_datetime_cmos.
 +
 +2011-07-02  Grégoire Sutre  <gregoire.sutre@gmail.com>
 +
 +      * util/grub-mkconfig.in: Use @PACKAGE@ instead of hardcoded name when
 +      sourcing grub-mkconfig_lib.
 +      * util/update-grub_lib.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.
 +
 +2011-06-28  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/term/gfxterm.c (grub_virtual_screen_setup): Use
 +      default_bg_color rather than black.
 +      (grub_gfxterm_fullscreen): Likewise.
 +      (grub_gfxterm_background_color_cmd): Save new background color in
 +      default_bg_color.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def (chain): Fix coreboot filename.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/pata.c (grub_pata_initialize) [QEMU_MIPS]: Fix a
 +      mismerge.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Chainloading on coreboot support.
 +
 +      * grub-core/Makefile.core.def (chain): Add coreboot.
 +      * grub-core/loader/i386/coreboot/chainloader.c: New file.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/bsd.c (grub_bsd_load): Handle relocator failure
 +      if it happens.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Implement time command.
 +
 +      * grub-core/Makefile.core.def (time): New module.
 +      * grub-core/commands/time.c: New file.
 +      * grub-core/script/parser.y: Remove "time" keyword.
 +      * grub-core/script/yylex.l: Likewise.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/loader.h (grub_loader_unregister_preboot_hook): Export.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/relocator.c (malloc_in_range): Fix a memory corruption
 +      when handling leftovers.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/ieee1275/grub-ofpathname.c (main): Handle --help and --version
 +      so that help2man doesn't fail.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/drivers/ieee1275/ofnet.c (send_card_buffer) Use right
 +      type in pointers on sparc64.
 +      (get_card_packet): Likewise.
 +
 +2011-06-27  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/commands/videoinfo.c (hook): Indicate current video mode
 +      with `*'.
 +      (grub_cmd_videoinfo): Fetch current video mode.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/scsi.c (grub_scsi_read): Limit SCSI reads to 32K
 +      because of underlying system restrictions.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in: Rename "ata" to "pata" and add ahci when
 +      necessary.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Coreboot video support.
 +
 +      * grub-core/Makefile.core.def (vga): Extend to coreboot and multiboot.
 +      (vbe): Likewise.
 +      * grub-core/kern/i386/coreboot/startup.S: Include int.S.
 +      * grub-core/kern/i386/pc/startup.S (grub_bios_interrupt): Moved from
 +      here ...
 +      * grub-core/kern/i386/int.S: ... here.
 +      * grub-core/video/i386/pc/vbe.c: Updated includes.
 +      * grub-core/video/i386/pc/vga.c: Likewise.
 +      * include/grub/i386/coreboot/memory.h
 +      (GRUB_MEMORY_MACHINE_SCRATCH_ADDR): New definition.
 +      (GRUB_MEMORY_MACHINE_SCRATCH_SEG): Likewise.
 +      (GRUB_MEMORY_MACHINE_SCRATCH_SIZE): Likewise.
 +      * include/grub/i386/pc/int.h (GRUB_CPU_INT_FLAGS_DEFAULT) [!PCBIOS]:
 +      Disable interrupts.
 +      * include/grub/i386/pc/vga.h: Removed. All users updated.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/ahci.c (grub_ahci_readwrite_real): Use proper
 +      definitions for dprintf.
 +      * grub-core/disk/pata.c (grub_pata_readwrite): Likewise.
 +
 +2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/drivers/ieee1275/ofnet.c (send_card_buffer): Fix
 +      prototype.
 +      (get_card_packet): Likewise.
 +
 +2011-06-26  Yves Blusseau  <blusseau@zetam.org>
 +
 +      Display the path of the file when file is not found
 +
 +      * grub-core/fs/fat.c: Display the filename when file is not found.
 +      * grub-core/fs/fshelp.c: Likewise.
 +      * grub-core/fs/hfs.c: Likewise.
 +      * grub-core/fs/jfs.c: Likewise.
 +      * grub-core/fs/minix.c: Likewise.
 +      * grub-core/fs/ufs.c: Likewise.
 +      * grub-core/fs/btrfs.c: Likewise.
 +      * grub-core/commands/i386/pc/play.c: Likewise.
 +
 +2011-06-26  Szymon Janc <szymon@janc.net.pl>
 +
 +      * grub-core/commands/cmp.c (grub_cmd_cmp): Remove unnecessary NULL
 +      pointer checks before calling grub_free().
 +      * grub-core/commands/wildcard.c (match_devices): Likewise.
 +      * grub-core/commands/wildcard.c (match_files): Likewise.
 +      * grub-core/fs/cpio.c (grub_cpio_dir): Likewise.
 +      * grub-core/fs/cpio.c (grub_cpio_open): Likewise.
 +      * grub-core/fs/udf.c (grub_udf_read_block): Likewise.
 +      * grub-core/fs/xfs.c (grub_xfs_read_block): Likewise.
 +      * grub-core/loader/efi/chainloader.c (grub_cmd_chainloader): Likewise.
 +      * grub-core/normal/cmdline.c (grub_cmdline_get): Likewise.
 +      * grub-core/script/yylex.l (grub_lexer_unput): Likewise.
 +      * grub-core/video/readers/jpeg.c (grub_video_reader_jpeg): Likewise.
 +      * grub-core/video/readers/png.c (grub_png_output_byte): Likewise.
 +
 +2011-06-25  Patrick <p55@mailinator.com>
 +
 +      * grub-core/kern/main.c (grub_load_normal_mode): Correct the comment.
 +
 +2011-06-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/net/i386/pc/pxe.c (grub_pxe_recv): Fix declaration.
 +      (grub_pxe_send): Likewise.
 +      (GRUB_MOD_INIT): Fix types.
 +
 +2011-06-24  Szymon Janc <szymon@janc.net.pl>
 +
 +      * grub-core/io/xzio.c: Fix code style issues
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +2011-06-24  Manoel Rebelo Abranches <mrabran@gmail.com>
 +
 +      Network infrastructure.
 +      The ARP protocol was made by Paulo Pinatti <ppinatti@br.ibm.com>
 +
 +      * include/grub/net/arp.h: New file.
 +      * include/grub/net/device.h: Likewise.
 +      * include/grub/net/ethernet.h: Likewise.
 +      * include/grub/net/ip.h: Likewise.
 +      * include/grub/net/netbuff.h: Likewise.
 +      * include/grub/net/tftp.h: Likewise.
 +      * include/grub/net/udp.h: Likewise.
 +      * include/grub/ieee1275/ofnet.h: Likewise.
 +      * include/grub/emu/export.h: Likewise.
 +      * include/grub/net.h: Likewise.
 +      * grub-core/net/arp.c: Likewise.
 +      * grub-core/net/ethernet.c: Likewise.
 +      * grub-core/net/ip.c: Likewise.
 +      * grub-core/net/udp.c: Likewise.
 +      * grub-core/net/tftp.c: Likewise.
 +      * grub-core/net/netbuff.c: Likewise.
 +      * grub-core/net/net.c: Likewise.
 +      * grub-core/net/drivers/emu/emunet.c: Likewise.
 +      * grub-core/net/drivers/ieee1275/ofnet.c: Likewise.
 +      * grub-core/Makefile.am (KERNEL_HEADER_FILES): Add net.h, ofnet.h and
 +      export.h.
 +      * grub-core/Makefile.core.def (net): New module.
 +      (tftp): Likewise.
 +      (ofnet): Likewise.
 +      (emunet): Likewise.
 +      * grub-core/commands/ls.c (grub_ls_list_devices) [!GRUB_UTIL]: List
 +      network protocols.
 +      * grub-core/kern/device.c (grub_net_open) : New variable.
 +      (grub_device_open): Handle network device.
 +      (grub_device_close): Likewise.
 +      * grub-core/kern/file.c (grub_file_net_seek) : New variable.
 +      (grub_grubnet_fini): Likewise.
 +      (grub_file_seek): Seek in network device.
 +      * grub-core/kern/fs.c (grub_fs_probe): Handle network devices.
 +      * grub-core/kern/ieee1275/init.c (grub_machine_set_prefix): Handle
 +      network root.
 +      (grub_machine_fini): Call grub_grubnet_fini.
 +      * grub-core/kern/ieee1275/openfw.c (grub_ieee1275_parse_args): Handle
 +      network.
 +      (grub_ieee1275_get_aliasdevname): New function.
 +      * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_get_mbi_size):
 +      Add unofficial Solaris network info.
 +      (grub_multiboot_make_mbi): Likewise.
 +      * grub-core/fs/i386/pc/pxe.c: Moved from here ...
 +      * grub-core/net/i386/pc/pxe.c: ...here. Adapted for new design.
 +      * include/grub/device.h (grub_fs): Removed.
 +      * include/grub/err.h (grub_err_t): Add network-related values.
 +      * include/grub/i386/pc/pxe.h: Removed bootp parts.
 +      * include/grub/ieee1275/ieee1275.h (grub_ofnetcard_data): New struct.
 +      (grub_ieee1275_get_aliasdevname): New proto.
 +      * include/grub/net.h: Rewritten.
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/raid.c (insert_array): Ensure uniqueness of readable
 +      names.
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/wildcard.c (match_files): Add a useful dprintf.
 +      (wildcard_expand): Don't stop on nonregexp parts after regexp ones since
 +      it truncates the output.
 +      Reported by: Ximin Luo.
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/iso9660.c (grub_iso9660_iterate_dir): Skip . and ..
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Load
 +      partmap before abstraction.
 +
 +2011-06-24  Alexander Kurtz <kurtz.alex@googlemail.com>
 +
 +      * util/grub-mkconfig_lib.in: Add missing quotes.
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/getroot.c (grub_guess_root_device): Revert to
 +      old method if mountinfo would return /dev/root and /dev/root doesn't
 +      exist.
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      ZFS zlib support
 +
 +      * grub-core/fs/zfs/zfs.c (zlib_decompress): New function.
 +      (decomp_table): Add zlib entries.
 +      (zio_read): USe 8 bits for compression function rather than 3.
 +      * include/grub/zfs/zio.h (zio_compress): Add zlib values.
 +
 +2011-06-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/ahci.c: Add missing license statements.
 +      * grub-core/fs/romfs.c: Likewise.
 +      * grub-core/lib/ia64/setjmp.S: Likewise.
 +      * grub-core/loader/i386/pc/freedos.c: Likewise.
 +      * grub-core/loader/ia64/efi/linux.c: Likewise.
 +      * grub-core/video/colors.c: Likewise.
 +      * include/grub/dl.h (GRUB_MOD_DEP): New macro.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      AHCI support.
 +
 +      * grub-core/Makefile.core.def (ata_pthru): Removed.
 +      (ahci): New module.
 +      (pata): Likewise.
 +      * grub-core/bus/usb/ohci.c (GRUB_MOD_FINI): Unregister preboot hook
 +      on unload.
 +      * grub-core/commands/hdparm.c (grub_hdparm_do_ata_cmd): Use ATA
 +      readwrite.
 +      (grub_hdparm_do_check_powermode_cmd): Likewise.
 +      (grub_hdparm_do_smart_cmd): Likewise.
 +      (grub_hdparm_set_val_cmd): Likewise.
 +      (grub_cmd_hdparm): Likewise. Check thta we have an ATA device.
 +      * grub-core/disk/ahci.c: New file.
 +      * grub-core/disk/ata.c: Factor out the low-level part into ...
 +      * grub-core/disk/pata.c: ... here.
 +      * grub-core/disk/ata_pthru.c: Contents moved to ...
 +      * grub-core/disk/pata.c: ... here.
 +      * grub-core/disk/scsi.c (grub_scsi_names): New array.
 +      (grub_scsi_iterate): Use grub_scsi_names.
 +      (grub_scsi_open): Likewise.
 +      * grub-core/kern/disk.c (grub_disk_ata_pass_through): Removed.
 +      * include/grub/ata.h (grub_ata_commands): Add DMA commands.
 +      (grub_ata_regs_t): New struct.
 +      (grub_disk_ata_pass_through_parms): Likewise.
 +      (grub_ata_device): Renamed to ...
 +      (grub_ata): ... this.
 +      (grub_ata_dev): New struct.
 +      Removed all low-level inline functions.
 +      * include/grub/scsi.h: Add PATA and AHCI subsystems.
 +      (grub_scsi_dev): Removed 'name' and 'id'. Added 'id' parameter to
 +      iterate hooks and open. All users updated.
 +      * util/grub-install.in: Handle AHCI disk module.
 +
 +2011-06-23  Szymon Janc <szymon@janc.net.pl>
 +
 +      Add support for DRI and RSTn markers in JPEG files.
 +
 +      * grub-core/video/readers/jpeg.c (JPEG_MARKER_DRI): New define.
 +      (JPEG_MARKER_RST0): Likewise.
 +      (JPEG_MARKER_RST1): Likewise.
 +      (JPEG_MARKER_RST2): Likewise.
 +      (JPEG_MARKER_RST3): Likewise.
 +      (JPEG_MARKER_RST4): Likewise.
 +      (JPEG_MARKER_RST5): Likewise.
 +      (JPEG_MARKER_RST6): Likewise.
 +      (JPEG_MARKER_RST7): Likewise.
 +      (grub_jpeg_data): New fields dri, r1, bitmap_ptr.
 +      (grub_jpeg_decode_dri): New function.
 +      (grub_jpeg_decode_sos): Move image data related part into
 +      grub_jpeg_decode_data function.
 +      (grub_jpeg_decode_data): New function.
 +      (grub_jpeg_reset): New function.
 +      (grub_jpeg_decode_jpeg): Handle new markers.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/ieee1275/ofpath.c (check_sas): Close fd.
 +      (main): Free of_path.
 +      Reported by: David Volgyes <dvolgyes>.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkpasswd-pbkdf2.c (main): Don't double-close.
 +      Reported by: David Volgyes <dvolgyes>.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_floppy): Close
 +      file after stat.
 +      Reported by: David Volgyes <dvolgyes>.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/raid.c (grub_util_raid_getmembers): Close fd before returning.
 +
 +      Reported by: David Volgyes <dvolgyes>.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/reed_solomon.c (rs_recover) [STANDALONE]:
 +      Prevent memory leak.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/reed_solomon.c (rs_recover): Prevent memory leak.
 +      (main): Close file.
 +      Reported by: David Volgyes <dvolgyes>.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/xnu.c (grub_cpu_xnu_fill_devprop): Don't attempt
 +      to continue if allocation is failed.
 +
 +      Reported by: David Volgyes <dvolgyes>.
 +
 +2011-06-23  David Volgyes <dvolgyes>
 +
 +      * grub-core/bus/usb/ohci.c (grub_ohci_pci_iter): Avoid NULL-pointer
 +      dereference.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix spurious warning.
 +
 +      * grub-core/partmap/acorn.c (grub_acorn_boot_block): Make a union.
 +      (acorn_partition_map_find): Use .bin member.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/getroot.c (grub_guess_root_device): Don't accept
 +      /dev/root as a valid device.
 +
 +2011-06-23  Jim Meyering  <meyering@redhat.com>
 +
 +      Avoid NULL deref in grub_device_open.
 +
 +      * grub-core/kern/device.c (grub_device_open): Don't dereference
 +      a NULL pointer upon failed grub_env_get.
 +
 +2011-06-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Support non-512B sectors and agglomerate reads.
 +
 +      * Makefile.util.def (libgrubmods.a): Add grub-core/commands/testload.c.
 +      * grub-core/disk/efi/efidisk.c (grub_efidisk_data): Remove disk_io.
 +      (disk_io_guid): Removed.
 +      (make_devices): Locate solely by BlockIO.
 +      (grub_efidisk_open): Fill log_sector_size and total_sectors.
 +      (grub_efidisk_read): Use read_blocks.
 +      (grub_efidisk_write): Use write_blocks.
 +      * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Fill
 +      log_sector_size.
 +      (get_safe_sectors): Handle non-512B sectors.
 +      (grub_biosdisk_read): Remove special CDROM handling. Handle non-512B
 +      sectors.
 +      (grub_biosdisk_write): Handle non-512B sectors.
 +      * grub-core/disk/scsi.c (grub_scsi_open): Fill log_sector_size.
 +      (grub_scsi_read): Remove special non-512B block handling (now handled
 +      one level up).
 +      * grub-core/kern/disk.c (grub_disk_open): Fill default log_sector_size
 +      and do sanity checks.
 +      (grub_disk_adjust_range): Handle non-512B sectors.
 +      (transform_sector): New function.
 +      (grub_disk_read_small): Likewise.
 +      (grub_disk_read): Rewritten.
 +      (grub_disk_write): Handle non-512B sectors.
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_open): Fill
 +      log_sector_size.
 +      (open_device): Use log_sector_size.
 +      (grub_util_biosdisk_read): Likewise.
 +      (grub_util_biosdisk_write): Likewise.
 +      * grub-core/partmap/msdos.c (grub_partition_msdos_iterate): Handle
 +      non-512B sectors.
 +      (pc_partition_map_embed): Likewise.
 +      * include/grub/disk.h (grub_disk): New field log_sector_size.
 +      (GRUB_DISK_CACHE_SIZE): Redefined from GRUB_DISK_CACHE_BITS.
 +      (GRUB_DISK_CACHE_BITS): Increased to 6.
 +      * util/grub-fstest.c (fstest): New command testload.
 +      (argp_parser): Likewise.
 +
 +2011-06-16  Robert Millan  <rmh@gnu.org>
 +
 +      Detect `ataraid' devices on GNU/kFreeBSD.  Fix for ATA devices using
 +      `ata' driver on kernel of FreeBSD 9.
 +
 +      * util/deviceiter.c [__FreeBSD_kernel__] (get_ada_disk_name)
 +      (get_ataraid_disk_name): New functions.
 +      [__FreeBSD_kernel__] (grub_util_iterate_devices): Scan for ataraid
 +      (/dev/ar[0-9]+) and ada (/dev/ada[0-9]+) devices using
 +      get_ataraid_disk_name() and get_ada_disk_name().
 +
 +2011-06-13  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/man/grub-mklayout.h2m (DESCRIPTION): Add a reference to the
 +      input format.
 +
 +2011-05-29  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Obtaining and Building GRUB): Substitute
 +      `ftp.gnu.org' for `alpha.gnu.org'.
 +
 +2011-05-27  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (linux_find_partition): Handle
 +      partitions under /dev/disk/by-id/.
 +
 +2011-05-27  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (linux_find_partition): Give up
 +      after ten consecutive open failures.  Scanning all the way up to
 +      10000 is excessive and can cause serious performance problems in
 +      some configurations.
 +      Fixes Ubuntu bug #787461.
 +
 +2011-05-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/arc/arcdisk.c (reopen): Close old handle before
 +      opening new one.
 +
 +2011-05-21  Colin Watson  <cjwatson@ubuntu.com>
 +2011-05-21  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Don't stat devices unless we have to.
 +
 +      * grub-core/kern/emu/getroot.c (grub_find_device): Recognize
 +      dir == /dev/mapper.
 +      (grub_guess_root_device): Use already known os_dev if possible.
 +      * grub-core/kern/emu/hostdisk.c
 +      (convert_system_partition_to_system_disk): Scan only in /dev/mapper
 +      if device is known to be a dm one.
 +
 +2011-05-20  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkconfig.in: Export GRUB_CMDLINE_LINUX_XEN_REPLACE and
 +      GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT.
 +      Reported by: Pawel Tecza.
 +
 +2011-05-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def (lsacpi): Fix ia64 mismerge.
 +      (lsefisystab): Likewise.
 +      (lssal): Likewise.
 +      (lsefimmap): Likewise.
 +      (hdparm): Enable on qemu-mips.
 +      (setjmp): Add ia64 nodist.
 +      (serial): Simplify tags.
 +
 +2011-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.util.def (grub-ofpathname): Install manual page.
 +
 +2011-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/fs/squash4.c: Add missing GRUB_MOD_LICENSE.
 +
 +2011-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * .bzrignore: Add grub-core/modinfo.sh and a number of test files.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/usb/usbhub.c (poll_nonroot_hub): Downgrade a printf
 +      into dprintf.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use full 64-bit division.
 +
 +      * grub-core/kern/misc.c (grub_divmod64_full): Renamed to ...
 +      (grub_divmod64): ... this.
 +      * include/grub/misc.h (grub_divmod64): Removed. All users switch to full
 +      version.
 +
 +2011-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-mkrescue.in: Use portable `.' rather than non-portable
 +      `source'.
 +
 +2011-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/genmod.sh.in: Use 'set -e' rather than '#! /bin/sh -e',
 +      to avoid accidents when debugging with 'sh -x'.
 +      * grub-core/gensyminfo.sh.in: Likewise.
 +      * tests/example_scripted_test.in: Likewise.
 +      * tests/grub_cmd_regexp.in: Likewise.
 +      * tests/grub_script_blanklines.in: Likewise.
 +      * tests/grub_script_dollar.in: Likewise.
 +      * tests/grub_script_expansion.in: Likewise.
 +      * tests/grub_script_final_semicolon.in: Likewise.
 +      * tests/partmap_test.in: Likewise.
 +      * tests/util/grub-shell-tester.in: Likewise.
 +      * tests/util/grub-shell.in: Likewise.
 +
 +2011-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Move gfxmenu color handling to video, so that gfxterm can use it
 +      too.
 +
 +      * grub-core/gfxmenu/named_colors.c: Move to ...
 +      * grub-core/video/colors.c: ... here.  Rename
 +      grub_gui_get_named_color to grub_video_get_named_color.
 +      * grub-core/gfxmenu/gui_string_util.c (my_isxdigit): Move to ...
 +      * grub-core/video/colors.c (my_isxdigit): ... here.
 +      * grub-core/gfxmenu/gui_string_util.c (parse_hex_color_component):
 +      Move to ...
 +      * grub-core/video/colors.c (parse_hex_color_component): ... here.
 +      * grub-core/gfxmenu/gui_string_util.c (grub_gui_parse_color): Move
 +      to ...
 +      * grub-core/video/colors.c (grub_video_parse_color): ... here.
 +
 +      * include/grub/gui.h (grub_gui_color_t): Move to ...
 +      * include/grub/video.h (grub_video_rgba_color_t): ... here.
 +      * include/grub/gui.h (grub_gui_color_rgb): Move to ...
 +      * include/grub/video.h (grub_video_rgba_color_rgb): ... here.
 +      * include/grub/gui.h (grub_gui_map_color): Move to ...
 +      * include/grub/video.h (grub_video_map_rgba_color): ... here.
 +      * include/grub/gui_string_util.h (grub_gui_get_named_color): Move
 +      to ...
 +      * include/grub/video.h (grub_video_get_named_color): ... here.
 +      * include/grub/gui_string_util.h (grub_gui_parse_color): Move to ...
 +      * include/grub/video.h (grub_video_parse_color): ... here.
 +
 +      * grub-core/Makefile.core.def (kernel) [videoinkernel]: Add
 +      video/colors.c.
 +      (gfxmenu): Remove gfxmenu/named_colors.c.
 +      (video) [videomodules]: Add video/colors.c.
 +
 +      Add a background_color command.
 +
 +      * grub-core/term/gfxterm.c (grub_gfxterm_background_color_cmd): New
 +      function.
 +      (GRUB_MOD_INIT): Register background_color command.
 +      (GRUB_MOD_FINI): Unregister background_color command.
 +      (redraw_screen_rect): Allow blend/replace of text layer to be
 +      controlled independently from whether there is a background bitmap.
 +      (grub_gfxterm_background_image_cmd): Change blend_text_bg when
 +      changing bitmap.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Patch BPB in ntldr and chainloader --bpb.
 +
 +      * grub-core/fs/fat.c: Include grub/fat.h.
 +      (grub_fat_bpb): Moved to ...
 +      * include/grub/fat.h (grub_fat_bpb): ... here. New file.
 +      * grub-core/loader/i386/pc/chainloader.c: Include grub/fat.h and
 +      grub/ntfs.h.
 +      * include/grub/i386/pc/chainloader.h (grub_chainloader_flags_t):
 +      Moved from here...
 +      * grub-core/loader/i386/pc/chainloader.c (grub_chainloader_flags_t): ...
 +      here.
 +      * grub-core/loader/i386/pc/chainloader.c (grub_chainloader_patch_bpb):
 +      New function.
 +      (grub_chainloader_cmd): Patch BPB if --bpb is given.
 +      (GRUB_MOD_INIT): Show --bpb.
 +      * grub-core/loader/i386/pc/ntldr.c (grub_cmd_ntldr): Patch BPB.
 +      * grub-core/normal/main.c (features): New variable.
 +      (GRUB_MOD_INIT): Set feature_* variables.
 +      * include/grub/i386/pc/chainloader.h (grub_chainloader_patch_bpb): New
 +      proto.
 +      * include/grub/ntfs.h (grub_ntfs_bpb): New field bios_drive.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/Makefile.core.def (ieee1275_fb): Use enable=powerpc_ieee1275
 +      for cleanness.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      FreeDOS direct loading support.
 +
 +      * docs/grub.texi (Supported OS): Add FreeDOS.
 +      * grub-core/Makefile.core.def (freedos): New module.
 +      * grub-core/lib/i386/relocator.c (grub_relocator16_ebx): New extern
 +      variable.
 +      (grub_relocator16_boot): Handle %ebx.
 +      * grub-core/lib/i386/relocator16.S: Likewise.
 +      * grub-core/loader/i386/pc/freedos.c: New file.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Long Linux command line support.
 +
 +      * grub-core/loader/i386/linux.c (GRUB_LINUX_CL_END_OFFSET): Removed.
 +      (maximal_cmdline_size): New variable.
 +      (allocate_pages): Use maximal_cmdline_size.
 +      (grub_cmd_linux): Set and use maximal_cmdline_size.
 +      * grub-core/loader/i386/pc/linux.c (GRUB_LINUX_CL_END_OFFSET): Removed.
 +      (allocate_pages): Use maximal_cmdline_size.
 +      (grub_cmd_linux): Set and use maximal_cmdline_size.
 +      * include/grub/i386/linux.h (GRUB_LINUX_SETUP_MOVE_SIZE): Removed.
 +      (linux_kernel_header): Add fields kernel_alignment, relocatable, pad
 +      and cmdline_size.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +2011-05-18  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Improve devmapper support
 +
 +      * grub-core/kern/emu/getroot.c (grub_util_is_dmraid): Removed.
 +      (grub_util_is_lvm): New function.
 +      (grub_util_get_dev_abstraction): Assume dmraid if not lvm rather
 +      than lvm if not dmraid.
 +      Handle mapped md nodes.
 +      * grub-core/kern/emu/hostdisk.c (device_is_mapped): Rename to ...
 +      (grub_util_device_is_mapped): ... this. Make always available. All users
 +      updated.
 +      (grub_util_get_dm_node_linear_info) [HAVE_DEVICE_MAPPER]: New function.
 +      (convert_system_partition_to_system_disk): Handle lvm, mpath and
 +      dmraid nodes.
 +      * include/grub/emu/misc.h (grub_util_device_is_mapped): New proto.
 +
 +2011-05-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Unify grub-mkrescue (except powerpc) and grrub-mknetdir across platforms
 +
 +      * grub-core/Makefile.am (platform_DATA): Add modinfo.sh.
 +      * grub-core/modinfo.sh.in: New file.
 +      * grub-core/Makefile.core.def (modinfo.sh): New script.
 +      * util/grub-mknetdir.in: Use modinfo.sh.
 +      * util/grub-mkrescue.in: Likewise.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/ia64/dl_helper.c (grub_ia64_dl_get_tramp_got_size):
 +      Fix potential usage of Elf32 instead of Elf64 when compiling on
 +      32-bit architecture. Add endianness macros while on it.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use mipsel- rather than mips- in directories involving mipsel ports to
 +      allow both endiannesses coexist.
 +
 +      * configure.ac: proparate target_cpu=mipsel rather than resetting to
 +      mips. All conditions adjusted.
 +      * tests/util/grub-shell-tester.in: Remove gratuitious target_cpu
 +      variable.
 +      * util/grub-install.in: Adjust conditions to take renaming into account.
 +      * util/grub-mkimage.c (image_targets): Likewise. New target
 +      mips-qemu_mips-elf for bigendian mips.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Avoid unnecessary copying on MIPS.
 +
 +      * grub-core/boot/decompressor/none.c (grub_decompress_core): Exit
 +      early if src == dest.
 +      * util/grub-mkimage.c (generate_image): Arange for src == dest if
 +      compression is none.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Reduce memory footprint on SGI by putting modules before the kernel
 +      as opposed to after.
 +
 +      * grub-core/Makefile.core.def (kernel): Increase linking address.
 +      (none_decompress): Likewise.
 +      (xz_decompress): Likewise.
 +      * grub-core/boot/mips/startup_raw.S: Use prewritten uncompression
 +      address.
 +      * grub-core/kern/mips/arc/init.c (grub_machine_init): Handle memory
 +      layout change.
 +      (grub_arch_modules_addr): New function.
 +      * grub-core/kern/mips/init.c (grub_arch_modules_addr): Moved from here...
 +      * grub-core/kern/mips/loongson/init.c (grub_arch_modules_addr): .. here
 +      * grub-core/kern/mips/qemu_mips/init.c (grub_arch_modules_addr): ... and
 +      here.
 +      * grub-core/kern/mips/startup.S (total_size): Rename to ...
 +      (grub_total_modules_size): ... this. Make global.
 +      [GRUB_MACHINE_ARC]: Don't attempt to move modules out of the bss.
 +      * include/grub/offsets.h (GRUB_KERNEL_MIPS_LOONGSON_UNCOMPRESSED_ADDR):
 +      New definition.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_UNCOMPRESSED_ADDR): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_UNCOMPRESSED_ADDR): Likewise.
 +      (GRUB_KERNEL_MACHINE_UNCOMPRESSED_ADDR): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_LINK_ADDR): Increased.
 +      * util/grub-mkimage.c (image_target_desc): New flag
 +      PLATFORM_FLAGS_MODULES_BEFORE_KERNEL.
 +      (image_targets): Set PLATFORM_FLAGS_MODULES_BEFORE_KERNEL on mips-arc.
 +      (generate_image): Handle images with modules before kernel.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Prevent potential loss of memory map by overwrite on qemu-mips.
 +
 +      * grub-core/boot/mips/startup_raw.S [GRUB_MACHINE_MIPS_QEMU_MIPS]:
 +      Save ram size in $s4.
 +      * grub-core/kern/mips/qemu_mips/init.c (RAMSIZE): Removed.
 +      All users changed to grub_arch_memsize.
 +      * grub-core/kern/mips/startup.S (grub_arch_machine): Restrict to
 +      Loongson.
 +      [GRUB_MACHINE_MIPS_QEMU_MIPS]: Save grub_arch_memsize.
 +      * grub-core/loader/mips/linux.c (grub_linux_boot): Pass memory size.
 +      * include/grub/mips/qemu_mips/memory.h (grub_arch_memsize): New
 +      external variable.
 +
 +2011-05-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * .bzrignore: Remove grub-dumpbios.
 +
 +2011-05-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/20_linux_xen.in: Honour GRUB_CMDLINE_LINUX_XEN_REPLACE
 +      and GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT, which replace
 +      GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT (complementing the
 +      existing options which append).
 +      * docs/grub.texi (Simple configuration): Document new options.
 +      Reported by: Ian Jackson.  Fixes Debian bug #617538.
 +
 +2011-05-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub-fstest.c (cmd_cat): New function.
 +      (fstest): Handle CMD_CAT.
 +      (options): Add cat.
 +      (argp_parser): Handle cat.
 +
 +2011-05-17  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * Makefile.util.def (grub-bin2h): Don't install.
 +      * docs/man/grub-bin2h.h2m: Remove.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mips/startup.S (grub_arch_cpuclock): Move to the right
 +      place.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Reenable qemu-mips port.
 +
 +      * configure.ac: Handle --target=qemu-mips and --target=qemu_mips.
 +      Fix small arc bug while on it.
 +      * gentpl.py: Handle qemu_mips.
 +      * grub-core/Makefile.am: Likewise.
 +      * grub-core/Makefile.core.def: Likewise.
 +      * grub-core/disk/ata.c [GRUB_MACHINE_MIPS_QEMU_MIPS]: Remove
 +      inappropriate includes.
 +      (grub_ata_pciinit) [GRUB_MACHINE_MIPS_QEMU_MIPS]: Removed.
 +      (grub_ata_initialize): [GRUB_MACHINE_MIPS_QEMU_MIPS]: Rewritten.
 +      * grub-core/kern/main.c (grub_modules_get_end)
 +      [GRUB_MACHINE_MIPS_QEMU_MIPS]: Enable.
 +      * grub-core/kern/mips/qemu-mips: Moved to ..
 +      * grub-core/kern/mips/qemu_mips: ... this.
 +      * grub-core/kern/mips/qemu_mips/init.c (grub_get_rtc): Removed.
 +      (grub_machine_init): Call terminfo_init and serial_init.
 +      * grub-core/kern/mips/startup.S: Change MIPS_LOONGSON to MACHINE.
 +      * grub-core/loader/mips/linux.c (params) [GRUB_MACHINE_MIPS_QEMU_MIPS]:
 +      New variable.
 +      (grub_linux_boot) [GRUB_MACHINE_MIPS_QEMU_MIPS]: Handle the qemu-mips
 +      parameter passing.
 +      (grub_linux_unload) [GRUB_MACHINE_MIPS_QEMU_MIPS]: Free params.
 +      (grub_cmd_linux) [GRUB_MACHINE_MIPS_QEMU_MIPS]: Handle params.
 +      (grub_cmd_initrd) [GRUB_MACHINE_MIPS_QEMU_MIPS]: Likewise.
 +      * include/grub/mips/qemu_mips/cmos.h: New file.
 +      * include/grub/mips/qemu-mips/kernel.h: Don't include cpu/kernel.h.
 +      * include/grub/mips/qemu-mips/memory.h (grub_machine_mmap_iterate):
 +      Removed.
 +      * include/grub/mips/qemu-mips/serial.h (GRUB_MACHINE_SERIAL_PORTS):
 +      Use correct mips-style address.
 +      * include/grub/mips/qemu-mips/time.h: Include cpu/time.h.
 +      (GRUB_TICKS_PER_SECOND): Removed.
 +      (grub_get_rtc): Likewise.
 +      (grub_cpu_idle): Likewise.
 +      * include/grub/offsets.h (GRUB_KERNEL_MIPS_QEMU_MIPS_LINK_ADDR):
 +      New definition.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_LINK_ALIGN): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_COMPRESSED_SIZE): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_UNCOMPRESSED_SIZE): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_TOTAL_MODULE_SIZE): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_MIPS_QEMU_MIPS_MOD_ALIGN): Likewise.
 +      * util/grub-mkimage.c (image_targets): Add mipsel-qemu_mips-elf.
 +
 +2011-05-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      SGI ARCS port.
 +
 +      * Makefile.util.def (libgrubmods.a): Add dvh.c.
 +      * conf/Makefile.common (CCASFLAGS_PLATFORM): Add -mips3 on all mips
 +      platforms.
 +      * configure.ac: New target mips-arc.
 +      * gentpl.py: Likewise.
 +      * grub-core/Makefile.am: Likewise.
 +      * grub-core/Makefile.core.def: Likewise.
 +      (xz_decompress): Remove -D GRUB_MACHINE_LINK_ADDR.
 +      (none_decompress): Likewise.
 +      (lsdev): New module.
 +      (datetime): Use lib/arc/datetime.c on ARC.
 +      (part_dvh): New module.
 +      * grub-core/commands/arc/lsdev.c: New file.
 +      * grub-core/disk/arc/arcdisk.c: Likewise.
 +      * grub-core/kern/mips/arc/init.c: Likewise.
 +      * grub-core/kern/mips/cache_flush.S: Don't flush non 4-byte
 +      aligned addresses.
 +      * grub-core/kern/mips/dl.c (grub_arch_dl_check_header): Fix bigendian
 +      support.
 +      (grub_arch_dl_relocate_symbols): Likewise.
 +      * grub-core/kern/mips/loongson/init.c (grub_get_rtc): Moved from here...
 +      * grub-core/kern/mips/init.c (grub_get_rtc): ... here.
 +      * grub-core/kern/mips/startup.S (grub_arch_cpuclock): Have on all
 +      platforms.
 +      * grub-core/lib/arc/datetime.c: New file.
 +      * grub-core/loader/mips/linux.c: Always include time.h. Don't include
 +      pci.h on non-loongson.
 +      (envp_off) [!GRUB_MACHINE_MIPS_LOONGSON]: Remove.
 +      (grub_linux_boot): Set unused registers to 0.
 +      (grub_cmd_linux) [!GRUB_MACHINE_MIPS_LOONGSON]: Remove envp.
 +      * grub-core/mmap/mips/loongson/uppermem.c: Moved from here ...
 +      * grub-core/mmap/mips/uppermem.c: ...here.
 +      * grub-core/partmap/dvh.c: New file.
 +      * grub-core/term/arc/console.c: Likewise.
 +      * grub-core/term/terminfo.c (ANSI_C0_STR): New const.
 +      (grub_terminfo_set_current): Add terminal "arc".
 +      (grub_terminfo_readkey): Support ARC sequences.
 +      * include/grub/arc/arc.h: New file.
 +      * include/grub/arc/console.h: Likewise.
 +      * include/grub/disk.h (grub_disk_dev_id): Add
 +      GRUB_DISK_DEVICE_ARCDISK_ID.
 +      * include/grub/mips/arc/kernel.h: New file.
 +      * include/grub/mips/arc/memory.h: Likewise.
 +      * include/grub/mips/arc/time.h: Likewise.
 +      * include/grub/mips/loongson/kernel.h (grub_halt): Moved from here ...
 +      * include/grub/mips/kernel.h (grub_halt): ... here.
 +      * include/grub/mips/loongson.h (GRUB_CPU_REGISTER_WRAP): Moved from
 +      here...
 +      * include/grub/mips/mips.h (GRUB_CPU_REGISTER_WRAP): ... here.
 +      (GRUB_CPU_LOONGSON_COP0_TIMER_COUNT): Moved from here ...
 +      * include/grub/mips/mips.h (GRUB_CPU_LOONGSON_COP0_TIMER_COUNT): .. here
 +      * include/grub/mips/loongson/kernel.h (grub_reboot): Removed redundant
 +      proto.
 +      * include/grub/mips/loongson/memory.h (GRUB_ARCH_LOWMEMVSTART): Moved
 +      from here ...
 +      * include/grub/mips/memory.h (GRUB_ARCH_LOWMEMVSTART): ... here.
 +      (GRUB_ARCH_LOWMEMPSTART): Moved from here ...
 +      * include/grub/mips/memory.h (GRUB_ARCH_LOWMEMPSTART): ... here.
 +      (GRUB_ARCH_LOWMEMMAXSIZE): Moved from here ...
 +      * include/grub/mips/memory.h (GRUB_ARCH_LOWMEMMAXSIZE): ... here.
 +      (GRUB_ARCH_HIGHMEMPSTART): Moved from here ...
 +      * include/grub/mips/memory.h (GRUB_ARCH_HIGHMEMPSTART): ... here.
 +      (grub_phys_addr_t): Moved from here ...
 +      * include/grub/mips/memory.h (grub_phys_addr_t): ... here.
 +      (grub_vtop): Moved from here ...
 +      * include/grub/mips/memory.h (grub_vtop): ... here.
 +      (grub_map_memory): Moved from here ...
 +      * include/grub/mips/memory.h (grub_map_memory): ... here.
 +      (grub_unmap_memory): Moved from here ...
 +      * include/grub/mips/memory.h (grub_unmap_memory): ... here.
 +      (grub_machine_mmap_iterate): Moved from here ...
 +      * include/grub/mips/memory.h (grub_machine_mmap_iterate): ... here.
 +      (grub_mmap_get_lower): Moved from here ...
 +      * include/grub/mips/memory.h (grub_mmap_get_lower): ... here.
 +      (grub_mmap_get_upper): Moved from here ...
 +      * include/grub/mips/memory.h (grub_mmap_get_upper): ... here.
 +      * include/grub/mips/loongson/time.h (grub_arch_cpuclock): Moved from
 +      here ...
 +      * include/grub/mips/time.h (grub_arch_cpuclock): ... here.
 +      * include/grub/mips/loongson/time.h (grub_get_rtc): Moved from
 +      here ...
 +      * include/grub/mips/time.h (grub_get_rtc): ... here.
 +      * include/grub/mips/loongson/time.h (grub_arch_cpuclock): Moved from
 +      here ...
 +      * include/grub/mips/time.h (grub_arch_cpuclock): ... here.
 +      * include/grub/mips/loongson/time.h (grub_cpu_idle): Moved from
 +      here ...
 +      * include/grub/mips/time.h (grub_cpu_idle): ... here.
 +      * include/grub/offsets.h (GRUB_KERNEL_MIPS_ARC_LINK_ADDR): New
 +      definition.
 +      (GRUB_KERNEL_MIPS_ARC_LINK_ALIGN): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_COMPRESSED_SIZE): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_UNCOMPRESSED_SIZE): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_TOTAL_MODULE_SIZE): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_PREFIX): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_PREFIX_END): Likewise.
 +      (GRUB_KERNEL_MIPS_ARC_MOD_ALIGN): Likewise.
 +      (GRUB_MACHINE_LINK_ADDR): Likewise.
 +      * include/grub/terminfo.h (GRUB_TERMINFO_READKEY_MAX_LEN): Increased
 +      to 6.
 +      * util/grub-install.in: Run dvhtool on ARC.
 +      * util/grub-mkimage.c (image_targets): Add mips-arc.
 +      (generate_image): Handle ECOFF output for mips-arc.
 +
 +2011-05-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/pci.c (grub_memalign_dma32): Always allocate in 64-byte
 +      blocks.
 +
 +2011-05-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/usb/usbhub.c (attach_root_port): Wait 10ms
 +      after enabling port.
 +
 +2011-05-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Skip incorrect USB devices.
 +
 +      * grub-core/bus/usb/usb.c (grub_usb_device_initialize): Fail if
 +      configcnt == 0.
 +      * include/grub/usb.h (grub_usb_err_t): New enum value
 +      GRUB_USB_ERR_BADDEVICE.
 +
 +2011-05-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fuloong video init support.
 +
 +      * include/grub/vga.h (grub_vga_write_arx): inb monochrome address as
 +      well.
 +      (grub_vga_read_arx): New function.
 +      * grub-core/video/sis315pro.c (GRUB_SIS315PRO_MMIO_SPACE): New
 +      definition.
 +      (framebuffer): New members io, mmioptr and mmiobase.
 +      (read_sis_cmd): New function.
 +      (write_sis_cmd): Likewise.
 +      (grub_video_sis315pro_setup): Do the initialisation. Use 640x480
 +      rather than 640x400.
 +      * grub-core/video/sis315_init.c: New file.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/cs5536.c: Don't include grub/machine/kernel.h on
 +      non-loongson.
 +      * grub-core/kern/mips/dl.c (grub_arch_dl_init_linker): Fix argument
 +      to grub_dl_register_symbol.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix compilation errors.
 +
 +      * grub-core/term/ns8250.c (serial_get_divisor): Declare 'port' as
 +      potentially unused.
 +      * grub-core/loader/i386/linux.c (grub_linux_setup_video):
 +      Handle GRUB_VIDEO_DRIVER_SIS315PRO.
 +      * grub-core/bus/cs5536.c (grub_cs5536_init_geode): Restrict DIVIL init
 +      to loongson machines.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Several FS mtime support.
 +
 +      * grub-core/fs/affs.c (grub_affs_time): New struct.
 +      (grub_affs_file): New field mtime.
 +      (grub_fshelp_node): Changed 'block' and 'parent' to more appropriate
 +      type. Removed 'size'. New field 'di'. All users updated.
 +      (grub_affs_mount): Simplify checsum checking.
 +      (grub_affs_iterate_dir): New helper grub_affs_create_node.
 +      (grub_affs_dir): Handle mtime.
 +      * grub-core/fs/cpio.c (grub_cpio_find_file): Handle mtime.
 +      (grub_cpio_dir): Likewise.
 +      * grub-core/fs/hfs.c (grub_hfs_dirrec): New fields 'ctime' and 'mtime'.
 +      (grub_hfs_filerec): New field mtime.
 +      (grub_hfs_dir): Handle mtime.
 +      (grub_hfs_mtime): New function.
 +      (grub_hfs_fs): Register grub_hfs_mtime.
 +      * grub-core/fs/iso9660.c (grub_iso9660_date2): New struct.
 +      (grub_iso9660_dir): New field mtime.
 +      (grub_fshelp_node): New field dirent.
 +      (iso9660_to_unixtime): New function.
 +      (iso9660_to_unixtime2): Likewise.
 +      (grub_iso9660_read_symlink): Use node->dirent.
 +      (grub_iso9660_iterate_dir): Likewise.
 +      (grub_iso9660_dir): Set mtime.
 +      (grub_iso9660_mtime): New function.
 +      (grub_iso9660_fs): Register grub_iso9660_mtime.
 +      * grub-core/fs/jfs.c (grub_jfs_time): New struct.
 +      (grub_jfs_inode): New fields atime, ctime and mtime.
 +      (grub_jfs_dir): Set mtime.
 +      * grub-core/fs/minix.c (grub_minix_dir): Likewise.
 +      * grub-core/fs/ntfs.c (list_file): Set mtime.
 +      (grub_ntfs_dir): Likewise.
 +      * grub-core/fs/reiserfs.c (grub_fshelp_node): New field 'mtime'.
 +      (grub_reiserfs_iterate_dir): Set mtime.
 +      (grub_reiserfs_dir): Likewise.
 +      * grub-core/fs/sfs.c (grub_sfs_obj): New field mtime.
 +      (grub_fshelp_node): Likewise.
 +      (grub_sfs_iterate_dir): Set mtime.
 +      (grub_sfs_dir): Likewise.
 +      * grub-core/fs/udf.c (grub_udf_dir): Set mtime.
 +      * grub-core/fs/xfs.c (grub_xfs_time): New struct.
 +      (grub_xfs_inode): New fields atime, mtime, ctime.
 +      (grub_xfs_dir): Set mtime.
 +      * include/grub/datetime.h (grub_datetime2unixtime): New function.
 +      * include/grub/hfs.h (grub_hfs_sblock): New fields ctime and mtime.
 +      * include/grub/ntfs.h (grub_fshelp_node): New field mtime.
 +
 +      Support UDF symlinks.
 +
 +      * grub-core/fs/udf.c (grub_udf_iterate_dir): Handle symlinks.
 +      (grub_ufs_read_symlink): New function. All users updated.
 +
 +      Check amiga partmap checksum.
 +
 +      * grub-core/partmap/amiga.c (grub_amiga_rdsk): Pad to 128 bytes.
 +      (grub_amiga_partition): Likewise.
 +      (amiga_partition_map_checksum): New function.
 +      (amiga_partition_map_iterate): Check checksum.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      ROMFS support.
 +
 +      * Makefile.util.def (libgrubmods.a): Add romfs.
 +      * grub-core/Makefile.core.def (romfs): New module.
 +      * grub-core/fs/romfs.c: New file.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Squashfs v4 support.
 +
 +      * Makefile.util.def (libgrubmods.a): Add squash4.
 +      * grub-core/Makefile.core.def (squash4): New module.
 +      * grub-core/fs/squash4.c: New file.
 +      * grub-core/io/gzio.c (grub_gzio): New members disk_input_off,
 +      disk_input_start, disk_input.
 +      (get_byte): Handle disk_input.
 +      (grub_zlib_disk_read): New function.
 +      * include/grub/deflate.h (grub_zlib_disk_read): New proto.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +2011-05-15  Feiran Zheng <famcool@gmail.com>
 +
 +      * Makefile.util.def (libgrubmods.a): Add minix3.
 +      * grub-core/Makefile.core.def (minix3): New module.
 +      * grub-core/fs/minix.c (GRUB_MINIX_MAGIC) [MODE_MINIX3]: New value.
 +      (GRUB_MINIX_BSIZE): Removed.
 +      (GRUB_MINIX_INODE_DIR_BLOCKS): New definition. All users updated.
 +      (grub_minix_ino_t): New type.
 +      (grub_minix_le_to_cpu_ino): New macro.
 +      (GRUB_MINIX_ZONE2SECT): New definition. All users updated.
 +      (grub_minix_sblock) [MODE_MINIX3]: Change for minix3.
 +      (grub_minix_data): New field block_size.
 +      (grub_minix_read_file): Handle 64-bit correctly.
 +      * grub-core/fs/minix3.c: New file.
 +
 +2011-05-15  Tristan Gingold  <gingold@free.fr>
 +2011-05-15  Robert Millan  <rmh.grub@aybabtu.com>
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      IA64 support.
 +
 +      * Makefile.util.def (libgrubmods.a): Add grub-core/kern/ia64/dl_helper.c
 +      * configure.ac: Add ia64-efi target.
 +      Probe for __ia64_trampoline, __udivsi3, __umoddi3, __udivdi3,
 +      __divsi3, __modsi3, __umodsi3, __moddi3 and __divdi3 symbols.
 +      * gentpl.py: Add ia64_efi platform.
 +      Rename x86_efi to efi and Add ia64-efi. All users updated.
 +      * grub-core/Makefile.am: Set KERNEL_HEADER_FILES for ia64-efi.
 +      * grub-core/Makefile.core.def (kernel.img): Add compile flags for ia64.
 +      Remove kern/generic/rtc_get_time_ms.c on EFI.
 +      Add kern/ia64/efi/startup.S, kern/ia64/efi/init.c, kern/ia64/dl.c,
 +      kern/ia64/dl_helper.c on ia64-efi.
 +      Add kern/emu/cache.c on emu.
 +      (linux): Use on loader/ia64/efi/linux.c on ia64.
 +      * grub-core/gensymlist.sh (grub_register_exported_symbols): Check
 +      whether symbol is a function.
 +      * grub-core/kern/dl.c [GRUB_MACHINE_EMU]: Include sys/mman.h.
 +      (grub_symbol): New field 'isfunc'.
 +      (grub_dl_resolve_symbol): Return whole symbol rather than just address.
 +      (grub_dl_register_symbol): New argument 'isfunc'. All users updated.
 +      (grub_dl_load_segments): Place all sections into the same region.
 +      [__ia64__]: Create trampolines and got.
 +      [GRUB_MACHINE_EMU]: Call mprotect.
 +      (grub_dl_resolve_symbols): Resolve symbol type as well.
 +      [__ia64__]: Create function descriptors.
 +      * grub-core/kern/efi/efi.c (grub_get_rtc): Renamed to ...
 +      (grub_rtc_get_time_ms): ... this. Expressions simplified.
 +      (grub_get_rtc): New function.
 +      * grub-core/kern/emu/cache.c [__ia64__]: New file.
 +      * grub-core/kern/emu/cache.S: Renamed to ...
 +      * grub-core/kern/emu/cache_s.S: ... this.
 +      [__ia64__]: Add a nop.
 +      * grub-core/kern/emu/full.c (grub_arch_dl_get_tramp_got_size)
 +      [__ia64__]: New function.
 +      * grub-core/kern/emu/lite.c [__ia64__]: Include ../ia64/dl.c.
 +      * grub-core/kern/ia64/dl.c: New file.
 +      * grub-core/kern/ia64/dl_helper.c: Likewise.
 +      * grub-core/kern/ia64/efi/init.c: New file.
 +      * grub-core/kern/ia64/efi/startup.S: Likewise.
 +      * grub-core/lib/efi/halt.c [__ia64__]: Don't try acpi.
 +      * grub-core/lib/ia64/longjmp.S: New file (from glibc).
 +      * grub-core/lib/ia64/setjmp.S: Likewise (from glibc).
 +      * grub-core/lib/setjmp.S [__ia64__]: Include ./ia64/setjmp.S.
 +      * grub-core/loader/ia64/efi/linux.c: New file.
 +      * include/grub/dl.h (GRUB_MOD_NAME): Redefined using C rather than asm.
 +      (GRUB_MOD_DEP): Likewise.
 +      (grub_dl) [__ia64__]: New fields got and tramp.
 +      (grub_dl): New field 'base'.
 +      (grub_dl_register_symbol): New argument isfunc. All users updated.
 +      (GRUB_IA64_DL_TRAMP_ALIGN): New definition.
 +      (GRUB_IA64_DL_TRAMP_SIZE): Likewise.
 +      (GRUB_IA64_DL_GOT_ALIGN): Likewise.
 +      (grub_ia64_dl_get_tramp_got_size): New proto.
 +      (GRUB_ARCH_DL_TRAMP_ALIGN) [__ia64__]: Likewise
 +      (GRUB_ARCH_DL_GOT_ALIGN) [__ia64__]: Likewise
 +      (grub_arch_dl_get_tramp_got_size) [__ia64__]: Likewise
 +      * include/grub/efi/api.h: Skip call wrappers on ia64.
 +      * include/grub/efi/pe32.h (GRUB_PE32_MACHINE_IA64): New definition.
 +      * include/grub/efi/time.h (GRUB_TICKS_PER_SECOND): Change to 1000.
 +      * include/grub/elf.h (ELF_ST_INFO): New definition.
 +      * include/grub/ia64/efi/kernel.h: New file.
 +      * include/grub/ia64/efi/memory.h: Likewise.
 +      * include/grub/ia64/efi/time.h: Likewise.
 +      * include/grub/ia64/kernel.h: Likewise.
 +      * include/grub/ia64/setjmp.h: Likewise (from glibc).
 +      * include/grub/ia64/time.h: New file.
 +      * include/grub/ia64/types.h: Likewise.
 +      * include/grub/libgcc.h (__udivsi3, __umodsi3, __umoddi3, __udivdi3,
 +      __moddi3, __divdi3, __divsi3, __modsi3, __ia64_trampoline):
 +      New protos.
 +      * include/grub/offsets.h (GRUB_KERNEL_IA64_EFI_PREFIX): New definition.
 +      (GRUB_KERNEL_IA64_EFI_PREFIX_END): Likewise.
 +      * include/grub/types.h (PRIxGRUB_ADDR): Likewise.
 +      * util/grub-mkimage.c (image_target_desc): New field pe_target.
 +      All users updated.
 +      (EFI64_HEADER_SIZE): New definition. All users updated.
 +      (image_targets): Add ia64-efi.
 +      * util/grub-mkimagexx.c (relocate_symbols): New arguments jumpers and
 +      jumpers_addr. All users updated.
 +      Create function descriptors.
 +      (count_funcs): New function.
 +      (unaligned_uint32): New struct.
 +      (MASK20): New definition.
 +      (MASK19): Likewise.
 +      (MASKF21): Likewise.
 +      (add_value_to_slot_20b): New function.
 +      (add_value_to_slot_21_real): Likewise.
 +      (add_value_to_slot_21): Likewise.
 +      (ia64_kernel_trampoline): New struct.
 +      (nopm): New variable.
 +      (jump): Likewise.
 +      (make_trampoline): New function.
 +      (relocate_addresses): Handle ia64.
 +      (make_reloc_section): Likewise.
 +      (load_image): Likewise.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_read_logical): Silence spurious
 +      warning. Move variables before code while on it.
 +
 +2011-05-15  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fuloong support.
 +
 +      * configure.ac: Rename yeeloong platform to loongson. All users updated.
 +      * grub-core/Makefile.core.def (fwstart_fuloong): New image.
 +      * grub-core/boot/mips/loongson/fuloong.S: New file.
 +      * grub-core/boot/mips/loongson/fwstart.S: Wait for CS5536 to come up.
 +      Explicitly init CS5536.
 +      [FULOONG]: Don't use serial until CS5536 is available.
 +      Set GPIO based on dumps.
 +      (serial_hw_init) [FULOONG]: Handle CS5536 parts.
 +      [FULOONG]: Handle GPIO and memory controller differences.
 +      Parse machine type in $a2.
 +      * grub-core/boot/mips/startup_raw.S: Determine and save the
 +      architecture.
 +      * grub-core/bus/cs5536.c (gpiodump): Move to fwstart.S.
 +      (grub_cs5536_init_geode): Remove gpio part. Conditionalise DIVIL
 +      init on architecture type.
 +      * grub-core/kern/mips/loongson/init.c (grub_machine_init): Init
 +      SIS315E. Don't init at_keyboard on fuloong.
 +      (grub_halt): Support Fuloong.
 +      * grub-core/kern/mips/startup.S [LOONGSON]: Save $s7.
 +      * grub-core/loader/mips/linux.c (LOONGSON_MACHTYPE): Removed.
 +      (loongson_machtypes): New array.
 +      (grub_cmd_linux) [GRUB_MACHINE_MIPS_LOONGSON]: Pass the right machine
 +      type.
 +      * grub-core/term/ns8250.c (serial_get_divisor): New parameter port and
 +      config. All users updated. Handle CS5536 serial.
 +      * grub-core/term/serial.c (grub_serial_register): Conditionalise
 +      default port on machine type. Register serial as inactive.
 +      * grub-core/video/sis315pro.c: New file.
 +      * include/grub/cs5536.h (GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED): New
 +      definition.
 +      (GRUB_CS5536_MSR_MAILBOX_CONFIG): Likewise.
 +      (GRUB_CS5536_MSR_DIVIL_LEG_IO_UART1_COM1): Likewise.
 +      (GRUB_CS5536_MSR_DIVIL_LEG_IO_UART2_COM3): Likewise.
 +      (GRUB_CS5536_MSR_DIVIL_UART1_CONF): Likewise.
 +      (GRUB_CS5536_MSR_DIVIL_UART2_CONF): Likewise.
 +      * include/grub/mips/loongson.h (GRUB_CPU_LOONGSON_SHUTDOWN_GPIO): Rename
 +      to ...
 +      (GRUB_CPU_YEELOONG_SHUTDOWN_GPIO): ... this.
 +      * include/grub/mips/loongson/kernel.h (GRUB_ARCH_MACHINE_YEELOONG): New
 +      definition.
 +      (GRUB_ARCH_MACHINE_FULOONG): Likewise.
 +      (grub_arch_machine): New extern var.
 +      * include/grub/mips/loongson/serial.h
 +      (GRUB_MACHINE_SERIAL_DIVISOR_115200): Renamed to ...
 +      (GRUB_MACHINE_SERIAL_PORT0_DIVISOR_115200): ... this.
 +      (GRUB_MACHINE_SERIAL_PORT): Renamed to ...
 +      (GRUB_MACHINE_SERIAL_PORT0): ... this.
 +      (GRUB_MACHINE_SERIAL_PORT2_DIVISOR_115200): New definition.
 +      (GRUB_MACHINE_SERIAL_PORT1): Likewise.
 +      (GRUB_MACHINE_SERIAL_PORT2): Likewise.
 +      (GRUB_MACHINE_SERIAL_PORTS): Include ports 1 and 2.
 +      * include/grub/term.h (grub_term_register_input_inactive): New inline
 +      function.
 +      (grub_term_register_output_inactive): Likewise.
 +      * include/grub/video.h (grub_video_driver_id): New value
 +      GRUB_VIDEO_DRIVER_SIS315PRO.
 +      * util/grub-mkimage.c (image_target_desc): Rename name to dirname.
 +      New field "names". All users updated.
 +      New field value IMAGE_FULOONG_FLASH.
 +      (generate_image): USe separate fwstart hashes for yeeloong and fuloong.
 +
 +2011-05-14  Jordan Uggla  <jordan.uggla@gmail.com>
 +
 +      * docs/grub.texi (Invoking grub-install): Fix additional outdated claims
 +      and add some clarification.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_linux.in: Autoload gzio since it's needed on some
 +      platforms if kernel is compressed.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mm.c (grub_memalign): Disable auto-unloadding of
 +      unused modules since currently referrence counter isn't reliable and
 +      there isn't much memory to recover there anyway.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/dl.c (grub_dl_load_file): Decrease ref counter
 +      rather than resetting it to allow modules to reference themselves
 +      in init.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/dl.c (grub_dl_unload): Don't decrease reference
 +      counter on dependencies since grub_dl_unref already handles this.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/font/font_cmd.c (loadfont_command): Set grub_errno
 +      on error if not already done.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix few potential memory misusage.
 +
 +      * grub-core/font/font.c (load_font_index): Don't free char_index to
 +      avoid double free.
 +      (grub_font_load): Zero-fill font at alloc for safety.
 +      Close file on error.
 +      (free_font): Free bmp_idx.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Installation): Fix several outdated claims.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Handle module_license on windows.
 +
 +      * util/grub-pe2elf.c (MODLICENSE_SECTION): New definition. All following
 +      sections shifted.
 +      (insert_string): Make argument const char * instead of char *.
 +      (write_section_data): Handle long section names.
 +      Handle module_license.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/menuentry.c (grub_cmd_menuentry): Correctly
 +      handle class-free menuentries.
 +      (grub_normal_add_menu_entry): Add a check to be sure.
 +
 +2011-05-14  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/at_keyboard.c (set1_e0_mapping): Fix swap between
 +      PgUp and PgDown.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Bump version to 1.99.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Give ATA device a bit more time on first try in order to allow disks
 +      to spin up.
 +
 +      * grub-core/disk/ata.c (grub_atapi_identify): Use GRUB_ATA_TOUT_DEV_INIT
 +      if dev->present is 1. Reset dev->present on failure.
 +      (grub_ata_device_initialize): Set dev->present to 1.
 +      * include/grub/ata.h (GRUB_ATA_TOUT_DEV_INIT): New value.
 +      (grub_ata_device): New member 'present'.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (generate_image): Update hash.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Flush caches on DMA memory.
 +
 +      * grub-core/kern/mips/cache.S (grub_arch_sync_dma_caches): New function.
 +      * grub-core/bus/pci.c (grub_memalign_dma32): Flush caches.
 +      (grub_dma_free): Likewise.
 +      * include/grub/cache.h (grub_arch_sync_dma_caches): New declaration.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/mips/yeeloong/fwstart.S: Add explicit set mips3
 +      to avoid asm treating ld and sd as macros.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/mips/startup_raw.S: Flush cache after loading
 +      decompressor.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/mips/startup_raw.S: Use jalr rather than bal to call
 +      grub_decompress_core since later would fail if grub_decompress_core
 +      is too far.
 +
 +2011-05-13  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/mips/dl.c (grub_arch_dl_relocate_symbols): Handle
 +      R_MIPS_JALR since it's used by newer compiler.
 +
 +2011-05-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_linux.in: Correctly handle the Linux in root.
 +
 +2011-05-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/efi/chainloader.c (grub_chainloader_unload): Set
 +      file_path to 0 for surety.
 +      (grub_chainloader_boot): Set exit_data to NULL.
 +      Unset the loader once done.
 +      (grub_cmd_chainloader): Fix confusing error message if file is empty.
 +
 +2011-05-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/at_keyboard.c (fetch_key): Make a printf on
 +      unknown key into a dprintf.
 +
 +2011-05-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (linux_find_partition): Don't abort
 +      on first non-existant partition.
 +
 +2011-05-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (open_device): Set data->fd to -1 if
 +      openning fails.
 +      Reported by: Mark Korenberg.
 +
 +2011-05-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (linux_find_partition): Prevent possible
 +      overflow.
 +
 +2011-05-09  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (main): Explicitely flush and sync the output
 +      before closing to ensure that it will be readable by grub-setup.
 +
 +2011-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/efi/appleloader.c (MAKE_PIWG_PATH): New macro.
 +      (devpath_1): Use MAKE_PIWG_PATH.
 +      (devpath_2): Likewise.
 +      (devpath_3): Likewise.
 +      (devpath_4): Likewise.
 +      (devpath_5): Likewise.
 +      (devpath_6): Likewise.
 +
 +      The appleldr.mod was checked that to be binary identical to previous
 +      version.
 +
 +2011-05-05  Zach <mikezackles>
 +
 +      Support 2010 Macbooks.
 +
 +      * grub-core/loader/efi/appleloader.c (devpath_6): New variable.
 +      (devs): Add devpath_6.
 +
 +2011-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkpasswd-pbkdf2.c (main): Use /dev/urandom and not
 +      /dev/random. /dev/urandom is good enough for our purposes (salting).
 +
 +2011-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkrescue.in (process_input_dir): Include efiemu??.o.
 +
 +2011-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/legacy_parse.c (grub_legacy_parse): Correctly handle
 +      hexadecimal.
 +
 +2011-05-05  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/efiemu/main.c (grub_efiemu_load_file): Return grub_errno
 +      and not 0 on failure.
 +
 +2011-05-03  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/fs/i386/pc/pxe.c (grub_pxefs_dir): Return
 +      GRUB_ERR_BAD_FS rather than GRUB_ERR_IO if the disk is not a pxe
 +      disk; otherwise grub_fs_probe will not fall back to the next
 +      filesystem.
 +      (grub_pxefs_open): Likewise, for consistency.
 +      Reported and tested by: Ezekiel Grave.
 +
 +2011-05-03  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * tests/partmap_test.in: Don't hardcode path to parted.
 +      Reported by: Peter Hjalmarsson.  Fixes Savannah bug #33150.
 +
 +2011-05-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (GRUB only offers a rescue shell): Suggest the use
 +      of `ls' to find out which devices are available.
 +
 +2011-04-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/linux.c (grub_linux_boot): Supply target rather
 +      than source address for efi mmap buffer.
 +
 +2011-04-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/partmap/amiga.c (amiga_partition_map_iterate): Fix a
 +      wrong action on non-detecting the magic.
 +
 +2011-04-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gnulib/regex.c: Remove GRUB_MOD_LICENSE since it's
 +      already supplied by another part of the module (fixes compilation on
 +      FreeBSD).
 +
 +2011-04-25  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Make mdraid UUID
 +      match the one used by mdadm.
 +
 +2011-04-21  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * po/README: Add instructions for creating po/LINGUAS.
 +
 +2011-04-21  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Add "SEE ALSO" sections to most man pages.  Fixes Debian bug
 +      #551428.
 +
 +      * docs/man/grub-editenv.h2m (SEE ALSO): New section.
 +      * docs/man/grub-emu.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-fstest.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-install.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-macho2img.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-menulst2cfg.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mkconfig.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mkdevicemap.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mkfont.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mkimage.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mklayout.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mknetdir.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mkpasswd-pbkdf2.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mkrelpath.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-mkrescue.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-ofpathname.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-pe2elf.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-probe.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-reboot.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-script-check.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-set-default.h2m (SEE ALSO): Likewise.
 +      * docs/man/grub-setup.h2m (SEE ALSO): Likewise.
 +
 +2011-04-21  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/kern/emu/getroot.c
 +      (grub_find_root_device_from_mountinfo): Remove non-virtual-device
 +      test that was incorrectly reintroduced in r3214.
 +      Reported by: Ian Dall.  Fixes Savannah bug #33133.
 +
 +2011-04-21  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Fix stack pointer handling in 16-bit relocator.
 +
 +      * grub-core/lib/i386/relocator16.S (grub_relocator16_start): Move
 +      grub_relocator16_sp to %esp rather than %ss, and zero-extend it.
 +      Fixes Ubuntu bug #683904.
 +
 +2011-04-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * configure.ac: Bump version to 1.99~rc2.
 +
 +2011-04-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/dl.h [ASM_FILE]: Adapt for assembly.
 +      * grub-core/lib/i386/setjmp.S: Add missing GRUB_MOD_LICENSE.
 +      * grub-core/lib/x86_64/setjmp.S: Likewise.
 +      * grub-core/lib/mips/setjmp.S: Likewise.
 +      * grub-core/lib/powerpc/setjmp.S: Likewise.
 +      * grub-core/lib/sparc64/setjmp.S: Likewise.
 +
 +2011-04-20  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/efi/datetime.c: Add missing GRUB_MOD_LICENSE.
 +      * grub-core/lib/efi/datetime.c: Likewise.
 +
 +2011-04-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_flush):
 +      New function.
 +      (grub_util_biosdisk_close): Use grub_util_biosdisk_flush.
 +      * include/grub/emu/hostdisk.h (grub_util_biosdisk_flush): New proto.
 +      * util/grub-setup.c (setup): Use grub_util_biosdisk_flush.
 +
 +2011-04-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/gfxterm.c (grub_gfxterm_fullscreen): Preserve previous
 +      bitmap.
 +      (grub_gfxterm_term_init): Likewise.
 +
 +2011-04-19  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Take into account the decorations the computing menu entry width.
 +
 +      * grub-core/gfxmenu/widget-box.c (get_border_width): New function.
 +      (grub_gfxmenu_create_box): Register get_border_width.
 +      * grub-core/gfxmenu/gui_list.c (draw_menu): Use get_border_width
 +      if available.
 +      * include/grub/gfxwidgets.h (grub_gfxmenu_box): New member
 +      get_border_width.
 +
 +2011-04-18  Endres Puschner <code@e7p.de>
 +
 +      * grub-core/gfxmenu/icon_manager.c (grub_gfxmenu_icon_manager_get_icon):
 +      Don't skip first class.
 +
 +2011-04-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_read_logical): Support huge
 +      chunks.
 +      * include/grub/err.h (grub_err_t): New enum value GRUB_ERR_BUG.
 +
 +2011-04-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Complete 64-bit division support.
 +
 +      * grub-core/kern/misc.c (grub_divmod64): Rename to ...
 +      (grub_divmod64_full): ... this. Support 64-bit divisor and reminder.
 +      * include/grub/misc.h (grub_divmod64): Rename to ...
 +      (grub_divmod64_full): ... this.
 +      (grub_divmod64): New inline function.
 +
 +2011-04-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (generate_image): Add forgotten comma.
 +
 +2011-04-18  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (generate_image): Update fwstart.img hash after
 +      performing the necessary test.
 +
 +2011-04-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * Makefile.am (multiboot.elf): Add -Wl,--build-id=none.
 +      (kfreebsd.elf): Likewise.
 +      (pc-chainloader.elf): Likewise.
 +      (ntldr.elf): Likewise.
 +
 +2011-04-17  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Identify RAID by its UUID rather than (guessed) name.
 +
 +      * grub-core/disk/raid.c (ascii2hex): New function.
 +      (grub_raid_open): Accept mduuid/%s specification.
 +      * grub-core/kern/emu/getroot.c (get_mdadm_name): Revamped into ...
 +      (get_mdadm_uuid): ... this.
 +      (grub_util_get_grub_dev): Use mduuid/%s if UUID is available.
 +
 +2011-04-16  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/gfxmenu/gui_image.c (rescale_image): Don't attempt to scale
 +      to negative size.
 +
 +2011-04-13  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/10_linux.in: Add rootflags=subvol=<name> if / is on a
 +      btrfs subvolume.
 +      * util/grub.d/20_linux_xen.in: Likewise.
 +
 +2011-04-13  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Rewrite /proc/self/mountinfo handling to cope with bind-mounts and
 +      move-mounts appearing out of order.  Fixes Ubuntu bug #738345.
 +
 +      * grub-core/kern/emu/getroot.c (find_root_device_from_mountinfo):
 +      Build a list of relevant visible mounts using the mnt_id and
 +      parent_mnt_id fields, and then scan that list at the end.
 +
 +2011-04-12  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (normal): New section.
 +      (normal_exit): New section.
 +      (Embedded configuration): Add reference to normal.
 +      (GRUB only offers a rescue shell): Likewise.
 +      * docs/grub-dev.texi (Error Handling): Fix typo.
 +
 +2011-04-12  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * NEWS: Drop obsolete entry about probe-only btrfs support.
 +
 +2011-04-12  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/import_gcry.py: Fix typo.
 +
 +2011-04-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * NEWS: Add btrfs support.
 +
 +2011-04-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +2011-04-11  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      BtrFS support. Written by me (Vladimir) with important bugfixes and
 +      even more important testing by Colin.
 +
 +      * Makefile.util.def (libgrubmods.a): Add crc.c and gzio.c
 +      * grub-core/Makefile.core.def (btrfs): Add crc.c.
 +      * grub-core/fs/btrfs.c: Stub replaced with real implementation.
 +      * grub-core/io/gzio.c (grub_gzio): New fields mem_input_size,
 +      mem_input_off and mem_input. All users updated to accept in-RAM input.
 +      (gzio_seek): New function.
 +      (test_zlib_header): Likewise.
 +      (grub_gzio_read): Likewise.
 +      (grub_zlib_decompress): Likewise.
 +      * grub-core/kern/emu/getroot.c (grub_find_root_device_from_mountinfo):
 +      Accept partial and non-virtual mounts.
 +      (grub_guess_root_device): Do rescanning after device_from_mountinfo to
 +      avoid receiving /dev/dm-X as device.
 +      * grub-core/kern/emu/misc.c (grub_make_system_path_relative_to_its_root):
 +      Handle bind and partial mounts.
 +      * grub-core/lib/crc.c: New file.
 +      * include/grub/deflate.h: Likewise.
 +      * include/grub/emu/misc.h (grub_find_root_device_from_mountinfo): New
 +      proto.
 +      * include/grub/lib/crc.h: New file.
 +
 +2011-04-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Implement automatic module license checking according to new GNU
 +      guidelines.
 +
 +      * grub-core/kern/dl.c (grub_dl_check_license): New function.
 +      (grub_dl_load_core): Use grub_dl_check_license.
 +      * include/grub/dl.h (GRUB_MOD_SECTION): New macro.
 +      (GRUB_MOD_LICENSE): Likewise.
 +      (GRUB_MOD_DUAL_LICENSE): Likewise.
 +      All modules updated.
 +
 +2011-04-11  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/fs/btrfs.c (grub_btrfs_fs) [GRUB_UTIL]: Set
 +      reserved_first_sector to 1.  btrfs reserves plenty of space for boot
 +      loaders.
 +      Reported by: Gene Cumm.  Fixes Ubuntu bug #757446.
 +
 +2011-04-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-fstest.c (cmd_cmp): Check that sizes match.
 +
 +2011-04-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-fstest.c (read_file): Report GRUB error if file opening
 +      failed.
 +
 +2011-04-11  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/file.c (grub_file_open): Don't take into account the
 +      parenthesis in the middle of the filename.
 +
 +2011-04-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/mips/linux.c (grub_cmd_initrd): Use correct limits
 +      rather than trying to put initrd way too high.
 +      Reported by: Ryan Lortie <desrt@desrt.ca>
 +
 +2011-04-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/mips/yeeloong/fwstart.S (no_cs5536): Put back
 +      improperly removed string.
 +
 +2011-04-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_data): New member
 +      is_disk.
 +      (grub_util_biosdisk_open): Don't apply ioctl on non-disk devices.
 +      (open_device) Likewise.
 +      (grub_util_biosdisk_close): Likewise.
 +      Reported by: Mark Korenberg.
 +
 +2011-04-10  Alexander Kurtz <kurtz.alex@googlemail.com>
 +
 +      * util/grub-mkconfig_lib.in: Add missing quotes.
 +
 +2011-04-10  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/gnulib/argp-parse.c (__argp_input): Don't crash if pstate
 +      is NULL.
 +
 +2011-04-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Dynamically count the number of lines for the lower banner.
 +
 +      * grub-core/normal/menu_entry.c (per_term_screen): New member
 +      num_entries.
 +      (print_down): Use num_entries.
 +      (update_screen): Likewise.
 +      (grub_menu_entry_run): Set num_entries.
 +      * grub-core/normal/menu_text.c (menu_viewer_data): New member
 +      num_entries.
 +      (grub_print_message_indented): Move real part to ...
 +      (grub_print_message_indented_real): ... here. Additional argument
 +      dry_run.
 +      (draw_border): Additional argument num_entries.
 +      (print_message): Additional argument dry_run.
 +      (print_entries): Receive menu viewer data.
 +      (grub_menu_init_page): New argment num_entries.
 +      (menu_text_set_chosen_entry): Use num_entries.
 +      (grub_menu_try_text): Likewise.
 +      * grub-core/normal/term.c (print_ucs4_terminal): New argument dry_run.
 +      All users updated.
 +      (grub_ucs4_count_lines): New function.
 +      * include/grub/term.h (grub_term_cursor_x): Moved from here ..
 +      * grub-core/normal/menu_text.c (grub_term_cursor_x): ... to here.
 +      * include/grub/term.h (GRUB_TERM_MESSAGE_HEIGHT): Removed.
 +      (grub_term_border_height): Likewise.
 +      (grub_term_num_entries): Likewise.
 +
 +2011-04-10  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/boot/mips/yeeloong/fwstart.S: Fix address to error message.
 +      Remove now unused string.
 +
 +2011-04-09  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub-dev.texi (Finding your way around): Update for 1.99
 +      build system.
 +      (Getting started): GRUB is developed in Bazaar now, not Subversion.
 +
 +      (Comment): Fix typo.
 +      (Getting started): General copy-editing.
 +      (Typical Development Experience): Likewise.
 +      (Error Handling): Likewise.
 +      (Video API): Likewise.
 +
 +2011-04-09  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub-dev.texi: Replace MoinMoin syntax with Texinfo syntax
 +      throughout.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-mkimage.c (main): Handle special naming of yeeloong
 +      directory.
 +
 +2011-04-08  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub-dev.texi: Fix spelling of "developer" throughout.
 +      * grub-core/fs/i386/pc/pxe.c (parse_dhcp_vendor): Fix spelling of
 +      "development".
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu_entry.c (run): Use grub_memcpy rather than
 +      grub_strcpy since the lines aren't necessarily 0-terminated.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/legacy_parse.c (legacy_commands): Find doesn't set
 +      root on legacy.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/commands/probe.c (options): Argument to set isn't optional.
 +      (GRUB_MOD_INIT): DEVICE isn't optional.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/term.c (print_ucs4_terminal): Don't try to put the
 +      word on new line if it's too long anyway. Fixes a hang.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/util/raid.h (grub_util_raid_getmembers): Make argument
 +      const.
 +      * util/grub-setup.c (main): Reuse md device name if available.
 +      * util/raid.c (grub_util_raid_getmembers): Receive device name and
 +      not GRUB name as argument.
 +      Based on patch by: Florian Wagner <fwagner>.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi):
 +      Place mbi on low memory for better compatibility.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/efiemu/efiemu.h: Use grub_memory_hook_t type.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +2011-04-08  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * autogen.sh: Ensure that collate and ctype locale is C.
 +      * conf/Makefile.common: Likewise.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu.c: Add missing include.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/raid.c [GRUB_UTIL]: Add missing include.
 +
 +2011-04-08  Martin Zuther <mzuther@mzuther.de>
 +
 +      * util/grub-mkconfig.in: Ignore emacsen backup.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (open_device): Sync on close and not
 +      on open.
 +      (grub_util_biosdisk_close): Likewise.
 +
 +2011-04-08  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/getroot.c (grub_util_get_grub_dev): Add missing
 +      const attribute and use grub_isdigit.
 +
 +2011-04-06  Andrey  <dev_null@ukr.net>
 +
 +      * grub-core/video/fb/video_fb.c (grub_video_fb_setup): Silence older
 +      gcc warning.
 +
 +2011-04-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/relocator.c (grub_relocator_alloc_chunk_align): Add few
 +      useful grub_dprintf's.
 +
 +2011-04-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/fs.h (grub_dirhook_info): Use unsigned for 1-bit fields.
 +
 +2011-04-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/00_header.in: Don't use LANG unless unifont is available.
 +
 +2011-04-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Output errors if theme loading failed.
 +
 +      * grub-core/gfxmenu/gfxmenu.c (grub_gfxmenu_try): Move the call to
 +      grub_gfxterm_fullscreen on error paths to ...
 +      * grub-core/normal/menu.c (menu_init): ...here. Wait after showing
 +      theme loading error.
 +
 +2011-04-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/offsets.h (GRUB_KERNEL_I386_PC_RAW_SIZE): Let a bit more
 +      space for older compilers.
 +      (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART): Likewise.
 +
 +2011-04-06  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Detect spares
 +      and report them as not RAID members since they are useless for GRUB.
 +      * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
 +
 +2011-04-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Increase LVM implementation robustness in order not to crash on
 +      configurations like pvmove. Previously code assumed that in some places
 +      only lvs or only pvs are used whereas it seems that they are used
 +      interchangeably.
 +
 +      * grub-core/disk/lvm.c (read_node): New function.
 +      (read_lv): Use read_node.
 +      (grub_lvm_scan_device): Use only first mirror on pvmove'd lvs.
 +      Match volumes only at the end when all lvs are found. Take both
 +      pvs (first) and lvs (second) into account.
 +      * include/grub/lvm.h (grub_lvm_segment): Merge fields stripe_* and
 +      mirror_* into node_*. All users updated.
 +      (grub_lvm_stripe): Merge this ...
 +      (grub_lvm_mirror): ... and this ...
 +      (grub_lvm_node): ... into this. All users updated.
 +
 +2011-04-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/lvm.c (grub_lvm_scan_device): Print errors on the end
 +      of function to allow further scanning for LVMs.
 +
 +2011-04-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_read): Don't close
 +      on failed seek as it breaks open fd reusage.
 +
 +2011-04-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Add a recommendation to use --recheck before
 +      reporting bugs.
 +
 +2011-04-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi (Vendor power-on buttons): Explain how the numbers
 +      are obtained.
 +
 +2011-04-02  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      GRUB developper manual based on existing Internals section and
 +      contributions by the various authors with active copyright assignment.
 +
 +      * docs/Makefile.am (info_TEXINFOS): Add grub-dev.texi.
 +      * docs/font_char_metrics.png: New file.
 +      * docs/font_char_metrics.txt: Likewise.
 +      * docs/grub-dev.texi: Likewise.
 +      * docs/grub.texi (Internals): Move from here ...
 +      * docs/grub-dev.texi: ... here.
 +
 +2011-04-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Store the loopback device as data on loopback grub_disk structures,
 +      rather than the file it points to.  This fixes use of freed memory
 +      if an existing loopback device is replaced.
 +
 +      * grub-core/disk/loopback.c (grub_loopback_open): Store dev in
 +      disk->data, not dev->file.
 +      (grub_loopback_read): Adjust file assignment to match.
 +      Fixes Ubuntu bug #742967.
 +
 +2011-04-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/disk/loopback.c (grub_cmd_loopback): Fix a memory leak
 +      when replacing an existing device.
 +
 +2011-04-01  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix incorrect types in jfs.c. This enables >2TiB disks and fixes some
 +      memory corruptions.
 +
 +      * grub-core/fs/jfs.c (struct grub_jfs_diropen): Interpret bytes as
 +      unsigned.
 +      (grub_jfs_lookup_symlink): Make ino a grub_uint32_t rather than int.
 +      (grub_jfs_blkno): Use 64-bit quantities for block sectors.
 +      (grub_jfs_read_inode): Likewise.
 +      (grub_jfs_opendir): Likewise. Remove now useless casts.
 +      (grub_jfs_getent): Likewise.
 +      Make ino a grub_uint32_t rather than int.
 +      (grub_jfs_mount): Ensure that blksize and log2_blksize are consistent.
 +      (grub_jfs_read_file): Use 64-bit quantities when necessary. Replace
 +      division and module with bit operations.
 +      (grub_jfs_find_file): Make ino a grub_uint32_t.
 +      (grub_jfs_lookup_symlink): Likewise. Use 64-bit quantities
 +
 +2011-04-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/normal/menu_entry.c (run): Quieten uninitialised
 +        warning.  (This was in fact always initialised before use, but GCC
 +        wasn't smart enough to prove that.)
 +      * grub-core/script/lexer.c (grub_script_lexer_yywrap): Likewise.
 +
 +2011-03-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/x86_64/efi/callwrap.S (efi_wrap_0): Preserve 16-byte
 +      stack alignment.
 +      (efi_wrap_1): Likewise.
 +      (efi_wrap_2): Likewise.
 +      (efi_wrap_3): Likewise.
 +      (efi_wrap_4): Likewise.
 +      (efi_wrap_5): Likewise.
 +      (efi_wrap_6): Likewise.
 +      (efi_wrap_10): Likewise.
 +      Based on information by: Red Hat/Peter Jones.
 +
 +2011-03-31  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/mmap/efi/mmap.c (grub_mmap_unregister): Remove
 +      set-but-not-used variable.
 +
 +2011-03-31  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Simple configuration): Be more explicit about
 +      GRUB_DEFAULT, and add an example.
 +      Reported by: Leslie Rhorer.
 +
 +2011-03-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Commands): Link to "GRUB only offers a rescue
 +      shell".
 +
 +2011-03-30  Alexey Shvetsov <alexxy@gentoo.org>
 +
 +      * util/grub.d/10_linux.in: Add gentoo-specific config filename.
 +      * util/grub.d/20_linux_xen.in: Likewise.
 +
 +2011-03-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_linux.in: Try alternative config filenames where
 +      we parse config file.
 +      * util/grub.d/20_linux_xen.in: Likewise.
 +
 +2011-03-30  Alexey Shvetsov <alexxy@gentoo.org>
 +
 +      * util/grub.d/10_linux.in: Add gentoo-specific Linux and initrd names.
 +      * util/grub.d/20_linux_xen.in: Likewise.
 +
 +2011-03-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/raid.c (insert_array): Add few potentially
 +      useful grub_util_info.
 +      (grub_raid_register): Likewise.
 +
 +2011-03-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/getroot.c (grub_util_get_grub_dev) [__linux__]:
 +      Preserve partition number in mdadm code path.
 +
 +2011-03-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev): Add
 +      few potentially useful grub_util_info.
 +
 +2011-03-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/lvm.c (grub_lvm_scan_device): Remove spurious \n.
 +
 +2011-03-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (default): Use @example rather than nested
 +      itemized lists to avoid breaking gendocs.
 +
 +2011-03-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Future): Update.
 +
 +2011-03-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Environment): New chapter.
 +      (Changes from GRUB Legacy): Link to "Environment block" section for
 +      details of limitations.
 +      (Simple configuration): Likewise.  Link to documentation of gfxmode
 +      and gfxpayload variables from GRUB_GFXMODE and GRUB_GFXPAYLOAD
 +      respectively.
 +      (Shell-like scripting): Note that normal variables are stored in the
 +      environment.
 +      (gettext): Link to documentation of lang and locale_dir.
 +      (list_env): New section.
 +      (load_env): New section.
 +      (save_env): New section.
 +
 +      (Reporting bugs): Fix typo.
 +
 +2011-03-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * docs/grub.texi: Correctly use "terminal_input" and not "terminal" in
 +      the example.
 +
 +2011-03-30  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/at_keyboard.c (set_scancodes)
 +      [!GRUB_MACHINE_MIPS_YEELOONG && !GRUB_MACHINE_QEMU]: Use scancode set 1.
 +
 +2011-03-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Menu-specific commands): Remove some semantics
 +      that were true in GRUB Legacy but not in GRUB 2.
 +      (submenu): New section.
 +      (false): New section.
 +      (read): New section.
 +      (true): New section.
 +
 +2011-03-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Changes from GRUB Legacy): Minor proofreading.
 +
 +2011-03-30  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Simple configuration): Explain some of the
 +      current limitations of grub-mkconfig.
 +      Reported by: Leslie Rhorer.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Old macs search for boot.efi rather than for bootia32.efi.
 +
 +      * util/grub-install.in: Copy bootia32.efi to boot.efi.
 +      * util/grub-mkrescue.in: Likewise.
 +      Suggested by: Peter Jones.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/20_linux_xen.in: Accept old-style xen kernels.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/lvm.h (grub_lvm_lv): New field 'visible'.
 +      (grub_lvm_segment): New fields 'type', 'mirror_count' and 'mirrors'.
 +      (grub_lvm_mirror): New struct.
 +      * grub-core/disk/lvm.c (grub_lvm_checkvalue): Commented out.
 +      (grub_lvm_iterate): Iterate only visible volumes.
 +      (grub_lvm_read): Factor out to ..
 +      (read_lv): ... this. Support mirrors.
 +      (grub_lvm_read): New wrapper function.
 +      (grub_lvm_scan_device): Parse mirrors. Skip everything that isn't
 +      stripped or mirrored.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_linux.in: Skip vmlinux-* on x86 platforms.
 +
 +2011-03-29  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (loopback): New section.
 +
 +2011-03-29  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/disk/loopback.c (GRUB_MOD_INIT): Stop documenting
 +      removed -p option.
 +
 +2011-03-29  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (BIOS installation): New section, partly based on
 +      previous text in other sections.
 +      (Installing GRUB using grub-install): Replace BIOS discussion with a
 +      cross-reference.
 +      (Images): Likewise.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/kern/emu/hostdisk.c (find_partition_start)
 +      [HAVE_DIOCGDINFO]: Add safety checks.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub.d/10_kfreebsd.in: Allow ufs.ko to be missing as it's
 +      per default compiled in kernel and prior to 8.0 isn't shipped at all.
 +
 +2011-03-29  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): If
 +      real_sb->size is zero (e.g. RAID-0), get the disk size from
 +      real_sb->data_size instead.
 +      Fixes Ubuntu bug #743136.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/misc.c (grub_normal_print_device_info): Use correct
 +      printf clauses for printing size and start.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/ext2.c (grub_ext2_read_inode): Fix an overflow.
 +      Reported and tested by: Timothy Nikkel.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/gfxterm.c (dirty_region_add): Move core part to ...
 +      (dirty_region_add_real): ... this.
 +      (dirty_region_add): Don't discard margin refresh when performing
 +      scheduled repaint.
 +
 +2011-03-29  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/relocator.c (allocate_regstart)
 +      [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Avoid grub_dprintf since not all
 +      terminals are capabple of malloc-free operation.
 +      (allocate_inreg) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise.
 +      (malloc_in_range) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise.
 +
 +2011-03-29  Mario Limonciello  <Mario_Limonciello@Dell.com>
 +
 +        * util/grub-setup.c: Copy the partition table zone if floppy support
 +      is disabled, even if no partition table is found.
 +
 +        Otherwise, the BIOS on Dell Latitude E series laptops will freeze
 +        during POST if an invalid partition table is contained in the PBR
 +        of the active partition when GRUB is installed to a partition.
 +
 +2011-03-28  Colin Watson  <cjwatson@debian.org>
 +
 +      * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Remove stale
 +      comment.
 +
 +2011-03-28  Colin Watson  <cjwatson@debian.org>
 +
 +      * grub-core/disk/raid.c (grub_raid_register): Adjust debug message
 +      to be specific about what kind of RAID device we're scanning for.
 +
 +2011-03-26  Seth Goldberg <seth.goldberg@oracle.com>
 +
 +      * grub-core/kern/emu/getroot.c (find_root_device_from_libzfs): Don't
 +      return freed string.
 +
 +2011-03-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/fs/iso9660.c (grub_iso9660_label): Rtrim the label.
 +
 +2011-03-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Use libgeom on FreeBSD to detect partitions.
 +
 +      * Makefile.util.def (grub-mkimage): Add LIBGEOM to ldadd.
 +      (grub-mkrelpath): Likewise.
 +      (grub-script-check): Likewise.
 +      (grub-editenv): Likewise.
 +      (grub-mkpasswd-pbkdf2): Likewise.
 +      (grub-fstest): Likewise.
 +      (grub-mkfont): Likewise.
 +      (grub-mkdevicemap): Likewise.
 +      (grub-probe): Likewise.
 +      (grub-setup): Likewise.
 +      (grub-ofpathname): Likewise.
 +      (grub-mklayout): Likewise.
 +      (example_unit_test): Likewise.
 +      (grub-menulst2cfg): Likewise.
 +      * grub-core/Makefile.core.def (grub-emu): Likewise.
 +      (grub-emu-lite): Likewise.
 +      * configure.ac: Check for -lgeom on FreeBSD and set LIBGEOM.
 +      * grub-core/kern/emu/hostdisk.c [FreeBSD]: Include libgeom.h. Don't
 +      define HAVE_DIOCGDINFO.
 +      (follow_geom_up) [FreeBSD]: New function.
 +      (find_partition_start) [FreeBSD]: Rewritten using follow_geom_up.
 +      (convert_system_partition_to_system_disk) [FreeBSD]: Likewise.
 +      (grub_util_biosdisk_get_grub_dev) [FreeBSD]: Use FreeBSD path
 +      unconditionally of HAVE_DIOCGDINFO.
 +
 +2011-03-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      Fix FreeBSD compilation problem.
 +
 +      * grub-core/kern/emu/hostdisk.c (MAJOR) [FreeBSD]: New definition.
 +      (FLOPPY_MAJOR) [FreeBSD]: Likewise.
 +
 +2011-03-24  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * grub-core/video/fb/video_fb.c (grub_video_fb_get_info_and_fini):
 +      Switch back to page zero before loading a kernel, since some kernel
 +      drivers expect that.
 +      Thanks to: Felix Kuehling.
 +
 +2011-03-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/relocator.c (grub_relocator_alloc_chunk_addr)
 +      [DEBUG_RELOCATOR]: Reuse grub_mm_check.
 +      (grub_relocator_alloc_chunk_align) [DEBUG_RELOCATOR]: Likewise.
 +
 +2011-03-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/mm.h (GRUB_MM_CHECK): Rename to ...
 +      (grub_mm_check): ... this. MAke a function-like macro and use GRUB_FILE.
 +
 +2011-03-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/relocator.c (allocate_inreg): Avoid dprintf unless
 +      DEBUG_RELOCATOR is defined since gfxterm can't cope with output when
 +      malloc is disabled.
 +
 +2011-03-24  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/loader/i386/bsdXX.c (grub_freebsd_load_elfmodule): Account
 +      for modules headers when counting the needed allocation size.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/term/gfxterm.c (calculate_normal_character_width): Return 8
 +      if no ASCII character is found to prevent crash.
 +
 +2011-03-23  Alexander Kurtz  <kurtz.alex@googlemail.com>
 +
 +      * grub-core/video/bitmap.c (match_extension): Ignore case.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/menu_entry.c (init_line): Fix off-by-one error.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/script/parser.y: Declare "time" as valid argument.
 +
 +2011-03-23  Peter Jones  <pjones@redhat.com>
 +
 +      Fix incorrect assert failure reporting.
 +
 +      * grub-core/tests/example_functional_test.c (example_test): Add
 +      a failure comment.
 +      * grub-core/tests/lib/test.c (add_failure): Renamed to ...
 +      (failure_start): ...this. Check that malloc succeeded.
 +      Don't call xvasprintf. Return failure struct.
 +      (failure_append_vtext): New function.
 +      (failure_append_text): Likewise.
 +      (add_failure): Likewise.
 +      (grub_test_assert_helper): Likewise.
 +      * include/grub/test.h (grub_test_assert_helper): New declaration.
 +      (grub_test_assert): Macro rewritten.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/normal/main.c (GRUB_MOD_INIT): Export pager variable.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/lib/i386/pc/biosnum.c: Add missing include.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/disk/usbms.c (grub_usbms_reset): Transform USB-style error
 +      into GRUB-style one.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/usb/usbtrans.c (grub_usb_control_msg): Return usb-style
 +      error and not grub_errno.
 +      * grub-core/bus/usb/usbhub.c (grub_usb_add_hub): Likewise.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/usb/uhci.c (grub_uhci_detect_dev): Return
 +      GRUB_USB_SPEED_NONE in case of failure and not the error code.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/efiemu/i386/pc/cfgtables.c
 +      (grub_machine_efiemu_init_tables): Make declaration a prototype.
 +      * grub-core/loader/xnu.c (grub_xnu_lock): Likewise.
 +      (grub_xnu_unlock): Likewise.
 +      * grub-core/normal/cmdline.c (grub_cmdline_get/cl_set_pos_all): Likewise.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/bus/usb/usb.c (attach_hooks): Make static.
 +      * grub-core/bus/usb/usbhub.c (hubs): Likewise.
 +      * grub-core/commands/hashsum.c (aliases): Likewise.
 +      * grub-core/commands/setpci.c (pci_registers): Likewise.
 +      * grub-core/disk/usbms.c (attach_hook): Likewise.
 +      * grub-core/fs/zfs/zfs.c (decomp_table): Likewise.
 +      (zio_checksum_table): Likewise.
 +      * grub-core/gettext/gettext.c (grub_gettext_msg_list): Likewise.
 +      * grub-core/gfxmenu/gfxmenu.c (cached_view): Likewise.
 +      * grub-core/lib/legacy_parse.c (legacy_commands): Likewise.
 +      * grub-core/lib/relocator.c (leftovers): Likewise.
 +      (extra_blocks): Likewise.
 +      * grub-core/loader/i386/bsd.c (relocator): Likewise.
 +      * grub-core/loader/i386/multiboot_mbi.c (modules): Likewise.
 +      (modules_last): Likewise.
 +      * grub-core/loader/i386/xnu.c (table_aliases): Likewise.
 +      (devices): Likewise.
 +      * grub-core/loader/multiboot_mbi2.c (modules): Likewise.
 +      (modules_last): Likewise.
 +      * grub-core/normal/auth.c (users): Likewise.
 +      * grub-core/normal/context.c (initial_menu): Likewise.
 +      (current_menu): Likewise.
 +      * grub-core/normal/crypto.c (crypto_specs): Likewise.
 +      * grub-core/term/serial.c (grub_serial_ports): Likewise.
 +      (grub_serial_terminfo_input_template): Likewise.
 +      (grub_serial_terminfo_output_template): Likewise.
 +      (grub_serial_terminfo_input): Likewise.
 +      (grub_serial_terminfo_output): Likewise.
 +      (registered): Likewise.
 +      * grub-core/term/usb_keyboard.c (attach_hook): Likewise.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * grub-core/video/bochs.c (grub_video_bochs_setup): Use
 +      grub_video_mode_type_t.
 +      * grub-core/video/cirrus.c (grub_video_cirrus_setup): Likewise.
 +      * grub-core/video/i386/pc/vbe.c (grub_video_vbe_setup): Likewise.
 +      * grub-core/video/i386/pc/vga.c (grub_video_vga_setup): Likewise.
 +
 +2011-03-23  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * util/grub-install.in: Correct the x86-64 name as x86_64.
 +
  2011-03-11  Colin Watson  <cjwatson@ubuntu.com>
  
        * grub-core/boot/i386/pc/lnxboot.S (real_code_2): Ensure that the
index 0fd8537922976c914d447c353c9b5419fa5f5aa8,0000000000000000000000000000000000000000..f6fc4638c34dc054aabccc95ef24ccd44f34dac3
mode 100644,000000..100644
--- /dev/null
@@@ -1,1002 -1,0 +1,1005 @@@
 +/*
 + *  GRUB  --  GRand Unified Bootloader
 + *  Copyright (C) 2006,2007,2008,2009,2011  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/disk.h>
 +#include <grub/mm.h>
 +#include <grub/err.h>
 +#include <grub/misc.h>
 +#include <grub/diskfilter.h>
 +#include <grub/gpt_partition.h>
 +#include <grub/i18n.h>
 +
 +#ifdef GRUB_UTIL
 +#include <grub/emu/misc.h>
 +#include <grub/emu/hostdisk.h>
 +#endif
 +
 +GRUB_MOD_LICENSE ("GPLv3+");
 +
 +#define LDM_GUID_STRLEN 64
 +#define LDM_NAME_STRLEN 32
 +
 +typedef grub_uint8_t *grub_ldm_id_t;
 +
 +enum { STRIPE = 1, SPANNED = 2, RAID5 = 3 };
 +
 +#define LDM_LABEL_SECTOR 6
 +struct grub_ldm_vblk {
 +  char magic[4];
 +  grub_uint8_t unused1[12];
 +  grub_uint16_t update_status;
 +  grub_uint8_t flags;
 +  grub_uint8_t type;
 +  grub_uint32_t unused2;
 +  grub_uint8_t dynamic[104];
 +} __attribute__ ((packed));
 +#define LDM_VBLK_MAGIC "VBLK"
 +
 +enum
 +  {
 +    STATUS_CONSISTENT = 0,
 +    STATUS_STILL_ACTIVE = 1,
 +    STATUS_NOT_ACTIVE_YET = 2
 +  };
 +
 +enum
 +  {
 +    ENTRY_COMPONENT = 0x32,
 +    ENTRY_PARTITION = 0x33,
 +    ENTRY_DISK = 0x34,
 +    ENTRY_VOLUME = 0x51,
 +  };
 +
 +struct grub_ldm_label
 +{
 +  char magic[8];
 +  grub_uint32_t unused1;
 +  grub_uint16_t ver_major;
 +  grub_uint16_t ver_minor;
 +  grub_uint8_t unused2[32];
 +  char disk_guid[LDM_GUID_STRLEN];
 +  char host_guid[LDM_GUID_STRLEN];
 +  char group_guid[LDM_GUID_STRLEN];
 +  char group_name[LDM_NAME_STRLEN];
 +  grub_uint8_t unused3[11];
 +  grub_uint64_t pv_start;
 +  grub_uint64_t pv_size;
 +  grub_uint64_t config_start;
 +  grub_uint64_t config_size;
 +} __attribute__ ((packed));
 +
 +
 +#define LDM_MAGIC "PRIVHEAD"
 +
 +\f
 +
 +static inline grub_uint64_t
 +read_int (grub_uint8_t *in, grub_size_t s)
 +{
 +  grub_uint8_t *ptr2;
 +  grub_uint64_t ret;
 +  ret = 0;
 +  for (ptr2 = in; ptr2 < in + s; ptr2++)
 +    {
 +      ret <<= 8;
 +      ret |= *ptr2;
 +    }
 +  return ret;
 +}
 +
 +static const grub_gpt_part_type_t ldm_type = GRUB_GPT_PARTITION_TYPE_LDM;
 +
 +static grub_disk_addr_t
 +gpt_ldm_sector (grub_disk_t dsk)
 +{
 +  grub_disk_addr_t sector = 0;
 +  grub_err_t err;
 +  auto int hook (grub_disk_t disk, const grub_partition_t p);
 +  int hook (grub_disk_t disk, const grub_partition_t p)
 +  {
 +    struct grub_gpt_partentry gptdata;
 +    grub_partition_t p2;
 +
 +    p2 = disk->partition;
 +    disk->partition = p->parent;
 +    if (grub_disk_read (disk, p->offset, p->index,
 +                      sizeof (gptdata), &gptdata))
 +      {
 +      disk->partition = p2;
 +      return 0;
 +      }
 +    disk->partition = p2;
 +
 +    if (! grub_memcmp (&gptdata.type, &ldm_type, 16))
 +      {
 +      sector = p->start + p->len - 1;
 +      return 1;
 +      }
 +    return 0;
 +  }
 +  err = grub_gpt_partition_map_iterate (dsk, hook);
 +  if (err)
 +    {
 +      grub_errno = GRUB_ERR_NONE;
 +      return 0;
 +    }
 +  return sector;
 +}
 +
 +static struct grub_diskfilter_vg *
 +make_vg (grub_disk_t disk,
 +       const struct grub_ldm_label *label)
 +{
 +  grub_disk_addr_t startsec, endsec, cursec;
 +  struct grub_diskfilter_vg *vg;
 +  grub_err_t err;
 +
 +  /* First time we see this volume group. We've to create the
 +     whole volume group structure. */
 +  vg = grub_malloc (sizeof (*vg));
 +  if (! vg)
 +    return NULL;
 +  vg->extent_size = 1;
 +  vg->name = grub_malloc (LDM_NAME_STRLEN + 1);
 +  vg->uuid = grub_malloc (LDM_GUID_STRLEN + 1);
 +  if (! vg->uuid || !vg->name)
 +    {
 +      grub_free (vg->uuid);
 +      grub_free (vg->name);
 +      return NULL;
 +    }
 +  grub_memcpy (vg->uuid, label->group_guid, LDM_GUID_STRLEN);
 +  grub_memcpy (vg->name, label->group_name, LDM_NAME_STRLEN);
 +  vg->name[LDM_NAME_STRLEN] = 0;
 +  vg->uuid[LDM_GUID_STRLEN] = 0;
 +  vg->uuid_len = grub_strlen (vg->uuid);
 +
 +  vg->lvs = NULL;
 +  vg->pvs = NULL;
 +
 +  startsec = grub_be_to_cpu64 (label->config_start);
 +  endsec = startsec + grub_be_to_cpu64 (label->config_size);
 +
 +  /* First find disks.  */
 +  for (cursec = startsec + 0x12; cursec < endsec; cursec++)
 +    {
 +      struct grub_ldm_vblk vblk[GRUB_DISK_SECTOR_SIZE
 +                              / sizeof (struct grub_ldm_vblk)];
 +      unsigned i;
 +      err = grub_disk_read (disk, cursec, 0,
 +                          sizeof(vblk), &vblk);
 +      if (err)
 +      goto fail2;
 +
 +      for (i = 0; i < ARRAY_SIZE (vblk); i++)
 +      {
 +        struct grub_diskfilter_pv *pv;
 +        grub_uint8_t *ptr;
 +        if (grub_memcmp (vblk[i].magic, LDM_VBLK_MAGIC,
 +                         sizeof (vblk[i].magic)) != 0)
 +          continue;
 +        if (grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_CONSISTENT
 +            && grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_STILL_ACTIVE)
 +          continue;
 +        if (vblk[i].type != ENTRY_DISK)
 +          continue;
 +        pv = grub_zalloc (sizeof (*pv));
 +        if (!pv)
 +          goto fail2;
 +
 +        pv->disk = 0;
 +        ptr = vblk[i].dynamic;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic
 +            + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (pv);
 +            goto fail2;
 +          }
 +        pv->internal_id = grub_malloc (ptr[0] + 2);
 +        if (!pv->internal_id)
 +          {
 +            grub_free (pv);
 +            goto fail2;
 +          }
 +        grub_memcpy (pv->internal_id, ptr, (grub_size_t) ptr[0] + 1);
 +        pv->internal_id[(grub_size_t) ptr[0] + 1] = 0;
 +        
 +        ptr += *ptr + 1;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic
 +            + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (pv);
 +            goto fail2;
 +          }
 +        /* ptr = name.  */
 +        ptr += *ptr + 1;
 +        if (ptr + *ptr + 1
 +            >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (pv);
 +            goto fail2;
 +          }
 +        pv->id.uuidlen = *ptr;
 +        pv->id.uuid = grub_malloc (pv->id.uuidlen + 1);
 +        grub_memcpy (pv->id.uuid, ptr + 1, pv->id.uuidlen);
 +        pv->id.uuid[pv->id.uuidlen] = 0;
 +
 +        pv->next = vg->pvs;
 +        vg->pvs = pv;
 +      }
 +    }
 +
 +  /* Then find LVs.  */
 +  for (cursec = startsec + 0x12; cursec < endsec; cursec++)
 +    {
 +      struct grub_ldm_vblk vblk[GRUB_DISK_SECTOR_SIZE
 +                              / sizeof (struct grub_ldm_vblk)];
 +      unsigned i;
 +      err = grub_disk_read (disk, cursec, 0,
 +                          sizeof(vblk), &vblk);
 +      if (err)
 +      goto fail2;
 +
 +      for (i = 0; i < ARRAY_SIZE (vblk); i++)
 +      {
 +        struct grub_diskfilter_lv *lv;
 +        grub_uint8_t *ptr;
 +        if (grub_memcmp (vblk[i].magic, LDM_VBLK_MAGIC,
 +                         sizeof (vblk[i].magic)) != 0)
 +          continue;
 +        if (grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_CONSISTENT
 +            && grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_STILL_ACTIVE)
 +          continue;
 +        if (vblk[i].type != ENTRY_VOLUME)
 +          continue;
 +        lv = grub_zalloc (sizeof (*lv));
 +        if (!lv)
 +          goto fail2;
 +
 +        lv->vg = vg;
 +        lv->segment_count = 1;
 +        lv->segment_alloc = 1;
 +        lv->visible = 1;
 +        lv->segments = grub_zalloc (sizeof (*lv->segments));
 +        if (!lv->segments)
 +          goto fail2;
 +        lv->segments->start_extent = 0;
 +        lv->segments->type = GRUB_DISKFILTER_MIRROR;
 +        lv->segments->node_count = 0;
 +        lv->segments->node_alloc = 8;
 +        lv->segments->nodes = grub_zalloc (sizeof (*lv->segments->nodes)
 +                                           * lv->segments->node_alloc);
 +        if (!lv->segments->nodes)
 +          goto fail2;
 +        ptr = vblk[i].dynamic;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic
 +            + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        lv->internal_id = grub_malloc ((grub_size_t) ptr[0] + 2);
 +        if (!lv->internal_id)
 +          {
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        grub_memcpy (lv->internal_id, ptr, ptr[0] + 1);
 +        lv->internal_id[ptr[0] + 1] = 0;
 +
 +        ptr += *ptr + 1;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic
 +            + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        lv->name = grub_malloc (*ptr + 1);
 +        if (!lv->name)
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        grub_memcpy (lv->name, ptr + 1, *ptr);
 +        lv->name[*ptr] = 0;
 +        lv->fullname = grub_xasprintf ("ldm/%s/%s",
 +                                       vg->uuid, lv->name);
 +        if (!lv->fullname)
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv->name);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        ptr += *ptr + 1;
 +        if (ptr + *ptr + 1
 +            >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv->name);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        /* ptr = volume type.  */
 +        ptr += *ptr + 1;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv->name);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        /* ptr = flags.  */
 +        ptr += *ptr + 1;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv->name);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +
 +        /* Skip state, type, unknown, volume number, zeros, flags. */
 +        ptr += 14 + 1 + 1 + 1 + 3 + 1;
 +        /* ptr = number of children.  */
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv->name);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        ptr += *ptr + 1;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv->name);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +
 +        /* Skip 2 more fields.  */
 +        ptr += 8 + 8;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic)
 +            || ptr + *ptr + 1>= vblk[i].dynamic
 +            + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (lv->internal_id);
 +            grub_free (lv->name);
 +            grub_free (lv);
 +            goto fail2;
 +          }
 +        lv->size = read_int (ptr + 1, *ptr);
 +        lv->segments->extent_count = lv->size;
 +
 +        lv->next = vg->lvs;
 +        vg->lvs = lv;
 +      }
 +    }
 +
 +  /* Now the components.  */
 +  for (cursec = startsec + 0x12; cursec < endsec; cursec++)
 +    {
 +      struct grub_ldm_vblk vblk[GRUB_DISK_SECTOR_SIZE
 +                              / sizeof (struct grub_ldm_vblk)];
 +      unsigned i;
 +      err = grub_disk_read (disk, cursec, 0,
 +                          sizeof(vblk), &vblk);
 +      if (err)
 +      goto fail2;
 +
 +      for (i = 0; i < ARRAY_SIZE (vblk); i++)
 +      {
 +        struct grub_diskfilter_lv *comp;
 +        struct grub_diskfilter_lv *lv;
 +        grub_uint8_t type;
 +
 +        grub_uint8_t *ptr;
 +        if (grub_memcmp (vblk[i].magic, LDM_VBLK_MAGIC,
 +                         sizeof (vblk[i].magic)) != 0)
 +          continue;
 +        if (grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_CONSISTENT
 +            && grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_STILL_ACTIVE)
 +          continue;
 +        if (vblk[i].type != ENTRY_COMPONENT)
 +          continue;
 +        comp = grub_zalloc (sizeof (*comp));
 +        if (!comp)
 +          goto fail2;
 +        comp->visible = 0;
 +        comp->name = 0;
 +        comp->fullname = 0;
 +
 +        ptr = vblk[i].dynamic;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +        comp->internal_id = grub_malloc ((grub_size_t) ptr[0] + 2);
 +        if (!comp->internal_id)
 +          {
 +            grub_free (comp);
 +            goto fail2;
 +          }
 +        grub_memcpy (comp->internal_id, ptr, ptr[0] + 1);
 +        comp->internal_id[ptr[0] + 1] = 0;
 +
 +        ptr += *ptr + 1;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (comp->internal_id);
 +            grub_free (comp);
 +            goto fail2;
 +          }
 +        /* ptr = name.  */
 +        ptr += *ptr + 1;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (comp->internal_id);
 +            grub_free (comp);
 +            goto fail2;
 +          }
 +        /* ptr = state.  */
 +        ptr += *ptr + 1;
 +        type = *ptr++;
 +        /* skip zeros.  */
 +        ptr += 4;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (comp->internal_id);
 +            grub_free (comp);
 +            goto fail2;
 +          }
 +
 +        /* ptr = number of children. */
 +        ptr += *ptr + 1;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (comp->internal_id);
 +            grub_free (comp);
 +            goto fail2;
 +          }
 +        ptr += 8 + 8;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic
 +            + sizeof (vblk[i].dynamic))
 +          {
 +            grub_free (comp->internal_id);
 +            grub_free (comp);
 +            goto fail2;
 +          }
 +        for (lv = vg->lvs; lv; lv = lv->next)
 +          {
 +            if (lv->internal_id[0] == ptr[0]
 +                && grub_memcmp (lv->internal_id + 1, ptr + 1, ptr[0]) == 0)
 +              break;
 +          }
 +        if (!lv)
 +          {
 +            grub_free (comp->internal_id);
 +            grub_free (comp);
 +            continue;
 +          }
 +        comp->size = lv->size;
 +        if (type == SPANNED)
 +          {
 +            comp->segment_alloc = 8;
 +            comp->segment_count = 0;
 +            comp->segments = grub_malloc (sizeof (*comp->segments)
 +                                          * comp->segment_alloc);
 +            if (!comp->segments)
 +              goto fail2;
 +          }
 +        else
 +          {
 +            comp->segment_alloc = 1;
 +            comp->segment_count = 1;
 +            comp->segments = grub_malloc (sizeof (*comp->segments));
 +            if (!comp->segments)
 +              goto fail2;
 +            comp->segments->start_extent = 0;
 +            comp->segments->extent_count = lv->size;
 +            comp->segments->layout = 0;
 +            if (type == STRIPE)
 +              comp->segments->type = GRUB_DISKFILTER_STRIPED;
 +            else if (type == RAID5)
 +              {
 +                comp->segments->type = GRUB_DISKFILTER_RAID5;
 +                comp->segments->layout = GRUB_RAID_LAYOUT_SYMMETRIC_MASK;
 +              }
 +            else
 +              goto fail2;
 +            ptr += *ptr + 1;
 +            ptr++;
 +            if (!(vblk[i].flags & 0x10))
 +              goto fail2;
 +            if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic)
 +                || ptr + *ptr + 1 >= vblk[i].dynamic
 +                + sizeof (vblk[i].dynamic))
 +              {
 +                grub_free (comp->internal_id);
 +                grub_free (comp);
 +                goto fail2;
 +              }
 +            comp->segments->stripe_size = read_int (ptr + 1, *ptr);
 +            ptr += *ptr + 1;
 +            if (ptr + *ptr + 1 >= vblk[i].dynamic
 +                + sizeof (vblk[i].dynamic))
 +              {
 +                grub_free (comp->internal_id);
 +                grub_free (comp);
 +                goto fail2;
 +              }
 +            comp->segments->node_count = read_int (ptr + 1, *ptr);
 +            comp->segments->node_alloc = comp->segments->node_count;
 +            comp->segments->nodes = grub_zalloc (sizeof (*comp->segments->nodes)
 +                                                 * comp->segments->node_alloc);
 +            if (!lv->segments->nodes)
 +              goto fail2;
 +          }
 +
 +        if (lv->segments->node_alloc == lv->segments->node_count)
 +          {
 +            void *t;
 +            lv->segments->node_alloc *= 2; 
 +            t = grub_realloc (lv->segments->nodes,
 +                              sizeof (*lv->segments->nodes)
 +                              * lv->segments->node_alloc);
 +            if (!t)
 +              goto fail2;
 +            lv->segments->nodes = t;
 +          }
 +        lv->segments->nodes[lv->segments->node_count].pv = 0;
 +        lv->segments->nodes[lv->segments->node_count].start = 0;
 +        lv->segments->nodes[lv->segments->node_count++].lv = comp;
 +        comp->next = vg->lvs;
 +        vg->lvs = comp;
 +      }
 +    }
 +  /* Partitions.  */
 +  for (cursec = startsec + 0x12; cursec < endsec; cursec++)
 +    {
 +      struct grub_ldm_vblk vblk[GRUB_DISK_SECTOR_SIZE
 +                              / sizeof (struct grub_ldm_vblk)];
 +      unsigned i;
 +      err = grub_disk_read (disk, cursec, 0,
 +                          sizeof(vblk), &vblk);
 +      if (err)
 +      goto fail2;
 +
 +      for (i = 0; i < ARRAY_SIZE (vblk); i++)
 +      {
 +        struct grub_diskfilter_lv *comp;
 +        struct grub_diskfilter_node part;
 +        grub_disk_addr_t start, size;
 +
 +        grub_uint8_t *ptr;
 +        if (grub_memcmp (vblk[i].magic, LDM_VBLK_MAGIC,
 +                         sizeof (vblk[i].magic)) != 0)
 +          continue;
 +        if (grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_CONSISTENT
 +            && grub_be_to_cpu16 (vblk[i].update_status)
 +            != STATUS_STILL_ACTIVE)
 +          continue;
 +        if (vblk[i].type != ENTRY_PARTITION)
 +          continue;
 +        part.lv = 0;
 +        part.pv = 0;
 +
 +        ptr = vblk[i].dynamic;
 +        if (ptr + *ptr + 1 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +        /* ID */
 +        ptr += *ptr + 1;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +        /* ptr = name.  */
 +        ptr += *ptr + 1;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +
 +        /* skip zeros and logcommit id.  */
 +        ptr += 4 + 8;
 +        if (ptr + 16 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +        part.start = read_int (ptr, 8);
 +        start = read_int (ptr + 8, 8);
 +        ptr += 16;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic)
 +            || ptr + *ptr + 1 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +        size = read_int (ptr + 1, *ptr);
 +        ptr += *ptr + 1;
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic)
 +            || ptr + *ptr + 1 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +
 +        for (comp = vg->lvs; comp; comp = comp->next)
 +          if (comp->internal_id[0] == ptr[0]
 +              && grub_memcmp (ptr + 1, comp->internal_id + 1,
 +                              comp->internal_id[0]) == 0)
 +            goto out;
 +        continue;
 +      out:
 +        if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic)
 +            || ptr + *ptr + 1 >= vblk[i].dynamic + sizeof (vblk[i].dynamic))
 +          {
 +            goto fail2;
 +          }
 +        ptr += *ptr + 1;
 +        struct grub_diskfilter_pv *pv;
 +        for (pv = vg->pvs; pv; pv = pv->next)
 +          if (pv->internal_id[0] == ptr[0]
 +              && grub_memcmp (pv->internal_id + 1, ptr + 1, ptr[0]) == 0)
 +            part.pv = pv;
 +
 +        if (comp->segment_alloc == 1)
 +          {
 +            unsigned index;
 +            ptr += *ptr + 1;
 +            if (ptr + *ptr + 1 >= vblk[i].dynamic
 +                + sizeof (vblk[i].dynamic))
 +              {
 +                goto fail2;
 +              }
 +            index = read_int (ptr + 1, *ptr);
 +            if (index < comp->segments->node_count)
 +              comp->segments->nodes[index] = part;
 +          }
 +        else
 +          {
 +            if (comp->segment_alloc == comp->segment_count)
 +              {
 +                void *t;
 +                comp->segment_alloc *= 2;
 +                t = grub_realloc (comp->segments,
 +                                  comp->segment_alloc
 +                                  * sizeof (*comp->segments));
 +                if (!t)
 +                  goto fail2;
 +                comp->segments = t;
 +              }
 +            comp->segments[comp->segment_count].start_extent = start;
 +            comp->segments[comp->segment_count].extent_count = size;
 +            comp->segments[comp->segment_count].type = GRUB_DISKFILTER_STRIPED;
 +            comp->segments[comp->segment_count].node_count = 1;
 +            comp->segments[comp->segment_count].node_alloc = 1;
 +            comp->segments[comp->segment_count].nodes
 +              = grub_malloc (sizeof (*comp->segments[comp->segment_count].nodes));
 +            if (!comp->segments[comp->segment_count].nodes)
 +              goto fail2;
 +            comp->segments[comp->segment_count].nodes[0] = part;
 +            comp->segment_count++;
 +          }
 +      }
 +    }
 +  if (grub_diskfilter_vg_register (vg))
 +    goto fail2;
 +  return vg;
 + fail2:
 +  {
 +    struct grub_diskfilter_lv *lv, *next_lv;
 +    struct grub_diskfilter_pv *pv, *next_pv;
 +    for (lv = vg->lvs; lv; lv = next_lv)
 +      {
 +      unsigned i;
 +      for (i = 0; i < lv->segment_count; i++)
 +        grub_free (lv->segments[i].nodes);
 +
 +      next_lv = lv->next;
 +      grub_free (lv->segments);
 +      grub_free (lv->internal_id);
 +      grub_free (lv->name);
 +      grub_free (lv->fullname);
 +      grub_free (lv);
 +      }
 +    for (pv = vg->pvs; pv; pv = next_pv)
 +      {
 +      next_pv = pv->next;
 +      grub_free (pv->id.uuid);
 +      grub_free (pv);
 +      }
 +  }
 +  grub_free (vg->uuid);
 +  grub_free (vg);
 +  return NULL;
 +}
 +
 +static struct grub_diskfilter_vg * 
 +grub_ldm_detect (grub_disk_t disk,
 +               struct grub_diskfilter_pv_id *id,
 +               grub_disk_addr_t *start_sector)
 +{
 +  grub_err_t err;
 +  struct grub_ldm_label label;
 +  struct grub_diskfilter_vg *vg;
 +
 +#ifdef GRUB_UTIL
 +  grub_util_info ("scanning %s for LDM", disk->name);
 +#endif
 +
 +  {
 +    int i;
 +    for (i = 0; i < 3; i++)
 +      {
 +      grub_disk_addr_t sector;
 +      switch (i)
 +        {
 +        case 0:
 +          sector = LDM_LABEL_SECTOR;
 +          break;
 +        case 1:
 +          /* LDM is never inside a partition.  */
 +          if (disk->partition)
 +            continue;
 +          sector = grub_disk_get_size (disk);
 +          if (sector == GRUB_DISK_SIZE_UNKNOWN)
 +            continue;
 +          sector--;
 +          break;
 +          /* FIXME: try the third copy.  */
 +        case 2:
 +          sector = gpt_ldm_sector (disk);
 +          if (!sector)
 +            continue;
 +          break;
 +        }
 +      err = grub_disk_read (disk, sector, 0,
 +                            sizeof(label), &label);
 +      if (err)
 +        return NULL;
 +      if (grub_memcmp (label.magic, LDM_MAGIC, sizeof (label.magic)) == 0
 +          && grub_be_to_cpu16 (label.ver_major) == 0x02
 +          && grub_be_to_cpu16 (label.ver_minor) >= 0x0b
 +          && grub_be_to_cpu16 (label.ver_minor) <= 0x0c)
 +        break;
 +      }
 +
 +    /* Return if we didn't find a label. */
 +    if (i == 3)
 +      {
 +#ifdef GRUB_UTIL
 +      grub_util_info ("no LDM signature found");
 +#endif
 +      return NULL;
 +      }
 +  }
 +
 +  id->uuid = grub_malloc (LDM_GUID_STRLEN + 1);
 +  if (!id->uuid)
 +    return NULL;
 +  grub_memcpy (id->uuid, label.disk_guid, LDM_GUID_STRLEN);
 +  id->uuid[LDM_GUID_STRLEN] = 0;
 +  id->uuidlen = grub_strlen ((char *) id->uuid);
 +  *start_sector = grub_be_to_cpu64 (label.pv_start);
 +
 +  {
 +    grub_size_t s;
 +    for (s = 0; s < LDM_GUID_STRLEN && label.group_guid[s]; s++);
 +    vg = grub_diskfilter_get_vg_by_uuid (s, label.group_guid);
 +    if (! vg)
 +      vg = make_vg (disk, &label);
 +  }
 +
 +  if (!vg)
 +    {
 +      grub_free (id->uuid);
 +      return NULL;
 +    }
 +  return vg;
 +}
 +
 +#ifdef GRUB_UTIL
 +
 +char *
 +grub_util_get_ldm (grub_disk_t disk, grub_disk_addr_t start)
 +{
 +  struct grub_diskfilter_pv *pv = NULL;
 +  struct grub_diskfilter_vg *vg = NULL;
 +  struct grub_diskfilter_lv *res = 0, *lv, *res_lv = 0;
 +
 +  pv = grub_diskfilter_get_pv_from_disk (disk, &vg);
 +
 +  if (!pv)
 +    return NULL;
 +
 +  for (lv = vg->lvs; lv; lv = lv->next)
 +    if (lv->segment_count == 1 && lv->segments->node_count == 1
 +      && lv->segments->type == GRUB_DISKFILTER_STRIPED
 +      && lv->segments->nodes->pv == pv
 +      && lv->segments->nodes->start + pv->start_sector == start)
 +      {
 +      res_lv = lv;
 +      break;
 +      }
 +  if (!res_lv)
 +    return NULL;
 +  for (lv = vg->lvs; lv; lv = lv->next)
 +    if (lv->segment_count == 1 && lv->segments->node_count == 1
 +      && lv->segments->type == GRUB_DISKFILTER_MIRROR
 +      && lv->segments->nodes->lv == res_lv)
 +      {
 +      res = lv;
 +      break;
 +      }
 +  if (res && res->fullname)
 +    return grub_strdup (res->fullname);
 +  return NULL;
 +}
 +
 +int
 +grub_util_is_ldm (grub_disk_t disk)
 +{
 +  int i;
 +  for (i = 0; i < 3; i++)
 +    {
 +      grub_disk_addr_t sector;
 +      grub_err_t err;
 +      struct grub_ldm_label label;
 +
 +      switch (i)
 +      {
 +      case 0:
 +        sector = LDM_LABEL_SECTOR;
 +        break;
 +      case 1:
 +        /* LDM is never inside a partition.  */
 +        if (disk->partition)
 +          continue;
 +        sector = grub_disk_get_size (disk);
 +        if (sector == GRUB_DISK_SIZE_UNKNOWN)
 +          continue;
 +        sector--;
 +        break;
 +        /* FIXME: try the third copy.  */
 +      case 2:
 +        sector = gpt_ldm_sector (disk);
 +        if (!sector)
 +          continue;
 +        break;
 +      }
 +      err = grub_disk_read (disk, sector, 0, sizeof(label), &label);
 +      if (err)
 +      {
 +        grub_errno = GRUB_ERR_NONE;
 +        return 0;
 +      }
 +      /* This check is more relaxed on purpose.  */
 +      if (grub_memcmp (label.magic, LDM_MAGIC, sizeof (label.magic)) == 0)
 +      return 1;
 +    }
 +
 +  return 0;
 +}
 +
 +grub_err_t
 +grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,
++                   unsigned int max_nsectors,
 +                   grub_embed_type_t embed_type,
 +                   grub_disk_addr_t **sectors)
 +{
 +  struct grub_diskfilter_pv *pv = NULL;
 +  struct grub_diskfilter_vg *vg;
 +  struct grub_diskfilter_lv *lv;
 +  unsigned i;
 +
 +  if (embed_type != GRUB_EMBED_PCBIOS)
 +    return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
 +                     "LDM curently supports only PC-BIOS embedding");
 +  if (disk->partition)
 +    return grub_error (GRUB_ERR_BUG, "disk isn't LDM");
 +  pv = grub_diskfilter_get_pv_from_disk (disk, &vg);
 +  if (!pv)
 +    return grub_error (GRUB_ERR_BUG, "disk isn't LDM");
 +  for (lv = vg->lvs; lv; lv = lv->next)
 +    {
 +      struct grub_diskfilter_lv *comp;
 +
 +      if (!lv->visible || !lv->fullname)
 +      continue;
 +
 +      if (lv->segment_count != 1)
 +      continue;
 +      if (lv->segments->type != GRUB_DISKFILTER_MIRROR
 +        || lv->segments->node_count != 1
 +        || lv->segments->start_extent != 0
 +        || lv->segments->extent_count != lv->size)
 +      continue;
 +
 +      comp = lv->segments->nodes->lv;
 +      if (!comp)
 +      continue;
 +
 +      if (comp->segment_count != 1 || comp->size != lv->size)
 +      continue;
 +      if (comp->segments->type != GRUB_DISKFILTER_STRIPED
 +        || comp->segments->node_count != 1
 +        || comp->segments->start_extent != 0
 +        || comp->segments->extent_count != lv->size)
 +      continue;
 +
 +      /* How to implement proper check is to be discussed.  */
 +#if 1
 +      if (1)
 +      continue;
 +#else
 +      if (grub_strcmp (lv->name, "Volume5") != 0)
 +      continue;
 +#endif
 +      if (lv->size < *nsectors)
 +      return grub_error (GRUB_ERR_OUT_OF_RANGE,
 +                         /* TRANSLATORS: it's a partition for embedding,
 +                            not a partition embed into something.  */
 +                         N_("your LDM embedding Partition is too small;"
 +                            " embedding won't be possible"));
 +      *nsectors = lv->size;
++      if (*nsectors > max_nsectors)
++      *nsectors = max_nsectors;
 +      *sectors = grub_malloc (*nsectors * sizeof (**sectors));
 +      if (!*sectors)
 +      return grub_errno;
 +      for (i = 0; i < *nsectors; i++)
 +      (*sectors)[i] = (lv->segments->nodes->start
 +                       + comp->segments->nodes->start
 +                       + comp->segments->nodes->pv->start_sector + i);
 +      return GRUB_ERR_NONE;
 +    }
 +
 +  return grub_error (GRUB_ERR_FILE_NOT_FOUND,
 +                   /* TRANSLATORS: it's a partition for embedding,
 +                      not a partition embed into something.  */
 +                   N_("this LDM has no Embedding Partition;"
 +                      " embedding won't be possible"));
 +}
 +#endif
 +
 +static struct grub_diskfilter grub_ldm_dev = {
 +  .name = "ldm",
 +  .detect = grub_ldm_detect,
 +  .next = 0
 +};
 +
 +GRUB_MOD_INIT (ldm)
 +{
 +  grub_diskfilter_register (&grub_ldm_dev);
 +}
 +
 +GRUB_MOD_FINI (ldm)
 +{
 +  grub_diskfilter_unregister (&grub_ldm_dev);
 +}
index c7b09fa8b0e5bfe3b8337b866cec35f228156289,179891da8a3121b03f2140c42787e27066ae506b..a41ef30dc35f73cba95f865e04736929aad990f6
@@@ -1598,69 -116,15 +1598,72 @@@ grub_btrfs_uuid (grub_device_t device, 
    return grub_errno;
  }
  
 -static struct grub_fs grub_btrfs_fs =
 -  {
 -    .name = "btrfs",
 -    .dir = grub_btrfs_dir,
 -    .open = grub_btrfs_open,
 -    .uuid = grub_btrfs_uuid,
 -  };
 +static grub_err_t
 +grub_btrfs_label (grub_device_t device, char **label)
 +{
 +  struct grub_btrfs_data *data;
 +
 +  *label = NULL;
 +
 +  data = grub_btrfs_mount (device);
 +  if (!data)
 +    return grub_errno;
 +
 +  *label = grub_strndup (data->sblock.label, sizeof (data->sblock.label));
 +
 +  grub_btrfs_unmount (data);
 +
 +  return grub_errno;
 +}
 +
 +#ifdef GRUB_UTIL
 +static grub_err_t
 +grub_btrfs_embed (grub_device_t device __attribute__ ((unused)),
 +                unsigned int *nsectors,
++                unsigned int max_nsectors,
 +                grub_embed_type_t embed_type,
 +                grub_disk_addr_t **sectors)
 +{
 +  unsigned i;
 +
 +  if (embed_type != GRUB_EMBED_PCBIOS)
 +    return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
 +                     "BtrFS currently supports only PC-BIOS embedding");
 +
 +  if (64 * 2 - 1 < *nsectors)
 +    return grub_error (GRUB_ERR_OUT_OF_RANGE,
 +                     N_("your core.img is unusually large.  "
 +                        "It won't fit in the embedding area"));
 +
 +  *nsectors = 64 * 2 - 1;
++  if (*nsectors > max_nsectors)
++    *nsectors = max_nsectors;
 +  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
 +  if (!*sectors)
 +    return grub_errno;
 +  for (i = 0; i < *nsectors; i++)
 +    (*sectors)[i] = i + 1;
 +
 +  return GRUB_ERR_NONE;
 +}
 +#endif
 +
 +static struct grub_fs grub_btrfs_fs = {
 +  .name = "btrfs",
 +  .dir = grub_btrfs_dir,
 +  .open = grub_btrfs_open,
 +  .read = grub_btrfs_read,
 +  .close = grub_btrfs_close,
 +  .uuid = grub_btrfs_uuid,
 +  .label = grub_btrfs_label,
 +#ifdef GRUB_UTIL
 +  .embed = grub_btrfs_embed,
 +  .reserved_first_sector = 1,
 +  .blocklist_install = 0,
 +#endif
 +};
  
 -GRUB_MOD_INIT(btrfs)
 +GRUB_MOD_INIT (btrfs)
  {
    grub_fs_register (&grub_btrfs_fs);
  }
index 2320050437dac384076692caf2e2a288ffb535d2,3a94d88742d23e844a2b6d6fbb01855d3ba09ddc..d500e5c0dc35700ef32d27b8d55efa2391ec813b
@@@ -3898,35 -2522,6 +3898,38 @@@ grub_zfs_dir (grub_device_t device, con
    return grub_errno;
  }
  
 +#ifdef GRUB_UTIL
 +static grub_err_t
 +grub_zfs_embed (grub_device_t device __attribute__ ((unused)),
 +              unsigned int *nsectors,
++              unsigned int max_nsectors,
 +              grub_embed_type_t embed_type,
 +              grub_disk_addr_t **sectors)
 +{
 +  unsigned i;
 +
 +  if (embed_type != GRUB_EMBED_PCBIOS)
 +    return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
 +                     "ZFS currently supports only PC-BIOS embedding");
 +
 + if ((VDEV_BOOT_SIZE >> GRUB_DISK_SECTOR_BITS) < *nsectors)
 +    return grub_error (GRUB_ERR_OUT_OF_RANGE,
 +                     N_("your core.img is unusually large.  "
 +                        "It won't fit in the embedding area"));
 +
 +  *nsectors = (VDEV_BOOT_SIZE >> GRUB_DISK_SECTOR_BITS);
++  if (*nsectors > max_nsectors)
++    *nsectors = max_nsectors;
 +  *sectors = grub_malloc (*nsectors * sizeof (**sectors));
 +  if (!*sectors)
 +    return grub_errno;
 +  for (i = 0; i < *nsectors; i++)
 +    (*sectors)[i] = i + (VDEV_BOOT_OFFSET >> GRUB_DISK_SECTOR_BITS);
 +
 +  return GRUB_ERR_NONE;
 +}
 +#endif
 +
  static struct grub_fs grub_zfs_fs = {
    .name = "zfs",
    .dir = grub_zfs_dir,
index 8160b85d7d4ffdda5c57c1166115383bee348a6f,c4c10d73d506bc6ab506ad2688b2a596812d46a9..c51753d5fb415c6d758a083e7d2a4006ee099b9c
@@@ -127,7 -124,8 +127,8 @@@ grub_gpt_partition_map_iterate (grub_di
  
  #ifdef GRUB_UTIL
  static grub_err_t
 -gpt_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
 +gpt_partition_map_embed (struct grub_disk *disk_, unsigned int *nsectors,
+                        unsigned int max_nsectors,
                         grub_embed_type_t embed_type,
                         grub_disk_addr_t **sectors)
  {
  
    if (len < *nsectors)
      return grub_error (GRUB_ERR_OUT_OF_RANGE,
 -                     "Your BIOS Boot Partition is too small;"
 -                     " embedding won't be possible!");
 +                     N_("your BIOS Boot Partition is too small;"
 +                        " embedding won't be possible"));
  
    *nsectors = len;
+   if (*nsectors > max_nsectors)
+     *nsectors = max_nsectors;
    *sectors = grub_malloc (*nsectors * sizeof (**sectors));
    if (!*sectors)
      return grub_errno;
index 0049fbd462156c8929fbf2ccfaa2dde1bc600432,55545646b8bfdc60a971577f2f4d422e3408cdb8..2b3bf167c084ec6685d8c549efecfdf82068b393
@@@ -30,6 -27,66 +30,66 @@@ GRUB_MOD_LICENSE ("GPLv3+")
  static struct grub_partition_map grub_msdos_partition_map;
  \f
  
 -  [TYPE_RAID] = "Sector %llu is already in use by %s; avoiding it.  "
 -  "Please ask the manufacturer not to store data in MBR gap",
 -  [TYPE_SOFTWARE] = "Sector %llu is already in use by %s; avoiding it.  "
 -  "This software may cause boot or other problems in "
 -  "future.  Please ask its authors not to store data "
 -  "in the boot track" 
+ #ifdef GRUB_UTIL
+ #include <grub/emu/misc.h>
+ struct embed_signature
+ {
+   const char *name;
+   const char *signature;
+   int signature_len;
+   enum { TYPE_SOFTWARE, TYPE_RAID } type;
+ };
+ const char message_warn[][200] = {
++  [TYPE_RAID] = N_("Sector %llu is already in use by %s; avoiding it.  "
++                 "Please ask the manufacturer not to store data in MBR gap"),
++  [TYPE_SOFTWARE] = N_("Sector %llu is already in use by %s; avoiding it.  "
++                     "This software may cause boot or other problems in "
++                     "future.  Please ask its authors not to store data "
++                     "in the boot track") 
+ };
+ /* Signatures of other software that may be using sectors in the embedding
+    area.  */
+ struct embed_signature embed_signatures[] =
+   {
+     {
+       .name = "ZISD",
+       .signature = "ZISD",
+       .signature_len = 4,
+       .type = TYPE_SOFTWARE
+     },
+     {
+       .name = "FlexNet",
+       .signature = "\xd4\x41\xa0\xf5\x03\x00\x03\x00",
+       .signature_len = 8,
+       .type = TYPE_SOFTWARE
+     },
+     {
+       .name = "FlexNet",
+       .signature = "\xd8\x41\xa0\xf5\x02\x00\x02\x00",
+       .signature_len = 8,
+       .type = TYPE_SOFTWARE
+     },
+     {
+       /* from Ryan Perkins */
+       .name = "HP Backup and Recovery Manager (?)",
+       .signature = "\x70\x8a\x5d\x46\x35\xc5\x1b\x93"
+                  "\xae\x3d\x86\xfd\xb1\x55\x3e\xe0",
+       .signature_len = 16,
+       .type = TYPE_SOFTWARE
+     },
+     {
+       .name = "HighPoint RAID controller",
+       .signature = "ycgl",
+       .signature_len = 4,
+       .type = TYPE_RAID
+     }
+   };
+ #endif
  grub_err_t
  grub_partition_msdos_iterate (grub_disk_t disk,
                              int (*hook) (grub_disk_t disk,
@@@ -254,6 -309,51 +322,51 @@@ pc_partition_map_embed (struct grub_dis
        return grub_errno;
        for (i = 0; i < *nsectors; i++)
        (*sectors)[i] = 1 + i;
 -        grub_util_warn (message_warn[embed_signatures[j].type],
+       /* Check for software that is already using parts of the embedding
+        * area.
+        */
+       embed_signature_check = grub_malloc (GRUB_DISK_SECTOR_SIZE);
+       for (i = 0; i < *nsectors; i++)
+       {
+         if (grub_disk_read (disk, (*sectors)[i], 0, GRUB_DISK_SECTOR_SIZE,
+                             embed_signature_check))
+           continue;
+         for (j = 0; j < ARRAY_SIZE (embed_signatures); j++)
+           if (! grub_memcmp (embed_signatures[j].signature,
+                              embed_signature_check,
+                              embed_signatures[j].signature_len))
+             break;
+         if (j == ARRAY_SIZE (embed_signatures))
+           continue;
 -                         "Other software is using the embedding area, and "
 -                         "there is not enough room for core.img.  Such "
 -                         "software is often trying to store data in a way "
 -                         "that avoids detection.  We recommend you "
 -                         "investigate.");
++        grub_util_warn (_(message_warn[embed_signatures[j].type]),
+                         (*sectors)[i], embed_signatures[j].name);
+         avail_nsectors--;
+         if (avail_nsectors < *nsectors)
+           *nsectors = avail_nsectors;
+         /* Avoid this sector.  */
+         for (j = i; j < *nsectors; j++)
+           (*sectors)[j]++;
+         /* Have we run out of space?  */
+         if (avail_nsectors < orig_nsectors)
+           break;
+         /* Make sure to check the next sector.  */
+         i--;
+       }
+       grub_free (embed_signature_check);
+       if (*nsectors < orig_nsectors)
+       return grub_error (GRUB_ERR_OUT_OF_RANGE,
++                         N_("other software is using the embedding area, and "
++                            "there is not enough room for core.img.  Such "
++                            "software is often trying to store data in a way "
++                            "that avoids detection.  We recommend you "
++                            "investigate"));
        return GRUB_ERR_NONE;
      }
  
index b3db85902d63967e14cf62127200b5ad58ae5d9f,d8cc02e145d667bb3516bb0c166c3f1cede06eb5..88c20f5c9720496b1dd9f7c9020158a74e91eb2f
@@@ -30,38 -28,5 +30,39 @@@ char *grub_util_biosdisk_get_grub_dev (
  const char *grub_util_biosdisk_get_osdev (grub_disk_t disk);
  int grub_util_biosdisk_is_present (const char *name);
  int grub_util_biosdisk_is_floppy (grub_disk_t disk);
 +const char *
 +grub_util_biosdisk_get_compatibility_hint (grub_disk_t disk);
 +grub_err_t grub_util_biosdisk_flush (struct grub_disk *disk);
 +void grub_util_pull_device (const char *osname);
 +grub_err_t
 +grub_util_fd_seek (int fd, const char *name, grub_uint64_t sector);
 +ssize_t grub_util_fd_read (int fd, char *buf, size_t len);
 +ssize_t grub_util_fd_write (int fd, const char *buf, size_t len);
 +grub_err_t
 +grub_cryptodisk_cheat_mount (const char *sourcedev, const char *cheat);
 +void grub_util_cryptodisk_print_uuid (grub_disk_t disk);
 +char *
 +grub_util_get_ldm (grub_disk_t disk, grub_disk_addr_t start);
 +int
 +grub_util_is_ldm (grub_disk_t disk);
 +#ifdef GRUB_UTIL
 +grub_err_t
 +grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,
++                   unsigned int max_nsectors,
 +                   grub_embed_type_t embed_type,
 +                   grub_disk_addr_t **sectors);
 +#endif
 +grub_disk_addr_t
 +grub_hostdisk_find_partition_start (const char *dev);
 +const char *
 +grub_hostdisk_os_dev_to_grub_drive (const char *os_dev, int add);
 +
 +#if !defined(__MINGW32__)
 +grub_uint64_t
 +grub_util_get_fd_sectors (int fd, const char *name, unsigned *log_secsize);
 +#endif
 +
 +char *
 +grub_util_get_os_disk (const char *os_dev);
  
  #endif /* ! GRUB_BIOSDISK_MACHINE_UTIL_HEADER */
index 00b78591dc134e430cb3fd21f86c6d4bb7a194d3,994eb8080913b8106cb7dbdcb07c1c24245d3c60..503d1a9cb9fcefddbaab702d30eb5418fc98c516
@@@ -79,16 -74,8 +79,17 @@@ struct grub_f
    grub_err_t (*mtime) (grub_device_t device, grub_int32_t *timebuf);
  
  #ifdef GRUB_UTIL
 +  /* Determine sectors available for embedding.  */
 +  grub_err_t (*embed) (grub_device_t device, unsigned int *nsectors,
++                     unsigned int max_nsectors,
 +                     grub_embed_type_t embed_type,
 +                     grub_disk_addr_t **sectors);
 +
    /* Whether this filesystem reserves first sector for DOS-style boot.  */
    int reserved_first_sector;
 +
 +  /* Whether blocklist installs have a chance to work.  */
 +  int blocklist_install;
  #endif
  };
  typedef struct grub_fs *grub_fs_t;
Simple merge
index 2b4dce4aa72de9cab57a9335e3191d4fdd8289f5,02abb0d1f16815b8f49b31285ffbab264bbe510a..300994cc93b21a8403780ca88dbf1a0697e1b1a6
@@@ -337,7 -329,7 +337,7 @@@ setup (const char *dir
      grub_disk_addr_t *sectors;
      int i;
      grub_fs_t fs;
--    unsigned int nsec;
++    unsigned int nsec, maxsec;
  
      /* Unlike root_dev, with dest_dev we're interested in the partition map even
         if dest_dev itself is a whole disk.  */
        goto unable_to_embed;
        }
  
 +    if (fs && !fs->embed)
 +      {
 +      grub_util_warn (_("File system '%s' doesn't support embedding"),
 +                      fs->name);
 +      goto unable_to_embed;
 +      }
 +
      nsec = core_sectors;
 -    err = dest_partmap->embed (dest_dev->disk, &nsec, 2 * core_sectors,
++
++    maxsec = 2 * core_sectors;
++    if (maxsec > ((0x78000 - GRUB_KERNEL_I386_PC_LINK_ADDR)
++              >> GRUB_DISK_SECTOR_BITS))
++      maxsec = ((0x78000 - GRUB_KERNEL_I386_PC_LINK_ADDR)
++              >> GRUB_DISK_SECTOR_BITS);
++
 +    if (is_ldm)
-       err = grub_util_ldm_embed (dest_dev->disk, &nsec,
++      err = grub_util_ldm_embed (dest_dev->disk, &nsec, maxsec,
 +                               GRUB_EMBED_PCBIOS, &sectors);
 +    else if (dest_partmap)
-       err = dest_partmap->embed (dest_dev->disk, &nsec,
++      err = dest_partmap->embed (dest_dev->disk, &nsec, maxsec,
 +                               GRUB_EMBED_PCBIOS, &sectors);
 +    else
-       err = fs->embed (dest_dev, &nsec,
++      err = fs->embed (dest_dev, &nsec, maxsec,
 +                     GRUB_EMBED_PCBIOS, &sectors);
 +    if (!err && nsec < core_sectors)
 +      {
 +      err = grub_error (GRUB_ERR_OUT_OF_RANGE,
 +                        N_("Your embedding area is unusually small.  "
 +                           "core.img won't fit in it."));
 +      }
++    err = dest_partmap->embed (dest_dev->disk, &nsec, maxsec,
+                              GRUB_EMBED_PCBIOS, &sectors);
      
      if (err)
        {
        goto unable_to_embed;
        }
  
-     if (nsec > 2 * core_sectors)
-       nsec = 2 * core_sectors;
-     if (nsec > ((0x78000 - GRUB_KERNEL_I386_PC_LINK_ADDR)
-               >> GRUB_DISK_SECTOR_BITS))
-       nsec = ((0x78000 - GRUB_KERNEL_I386_PC_LINK_ADDR)
-             >> GRUB_DISK_SECTOR_BITS);
++    assert (nsec <= maxsec);
 +
      /* Clean out the blocklists.  */
      block = first_block;
      while (block->len)
      *(grub_uint32_t *) (core_img + GRUB_DISK_SECTOR_SIZE
                        + GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY)
        = grub_host_to_target32 (nsec * GRUB_DISK_SECTOR_SIZE - core_size);
 -
 -    grub_reed_solomon_add_redundancy (core_img + GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART + GRUB_DISK_SECTOR_SIZE,
 -                                    core_size - GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART - GRUB_DISK_SECTOR_SIZE,
 +    no_rs_length = grub_target_to_host16 
 +      (*(grub_uint16_t *) (core_img
 +                         + GRUB_DISK_SECTOR_SIZE
 +                         + GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_LENGTH));
 +
 +    if (no_rs_length == 0xffff)
 +      grub_util_error ("%s", _("core.img version mismatch"));
 +
 +    void *tmp = xmalloc (core_size);
 +    grub_memcpy (tmp, core_img, core_size);
 +    grub_reed_solomon_add_redundancy (core_img + no_rs_length + GRUB_DISK_SECTOR_SIZE,
 +                                    core_size - no_rs_length - GRUB_DISK_SECTOR_SIZE,
                                      nsec * GRUB_DISK_SECTOR_SIZE
                                      - core_size);
 +    assert (grub_memcmp (tmp, core_img, core_size) == 0);
 +    free (tmp);
  
-     /* Make sure that the second blocklist is a terminator.  */
-     block = first_block - 1;
-     block->start = 0;
-     block->len = 0;
-     block->segment = 0;
      /* Write the core image onto the disk.  */
      for (i = 0; i < nsec; i++)
        grub_disk_write (dest_dev->disk, sectors[i], 0,