[grub2] Merge in RHEL 7 changes and ARM works in progress.

Peter Jones pjones at fedoraproject.org
Thu Mar 13 19:32:45 UTC 2014


commit 78a3d7dfd932b40519fc24e0ee84d9f2db945d14
Author: Peter Jones <pjones at redhat.com>
Date:   Thu Mar 13 14:02:22 2014 -0400

    Merge in RHEL 7 changes and ARM works in progress.
    
    Signed-off-by: Peter Jones <pjones at redhat.com>

 0001-fix-EFI-detection-on-Windows.patch            |   43 +
 ...ern-arm-cache_armv6.S-Remove-.arch-direct.patch |  110 ++
 0003-NEWS-First-draft-of-2.02-entry.patch          |  163 ++
 ...emove-unused-error.h-from-kern-emu-misc.c.patch |   39 +
 ...-on-unavailable-coreboot-tables-if-not-ru.patch |   70 +
 ...ew-missing-entries.-Correct-existing-ones.patch |  121 ++
 ...p-.eh_frame-section-from-arm64-efi-kernel.patch |   39 +
 ...-boot-aa64.efi-for-boot-images-on-AArch64.patch |   37 +
 0009-fix-32-bit-compilation-on-MinGW-w64.patch     |   45 +
 ...nge-grub-mkrescue-to-use-bootaa64.efi-too.patch |   44 +
 ...t-correct-length-of-device-path-end-entry.patch |   12 +-
 ...il.def-grub-macbless-Change-mansection-to.patch |   39 +
 ...ple-to-EFI-rescue-image-to-fix-missing-pr.patch |   48 +
 ...stdisk.c-is-only-ever-compiled-on-FreeBSD.patch |   48 +
 0015-Prefer-more-portable-test-1-constructs.patch  |  109 ++
 0016-NEWS-Add-few-missing-entries.patch            |  100 +
 ...ern-efi-efi.c-Ensure-that-the-result-star.patch |   90 +
 ...ount.c-Extend-GCC-warning-workaround-to-g.patch |   47 +
 ...-BUILD_LDFLAGS-for-the-cross-compile-case.patch |  153 ++
 ...ore-term-terminfo.c-Recognize-keys-F1-F12.patch |  155 ++
 0021-Fix-ChangeLog-date.patch                      |   25 +
 ...-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch |   47 +
 ...XEEXT-support-to-fix-make-clean-on-Window.patch |  174 ++
 ...-loop-on-MinGW-due-to-libintl.h-pulling-s.patch |  281 +++
 ...ommands-macbless.c-Rename-FILE-and-DIR-to.patch |   61 +
 ...il.def-Link-grub-ofpathname-with-zfs-libs.patch |   39 +
 ...kefile.am-default_payload.elf-Add-modules.patch |   42 +
 ...emoval-of-cpu-machine-links-on-mingw-msys.patch |   55 +
 ...ormal-main.c-read_config_file-Buffer-conf.patch |   68 +
 0030-util-grub-install.c-Fix-a-typo.patch          |   40 +
 ...FILES-for-genemuinit-instead-of-MOD_FILES.patch |   91 +
 ...EPERM-when-modifying-kern.geom.debugflags.patch |   58 +
 ...ge-stop-condition-to-avoid-infinite-loops.patch |   52 +
 0034-increase-network-try-interval-gradually.patch |  111 ++
 ...r-DejaVu-also-in-usr-share-fonts-truetype.patch |   39 +
 ...ed-path-to-DejaVuSans-in-configure-summar.patch |   37 +
 ...NDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch |   62 +
 ...nstall.c-write_to_disk-Add-an-info-messag.patch |   38 +
 ...til-grub-install.c-List-available-targets.patch |  109 ++
 0040-Fix-several-translatable-strings.patch        |   78 +
 ...do-not-set-default-prefix-in-grub-mkimage.patch |   75 +
 ...64-32-cross-compile-failure-due-to-printf.patch |  108 ++
 ...erm-serial.c-grub_serial_register-Fix-inv.patch |   60 +
 ...l-support-for-partitioned-partx-loop-devi.patch |   55 +
 ...erm-at_keyboard.c-Tolerate-missing-keyboa.patch |  110 ++
 ...isk-ahci.c-Do-not-enable-I-O-decoding-and.patch |   57 +
 ...isk-ahci.c-Allocate-and-clean-space-for-a.patch |   55 +
 ...grub-core-disk-ahci.c-Add-safety-cleanups.patch |   62 +
 ...isk-ahci.c-Properly-handle-transactions-w.patch |   54 +
 ...isk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch |   42 +
 ...kfont.c-Build-fix-for-argp.h-with-older-g.patch |   42 +
 ...krescue.c-Build-fix-for-argp.h-with-older.patch |   44 +
 0053-add-grub_env_set_net_property-function.patch  |  199 ++
 0054-add-bootpath-parser-for-open-firmware.patch   |  211 +++
 ...isk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch |   40 +
 ...ern-i386-coreboot-mmap.c-Filter-out-0xa00.patch |   82 +
 ...oader-i386-multiboot_mbi.c-grub_multiboot.patch |   42 +
 ...map-i386-uppermem.c-lower_hook-COREBOOT-I.patch |   47 +
 ...ern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch |   88 +
 ...b-i386-openbsd_bootarg.h-Add-addr-and-fre.patch |   70 +
 ... => 0061-Migrate-PPC-from-Yaboot-to-Grub2.patch |    8 +-
 ...atch => 0062-Add-fw_path-variable-revised.patch |   10 +-
 ...fi.patch => 0063-Add-support-for-linuxefi.patch |    8 +-
 ...-linuxefi-and-initrdefi-where-appropriate.patch |    6 +-
 ...-allow-insmod-when-secure-boot-is-enabled.patch |    8 +-
 ...ass-x-hex-hex-straight-through-unmolested.patch |    6 +-
 ...h-on-http.patch => 0067-Fix-crash-on-http.patch |    6 +-
 ...BM-client-architecture-CAS-reboot-support.patch |   18 +-
 ...upport.patch => 0069-Add-vlan-tag-support.patch |   20 +-
 ... => 0070-Add-X-option-to-printf-functions.patch |    6 +-
 ...071-DHCP-client-ID-and-UUID-options-added.patch |   30 +-
 ...arch-for-specific-config-file-for-netboot.patch |   22 +-
 ...blscfg-module-to-parse-Boot-Loader-Specif.patch |    8 +-
 ...> 0074-Move-bash-completion-script-922997.patch |    6 +-
 ...et-console-display-attr-when-clear-screen.patch |    8 +-
 ...> 0076-Don-t-write-messages-to-the-screen.patch |    6 +-
 ...patch => 0077-Don-t-print-GNU-GRUB-header.patch |   12 +-
 ...atch => 0078-Don-t-add-to-highlighted-row.patch |    6 +-
 ...atch => 0079-Don-t-add-to-highlighted-row.patch |    6 +-
 ...ups.patch => 0080-Message-string-cleanups.patch |    6 +-
 ...-spacing-now-that-we-aren-t-displaying-it.patch |    6 +-
 ...orrect-indentation-for-the-term-help-text.patch |   10 +-
 ...entries.patch => 0083-Indent-menu-entries.patch |    6 +-
 0024-Fix-margins.patch => 0084-Fix-margins.patch   |    6 +-
 ...-for-UEFI-operating-systems-returned-by-o.patch |    8 +-
 ...GRUB-video-support-for-IBM-power-machines.patch |   10 +-
 ...ad-of-1-for-our-right-hand-margin-so-line.patch |    6 +-
 ... 0088-Use-linux16-when-appropriate-880840.patch |    6 +-
 ...h => 0089-Enable-pager-by-default.-985860.patch |    8 +-
 ...-work-on-serial-so-don-t-tell-the-user-to.patch |    6 +-
 ...91-Don-t-say-GNU-Linux-in-generated-menus.patch |    6 +-
 ... 0092-Don-t-draw-a-border-around-the-menu.patch |    6 +-
 ...he-standard-margin-for-the-timeout-string.patch |    6 +-
 ...ub_script_execute_sourcecode-usage-on-ppc.patch |   10 +-
 ....eh_frame-to-list-of-relocations-stripped.patch |    6 +-
 ...ux-work-with-our-changes-for-linux16-and-.patch |    6 +-
 0097-Don-t-print-during-fdt-loading-method.patch   |   27 +
 ...link-when-generating-configuration-by-gru.patch |   29 +
 ...re-a-password-to-boot-entries-generated-b.patch |   31 +
 0100-Don-t-emit-Booting-.-message.patch            |   48 +
 ...nd-ALT-keys-work-as-expected-on-EFI-syste.patch |  304 +++
 0102-May-as-well-try-it.patch                      | 1963 ++++++++++++++++++++
 ...-prefix-when-fallback-searching-for-grub-.patch |   45 +
 ...d-etc-before-grub.cfg-on-tftp-config-file.patch |  115 ++
 0105-trim-arp-packets-with-abnormal-size.patch     |   31 +
 ...-convert-function-to-support-NVMe-devices.patch |   59 +
 0107-Fix-bad-test-on-GRUB_DISABLE_SUBMENU.patch    |   37 +
 ...se-APM-Mustang-device-tree-for-hardware-t.patch |   29 +
 ...ault-device-tree-from-the-grub-default-fi.patch |   46 +
 ...en-SNP-protocol-for-exclusive-use-by-grub.patch |   46 +
 0111-Reduce-timer-event-frequency-by-10.patch      |   40 +
 0112-always-return-error-to-UEFI.patch             |   25 +
 grub2.spec                                         |  157 ++-
 113 files changed, 7708 insertions(+), 204 deletions(-)
---
diff --git a/0001-fix-EFI-detection-on-Windows.patch b/0001-fix-EFI-detection-on-Windows.patch
new file mode 100644
index 0000000..4d9593f
--- /dev/null
+++ b/0001-fix-EFI-detection-on-Windows.patch
@@ -0,0 +1,43 @@
+From a6e7719bbe05993613a8de69dba14fa092144925 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Wed, 25 Dec 2013 22:36:28 +0400
+Subject: [PATCH 001/112] fix EFI detection on Windows
+
+We are on legacy BIOS if GetFirmwareEnvironmentVariable fails (returns
+zero) *and* extended error information is ERROR_INVALID_FUNCTION.
+
+Cf. http://msdn.microsoft.com/en-us/library/windows/desktop/ms724325%28v=vs.85%29.aspx
+---
+ ChangeLog                          | 5 +++++
+ grub-core/osdep/windows/platform.c | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 41bcebf..21ec1c7 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2013-12-25  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* grub-core/osdep/windows/platform.c (get_platform): Fix EFI
++	detection.
++
+ 2013-12-24  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* configure.ac: Set version to 2.02~beta2.
+diff --git a/grub-core/osdep/windows/platform.c b/grub-core/osdep/windows/platform.c
+index f2b9d71..d217efe 100644
+--- a/grub-core/osdep/windows/platform.c
++++ b/grub-core/osdep/windows/platform.c
+@@ -100,7 +100,7 @@ get_platform (void)
+ 
+   if (!func_GetFirmwareEnvironmentVariableW (L"BootOrder", GRUB_EFI_GLOBAL_VARIABLE_GUID_WINDOWS_STR,
+ 					     buffer, sizeof (buffer))
+-      && GetLastError () != ERROR_INVALID_FUNCTION)
++      && GetLastError () == ERROR_INVALID_FUNCTION)
+     {
+       platform = PLAT_BIOS;
+       return;
+-- 
+1.8.5.3
+
diff --git a/0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch b/0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch
new file mode 100644
index 0000000..376adb1
--- /dev/null
+++ b/0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch
@@ -0,0 +1,110 @@
+From d2e7d923bf3ed70bb4aa38cb880d0677f2b8646f Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Wed, 25 Dec 2013 23:31:42 +0100
+Subject: [PATCH 002/112] 	* grub-core/kern/arm/cache_armv6.S: Remove
+ .arch directive.
+
+	As these functions are used on pre-ARMv6 CPUs as well we don't want
+	to make assembler assume that architecture is higher than default one.
+---
+ ChangeLog                        | 12 ++++++++++++
+ INSTALL                          | 10 +++++-----
+ docs/grub-dev.texi               |  8 ++++----
+ grub-core/kern/arm/cache_armv6.S |  1 -
+ 4 files changed, 21 insertions(+), 10 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 21ec1c7..bbb0f31 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,15 @@
++2013-12-27  Colin Watson  <cjwatson at ubuntu.com>
++
++	* INSTALL (Cross-compiling the GRUB): Fix some spelling mistakes.
++	* docs/grub.texi (Getting the source code): Likewise.
++
++2013-12-25  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/kern/arm/cache_armv6.S: Remove .arch directive.
++
++	As these functions are used on pre-ARMv6 CPUs as well we don't want
++	to make assembler assume that architecture is higher than default one.
++
+ 2013-12-25  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* grub-core/osdep/windows/platform.c (get_platform): Fix EFI
+diff --git a/INSTALL b/INSTALL
+index afc957c..db12530 100644
+--- a/INSTALL
++++ b/INSTALL
+@@ -140,7 +140,7 @@ If build and host are different make check isn't available.
+ If build and host are different man pages are not generated.
+ 
+ As an example imagine you have a build system running on FreeBSD on sparc
+-which prepares packages for developpers running amd64 GNU/Linux laptop and
++which prepares packages for developers running amd64 GNU/Linux laptop and
+ they need to make images for ARM board running U-boot. In this case:
+ 
+ build=sparc64-freebsd
+@@ -149,7 +149,7 @@ target=arm-uboot
+ 
+ For this example the configure line might look like (more details below)
+ (some options are optional and included here for completeness but some rarely
+-used options are omited):
++used options are omitted):
+ 
+ ./configure BUILD_CC=gcc BUILD_FREETYPE=freetype-config --host=amd64-linux-gnu
+ CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" FREETYPE=amd64-linux-gnu-freetype-config
+@@ -196,9 +196,9 @@ corresponding platform are not needed for the platform in question.
+     11. TARGET_RANLIB= for ranlib for target.
+ 
+   - Additionally for emu, for host and target.
+-    1. SDL is looked for in stadard linker directories (-lSDL) (optional)
+-    2. libpciaccess is looked for in stadard linker directories (-lpciaccess) (optional)
+-    3. libusb is looked for in stadard linker directories (-lusb) (optional)
++    1. SDL is looked for in standard linker directories (-lSDL) (optional)
++    2. libpciaccess is looked for in standard linker directories (-lpciaccess) (optional)
++    3. libusb is looked for in standard linker directories (-lusb) (optional)
+ 
+   - Platform-agnostic tools and data.
+     1. make is the tool you execute after ./configure.
+diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
+index c796850..7c6244c 100644
+--- a/docs/grub-dev.texi
++++ b/docs/grub-dev.texi
+@@ -108,16 +108,16 @@ The branches available are:
+ 
+ @table @samp
+ @item master
+-      Main developpement branch.
++      Main development branch.
+ @item grub-legacy
+       GRUB 0.97 codebase. Kept for reference and legal reasons
+ @item multiboot
+       Multiboot specfication
+ @item multiboot2
+       Multiboot2 specfication
+- at item developper branches
+-      Prefixed with developper name. Every developper of a team manages his own branches.
+-      Developper branches do not need changelog entries.
++ at item developer branches
++      Prefixed with developer name. Every developer of a team manages his own branches.
++      Developer branches do not need changelog entries.
+ @end table
+ 
+ Once you have used @kbd{git clone} to fetch an initial copy of a branch, you
+diff --git a/grub-core/kern/arm/cache_armv6.S b/grub-core/kern/arm/cache_armv6.S
+index 39da1df..dfaded0 100644
+--- a/grub-core/kern/arm/cache_armv6.S
++++ b/grub-core/kern/arm/cache_armv6.S
+@@ -22,7 +22,6 @@
+ 	.text
+ 	.syntax	unified
+ 	.arm
+-	.arch	armv6
+ 
+ # define DMB	mcr	p15, 0, r0, c7, c10, 5
+ # define DSB	mcr	p15, 0, r0, c7, c10, 4
+-- 
+1.8.5.3
+
diff --git a/0003-NEWS-First-draft-of-2.02-entry.patch b/0003-NEWS-First-draft-of-2.02-entry.patch
new file mode 100644
index 0000000..0c5285f
--- /dev/null
+++ b/0003-NEWS-First-draft-of-2.02-entry.patch
@@ -0,0 +1,163 @@
+From ef30fb83d10ce26adfc613837eb69366ab02338f Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson at ubuntu.com>
+Date: Fri, 27 Dec 2013 03:05:38 +0000
+Subject: [PATCH 003/112] * NEWS: First draft of 2.02 entry.
+
+---
+ ChangeLog |  16 +++++++++
+ NEWS      | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 134 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index bbb0f31..5639fdc 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,19 @@
++2013-12-28  Colin Watson  <cjwatson at ubuntu.com>
++
++	* NEWS: The cmosclean command in fact dates back to 1.99.  Remove
++	mention of it from 2.02.
++
++2013-12-27  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/kern/arm/cache_armv6.S: Remove .arch directive.
++
++	As these functions are used on pre-ARMv6 CPUs as well we don't want
++	to make assembler assume that architecture is higher than default one.
++
++2013-12-27  Colin Watson  <cjwatson at ubuntu.com>
++
++	* NEWS: First draft of 2.02 entry.
++
+ 2013-12-27  Colin Watson  <cjwatson at ubuntu.com>
+ 
+ 	* INSTALL (Cross-compiling the GRUB): Fix some spelling mistakes.
+diff --git a/NEWS b/NEWS
+index 4bb5f98..b74c05f 100644
+--- a/NEWS
++++ b/NEWS
+@@ -1,3 +1,121 @@
++New in 2.02:
++
++* New/improved filesystem and disk support:
++  * Big-endian UFS1.
++  * Experimental 64-bit ext2 support.
++  * Various fixes for non-512-byte sector devices.
++  * New `proc' filesystem framework, used by LUKS disks.
++  * Fix DM-RAID partition handling.
++  * New `nativedisk' command to switch from firmware to native disk drivers.
++  * Compressed HFS+.
++  * DragonFly BSD labels.
++  * CBFS (coreboot).
++  * Handle partitioned LVM properly.
++  * Use LVM UUIDs whenever possible.
++  * GPT PReP.
++  * New `progress' module that shows progress information while reading
++    files.
++
++* New/improved terminal and video support:
++  * Monochrome text (matching `hercules' in GRUB Legacy).
++  * Morse code output using system speaker.
++  * `spkmodem' output (simple data protocol using system speaker).
++  * Handle Japanese special keys.
++  * coreboot framebuffer.
++  * Serial on ARC.
++  * Native vt100 handling for grub-emu, replacing the use of the curses
++    library.
++  * New gfxmenu options for terminal window positioning, theme background
++    image handling, and scrollbar padding, plus `item_pixmap_style' and
++    `highlight_overlay'.
++  * Support several more image types (paletted and greyscale).
++
++* Boot protocol improvements:
++  * Support Apple FAT binaries on non-Apple platforms.
++  * Improve FreeDOS direct loading support compatibility.
++  * Enable `linux16' on all x86 platforms, not just BIOS.
++  * New TrueCrypt ISO loader.
++
++* New/improved network support:
++  * New variables `net_default_*' containing properties of the default
++    interface.
++  * Autoload `http' and `tftp' modules if necessary.
++  * Improve TFTP robustness.
++  * Parse `nd' disk names in GRUB Legacy configuration files.
++  * Issue separate DNS queries for IPv4 and IPv6.
++
++* New/improved platform support:
++  * New `efifwsetup' and `lsefi' commands on EFI platforms.
++  * New `cmosdump' and `cmosset' commands on platforms with CMOS support.
++  * New `cbmemc', `coreboot_boottime', and `lscoreboot' commands on
++    coreboot.
++  * Improve opcode parsing in ACPI halt implementation.
++  * Use the TSC as a possible time source on i386-ieee1275.
++  * Merge PowerPC grub-mkrescue implementation with the common one.
++  * Support grub-mkrescue on i386-ieee1275, sparc64, bootinfo machines such
++    as pSeries, and mips-arc.
++  * Make grub-mkrescue better support Apple Intel Macs on CD.
++  * Enable GRUB Legacy configuration file parsing on EFI.
++  * Support halt for Loongson 2E.
++  * ARM U-Boot and EFI ports.
++  * Reorganise platform-dependent code in utilities to avoid #ifdef mess.
++  * AROS and Haiku support for userspace utilities.
++  * Xen PV port.
++  * Fix EFI stack alignment.
++  * ARM64 EFI port.
++  * On Linux, read partition start offsets from sysfs if possible.
++  * New grub-macbless utility, and better integration with Mac firmware in
++    grub-install.
++  * Support Yeeloong 3A.
++  * Add `cpuid --pae' option to detect Physical Address Extension on x86.
++
++* Security:
++  * Add optional facility to enforce that all files read by the core image
++    from disk have a valid detached digital signature.
++
++* Performance:
++  * Avoid costly division operations in many places.
++  * New boot time analysis framework (`./configure --enable-boot-time').
++  * Initialise USB ports in parallel.
++  * New `testspeed' command to test file read speed.
++
++* Scripting:
++  * New `eval' and `tr' commands.
++  * grub-script-check fails on scripts containing no commands.
++
++* Installation and other utility improvements:
++  * Add option to compress files on installation or image creation.
++  * Using grub-reboot no longer requires setting `GRUB_DEFAULT=saved'.
++  * Support probing EFI System Partition (requires os-prober >= 1.58).
++  * Fix inconsistent use of `GRUB_CRYPTODISK_ENABLE' and
++    `GRUB_ENABLE_CRYPTODISK'; the latter is now used consistently.
++  * grub-mount handles symbolic links to directories.
++  * Support disabling submenus with `GRUB_DISABLE_SUBMENU' configuration key
++    for grub-mkconfig.
++  * grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone
++    rewritten in C.  They should now work in supported non-Unix-like
++    environments.
++  * Reorganise timeout handling using new `timeout_style' environment
++    variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig.
++    Menu hotkeys pressed during a hidden timeout now boot the corresponding
++    menu entry immediately.
++  * New `file' command and grub-file utility to check file types.
++  * New syslinux configuration file parser.
++
++* Build system:
++  * Remove all uses of nested functions; GRUB no longer requires an
++    executable stack.
++  * Fix documentation build with Texinfo >= 5.1.
++  * More robust and documented cross-compiling support.
++  * Partial clang support for some platforms.
++  * Eliminate the use of AutoGen.  This allowed some performance
++    improvements to the build system.
++  * Fix build with FreeType >= 2.5.1.
++  * Make gentpl.py compatible with Python 3.  It now requires at least
++    Python 2.6.
++
++* Revision control moved to git.
++
+ New in 2.00:
+ 
+ * Appearance:
+-- 
+1.8.5.3
+
diff --git a/0004-remove-unused-error.h-from-kern-emu-misc.c.patch b/0004-remove-unused-error.h-from-kern-emu-misc.c.patch
new file mode 100644
index 0000000..e49fd08
--- /dev/null
+++ b/0004-remove-unused-error.h-from-kern-emu-misc.c.patch
@@ -0,0 +1,39 @@
+From de40a1e74bd16b419f71f8e79cf7d62f69ef25a4 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 28 Dec 2013 09:01:20 +0400
+Subject: [PATCH 004/112] remove unused error.h from kern/emu/misc.c
+
+Fixes compilation on mingw32, where include is apparently missing.
+---
+ ChangeLog                 | 5 +++++
+ grub-core/kern/emu/misc.c | 1 -
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 5639fdc..d2e9f19 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2013-12-28  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* grub-core/kern/emu/misc.c: Remove unused error.h; fixes compilation
++	on mingw.
++
+ 2013-12-28  Colin Watson  <cjwatson at ubuntu.com>
+ 
+ 	* NEWS: The cmosclean command in fact dates back to 1.99.  Remove
+diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c
+index 43471b4..bb606da 100644
+--- a/grub-core/kern/emu/misc.c
++++ b/grub-core/kern/emu/misc.c
+@@ -20,7 +20,6 @@
+ #include <config.h>
+ 
+ #include <errno.h>
+-#include <error.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <stdint.h>
+-- 
+1.8.5.3
+
diff --git a/0005-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch b/0005-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch
new file mode 100644
index 0000000..da4e477
--- /dev/null
+++ b/0005-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch
@@ -0,0 +1,70 @@
+From e0589d5bbec8c6203ba299b782438030295803d5 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 28 Dec 2013 17:25:14 +0100
+Subject: [PATCH 005/112] 	Don't abort() on unavailable coreboot tables
+ if not running on coreboot.
+
+---
+ ChangeLog                              | 4 ++++
+ grub-core/kern/i386/coreboot/cbtable.c | 2 +-
+ grub-core/kern/i386/coreboot/init.c    | 5 +++++
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index d2e9f19..67d80bd 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2013-12-28  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	Don't abort() on unavailable coreboot tables if not running on coreboot.
++
+ 2013-12-28  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* grub-core/kern/emu/misc.c: Remove unused error.h; fixes compilation
+diff --git a/grub-core/kern/i386/coreboot/cbtable.c b/grub-core/kern/i386/coreboot/cbtable.c
+index e3bb7b2..1669bc0 100644
+--- a/grub-core/kern/i386/coreboot/cbtable.c
++++ b/grub-core/kern/i386/coreboot/cbtable.c
+@@ -55,7 +55,7 @@ grub_linuxbios_table_iterate (int (*hook) (grub_linuxbios_table_item_t,
+     if (check_signature (table_header))
+       goto signature_found;
+ 
+-  grub_fatal ("Could not find coreboot table\n");
++  return 0;
+ 
+ signature_found:
+ 
+diff --git a/grub-core/kern/i386/coreboot/init.c b/grub-core/kern/i386/coreboot/init.c
+index 6b150b4..3314f02 100644
+--- a/grub-core/kern/i386/coreboot/init.c
++++ b/grub-core/kern/i386/coreboot/init.c
+@@ -51,6 +51,7 @@ grub_exit (void)
+ 
+ grub_addr_t grub_modbase = GRUB_KERNEL_I386_COREBOOT_MODULES_ADDR;
+ static grub_uint64_t modend;
++static int have_memory = 0;
+ 
+ /* Helper for grub_machine_init.  */
+ static int
+@@ -82,6 +83,8 @@ heap_init (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type,
+ 
+   grub_mm_init_region ((void *) (grub_addr_t) begin, (grub_size_t) (end - begin));
+ 
++  have_memory = 1;
++
+   return 0;
+ }
+ 
+@@ -97,6 +100,8 @@ grub_machine_init (void)
+   grub_vga_text_init ();
+ 
+   grub_machine_mmap_iterate (heap_init, NULL);
++  if (!have_memory)
++    grub_fatal ("No memory found");
+ 
+   grub_video_coreboot_fb_late_init ();
+ 
+-- 
+1.8.5.3
+
diff --git a/0006-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch b/0006-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch
new file mode 100644
index 0000000..54dd1ba
--- /dev/null
+++ b/0006-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch
@@ -0,0 +1,121 @@
+From 300c13fa40729ad32e85610a650c26516c66a560 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Mon, 30 Dec 2013 06:49:15 +0100
+Subject: [PATCH 006/112] 	* NEWS: Add few missing entries. Correct
+ existing ones.
+
+---
+ ChangeLog |  4 ++++
+ NEWS      | 27 ++++++++++++++++++++++-----
+ 2 files changed, 26 insertions(+), 5 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 67d80bd..226f2a3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2013-12-30  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* NEWS: Add few missing entries. Correct existing ones.
++
+ 2013-12-28  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	Don't abort() on unavailable coreboot tables if not running on coreboot.
+diff --git a/NEWS b/NEWS
+index b74c05f..49a2459 100644
+--- a/NEWS
++++ b/NEWS
+@@ -35,6 +35,8 @@ New in 2.02:
+   * Improve FreeDOS direct loading support compatibility.
+   * Enable `linux16' on all x86 platforms, not just BIOS.
+   * New TrueCrypt ISO loader.
++  * multiboot2 boot-services EFI specification.
++  * multiboot2 full-file specfication.
+ 
+ * New/improved network support:
+   * New variables `net_default_*' containing properties of the default
+@@ -44,11 +46,17 @@ New in 2.02:
+   * Parse `nd' disk names in GRUB Legacy configuration files.
+   * Issue separate DNS queries for IPv4 and IPv6.
+ 
++* Coreboot improvements:
++  * CBFS support both in on-disk images (loopback) and flash.
++  * Ability to launch another payload from flash or disk
++  * Coreboot framebuffer
++  * CBMEMC support (both logging and inspecting logs)
++  * Inspecting coreboot timestamps.
++  * Inspecting coreboot tables.
++
+ * New/improved platform support:
+   * New `efifwsetup' and `lsefi' commands on EFI platforms.
+   * New `cmosdump' and `cmosset' commands on platforms with CMOS support.
+-  * New `cbmemc', `coreboot_boottime', and `lscoreboot' commands on
+-    coreboot.
+   * Improve opcode parsing in ACPI halt implementation.
+   * Use the TSC as a possible time source on i386-ieee1275.
+   * Merge PowerPC grub-mkrescue implementation with the common one.
+@@ -68,6 +76,7 @@ New in 2.02:
+     grub-install.
+   * Support Yeeloong 3A.
+   * Add `cpuid --pae' option to detect Physical Address Extension on x86.
++  * Support for USB debug dongles.
+ 
+ * Security:
+   * Add optional facility to enforce that all files read by the core image
+@@ -78,6 +87,7 @@ New in 2.02:
+   * New boot time analysis framework (`./configure --enable-boot-time').
+   * Initialise USB ports in parallel.
+   * New `testspeed' command to test file read speed.
++  * Speed-up gfxterm by storing intermediate results in more compact format.
+ 
+ * Scripting:
+   * New `eval' and `tr' commands.
+@@ -95,6 +105,7 @@ New in 2.02:
+   * grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone
+     rewritten in C.  They should now work in supported non-Unix-like
+     environments.
++  * Native mingw support, including ability to install on EFI under windows.
+   * Reorganise timeout handling using new `timeout_style' environment
+     variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig.
+     Menu hotkeys pressed during a hidden timeout now boot the corresponding
+@@ -107,12 +118,19 @@ New in 2.02:
+     executable stack.
+   * Fix documentation build with Texinfo >= 5.1.
+   * More robust and documented cross-compiling support.
+-  * Partial clang support for some platforms.
++  * Partial clang support for some platforms (experimental).
++  * Partial mingw64 x86_64-efi compile support (highly experimental).
++  * Partial mingw32 i386-* (other than already present i386-pc)
++    compile support (highly experimental).
+   * Eliminate the use of AutoGen.  This allowed some performance
+     improvements to the build system.
++  * Remove variable length arrays.
++  * OpenBSD compile and tools support (NetBSD and FreeBSD were already supported).
+   * Fix build with FreeType >= 2.5.1.
+   * Make gentpl.py compatible with Python 3.  It now requires at least
+     Python 2.6.
++  * modinfo.sh contains build information now.
++  * Added many new tests to improve robustness.
+ 
+ * Revision control moved to git.
+ 
+@@ -142,7 +160,6 @@ New in 2.00:
+   * IEEE1275 serial.
+   * EFI serial.
+   * Network stack for BIOS, IEEE1275, EMU and EFI, including TFTP, HTTP and DNS.
+-  * VBE on coreboot support.
+ 
+ * New filesystem, filters and disks formats:
+   * DVH partition map.
+@@ -166,7 +183,7 @@ New in 2.00:
+   * multidevice, mirrored and raidz(2,3) ZFS support.
+   * RAID LVM (internal RAIDing) support.
+   * ZFS crypto support.
+-  * ZLE and GZIP on ZFS support.
++  * ZLE, LZ4 and GZIP on ZFS support.
+   * Support ZFS up to 33.
+   * HFS string is now treated like mac-roman and not UTF-8
+   * HFS mtime support.
+-- 
+1.8.5.3
+
diff --git a/0007-strip-.eh_frame-section-from-arm64-efi-kernel.patch b/0007-strip-.eh_frame-section-from-arm64-efi-kernel.patch
new file mode 100644
index 0000000..e935324
--- /dev/null
+++ b/0007-strip-.eh_frame-section-from-arm64-efi-kernel.patch
@@ -0,0 +1,39 @@
+From b0e9367a147134da3599cf4d5485c0f29c93a73a Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Mon, 30 Dec 2013 12:56:19 +0000
+Subject: [PATCH 007/112] strip .eh_frame section from arm64-efi kernel
+
+Fixes grub-mkimage error "relocation 0x105 is not implemented yet."
+---
+ ChangeLog                   | 4 ++++
+ grub-core/Makefile.core.def | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 226f2a3..16372cd 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2013-12-30  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* grub-core/Makefile.core.def: strip .eh_frame section for arm64-efi.
++
+ 2013-12-30  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* NEWS: Add few missing entries. Correct existing ones.
+diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
+index c916246..42443bc 100644
+--- a/grub-core/Makefile.core.def
++++ b/grub-core/Makefile.core.def
+@@ -66,7 +66,7 @@ kernel = {
+   arm_efi_stripflags       = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version';
+ 
+   arm64_efi_ldflags          = '-Wl,-r,-d';
+-  arm64_efi_stripflags       = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version';
++  arm64_efi_stripflags       = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version -R .eh_frame';
+ 
+   i386_pc_ldflags          = '$(TARGET_IMG_LDFLAGS)';
+   i386_pc_ldflags          = '$(TARGET_IMG_BASE_LDOPT),0x9000';
+-- 
+1.8.5.3
+
diff --git a/0008-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch b/0008-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch
new file mode 100644
index 0000000..4c0c6d9
--- /dev/null
+++ b/0008-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch
@@ -0,0 +1,37 @@
+From d0bf697add07d1bcc2d4c648d66f5b49de8ba80d Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Tue, 7 Jan 2014 10:38:54 +0400
+Subject: [PATCH 008/112] use {grub,boot}aa64.efi for boot images on AArch64
+
+According to UEFI 2.4 specification, default boot file name on AArch64
+is BOOTAA64.EFI (3.4.1.1 Removable Media Boot Behavior). Also set default
+GRUB image name to grubaa64.efi to match it.
+---
+ util/grub-install.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/util/grub-install.c b/util/grub-install.c
+index 8cfe0ea..4608b80 100644
+--- a/util/grub-install.c
++++ b/util/grub-install.c
+@@ -1091,7 +1091,7 @@ main (int argc, char *argv[])
+ 	      efi_file = "BOOTARM.EFI";
+ 	      break;
+ 	    case GRUB_INSTALL_PLATFORM_ARM64_EFI:
+-	      efi_file = "BOOTAARCH64.EFI";
++	      efi_file = "BOOTAA64.EFI";
+ 	      break;
+ 	    default:
+ 	      grub_util_error ("%s", _("You've found a bug"));
+@@ -1118,7 +1118,7 @@ main (int argc, char *argv[])
+ 	      efi_file = "grubarm.efi";
+ 	      break;
+ 	    case GRUB_INSTALL_PLATFORM_ARM64_EFI:
+-	      efi_file = "grubarm64.efi";
++	      efi_file = "grubaa64.efi";
+ 	      break;
+ 	    default:
+ 	      efi_file = "grub.efi";
+-- 
+1.8.5.3
+
diff --git a/0009-fix-32-bit-compilation-on-MinGW-w64.patch b/0009-fix-32-bit-compilation-on-MinGW-w64.patch
new file mode 100644
index 0000000..3b0234f
--- /dev/null
+++ b/0009-fix-32-bit-compilation-on-MinGW-w64.patch
@@ -0,0 +1,45 @@
+From 5a062ab806006fd9f1d9268ddc7eb706782a1c22 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Tue, 7 Jan 2014 18:43:02 +0400
+Subject: [PATCH 009/112] fix 32 bit compilation on MinGW-w64
+
+Use _FILE_OFFSET_BITS macro to distinguish between native MinGW and
+32 bit under MinGW-64. The latter does not require fseeko/ftello
+redefinition which it already does in case of _FILE_OFFSET_BITS=64.
+---
+ ChangeLog                             | 5 +++++
+ include/grub/osdep/hostfile_windows.h | 3 +++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index 16372cd..3489d53 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-01-07  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* include/grub/osdep/hostfile_windows.h: Do not redefine fseeko/ftello
++	on MinGW-64 when compiling for 32 bits.
++
+ 2013-12-30  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* grub-core/Makefile.core.def: strip .eh_frame section for arm64-efi.
+diff --git a/include/grub/osdep/hostfile_windows.h b/include/grub/osdep/hostfile_windows.h
+index 36615b2..79efcfa 100644
+--- a/include/grub/osdep/hostfile_windows.h
++++ b/include/grub/osdep/hostfile_windows.h
+@@ -69,8 +69,11 @@ enum grub_util_fd_open_flags_t
+ 
+ #if defined (__MINGW32__) && !defined (__MINGW64__)
+ 
++/* 32 bit on MinGW-64 already redefines them if _FILE_OFFSET_BITS=64 */
++#if !defined(_FILE_OFFSET_BITS)
+ #define fseeko fseeko64
+ #define ftello ftello64
++#endif
+ 
+ #endif
+ 
+-- 
+1.8.5.3
+
diff --git a/0010-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch b/0010-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch
new file mode 100644
index 0000000..e7810a3
--- /dev/null
+++ b/0010-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch
@@ -0,0 +1,44 @@
+From 510402f407ab09f1e4892fbc33833818d6561eeb Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Tue, 7 Jan 2014 20:34:25 +0400
+Subject: [PATCH 010/112] Change grub-mkrescue to use bootaa64.efi too
+
+Also add ChangeLog entry for previous change.
+---
+ ChangeLog            | 7 +++++++
+ util/grub-mkrescue.c | 2 +-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 3489d53..bb73343 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,12 @@
+ 2014-01-07  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
++	* util/grub-install.c: Use bootaa64.efi instead of bootaarch64.efi on
++	arm64 to comply with EFI specification. Also use grubaa64.efi for
++	consistency.
++	* util/grub-mkrescue.c: Change to use bootaa64.efi too.
++
++2014-01-07  Andrey Borzenkov <arvidjaar at gmail.com>
++
+ 	* include/grub/osdep/hostfile_windows.h: Do not redefine fseeko/ftello
+ 	on MinGW-64 when compiling for 32 bits.
+ 
+diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
+index 317879d..0d03e55 100644
+--- a/util/grub-mkrescue.c
++++ b/util/grub-mkrescue.c
+@@ -663,7 +663,7 @@ main (int argc, char *argv[])
+       make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM_EFI, "arm-efi", imgname);
+       free (imgname);
+ 
+-      imgname = grub_util_path_concat (2, efidir_efi_boot, "bootaarch64.efi");
++      imgname = grub_util_path_concat (2, efidir_efi_boot, "bootaa64.efi");
+       make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM64_EFI, "arm64-efi",
+ 			     imgname);
+       free (imgname);
+-- 
+1.8.5.3
+
diff --git a/0036-arm64-set-correct-length-of-device-path-end-entry.patch b/0011-arm64-set-correct-length-of-device-path-end-entry.patch
similarity index 79%
rename from 0036-arm64-set-correct-length-of-device-path-end-entry.patch
rename to 0011-arm64-set-correct-length-of-device-path-end-entry.patch
index e6a30b2..b740427 100644
--- a/0036-arm64-set-correct-length-of-device-path-end-entry.patch
+++ b/0011-arm64-set-correct-length-of-device-path-end-entry.patch
@@ -1,7 +1,7 @@
-From 7cbcbea853d19c54fae31681be7d73c5dd0c0b4b Mon Sep 17 00:00:00 2001
+From c02a376131f807a04ed2cf8e9160a461b1568854 Mon Sep 17 00:00:00 2001
 From: Leif Lindholm <leif.lindholm at linaro.org>
 Date: Tue, 7 Jan 2014 17:52:50 +0000
-Subject: [PATCH 36/37] arm64: set correct length of device path end entry
+Subject: [PATCH 011/112] arm64: set correct length of device path end entry
 
 The length of the Device Path End entry in the grub_linux_boot()
 function was incorrectly set to 0. This triggers an assert failure
@@ -14,7 +14,7 @@ Set it to sizeof (grub_efi_device_path_t).
  2 files changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/ChangeLog b/ChangeLog
-index 41bcebf..cc1ff58 100644
+index bb73343..13f3273 100644
 --- a/ChangeLog
 +++ b/ChangeLog
 @@ -1,3 +1,7 @@
@@ -22,9 +22,9 @@ index 41bcebf..cc1ff58 100644
 +
 +	* grub-core/loader/arm64/linux.c: correctly set device path end length.
 +
- 2013-12-24  Vladimir Serbinenko  <phcoder at gmail.com>
+ 2014-01-07  Andrey Borzenkov <arvidjaar at gmail.com>
  
- 	* configure.ac: Set version to 2.02~beta2.
+ 	* util/grub-install.c: Use bootaa64.efi instead of bootaarch64.efi on
 diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
 index 9d15aad..75ad871 100644
 --- a/grub-core/loader/arm64/linux.c
@@ -39,5 +39,5 @@ index 9d15aad..75ad871 100644
    b = grub_efi_system_table->boot_services;
    status = b->load_image (0, grub_efi_image_handle,
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0012-Makefile.util.def-grub-macbless-Change-mansection-to.patch b/0012-Makefile.util.def-grub-macbless-Change-mansection-to.patch
new file mode 100644
index 0000000..b954ce6
--- /dev/null
+++ b/0012-Makefile.util.def-grub-macbless-Change-mansection-to.patch
@@ -0,0 +1,39 @@
+From efb1d140dd18b4e1141e443c96dfd87e613e8dad Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson at ubuntu.com>
+Date: Wed, 8 Jan 2014 11:05:20 +0000
+Subject: [PATCH 012/112] * Makefile.util.def (grub-macbless): Change
+ mansection to 8.
+
+---
+ ChangeLog         | 4 ++++
+ Makefile.util.def | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 13f3273..61f33ce 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-08  Colin Watson  <cjwatson at ubuntu.com>
++
++	* Makefile.util.def (grub-macbless): Change mansection to 8.
++
+ 2014-01-07  Leif Lindholm <leif.lindholm at linaro.org>
+ 
+ 	* grub-core/loader/arm64/linux.c: correctly set device path end length.
+diff --git a/Makefile.util.def b/Makefile.util.def
+index 985e76c..3c99be2 100644
+--- a/Makefile.util.def
++++ b/Makefile.util.def
+@@ -405,7 +405,7 @@ program = {
+ program = {
+   name = grub-macbless;
+   installdir = sbin;
+-  mansection = 1;
++  mansection = 8;
+   common = util/grub-macbless.c;
+   common = grub-core/osdep/init.c;
+   common = grub-core/kern/emu/argp_common.c;
+-- 
+1.8.5.3
+
diff --git a/0013-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch b/0013-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch
new file mode 100644
index 0000000..0c8a14e
--- /dev/null
+++ b/0013-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch
@@ -0,0 +1,48 @@
+From f887a3908a5f3ad124e6f447c64514e5e45a9192 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sun, 12 Jan 2014 15:29:21 +0400
+Subject: [PATCH 013/112] add part_apple to EFI rescue image to fix missing
+ prefix
+
+On Mac rescue image is booted from HFS+ partition, so bootpath looks like
+/ACPI(a0341d0,0)/PCI(1,1f)/ATAPI(0,0,0)/HD(3,5d1,ca3,0000000000000000,20,0)/EndEntire
+
+grub fails to find device for this path because it cannot scan partition
+table. The simplest fix is to add part_apple by default.
+---
+ util/grub-mkrescue.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
+index 0d03e55..34e0b7a 100644
+--- a/util/grub-mkrescue.c
++++ b/util/grub-mkrescue.c
+@@ -653,11 +653,15 @@ main (int argc, char *argv[])
+       make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_IA64_EFI, "ia64-efi", imgname);
+       free (imgname);
+ 
++      grub_install_push_module ("part_apple");
+       img64 = grub_util_path_concat (2, efidir_efi_boot, "bootx64.efi");
+       make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_X86_64_EFI, "x86_64-efi", img64);
++      grub_install_pop_module ();
+ 
++      grub_install_push_module ("part_apple");
+       img32 = grub_util_path_concat (2, efidir_efi_boot, "bootia32.efi");
+       make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_I386_EFI, "i386-efi", img32);
++      grub_install_pop_module ();
+ 
+       imgname = grub_util_path_concat (2, efidir_efi_boot, "bootarm.efi");
+       make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_ARM_EFI, "arm-efi", imgname);
+@@ -707,7 +711,9 @@ main (int argc, char *argv[])
+       free (efidir);
+     }
+ 
++  grub_install_push_module ("part_apple");
+   make_image_fwdisk (GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275, "powerpc-ieee1275", "powerpc-ieee1275/core.elf");
++  grub_install_pop_module ();
+ 
+   if (source_dirs[GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275])
+     {
+-- 
+1.8.5.3
+
diff --git a/0014-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch b/0014-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch
new file mode 100644
index 0000000..cc899a3
--- /dev/null
+++ b/0014-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch
@@ -0,0 +1,48 @@
+From 1ce3cb44b6488abe1ae0eb58902a5e968ee9aca8 Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson at ubuntu.com>
+Date: Fri, 17 Jan 2014 02:30:52 +0000
+Subject: [PATCH 014/112] freebsd/hostdisk.c is only ever compiled on FreeBSD
+
+* grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove
+redundant preprocessor conditional.
+---
+ ChangeLog                          | 5 +++++
+ grub-core/osdep/freebsd/hostdisk.c | 2 --
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 61f33ce..4268e76 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-01-17  Colin Watson  <cjwatson at debian.org>
++
++	* grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove
++	redundant preprocessor conditional.
++
+ 2014-01-08  Colin Watson  <cjwatson at ubuntu.com>
+ 
+ 	* Makefile.util.def (grub-macbless): Change mansection to 8.
+diff --git a/grub-core/osdep/freebsd/hostdisk.c b/grub-core/osdep/freebsd/hostdisk.c
+index bd5fddb..eb202dc 100644
+--- a/grub-core/osdep/freebsd/hostdisk.c
++++ b/grub-core/osdep/freebsd/hostdisk.c
+@@ -108,7 +108,6 @@ grub_util_fd_open (const char *os_dev, int flags)
+ 
+   ret = open (os_dev, flags, S_IROTH | S_IRGRP | S_IRUSR | S_IWUSR);
+ 
+-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+   if (! (sysctl_oldflags & 0x10)
+       && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_oldflags, sysctl_size))
+     {
+@@ -116,7 +115,6 @@ grub_util_fd_open (const char *os_dev, int flags)
+       close (ret);
+       return GRUB_UTIL_FD_INVALID;
+     }
+-#endif
+ 
+   return ret;
+ }
+-- 
+1.8.5.3
+
diff --git a/0015-Prefer-more-portable-test-1-constructs.patch b/0015-Prefer-more-portable-test-1-constructs.patch
new file mode 100644
index 0000000..9a317a3
--- /dev/null
+++ b/0015-Prefer-more-portable-test-1-constructs.patch
@@ -0,0 +1,109 @@
+From ae7cb4e6c3d74ddc3c3e61e62380d1807358a901 Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson at ubuntu.com>
+Date: Fri, 17 Jan 2014 15:24:50 +0000
+Subject: [PATCH 015/112] Prefer more portable test(1) constructs
+
+* util/grub.d/00_header.in (make_timeout): Use && rather than test
+-a.
+* util/grub.d/10_windows.in: Likewise.
+* util/grub.d/10_netbsd.in (netbsd_load_fs_module): Use || rather
+than test -o.
+* util/grub.d/30_os-prober.in: Use && rather than test -a, and ||
+rather than test -o.
+---
+ ChangeLog                   | 12 +++++++++++-
+ util/grub.d/00_header.in    |  2 +-
+ util/grub.d/10_netbsd.in    |  2 +-
+ util/grub.d/10_windows.in   |  4 ++--
+ util/grub.d/30_os-prober.in |  4 ++--
+ 5 files changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 4268e76..0710c08 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,4 +1,14 @@
+-2014-01-17  Colin Watson  <cjwatson at debian.org>
++2014-01-17  Colin Watson  <cjwatson at ubuntu.com>
++
++	* util/grub.d/00_header.in (make_timeout): Use && rather than test
++	-a.
++	* util/grub.d/10_windows.in: Likewise.
++	* util/grub.d/10_netbsd.in (netbsd_load_fs_module): Use || rather
++	than test -o.
++	* util/grub.d/30_os-prober.in: Use && rather than test -a, and ||
++	rather than test -o.
++
++2014-01-17  Colin Watson  <cjwatson at ubuntu.com>
+ 
+ 	* grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Remove
+ 	redundant preprocessor conditional.
+diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
+index 0c82f23..ce2ec81 100644
+--- a/util/grub.d/00_header.in
++++ b/util/grub.d/00_header.in
+@@ -285,7 +285,7 @@ make_timeout ()
+     if [ "x${3}" != "x" ] ; then
+ 	timeout="${2}"
+ 	style="${3}"
+-    elif [ "x${1}" != "x" -a "x${1}" != "x0" ] ; then
++    elif [ "x${1}" != "x" ] && [ "x${1}" != "x0" ] ; then
+ 	# Handle the deprecated GRUB_HIDDEN_TIMEOUT scheme.
+ 	timeout="${1}"
+ 	if [ "x${2}" != "x0" ] ; then
+diff --git a/util/grub.d/10_netbsd.in b/util/grub.d/10_netbsd.in
+index 29a0e41..9988a42 100644
+--- a/util/grub.d/10_netbsd.in
++++ b/util/grub.d/10_netbsd.in
+@@ -69,7 +69,7 @@ netbsd_load_fs_module ()
+   kversion=$(zcat -f "${kernel}" | strings | sed -n -e '/^@(#)NetBSD/ { s/^@(#)NetBSD \([0-9\.]*\) .*$/\1/g ; p ; q ; }')
+   kmodule="/stand/${karch}/${kversion}/modules/${kmod}/${kmod}.kmod"
+ 
+-  if test -z "$karch" -o -z "$kversion" -o ! -f "${kmodule}"; then
++  if test -z "$karch" || test -z "$kversion" || test ! -f "${kmodule}"; then
+     return
+   fi
+ 
+diff --git a/util/grub.d/10_windows.in b/util/grub.d/10_windows.in
+index 9025914..48bd955 100644
+--- a/util/grub.d/10_windows.in
++++ b/util/grub.d/10_windows.in
+@@ -66,11 +66,11 @@ for drv in $drives ; do
+   osid=
+ 
+   # Check for Vista bootmgr.
+-  if [ -f "$dir"/bootmgr -a -f "$dir"/boot/bcd ] ; then
++  if [ -f "$dir"/bootmgr ] && [ -f "$dir"/boot/bcd ] ; then
+     OS="$(gettext "Windows Vista/7 (loader)")"
+     osid=bootmgr
+   # Check for NTLDR.
+-  elif [ -f "$dir"/ntldr -a -f "$dir"/ntdetect.com -a -f "$dir"/boot.ini ] ; then
++  elif [ -f "$dir"/ntldr ] && [ -f "$dir"/ntdetect.com ] && [ -f "$dir"/boot.ini ] ; then
+     OS=`get_os_name_from_boot_ini "$dir"/boot.ini` || OS="$(gettext "Windows NT/2000/XP (loader)")"
+     osid=ntldr
+     needmap=t
+diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in
+index 0470e66..7cf8487 100644
+--- a/util/grub.d/30_os-prober.in
++++ b/util/grub.d/30_os-prober.in
+@@ -30,7 +30,7 @@ if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
+   exit 0
+ fi
+ 
+-if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then
++if [ -z "`which os-prober 2> /dev/null`" ] || [ -z "`which linux-boot-prober 2> /dev/null`" ] ; then
+   # missing os-prober and/or linux-boot-prober
+   exit 0
+ fi
+@@ -119,7 +119,7 @@ for OS in ${OSPROBED} ; do
+       EXPUUID="${EXPUUID}@${DEVICE#*@}"
+   fi
+ 
+-  if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" -a "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then
++  if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then
+     echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2
+     continue
+   fi
+-- 
+1.8.5.3
+
diff --git a/0016-NEWS-Add-few-missing-entries.patch b/0016-NEWS-Add-few-missing-entries.patch
new file mode 100644
index 0000000..1aa0483
--- /dev/null
+++ b/0016-NEWS-Add-few-missing-entries.patch
@@ -0,0 +1,100 @@
+From 30ad0dfbb129fb6d7d072fd52fe127a5f053aa9c Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 16:31:10 +0100
+Subject: [PATCH 016/112] 	* NEWS: Add few missing entries.
+
+---
+ ChangeLog |  4 ++++
+ NEWS      | 18 +++++++++++++++---
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 0710c08..a5474d1 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* NEWS: Add few missing entries.
++
+ 2014-01-17  Colin Watson  <cjwatson at ubuntu.com>
+ 
+ 	* util/grub.d/00_header.in (make_timeout): Use && rather than test
+diff --git a/NEWS b/NEWS
+index 49a2459..a61df94 100644
+--- a/NEWS
++++ b/NEWS
+@@ -15,6 +15,8 @@ New in 2.02:
+   * GPT PReP.
+   * New `progress' module that shows progress information while reading
+     files.
++  * ZFS features support.
++  * ZFS LZ4 support.
+ 
+ * New/improved terminal and video support:
+   * Monochrome text (matching `hercules' in GRUB Legacy).
+@@ -36,6 +38,7 @@ New in 2.02:
+   * Enable `linux16' on all x86 platforms, not just BIOS.
+   * New TrueCrypt ISO loader.
+   * multiboot2 boot-services EFI specification.
++  * multiboot2 EFI memory map specification.
+   * multiboot2 full-file specfication.
+ 
+ * New/improved network support:
+@@ -51,12 +54,15 @@ New in 2.02:
+   * Ability to launch another payload from flash or disk
+   * Coreboot framebuffer
+   * CBMEMC support (both logging and inspecting logs)
+-  * Inspecting coreboot timestamps.
+-  * Inspecting coreboot tables.
++  * Command for inspecting coreboot timestamps (`coreboot_boottime').
++  * Command for inspecting coreboot tables (`lscoreboot').
++  * New target default_payload.elf.
++  * Increased maximal core size.
+ 
+ * New/improved platform support:
+   * New `efifwsetup' and `lsefi' commands on EFI platforms.
+   * New `cmosdump' and `cmosset' commands on platforms with CMOS support.
++  * New command `pcidump' for PCI platforms.
+   * Improve opcode parsing in ACPI halt implementation.
+   * Use the TSC as a possible time source on i386-ieee1275.
+   * Merge PowerPC grub-mkrescue implementation with the common one.
+@@ -77,6 +83,8 @@ New in 2.02:
+   * Support Yeeloong 3A.
+   * Add `cpuid --pae' option to detect Physical Address Extension on x86.
+   * Support for USB debug dongles.
++  * Support for *-emu on all platforms (previously only i386/x86_64 worked).
++  * Support *-emu on Windows.
+ 
+ * Security:
+   * Add optional facility to enforce that all files read by the core image
+@@ -88,6 +96,8 @@ New in 2.02:
+   * Initialise USB ports in parallel.
+   * New `testspeed' command to test file read speed.
+   * Speed-up gfxterm by storing intermediate results in more compact format.
++  * Lazy LVM/mdraid scan.
++  * Disk hints.
+ 
+ * Scripting:
+   * New `eval' and `tr' commands.
+@@ -105,7 +115,8 @@ New in 2.02:
+   * grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone
+     rewritten in C.  They should now work in supported non-Unix-like
+     environments.
+-  * Native mingw support, including ability to install on EFI under windows.
++  * Native mingw support.
++  * Ability to install on EFI under windows.
+   * Reorganise timeout handling using new `timeout_style' environment
+     variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig.
+     Menu hotkeys pressed during a hidden timeout now boot the corresponding
+@@ -122,6 +133,7 @@ New in 2.02:
+   * Partial mingw64 x86_64-efi compile support (highly experimental).
+   * Partial mingw32 i386-* (other than already present i386-pc)
+     compile support (highly experimental).
++  * Support for grub-mkpasswd on Windows.
+   * Eliminate the use of AutoGen.  This allowed some performance
+     improvements to the build system.
+   * Remove variable length arrays.
+-- 
+1.8.5.3
+
diff --git a/0017-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch b/0017-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch
new file mode 100644
index 0000000..1f172df
--- /dev/null
+++ b/0017-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch
@@ -0,0 +1,90 @@
+From dc4cae71d718d12f6ddc01dd7296ad8d659e35ad Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 16:41:47 +0100
+Subject: [PATCH 017/112] 	* grub-core/kern/efi/efi.c: Ensure that the
+ result starts with / 	and has no //.
+
+---
+ ChangeLog                |  5 +++++
+ grub-core/kern/efi/efi.c | 25 +++++++++++++++++--------
+ 2 files changed, 22 insertions(+), 8 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index a5474d1..9dd67e4 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/kern/efi/efi.c: Ensure that the result starts with /
++	and has no //.
++
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* NEWS: Add few missing entries.
+ 
+ 2014-01-17  Colin Watson  <cjwatson at ubuntu.com>
+diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
+index b253141..b9eb1ab 100644
+--- a/grub-core/kern/efi/efi.c
++++ b/grub-core/kern/efi/efi.c
+@@ -309,7 +309,7 @@ grub_efi_modules_addr (void)
+ char *
+ grub_efi_get_filename (grub_efi_device_path_t *dp0)
+ {
+-  char *name = 0, *p;
++  char *name = 0, *p, *pi;
+   grub_size_t filesize = 0;
+   grub_efi_device_path_t *dp;
+ 
+@@ -328,7 +328,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
+ 	  grub_efi_uint16_t len;
+ 	  len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4)
+ 		 / sizeof (grub_efi_char16_t));
+-	  filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 1;
++	  filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 2;
+ 	}
+ 
+       dp = GRUB_EFI_NEXT_DEVICE_PATH (dp);
+@@ -356,12 +356,12 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
+ 	  grub_efi_file_path_device_path_t *fp;
+ 	  grub_efi_uint16_t len;
+ 
+-	  if (p != name)
+-	    *p++ = '/';
++	  *p++ = '/';
+ 
+ 	  len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4)
+ 		 / sizeof (grub_efi_char16_t));
+ 	  fp = (grub_efi_file_path_device_path_t *) dp;
++
+ 	  p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len);
+ 	}
+ 
+@@ -370,10 +370,19 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
+ 
+   *p = '\0';
+ 
+-  /* EFI breaks paths with backslashes.  */
+-  for (p = name; *p; p++)
+-    if (*p == '\\')
+-      *p = '/';
++  for (pi = name, p = name; *pi;)
++    {
++      /* EFI breaks paths with backslashes.  */
++      if (*pi == '\\' || *pi == '/')
++	{
++	  *p++ = '/';
++	  while (*pi == '\\' || *pi == '/')
++	    pi++;
++	  continue;
++	}
++      *p++ = *pi++;
++    }
++  *p = '\0';
+ 
+   return name;
+ }
+-- 
+1.8.5.3
+
diff --git a/0018-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch b/0018-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch
new file mode 100644
index 0000000..d938cba
--- /dev/null
+++ b/0018-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch
@@ -0,0 +1,47 @@
+From c7c98ae6f72c00c569b2977e0a3e2a931286562b Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 16:43:29 +0100
+Subject: [PATCH 018/112] 	* util/grub-mount.c: Extend GCC warning
+ workaround to grub-mount.
+
+---
+ ChangeLog         | 4 ++++
+ util/grub-mount.c | 7 ++++++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 9dd67e4..acebfc5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,9 @@
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* util/grub-mount.c: Extend GCC warning workaround to grub-mount.
++
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/kern/efi/efi.c: Ensure that the result starts with /
+ 	and has no //.
+ 
+diff --git a/util/grub-mount.c b/util/grub-mount.c
+index 118881e..19de2e6 100644
+--- a/util/grub-mount.c
++++ b/util/grub-mount.c
+@@ -41,8 +41,13 @@
+ #include <string.h>
+ #include <stdlib.h>
+ 
++#pragma GCC diagnostic ignored "-Wmissing-prototypes"
++#pragma GCC diagnostic ignored "-Wmissing-declarations"
++#include <argp.h>
++#pragma GCC diagnostic error "-Wmissing-prototypes"
++#pragma GCC diagnostic error "-Wmissing-declarations"
++
+ #include "progname.h"
+-#include "argp.h"
+ 
+ static const char *root = NULL;
+ grub_device_t dev = NULL;
+-- 
+1.8.5.3
+
diff --git a/0019-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch b/0019-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch
new file mode 100644
index 0000000..a064b02
--- /dev/null
+++ b/0019-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch
@@ -0,0 +1,153 @@
+From 823eab7afd99564aebcf6c553de97a5dde8cc140 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 18 Jan 2014 19:50:54 +0400
+Subject: [PATCH 019/112] reintroduce BUILD_LDFLAGS for the cross-compile case
+
+This allows providing separate LDFLAGS for build and host environments, which
+are not necessary the same for cross-compile case. In particular, it allows
+building host programs statically to not depend on presence of libraries at
+run-time (e.g. MinGW DLLs on Windows) while continue to use default dynamic
+linking at build time.
+
+Also fix obsolete comments in confgure.ac - we do use different environment
+for build and host now.
+---
+ ChangeLog             |  7 +++++++
+ INSTALL               |  3 ++-
+ Makefile.am           |  8 ++++----
+ configure.ac          | 13 ++++++++-----
+ grub-core/Makefile.am |  6 +++---
+ 5 files changed, 24 insertions(+), 13 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index acebfc5..8a82048 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,10 @@
++2014-01-07  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* configure.ac: Add support for BUILD_LDFLAGS.
++	* Makefile.am: Use BUILD_LDFLAGS for build time programs here ...
++	* grub-core/Makefile.am: ... and here.
++	* INSTALL: Mention BUILD_LDFLAGS.
++
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* util/grub-mount.c: Extend GCC warning workaround to grub-mount.
+diff --git a/INSTALL b/INSTALL
+index db12530..b67cd7f 100644
+--- a/INSTALL
++++ b/INSTALL
+@@ -168,7 +168,8 @@ corresponding platform are not needed for the platform in question.
+        generate sin and cos tables.
+     2. BUILD_CFLAGS= for C options for build.
+     3. BUILD_CPPFLAGS= for C preprocessor options for build.
+-    4. BUILD_FREETYPE= for freetype-config for build (optional).
++    4. BUILD_LDFLAGS= for linker options for build.
++    5. BUILD_FREETYPE= for freetype-config for build (optional).
+ 
+   - For host
+     1. --host= to autoconf name of host.
+diff --git a/Makefile.am b/Makefile.am
+index 320e86f..1bbec0e 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -67,20 +67,20 @@ endif
+ starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(
 srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0
+ 
+ build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c
+-	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs)
++	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs)
+ CLEANFILES += build-grub-mkfont
+ 
+ garbage-gen: util/garbage-gen.c
+-	$(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS)  $^
++	$(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS)  $^
+ CLEANFILES += garbage-gen
+ EXTRA_DIST += util/garbage-gen.c
+ 
+ build-grub-gen-asciih: util/grub-gen-asciih.c
+-	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
++	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
+ CLEANFILES += build-grub-gen-asciih
+ 
+ build-grub-gen-widthspec: util/grub-gen-widthspec.c
+-	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
++	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
+ CLEANFILES += build-grub-gen-widthspec
+ 
+ if COND_STARFIELD
+diff --git a/configure.ac b/configure.ac
+index 7c5d080..2e4cf3c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -26,11 +26,10 @@ dnl This is necessary because the target type in autoconf does not
+ dnl describe such a system very well.
+ dnl
+ dnl The current strategy is to use variables with no prefix (such as
+-dnl CC, CFLAGS, etc.) for the host type as well as the build type,
+-dnl because GRUB does not need to use those variables for the build
+-dnl type, so there is no conflict. Variables with the prefix "TARGET_"
+-dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
+-dnl type.
++dnl CC, CFLAGS, etc.) for the host type, variables with prefix "BUILD_"
++dnl (such as BUILD_CC, BUILD_CFLAGS, etc.) for the build type and variables
++dnl with the prefix "TARGET_" (such as TARGET_CC, TARGET_CFLAGS, etc.) are
++dnl used for the target type. See INSTALL for full list of variables.
+ 
+ AC_INIT([GRUB],[2.02~beta2],[bug-grub at gnu.org])
+ 
+@@ -477,6 +476,7 @@ AC_SUBST(HOST_CC)
+ AC_SUBST(BUILD_CC)
+ AC_SUBST(BUILD_CFLAGS)
+ AC_SUBST(BUILD_CPPFLAGS)
++AC_SUBST(BUILD_LDFLAGS)
+ AC_SUBST(TARGET_CC)
+ AC_SUBST(TARGET_NM)
+ AC_SUBST(TARGET_RANLIB)
+@@ -1290,10 +1290,12 @@ SAVED_CC="$CC"
+ SAVED_CPP="$CPP"
+ SAVED_CFLAGS="$CFLAGS"
+ SAVED_CPPFLAGS="$CPPFLAGS"
++SAVED_LDFLAGS="$LDFLAGS"
+ CC="$BUILD_CC"
+ CPP="$BUILD_CPP"
+ CFLAGS="$BUILD_CFLAGS"
+ CPPFLAGS="$BUILD_CPPFLAGS"
++LDFLAGS="$BUILD_LDFAGS"
+ 
+ unset ac_cv_c_bigendian
+ unset ac_cv_header_ft2build_h
+@@ -1356,6 +1358,7 @@ CC="$SAVED_CC"
+ CPP="$SAVED_CPP"
+ CFLAGS="$SAVED_CFLAGS"
+ CPPFLAGS="$SAVED_CPPFLAGS"
++LDFLAGS="$SAVED_LDFLAGS"
+ 
+ 
+ DJVU_FONT_SOURCE=
+diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
+index 1b3142d..13b7979 100644
+--- a/grub-core/Makefile.am
++++ b/grub-core/Makefile.am
+@@ -27,14 +27,14 @@ CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
+ CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
+ 
+ build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
+-	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^
++	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^
+ 
+ build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
+-	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
++	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
+ 
+ # gentrigtables
+ gentrigtables: gentrigtables.c
+-	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< $(BUILD_LIBM)
++	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $< $(BUILD_LIBM)
+ CLEANFILES += gentrigtables
+ 
+ # trigtables.c
+-- 
+1.8.5.3
+
diff --git a/0020-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch b/0020-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch
new file mode 100644
index 0000000..c0bfd91
--- /dev/null
+++ b/0020-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch
@@ -0,0 +1,155 @@
+From aee2201f80c42a44da152d918849860be73fd6a7 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 16:57:35 +0100
+Subject: [PATCH 020/112] 	* grub-core/term/terminfo.c: Recognize keys
+ F1-F12.
+
+---
+ ChangeLog                 |  4 +++
+ grub-core/term/terminfo.c | 86 +++++++++++++++++++++++++++--------------------
+ 2 files changed, 54 insertions(+), 36 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 8a82048..57f77be 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/term/terminfo.c: Recognize keys F1-F12.
++
+ 2014-01-07  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* configure.ac: Add support for BUILD_LDFLAGS.
+diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c
+index 3d48b19..f0d3e3d 100644
+--- a/grub-core/term/terminfo.c
++++ b/grub-core/term/terminfo.c
+@@ -460,28 +460,31 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len,
+ 	{'@', GRUB_TERM_KEY_INSERT},
+       };
+ 
+-    static struct
+-    {
+-      char key;
+-      unsigned ascii;
+-    }
+-    four_code_table[] =
++    static unsigned four_code_table[] =
+       {
+-	{'1', GRUB_TERM_KEY_HOME},
+-	{'3', GRUB_TERM_KEY_DC},
+-	{'5', GRUB_TERM_KEY_PPAGE},
+-	{'6', GRUB_TERM_KEY_NPAGE},
+-	{'7', GRUB_TERM_KEY_HOME},
+-	{'8', GRUB_TERM_KEY_END}
++	[1] = GRUB_TERM_KEY_HOME,
++	[3] = GRUB_TERM_KEY_DC,
++	[5] = GRUB_TERM_KEY_PPAGE,
++	[6] = GRUB_TERM_KEY_NPAGE,
++	[7] = GRUB_TERM_KEY_HOME,
++	[8] = GRUB_TERM_KEY_END,
++	[17] = GRUB_TERM_KEY_F6,
++	[18] = GRUB_TERM_KEY_F7,
++	[19] = GRUB_TERM_KEY_F8,
++	[20] = GRUB_TERM_KEY_F9,
++	[21] = GRUB_TERM_KEY_F10,
++	[23] = GRUB_TERM_KEY_F11,
++	[24] = GRUB_TERM_KEY_F12,
+       };
+     char fx_key[] = 
+       { 'P', 'Q', 'w', 'x', 't', 'u',
+-        'q', 'r', 'p', 'M', 'A', 'B' };
++        'q', 'r', 'p', 'M', 'A', 'B', 'H', 'F' };
+     unsigned fx_code[] = 
+ 	{ GRUB_TERM_KEY_F1, GRUB_TERM_KEY_F2, GRUB_TERM_KEY_F3,
+ 	  GRUB_TERM_KEY_F4, GRUB_TERM_KEY_F5, GRUB_TERM_KEY_F6,
+ 	  GRUB_TERM_KEY_F7, GRUB_TERM_KEY_F8, GRUB_TERM_KEY_F9,
+-	  GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F11, GRUB_TERM_KEY_F12 };
++	  GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F11, GRUB_TERM_KEY_F12,
++	  GRUB_TERM_KEY_HOME, GRUB_TERM_KEY_END };
+     unsigned i;
+ 
+     if (c == '\e')
+@@ -492,19 +495,13 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len,
+ 	  {
+ 	    CONTINUE_READ;
+ 
+-	    switch (c)
+-	      {
+-	      case 'H':
+-		keys[0] = GRUB_TERM_KEY_HOME;
+-		*len = 1;
+-		return;
+-	      case 'F':
+-		keys[0] = GRUB_TERM_KEY_END;
+-		*len = 1;
+-		return;
+-	      default:
+-		return;
+-	      }
++	    for (i = 0; i < ARRAY_SIZE (fx_key); i++)
++	      if (fx_key[i] == c)
++		{
++		  keys[0] = fx_code[i];
++		  *len = 1;
++		  return;
++		}
+ 	  }
+ 
+ 	if (c != '[')
+@@ -523,6 +520,15 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len,
+ 
+     switch (c)
+       {
++      case '[':
++	CONTINUE_READ;
++	if (c >= 'A' && c <= 'E')
++	  {
++	    keys[0] = GRUB_TERM_KEY_F1 + c - 'A';
++	    *len = 1;
++	    return;
++	  }
++	return;
+       case 'O':
+ 	CONTINUE_READ;
+ 	for (i = 0; i < ARRAY_SIZE (fx_key); i++)
+@@ -555,18 +561,26 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len,
+ 	  return;
+ 	}	  
+ 
+-      default:
+-	for (i = 0; i < ARRAY_SIZE (four_code_table); i++)
+-	  if (four_code_table[i].key == c)
++      case '1' ... '9':
++	{
++	  unsigned val = c - '0';
++	  CONTINUE_READ;
++	  if (c >= '0' && c <= '9')
+ 	    {
++	      val = val * 10 + (c - '0');
+ 	      CONTINUE_READ;
+-	      if (c != '~')
+-		return;
+-	      keys[0] = four_code_table[i].ascii;
+-	      *len = 1;
+-	      return;
+ 	    }
+-	return;
++	  if (c != '~')
++	    return;
++	  if (val >= ARRAY_SIZE (four_code_table)
++	      || four_code_table[val] == 0)
++	    return;
++	  keys[0] = four_code_table[val];
++	  *len = 1;
++	  return;
++	}
++	default:
++	  return;
+       }
+   }
+ #undef CONTINUE_READ
+-- 
+1.8.5.3
+
diff --git a/0021-Fix-ChangeLog-date.patch b/0021-Fix-ChangeLog-date.patch
new file mode 100644
index 0000000..2d5c433
--- /dev/null
+++ b/0021-Fix-ChangeLog-date.patch
@@ -0,0 +1,25 @@
+From c2e61b87fb4f7d7b9363bb1b5c58c03a0566e106 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 18 Jan 2014 20:01:16 +0400
+Subject: [PATCH 021/112] Fix ChangeLog date
+
+---
+ ChangeLog | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 57f77be..459ac23 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -2,7 +2,7 @@
+ 
+ 	* grub-core/term/terminfo.c: Recognize keys F1-F12.
+ 
+-2014-01-07  Andrey Borzenkov <arvidjaar at gmail.com>
++2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* configure.ac: Add support for BUILD_LDFLAGS.
+ 	* Makefile.am: Use BUILD_LDFLAGS for build time programs here ...
+-- 
+1.8.5.3
+
diff --git a/0022-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch b/0022-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch
new file mode 100644
index 0000000..6087714
--- /dev/null
+++ b/0022-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch
@@ -0,0 +1,47 @@
+From b6f6d31b007ddbc4c6f7285afb36010af8f2af7a Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 18 Jan 2014 20:04:11 +0400
+Subject: [PATCH 022/112] Use _W64 to detect MinGW W64-32 instead of
+ _FILE_OFFSET_BITS
+
+In 94cee4a4c201bb506377b2c26e072eee8cb19d6f I overlooked that config.h
+unconditionally sets _FILE_OFFSET_BITS, so it cannot be used to detect
+MinGW W64 environment. It looks like Emacs folks already found
+solution; instead of _FILE_OFFSET_BITS use _W64 as suggested in
+http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00723.html
+---
+ ChangeLog                             | 5 +++++
+ include/grub/osdep/hostfile_windows.h | 4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 459ac23..3c45a35 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* include/grub/osdep/hostfile_windows.h: Use _W64 instead of
++	FILE_OFFSET_BITS to differentiate between native MinGW and Mingw W64.
++
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* grub-core/term/terminfo.c: Recognize keys F1-F12.
+diff --git a/include/grub/osdep/hostfile_windows.h b/include/grub/osdep/hostfile_windows.h
+index 79efcfa..bf6451b 100644
+--- a/include/grub/osdep/hostfile_windows.h
++++ b/include/grub/osdep/hostfile_windows.h
+@@ -69,8 +69,8 @@ enum grub_util_fd_open_flags_t
+ 
+ #if defined (__MINGW32__) && !defined (__MINGW64__)
+ 
+-/* 32 bit on MinGW-64 already redefines them if _FILE_OFFSET_BITS=64 */
+-#if !defined(_FILE_OFFSET_BITS)
++/* 32 bit on Mingw-w64 already redefines them if _FILE_OFFSET_BITS=64 */
++#ifndef _W64
+ #define fseeko fseeko64
+ #define ftello ftello64
+ #endif
+-- 
+1.8.5.3
+
diff --git a/0023-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch b/0023-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch
new file mode 100644
index 0000000..6e8f0f9
--- /dev/null
+++ b/0023-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch
@@ -0,0 +1,174 @@
+From 53478c3297bdc638f3742d35c8ace197f2abba3a Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 18 Jan 2014 20:41:24 +0400
+Subject: [PATCH 023/112] add BUILD_EXEEXT support to fix make clean on Windows
+
+Add $(BUILD_EXEEXT) to ensure files are removed. Also add CLEANFILES where
+appropriate.
+---
+ ChangeLog             |  7 +++++++
+ Makefile.am           | 16 ++++++++--------
+ Makefile.util.def     |  2 +-
+ configure.ac          | 21 ++++++++++++++++-----
+ grub-core/Makefile.am | 14 ++++++++------
+ 5 files changed, 40 insertions(+), 20 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 3c45a35..130888a 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,12 @@
+ 2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
++	* configure.ac: Add support for BUILD_EXEEXT and use it ...
++	* Makefile.am: ... here.
++	* Makefile.util.def: ... and here.
++	* grub-core/Makefile.am: ... and here.
++
++2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
++
+ 	* include/grub/osdep/hostfile_windows.h: Use _W64 instead of
+ 	FILE_OFFSET_BITS to differentiate between native MinGW and Mingw W64.
+ 
+diff --git a/Makefile.am b/Makefile.am
+index 1bbec0e..aa526f5 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -66,22 +66,22 @@ endif
+ 
+ starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(
 srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0
+ 
+-build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c
++build-grub-mkfont$(BUILD_EXEEXT): util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c
+ 	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs)
+-CLEANFILES += build-grub-mkfont
++CLEANFILES += build-grub-mkfont$(BUILD_EXEEXT)
+ 
+-garbage-gen: util/garbage-gen.c
++garbage-gen$(BUILD_EXEEXT): util/garbage-gen.c
+ 	$(BUILD_CC) -o $@ $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS)  $^
+-CLEANFILES += garbage-gen
++CLEANFILES += garbage-gen$(BUILD_EXEEXT)
+ EXTRA_DIST += util/garbage-gen.c
+ 
+-build-grub-gen-asciih: util/grub-gen-asciih.c
++build-grub-gen-asciih$(BUILD_EXEEXT): util/grub-gen-asciih.c
+ 	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
+-CLEANFILES += build-grub-gen-asciih
++CLEANFILES += build-grub-gen-asciih$(BUILD_EXEEXT)
+ 
+-build-grub-gen-widthspec: util/grub-gen-widthspec.c
++build-grub-gen-widthspec$(BUILD_EXEEXT): util/grub-gen-widthspec.c
+ 	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
+-CLEANFILES += build-grub-gen-widthspec
++CLEANFILES += build-grub-gen-widthspec$(BUILD_EXEEXT)
+ 
+ if COND_STARFIELD
+ starfield_DATA = dejavu_10.pf2 dejavu_12.pf2 dejavu_bold_14.pf2 dejavu_14.pf2 dejavu_16.pf2 $(starfield_theme_files)
+diff --git a/Makefile.util.def b/Makefile.util.def
+index 3c99be2..83df212 100644
+--- a/Makefile.util.def
++++ b/Makefile.util.def
+@@ -708,7 +708,7 @@ script = {
+   name = grub-fs-tester;
+   common = tests/util/grub-fs-tester.in;
+   installdir = noinst;
+-  dependencies = garbage-gen;
++  dependencies = 'garbage-gen$(BUILD_EXEEXT)';
+ };
+ 
+ script = {
+diff --git a/configure.ac b/configure.ac
+index 2e4cf3c..cf3de3b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -38,7 +38,8 @@ AC_CONFIG_AUX_DIR([build-aux])
+ # We don't want -g -O2 by default in CFLAGS
+ : ${CFLAGS=""}
+ 
+-# Checks for host and target systems.
++# Checks for build, host and target systems.
++AC_CANONICAL_BUILD
+ AC_CANONICAL_HOST
+ save_program_prefix="${program_prefix}"
+ AC_CANONICAL_TARGET
+@@ -422,6 +423,16 @@ case "$build_os" in
+   haiku*)				BUILD_LIBM= ;;
+   *) 					BUILD_LIBM=-lm ;;
+ esac
++
++dnl FIXME proper test seems to require too deep dive into Autoconf internals.
++dnl For now just list known platforms that we support.
++
++case "$build_os" in
++  cygwin*|mingw32*|mingw64*)		BUILD_EXEEXT=.exe ;;
++  *)					BUILD_EXEEXT= ;;
++esac
++AC_SUBST(BUILD_EXEEXT)
++
+ # For gnulib.
+ gl_INIT
+ 
+@@ -765,11 +776,11 @@ if test x"$platform" = xemu ; then
+     *windows* | *cygwin* | *mingw*)
+       if test x${target_cpu} = xi386 ; then
+         grub_cv_target_cc_link_format=-mi386pe;
+-	TARGET_OBJ2ELF='./build-grub-pe2elf';
++	TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)';
+       fi
+       if test x${target_cpu} = xx86_64 ; then
+         grub_cv_target_cc_link_format=-mi386pep;
+-	TARGET_OBJ2ELF='./build-grub-pep2elf';
++	TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)';
+       fi
+       TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
+       ;;
+@@ -803,10 +814,10 @@ elif test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
+   fi
+   TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
+   if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
+-    TARGET_OBJ2ELF='./build-grub-pe2elf';
++    TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)';
+   fi
+   if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
+-    TARGET_OBJ2ELF='./build-grub-pep2elf';
++    TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)';
+   fi
+ fi
+ 
+diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
+index 13b7979..826b3dd 100644
+--- a/grub-core/Makefile.am
++++ b/grub-core/Makefile.am
+@@ -26,20 +26,22 @@ CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin
+ CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
+ CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
+ 
+-build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
++build-grub-pep2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
+ 	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^
++CLEANFILES += build-grub-pep2elf$(BUILD_EXEEXT)
+ 
+-build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
++build-grub-pe2elf$(BUILD_EXEEXT): $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
+ 	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
++CLEANFILES += build-grub-pe2elf$(BUILD_EXEEXT)
+ 
+ # gentrigtables
+-gentrigtables: gentrigtables.c
++gentrigtables$(BUILD_EXEEXT): gentrigtables.c
+ 	$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) $< $(BUILD_LIBM)
+-CLEANFILES += gentrigtables
++CLEANFILES += gentrigtables$(BUILD_EXEEXT)
+ 
+ # trigtables.c
+-trigtables.c: gentrigtables gentrigtables.c $(top_srcdir)/configure.ac
+-	./gentrigtables > $@
++trigtables.c: gentrigtables$(BUILD_EXEEXT) gentrigtables.c $(top_srcdir)/configure.ac
++	./gentrigtables$(BUILD_EXEEXT) > $@
+ CLEANFILES += trigtables.c
+ 
+ # XXX Use Automake's LEX & YACC support
+-- 
+1.8.5.3
+
diff --git a/0024-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch b/0024-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch
new file mode 100644
index 0000000..3f178a9
--- /dev/null
+++ b/0024-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch
@@ -0,0 +1,281 @@
+From 389b0154fe3978f7e74a7193be2d0d7a8cf0ef74 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 18 Jan 2014 21:22:57 +0400
+Subject: [PATCH 024/112] fix include loop on MinGW due to libintl.h pulling
+ stdio.h
+
+In file included from ./include/grub/dl.h:23:0,
+                 from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3:
+./include/grub/list.h:34:18: warning: conflicting types for 'grub_list_push' [en
+abled by default]
+ void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item);
+                  ^
+./include/grub/symbol.h:68:25: note: in definition of macro 'EXPORT_FUNC'
+ # define EXPORT_FUNC(x) x
+                         ^
+In file included from ./include/grub/fs.h:30:0,
+                 from ./include/grub/file.h:25,
+                 from ./grub-core/lib/posix_wrap/stdio.h:23,
+                 from c:\mingw\include\libintl.h:314,
+                 from ./include/grub/i18n.h:33,
+                 from ./include/grub/misc.h:27,
+                 from ./include/grub/list.h:25,
+                 from ./include/grub/dl.h:28,
+                 from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3:
+./include/grub/partition.h:106:3: note: previous implicit declaration of 'grub_l
+ist_push' was here
+   grub_list_push (GRUB_AS_LIST_P (&grub_partition_map_list),
+   ^
+list.h needs just ATTRIBUTE_ERROR from misc.h; split compiler features
+into separate file grub/compiler.h and include it instead.
+---
+ ChangeLog                          | 14 +++++++++++
+ grub-core/commands/fileXX.c        |  1 +
+ grub-core/efiemu/prepare.c         |  1 +
+ grub-core/loader/i386/xen_file.c   |  1 +
+ grub-core/loader/i386/xen_fileXX.c |  1 +
+ grub-core/video/capture.c          |  1 +
+ include/grub/command.h             |  1 +
+ include/grub/compiler.h            | 51 ++++++++++++++++++++++++++++++++++++++
+ include/grub/dl.h                  |  1 +
+ include/grub/list.h                |  4 +--
+ include/grub/misc.h                | 29 +---------------------
+ include/grub/procfs.h              |  1 +
+ 12 files changed, 76 insertions(+), 30 deletions(-)
+ create mode 100644 include/grub/compiler.h
+
+diff --git a/ChangeLog b/ChangeLog
+index 130888a..283dd80 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,19 @@
+ 2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
++	* include/grub/misc.h: Move macros for compiler features to ...
++	* include/grub/compiler.h: ... new file.
++	* include/grub/list.h: Include <grub/compiler.h> instead of <grub/misc.h>.
++	* grub-core/commands/fileXX.c: Include <grub/misc.h>.
++	* grub-core/efiemu/prepare.c: Include <grub/misc.h>.
++	* grub-core/loader/i386/xen_file.c: Include <grub/misc.h>.
++	* grub-core/loader/i386/xen_fileXX.c: Include <grub/misc.h>.
++	* grub-core/video/capture.c: Include <grub/misc.h>.
++	* include/grub/command.h: Include <grub/misc.h>.
++	* include/grub/dl.h: Include <grub/misc.h>.
++	* include/grub/procfs.h: Include <grub/misc.h>.
++
++2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
++
+ 	* configure.ac: Add support for BUILD_EXEEXT and use it ...
+ 	* Makefile.am: ... here.
+ 	* Makefile.util.def: ... and here.
+diff --git a/grub-core/commands/fileXX.c b/grub-core/commands/fileXX.c
+index c9857ff..58e1094 100644
+--- a/grub-core/commands/fileXX.c
++++ b/grub-core/commands/fileXX.c
+@@ -18,6 +18,7 @@
+ 
+ #include <grub/fileid.h>
+ #include <grub/elfload.h>
++#include <grub/misc.h>
+ 
+ #pragma GCC diagnostic ignored "-Wcast-align"
+ 
+diff --git a/grub-core/efiemu/prepare.c b/grub-core/efiemu/prepare.c
+index fb1b25d..84c3368 100644
+--- a/grub-core/efiemu/prepare.c
++++ b/grub-core/efiemu/prepare.c
+@@ -21,6 +21,7 @@
+ #include <grub/err.h>
+ #include <grub/mm.h>
+ #include <grub/types.h>
++#include <grub/misc.h>
+ #include <grub/efiemu/efiemu.h>
+ #include <grub/crypto.h>
+ 
+diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_file.c
+index ebbf6aa..ff23235 100644
+--- a/grub-core/loader/i386/xen_file.c
++++ b/grub-core/loader/i386/xen_file.c
+@@ -18,6 +18,7 @@
+ 
+ #include <grub/xen_file.h>
+ #include <grub/i386/linux.h>
++#include <grub/misc.h>
+ 
+ grub_elf_t
+ grub_xen_file (grub_file_t file)
+diff --git a/grub-core/loader/i386/xen_fileXX.c b/grub-core/loader/i386/xen_fileXX.c
+index 6df0015..73a5f90 100644
+--- a/grub-core/loader/i386/xen_fileXX.c
++++ b/grub-core/loader/i386/xen_fileXX.c
+@@ -17,6 +17,7 @@
+  */
+ 
+ #include <grub/xen_file.h>
++#include <grub/misc.h>
+ 
+ static grub_err_t
+ parse_xen_guest (grub_elf_t elf, struct grub_xen_file_info *xi,
+diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c
+index 67c8edd..4f83c74 100644
+--- a/grub-core/video/capture.c
++++ b/grub-core/video/capture.c
+@@ -4,6 +4,7 @@
+ #include <grub/video.h>
+ #include <grub/video_fb.h>
+ #include <grub/mm.h>
++#include <grub/misc.h>
+ 
+ static struct
+ {
+diff --git a/include/grub/command.h b/include/grub/command.h
+index 8705a63..eee4e84 100644
+--- a/include/grub/command.h
++++ b/include/grub/command.h
+@@ -22,6 +22,7 @@
+ #include <grub/symbol.h>
+ #include <grub/err.h>
+ #include <grub/list.h>
++#include <grub/misc.h>
+ 
+ typedef enum grub_command_flags
+   {
+diff --git a/include/grub/compiler.h b/include/grub/compiler.h
+new file mode 100644
+index 0000000..c9e1d7a
+--- /dev/null
++++ b/include/grub/compiler.h
+@@ -0,0 +1,51 @@
++/* compiler.h - macros for various compiler features */
++/*
++ *  GRUB  --  GRand Unified Bootloader
++ *  Copyright (C) 2002,2003,2005,2006,2007,2008,2009,2010,2014  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/>.
++ */
++
++#ifndef GRUB_COMPILER_HEADER
++#define GRUB_COMPILER_HEADER	1
++
++/* GCC version checking borrowed from glibc. */
++#if defined(__GNUC__) && defined(__GNUC_MINOR__)
++#  define GNUC_PREREQ(maj,min) \
++	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
++#else
++#  define GNUC_PREREQ(maj,min) 0
++#endif
++
++/* Does this compiler support compile-time error attributes? */
++#if GNUC_PREREQ(4,3)
++#  define ATTRIBUTE_ERROR(msg) \
++	__attribute__ ((__error__ (msg)))
++#else
++#  define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn))
++#endif
++
++#if GNUC_PREREQ(4,4)
++#  define GNU_PRINTF gnu_printf
++#else
++#  define GNU_PRINTF printf
++#endif
++
++#if GNUC_PREREQ(3,4)
++#  define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
++#else
++#  define WARN_UNUSED_RESULT
++#endif
++
++#endif /* ! GRUB_COMPILER_HEADER */
+diff --git a/include/grub/dl.h b/include/grub/dl.h
+index d29a899..9562fa6 100644
+--- a/include/grub/dl.h
++++ b/include/grub/dl.h
+@@ -26,6 +26,7 @@
+ #include <grub/types.h>
+ #include <grub/elf.h>
+ #include <grub/list.h>
++#include <grub/misc.h>
+ #endif
+ 
+ /*
+diff --git a/include/grub/list.h b/include/grub/list.h
+index edd20ad..d170ff6 100644
+--- a/include/grub/list.h
++++ b/include/grub/list.h
+@@ -21,8 +21,8 @@
+ #define GRUB_LIST_HEADER 1
+ 
+ #include <grub/symbol.h>
+-#include <grub/types.h>
+-#include <grub/misc.h>
++#include <grub/err.h>
++#include <grub/compiler.h>
+ 
+ struct grub_list
+ {
+diff --git a/include/grub/misc.h b/include/grub/misc.h
+index 2cf74b5..c6cd456 100644
+--- a/include/grub/misc.h
++++ b/include/grub/misc.h
+@@ -25,34 +25,7 @@
+ #include <grub/symbol.h>
+ #include <grub/err.h>
+ #include <grub/i18n.h>
+-
+-/* GCC version checking borrowed from glibc. */
+-#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+-#  define GNUC_PREREQ(maj,min) \
+-	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+-#else
+-#  define GNUC_PREREQ(maj,min) 0
+-#endif
+-
+-/* Does this compiler support compile-time error attributes? */
+-#if GNUC_PREREQ(4,3)
+-#  define ATTRIBUTE_ERROR(msg) \
+-	__attribute__ ((__error__ (msg)))
+-#else
+-#  define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn))
+-#endif
+-
+-#if GNUC_PREREQ(4,4)
+-#  define GNU_PRINTF gnu_printf
+-#else
+-#  define GNU_PRINTF printf
+-#endif
+-
+-#if GNUC_PREREQ(3,4)
+-#  define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
+-#else
+-#  define WARN_UNUSED_RESULT
+-#endif
++#include <grub/compiler.h>
+ 
+ #define ALIGN_UP(addr, align) \
+ 	((addr + (typeof (addr)) align - 1) & ~((typeof (addr)) align - 1))
+diff --git a/include/grub/procfs.h b/include/grub/procfs.h
+index d393da7..8cc331d 100644
+--- a/include/grub/procfs.h
++++ b/include/grub/procfs.h
+@@ -20,6 +20,7 @@
+ #define GRUB_PROCFS_HEADER	1
+ 
+ #include <grub/list.h>
++#include <grub/types.h>
+ 
+ struct grub_procfs_entry
+ {
+-- 
+1.8.5.3
+
diff --git a/0025-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch b/0025-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch
new file mode 100644
index 0000000..c68a0bb
--- /dev/null
+++ b/0025-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch
@@ -0,0 +1,61 @@
+From 2b945debd84085f04f45fe16db750528b12b3e6e Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 19:26:40 +0100
+Subject: [PATCH 025/112] 	* grub-core/commands/macbless.c: Rename FILE
+ and DIR to avoid 	conflicts.
+
+	Reported by: Andrey Borzenkov.
+---
+ ChangeLog                     | 7 +++++++
+ grub-core/commands/macbless.c | 6 +++---
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 283dd80..7d11c52 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,10 @@
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/commands/macbless.c: Rename FILE and DIR to avoid
++	conflicts.
++
++	Reported by: Andrey Borzenkov.
++
+ 2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* include/grub/misc.h: Move macros for compiler features to ...
+diff --git a/grub-core/commands/macbless.c b/grub-core/commands/macbless.c
+index c521083..4724edd 100644
+--- a/grub-core/commands/macbless.c
++++ b/grub-core/commands/macbless.c
+@@ -37,7 +37,7 @@ struct find_node_context
+   grub_uint64_t inode_found;
+   char *dirname;
+   enum
+-  { NONE, FILE, DIR } found;
++  { FOUND_NONE, FOUND_FILE, FOUND_DIR } found;
+ };
+ 
+ static int
+@@ -53,7 +53,7 @@ find_inode (const char *filename,
+ 	   && grub_strcasecmp (ctx->dirname, filename) == 0)))
+     {
+       ctx->inode_found = info->inode;
+-      ctx->found = info->dir ? DIR : FILE;
++      ctx->found = info->dir ? FOUND_DIR : FOUND_FILE;
+     }
+   return 0;
+ }
+@@ -175,7 +175,7 @@ grub_mac_bless_file (grub_device_t dev, const char *path_in, int intel)
+   grub_free (path);
+ 
+   return grub_mac_bless_inode (dev, (grub_uint32_t) ctx.inode_found,
+-			       (ctx.found == DIR), intel);
++			       (ctx.found == FOUND_DIR), intel);
+ }
+ 
+ static grub_err_t
+-- 
+1.8.5.3
+
diff --git a/0026-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch b/0026-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch
new file mode 100644
index 0000000..5907f9b
--- /dev/null
+++ b/0026-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch
@@ -0,0 +1,39 @@
+From a088c0ebf38e54325e10e2872bb56a02b3c97703 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym at gentoo.org>
+Date: Sat, 18 Jan 2014 19:41:15 +0100
+Subject: [PATCH 026/112] 	* Makefile.util.def: Link grub-ofpathname with
+ zfs libs.
+
+---
+ ChangeLog         | 4 ++++
+ Makefile.util.def | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 7d11c52..0629bfc 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-01  Mike Gilbert <floppym at gentoo.org>
++
++	* Makefile.util.def: Link grub-ofpathname with zfs libs.
++
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* grub-core/commands/macbless.c: Rename FILE and DIR to avoid
+diff --git a/Makefile.util.def b/Makefile.util.def
+index 83df212..a286a89 100644
+--- a/Makefile.util.def
++++ b/Makefile.util.def
+@@ -384,7 +384,7 @@ program = {
+   ldadd = libgrubgcry.a;
+   ldadd = libgrubkern.a;
+   ldadd = grub-core/gnulib/libgnu.a;
+-  ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBGEOM)';
++  ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
+ };
+ 
+ program = {
+-- 
+1.8.5.3
+
diff --git a/0027-Makefile.am-default_payload.elf-Add-modules.patch b/0027-Makefile.am-default_payload.elf-Add-modules.patch
new file mode 100644
index 0000000..163e133
--- /dev/null
+++ b/0027-Makefile.am-default_payload.elf-Add-modules.patch
@@ -0,0 +1,42 @@
+From dddf94cbf0d8e07744f28d24684aa6e29f8c1780 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 19:43:19 +0100
+Subject: [PATCH 027/112] 	* Makefile.am (default_payload.elf): Add
+ modules 	multiboot cbmemc linux16 gzio echo help.
+
+---
+ ChangeLog   | 7 ++++++-
+ Makefile.am | 2 +-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 0629bfc..ef0ab77 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,4 +1,9 @@
+-2014-01-01  Mike Gilbert <floppym at gentoo.org>
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* Makefile.am (default_payload.elf): Add modules
++	multiboot cbmemc linux16 gzio echo help.
++
++2014-01-18  Mike Gilbert <floppym at gentoo.org>
+ 
+ 	* Makefile.util.def: Link grub-ofpathname with zfs libs.
+ 
+diff --git a/Makefile.am b/Makefile.am
+index aa526f5..97c062d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -399,7 +399,7 @@ bootcheck: $(BOOTCHECKS)
+ 
+ if COND_i386_coreboot
+ default_payload.elf: grub-mkstandalone grub-mkimage
+-	pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg
++	pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial multiboot cbmemc linux16 gzio echo help' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg
+ endif
+ 
+ windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows
+-- 
+1.8.5.3
+
diff --git a/0028-fix-removal-of-cpu-machine-links-on-mingw-msys.patch b/0028-fix-removal-of-cpu-machine-links-on-mingw-msys.patch
new file mode 100644
index 0000000..d11884c
--- /dev/null
+++ b/0028-fix-removal-of-cpu-machine-links-on-mingw-msys.patch
@@ -0,0 +1,55 @@
+From 02a2b7039c54c1786fc31ab2d34027eaec1c826a Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 18 Jan 2014 22:48:04 +0400
+Subject: [PATCH 028/112] fix removal of {cpu,machine} links on mingw/msys
+
+At least on Windows 2003 using "ln -s dir1 dir2" in msys shell succeeds,
+but results in what looks like hard link. Subsequent "rm -f dir2" (e.g.
+during second config.status invocation) fails. Check that we also can
+remove link to directory.
+
+Make it more clear in message that we are checking "ln -s".
+---
+ ChangeLog    | 5 +++++
+ acinclude.m4 | 6 +++---
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index ef0ab77..3c24157 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* acinclude.m4 (grub_CHECK_LINK_DIR): Check that we can also remove
++	symbolic link to directory. It fails in Msys shell on Windows 2003.
++
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* Makefile.am (default_payload.elf): Add modules
+diff --git a/acinclude.m4 b/acinclude.m4
+index 32d5477..b2bb88d 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -418,15 +418,15 @@ else
+ [fi]
+ ])
+ 
+-dnl Check if ln can handle directories properly (mingw).
++dnl Check if ln -s can handle directories properly (mingw).
+ AC_DEFUN([grub_CHECK_LINK_DIR],[
+-AC_MSG_CHECKING([whether ln can handle directories properly])
++AC_MSG_CHECKING([whether ln -s can handle directories properly])
+ [mkdir testdir 2>/dev/null
+ case $srcdir in
+ [\\/$]* | ?:[\\/]* ) reldir=$srcdir/include/grub/util ;;
+     *) reldir=../$srcdir/include/grub/util ;;
+ esac
+-if ln -s $reldir testdir/util 2>/dev/null ; then]
++if ln -s $reldir testdir/util 2>/dev/null && rm -f testdir/util 2>/dev/null ; then]
+   AC_MSG_RESULT([yes])
+   [link_dir=yes
+ else
+-- 
+1.8.5.3
+
diff --git a/0029-grub-core-normal-main.c-read_config_file-Buffer-conf.patch b/0029-grub-core-normal-main.c-read_config_file-Buffer-conf.patch
new file mode 100644
index 0000000..b2b203f
--- /dev/null
+++ b/0029-grub-core-normal-main.c-read_config_file-Buffer-conf.patch
@@ -0,0 +1,68 @@
+From b5453504f83bd29248fbae94d7c5ceea54ed65c6 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 19:54:09 +0100
+Subject: [PATCH 029/112] 	* grub-core/normal/main.c (read_config_file):
+ Buffer config file. 	Reduces boot time.
+
+---
+ ChangeLog               |  5 +++++
+ grub-core/normal/main.c | 14 +++++++++++---
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 3c24157..66e00d5 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/normal/main.c (read_config_file): Buffer config file.
++	Reduces boot time.
++
+ 2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* acinclude.m4 (grub_CHECK_LINK_DIR): Check that we can also remove
+diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
+index c36663f..3a926fc 100644
+--- a/grub-core/normal/main.c
++++ b/grub-core/normal/main.c
+@@ -32,6 +32,7 @@
+ #include <grub/i18n.h>
+ #include <grub/charset.h>
+ #include <grub/script_sh.h>
++#include <grub/bufio.h>
+ 
+ GRUB_MOD_LICENSE ("GPLv3+");
+ 
+@@ -104,7 +105,7 @@ read_config_file_getline (char **line, int cont __attribute__ ((unused)),
+ static grub_menu_t
+ read_config_file (const char *config)
+ {
+-  grub_file_t file;
++  grub_file_t rawfile, file;
+   char *old_file = 0, *old_dir = 0;
+   char *config_dir, *ptr = 0;
+   const char *ctmp;
+@@ -122,10 +123,17 @@ read_config_file (const char *config)
+     }
+ 
+   /* Try to open the config file.  */
+-  file = grub_file_open (config);
+-  if (! file)
++  rawfile = grub_file_open (config);
++  if (! rawfile)
+     return 0;
+ 
++  file = grub_bufio_open (rawfile, 0);
++  if (! file)
++    {
++      grub_file_close (file);
++      return 0;
++    }
++
+   ctmp = grub_env_get ("config_file");
+   if (ctmp)
+     old_file = grub_strdup (ctmp);
+-- 
+1.8.5.3
+
diff --git a/0030-util-grub-install.c-Fix-a-typo.patch b/0030-util-grub-install.c-Fix-a-typo.patch
new file mode 100644
index 0000000..3dbd4fb
--- /dev/null
+++ b/0030-util-grub-install.c-Fix-a-typo.patch
@@ -0,0 +1,40 @@
+From f11a0491a9ee60d66d5bd084841c7548db876be7 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sat, 18 Jan 2014 20:02:51 +0100
+Subject: [PATCH 030/112] 	* util/grub-install.c: Fix a typo.
+
+---
+ ChangeLog           | 4 ++++
+ util/grub-install.c | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 66e00d5..1b53ccd 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,9 @@
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* util/grub-install.c: Fix a typo.
++
++2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/normal/main.c (read_config_file): Buffer config file.
+ 	Reduces boot time.
+ 
+diff --git a/util/grub-install.c b/util/grub-install.c
+index 4608b80..5903f34 100644
+--- a/util/grub-install.c
++++ b/util/grub-install.c
+@@ -1259,7 +1259,7 @@ main (int argc, char *argv[])
+ 
+   if (!config.is_cryptodisk_enabled && have_cryptodisk)
+     grub_util_error (_("attempt to install to encrypted disk without cryptodisk enabled. "
+-		       "Set `%s' in file `%s'."), "GRUB_ENABLE_CRYPTODISK=1",
++		       "Set `%s' in file `%s'."), "GRUB_ENABLE_CRYPTODISK=y",
+ 		     grub_util_get_config_filename ());
+ 
+   if (disk_module && grub_strcmp (disk_module, "ata") == 0)
+-- 
+1.8.5.3
+
diff --git a/0031-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch b/0031-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch
new file mode 100644
index 0000000..0b9811f
--- /dev/null
+++ b/0031-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch
@@ -0,0 +1,91 @@
+From 9cc802e03875429ff772eb3f007ee11eb1ad0c25 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 18 Jan 2014 23:15:40 +0400
+Subject: [PATCH 031/112] use MODULE_FILES for genemuinit* instead of MOD_FILES
+
+MinGW native nm does not support ELF binaries.
+---
+ ChangeLog                     | 8 ++++++++
+ grub-core/Makefile.am         | 8 ++++----
+ grub-core/genemuinit.sh       | 4 ++--
+ grub-core/genemuinitheader.sh | 4 ++--
+ 4 files changed, 16 insertions(+), 8 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 1b53ccd..7d207e4 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,11 @@
++2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* grub-core/Makefile.am: Build grub_emu_init.[ch] from MODULE_FILES
++	instead of MOD_FILES.
++	* grub-core/genemuinit.sh: Simplify stripping of suffix so it works
++	both with and without .exe.
++	* grub-core/genemuinitheader.sh: Same.
++
+ 2014-01-18  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* util/grub-install.c: Fix a typo.
+diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
+index 826b3dd..5c087c8 100644
+--- a/grub-core/Makefile.am
++++ b/grub-core/Makefile.am
+@@ -294,12 +294,12 @@ grub_emu-grub_emu_init.$(OBJEXT):grub_emu_init.h
+ kern/emu/grub_emu_dyn-main.$(OBJEXT):grub_emu_init.h
+ grub_emu_dyn-grub_emu_init.$(OBJEXT):grub_emu_init.h
+ 
+-grub_emu_init.h: genemuinitheader.sh $(MOD_FILES)
+-	rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@
++grub_emu_init.h: genemuinitheader.sh $(MODULE_FILES)
++	rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinitheader.sh $(TARGET_NM) > $@
+ CLEANFILES += grub_emu_init.h
+ 
+-grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MOD_FILES)
+-	rm -f $@; echo $(MOD_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@
++grub_emu_init.c: grub_emu_init.h genemuinit.sh $(MODULE_FILES)
++	rm -f $@; echo $(MODULE_FILES) | sh $(srcdir)/genemuinit.sh $(TARGET_NM) > $@
+ CLEANFILES += grub_emu_init.c
+ endif
+ 
+diff --git a/grub-core/genemuinit.sh b/grub-core/genemuinit.sh
+index 45c15ec..8c6bb1c 100644
+--- a/grub-core/genemuinit.sh
++++ b/grub-core/genemuinit.sh
+@@ -47,7 +47,7 @@ EOF
+ read mods
+ for line in $mods; do
+   if ${nm} --defined-only -P -p ${line} | grep grub_mod_init > /dev/null; then
+-      echo "grub_${line}_init ();" | sed 's,\.mod,,g;'
++      echo "grub_${line%%.*}_init ();"
+   fi
+ done
+ 
+@@ -63,7 +63,7 @@ EOF
+ 
+ for line in $mods; do
+   if ${nm} --defined-only -P -p ${line} | grep grub_mod_fini > /dev/null; then
+-      echo "grub_${line}_fini ();" | sed 's,\.mod,,g;'
++      echo "grub_${line%%.*}_fini ();"
+   fi
+ done
+ 
+diff --git a/grub-core/genemuinitheader.sh b/grub-core/genemuinitheader.sh
+index 6b83f59..a99a15d 100644
+--- a/grub-core/genemuinitheader.sh
++++ b/grub-core/genemuinitheader.sh
+@@ -44,9 +44,9 @@ EOF
+ read mods
+ for line in $mods; do
+   if ${nm} --defined-only -P -p ${line} | grep grub_mod_init > /dev/null; then
+-      echo "void grub_${line}_init (void);" | sed 's,\.mod,,g;'
++      echo "void grub_${line%%.*}_init (void);"
+   fi
+   if ${nm} --defined-only -P -p ${line} | grep grub_mod_fini > /dev/null; then
+-      echo "void grub_${line}_fini (void);" | sed 's,\.mod,,g;'
++      echo "void grub_${line%%.*}_fini (void);"
+   fi
+ done
+-- 
+1.8.5.3
+
diff --git a/0032-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch b/0032-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch
new file mode 100644
index 0000000..3ab062f
--- /dev/null
+++ b/0032-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch
@@ -0,0 +1,58 @@
+From d03d817508bd52995ce9ea6c1fa697856b66de46 Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson at ubuntu.com>
+Date: Fri, 17 Jan 2014 02:28:46 +0000
+Subject: [PATCH 032/112] Ignore EPERM when modifying kern.geom.debugflags
+
+Many tests fail when run as a non-root user on FreeBSD.  The failures
+all amount to an inability to open files using grub_util_fd_open,
+because we cannot set the kern.geom.debugflags sysctl.  This sysctl is
+indeed important to allow us to do such things as installing GRUB to the
+MBR, but if we need to do that and can't then we will get an error
+later.  Enforcing it here is unnecessary and prevents otherwise
+perfectly reasonable operations.
+---
+ ChangeLog                          |  7 +++++++
+ grub-core/osdep/freebsd/hostdisk.c | 12 ++++++++++--
+ 2 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 7d207e4..cdeea66 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,10 @@
++2014-01-19  Colin Watson  <cjwatson at ubuntu.com>
++
++	* grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Ignore
++	EPERM when modifying kern.geom.debugflags.  It is only a problem for
++	such things as installing GRUB to the MBR, in which case there'll be
++	an error later anyway, not for opening files during tests.
++
+ 2014-01-18  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* grub-core/Makefile.am: Build grub_emu_init.[ch] from MODULE_FILES
+diff --git a/grub-core/osdep/freebsd/hostdisk.c b/grub-core/osdep/freebsd/hostdisk.c
+index eb202dc..6145d07 100644
+--- a/grub-core/osdep/freebsd/hostdisk.c
++++ b/grub-core/osdep/freebsd/hostdisk.c
+@@ -102,8 +102,16 @@ grub_util_fd_open (const char *os_dev, int flags)
+   if (! (sysctl_oldflags & 0x10)
+       && sysctlbyname ("kern.geom.debugflags", NULL , 0, &sysctl_flags, sysctl_size))
+     {
+-      grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags of sysctl kern.geom.debugflags");
+-      return GRUB_UTIL_FD_INVALID;
++      if (errno == EPERM)
++	/* Running as an unprivileged user; don't worry about restoring
++	   flags, although if we try to write to anything interesting such
++	   as the MBR then we may fail later.  */
++	sysctl_oldflags = 0x10;
++      else
++	{
++	  grub_error (GRUB_ERR_BAD_DEVICE, "cannot set flags of sysctl kern.geom.debugflags");
++	  return GRUB_UTIL_FD_INVALID;
++	}
+     }
+ 
+   ret = open (os_dev, flags, S_IROTH | S_IRGRP | S_IRUSR | S_IWUSR);
+-- 
+1.8.5.3
+
diff --git a/0033-change-stop-condition-to-avoid-infinite-loops.patch b/0033-change-stop-condition-to-avoid-infinite-loops.patch
new file mode 100644
index 0000000..3cb9cfa
--- /dev/null
+++ b/0033-change-stop-condition-to-avoid-infinite-loops.patch
@@ -0,0 +1,52 @@
+From f18970e0e0c37f5407f3259fe343dc825dfa4170 Mon Sep 17 00:00:00 2001
+From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
+Date: Tue, 21 Jan 2014 10:49:39 -0200
+Subject: [PATCH 033/112] change stop condition to avoid infinite loops
+
+In net/net.c there is a while (1) that only exits if there is a stop
+condition and more then 10 packages or if there is no package received.
+
+If GRUB is idle and enter in this loop, the only condition to leave is
+if it doesn't have incoming packages. In a network with heavy traffic
+this never happens.
+---
+ ChangeLog           | 12 ++++++++++++
+ grub-core/net/net.c |  2 +-
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index cdeea66..bbbe539 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,15 @@
++2014-01-21  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
++
++	* grub-core/net/net.c (receive_packets): Change stop condition to avoid
++	infinite loops.
++
++	In net/net.c there is a while (1) that only exits if there is a stop
++	condition and more then 10 packages or if there is no package received.
++
++	If GRUB is idle and enter in this loop, the only condition to leave is
++	if it doesn't have incoming packages. In a network with heavy traffic
++	this never happens.
++
+ 2014-01-19  Colin Watson  <cjwatson at ubuntu.com>
+ 
+ 	* grub-core/osdep/freebsd/hostdisk.c (grub_util_fd_open): Ignore
+diff --git a/grub-core/net/net.c b/grub-core/net/net.c
+index 0e57e93..56355f3 100644
+--- a/grub-core/net/net.c
++++ b/grub-core/net/net.c
+@@ -1453,7 +1453,7 @@ receive_packets (struct grub_net_card *card, int *stop_condition)
+ 	}
+       card->opened = 1;
+     }
+-  while (1)
++  while (received < 100)
+     {
+       /* Maybe should be better have a fixed number of packets for each card
+ 	 and just mark them as used and not used.  */ 
+-- 
+1.8.5.3
+
diff --git a/0034-increase-network-try-interval-gradually.patch b/0034-increase-network-try-interval-gradually.patch
new file mode 100644
index 0000000..5894025
--- /dev/null
+++ b/0034-increase-network-try-interval-gradually.patch
@@ -0,0 +1,111 @@
+From 7533a737e4965d314c86f06a35a5f3f9cffb8318 Mon Sep 17 00:00:00 2001
+From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
+Date: Tue, 21 Jan 2014 11:03:51 -0200
+Subject: [PATCH 034/112] increase network try interval gradually
+
+* grub-core/net/arp.c (grub_net_arp_send_request): Increase network try
+interval gradually.
+* grub-core/net/icmp6.c (grub_net_icmp6_send_request): Likewise.
+* grub-core/net/net.c (grub_net_fs_read_real): Likewise.
+* grub-core/net/tftp.c (tftp_open): Likewise.
+* include/grub/net.h (GRUB_NET_INTERVAL_ADDITION): New define.
+---
+ ChangeLog             | 9 +++++++++
+ grub-core/net/arp.c   | 3 ++-
+ grub-core/net/icmp6.c | 3 ++-
+ grub-core/net/net.c   | 5 +++--
+ grub-core/net/tftp.c  | 3 ++-
+ include/grub/net.h    | 1 +
+ 6 files changed, 19 insertions(+), 5 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index bbbe539..33fa6b1 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,14 @@
+ 2014-01-21  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
+ 
++	* grub-core/net/arp.c (grub_net_arp_send_request): Increase network try
++	interval gradually.
++	* grub-core/net/icmp6.c (grub_net_icmp6_send_request): Likewise.
++	* grub-core/net/net.c (grub_net_fs_read_real): Likewise.
++	* grub-core/net/tftp.c (tftp_open): Likewise.
++	* include/grub/net.h (GRUB_NET_INTERVAL_ADDITION): New define.
++
++2014-01-21  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
++
+ 	* grub-core/net/net.c (receive_packets): Change stop condition to avoid
+ 	infinite loops.
+ 
+diff --git a/grub-core/net/arp.c b/grub-core/net/arp.c
+index e92c7e7..d62d0cc 100644
+--- a/grub-core/net/arp.c
++++ b/grub-core/net/arp.c
+@@ -110,7 +110,8 @@ grub_net_arp_send_request (struct grub_net_network_level_interface *inf,
+ 	return GRUB_ERR_NONE;
+       pending_req = proto_addr->ipv4;
+       have_pending = 0;
+-      grub_net_poll_cards (GRUB_NET_INTERVAL, &have_pending);
++      grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION),
++                           &have_pending);
+       if (grub_net_link_layer_resolve_check (inf, proto_addr))
+ 	return GRUB_ERR_NONE;
+       nb.data = nbd;
+diff --git a/grub-core/net/icmp6.c b/grub-core/net/icmp6.c
+index 2741e6f..bbc9020 100644
+--- a/grub-core/net/icmp6.c
++++ b/grub-core/net/icmp6.c
+@@ -518,7 +518,8 @@ grub_net_icmp6_send_request (struct grub_net_network_level_interface *inf,
+     {
+       if (grub_net_link_layer_resolve_check (inf, proto_addr))
+ 	break;
+-      grub_net_poll_cards (GRUB_NET_INTERVAL, 0);
++      grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION),
++                           0);
+       if (grub_net_link_layer_resolve_check (inf, proto_addr))
+ 	break;
+       nb->data = nbd;
+diff --git a/grub-core/net/net.c b/grub-core/net/net.c
+index 56355f3..1521d8d 100644
+--- a/grub-core/net/net.c
++++ b/grub-core/net/net.c
+@@ -1558,8 +1558,9 @@ grub_net_fs_read_real (grub_file_t file, char *buf, grub_size_t len)
+       if (!net->eof)
+ 	{
+ 	  try++;
+-	  grub_net_poll_cards (GRUB_NET_INTERVAL, &net->stall);
+-	}
++	  grub_net_poll_cards (GRUB_NET_INTERVAL +
++                               (try * GRUB_NET_INTERVAL_ADDITION), &net->stall);
++        }
+       else
+ 	return total;
+     }
+diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
+index 9c489f1..5173614 100644
+--- a/grub-core/net/tftp.c
++++ b/grub-core/net/tftp.c
+@@ -398,7 +398,8 @@ tftp_open (struct grub_file *file, const char *filename)
+ 	  destroy_pq (data);
+ 	  return err;
+ 	}
+-      grub_net_poll_cards (GRUB_NET_INTERVAL, &data->have_oack);
++      grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION),
++                           &data->have_oack);
+       if (data->have_oack)
+ 	break;
+     }
+diff --git a/include/grub/net.h b/include/grub/net.h
+index de6259e..0e0a605 100644
+--- a/include/grub/net.h
++++ b/include/grub/net.h
+@@ -532,5 +532,6 @@ extern char *grub_net_default_server;
+ 
+ #define GRUB_NET_TRIES 40
+ #define GRUB_NET_INTERVAL 400
++#define GRUB_NET_INTERVAL_ADDITION 20
+ 
+ #endif /* ! GRUB_NET_HEADER */
+-- 
+1.8.5.3
+
diff --git a/0035-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch b/0035-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch
new file mode 100644
index 0000000..c1ec284
--- /dev/null
+++ b/0035-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch
@@ -0,0 +1,39 @@
+From 35a28bea958018b24f6a2a7dc3cf2e72bc9e2953 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Tue, 21 Jan 2014 19:29:33 +0400
+Subject: [PATCH 035/112] look for DejaVu also in /usr/share/fonts/truetype
+
+It is installed in this path on openSUSE.
+---
+ ChangeLog    | 4 ++++
+ configure.ac | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 33fa6b1..e884b4e 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-21  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype.
++
+ 2014-01-21  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
+ 
+ 	* grub-core/net/arp.c (grub_net_arp_send_request): Increase network try
+diff --git a/configure.ac b/configure.ac
+index cf3de3b..120263e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1389,7 +1389,7 @@ fi
+ 
+ if test x"$starfield_excuse" = x; then
+    for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
+-     for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
++     for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype; do
+         if test -f "$dir/DejaVuSans.$ext"; then
+           DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
+           break 2
+-- 
+1.8.5.3
+
diff --git a/0036-Show-detected-path-to-DejaVuSans-in-configure-summar.patch b/0036-Show-detected-path-to-DejaVuSans-in-configure-summar.patch
new file mode 100644
index 0000000..da8efb1
--- /dev/null
+++ b/0036-Show-detected-path-to-DejaVuSans-in-configure-summar.patch
@@ -0,0 +1,37 @@
+From 85db438f517cda4f9b9acfc0281ebf6cf7c47e1a Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Tue, 21 Jan 2014 19:41:11 +0400
+Subject: [PATCH 036/112] Show detected path to DejaVuSans in configure summary
+
+---
+ ChangeLog    | 1 +
+ configure.ac | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index e884b4e..f463e8b 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,6 +1,7 @@
+ 2014-01-21  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype.
++	Show detected font path in summary.
+ 
+ 2014-01-21  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
+ 
+diff --git a/configure.ac b/configure.ac
+index 120263e..8888c2f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1816,6 +1816,7 @@ echo grub-mount: No "($grub_mount_excuse)"
+ fi
+ if [ x"$starfield_excuse" = x ]; then
+ echo starfield theme: Yes
++echo With DejaVuSans font from $DJVU_FONT_SOURCE
+ else
+ echo starfield theme: No "($starfield_excuse)"
+ fi
+-- 
+1.8.5.3
+
diff --git a/0037-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch b/0037-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch
new file mode 100644
index 0000000..693ac4e
--- /dev/null
+++ b/0037-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch
@@ -0,0 +1,62 @@
+From 7954e6250ac4f0e1287c5a89dd13539dfaa711e8 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Tue, 21 Jan 2014 20:54:09 +0400
+Subject: [PATCH 037/112] add GRUB_WINDOWS_EXTRA_DIST to allow shipping runtime
+ files
+
+Not all toolkits provide static libraries. This patch enables creation of self
+contained distribution that does not require pre-existing runtime libraries.
+Intended usage is
+
+export GRUB_WINDOWS_EXTRA_DIST="/path/to/liblzma.dll /path/to/libintl.dll"
+make
+make windowszip
+
+As those libraries and locations are dependent on toolchain in use, trying
+to autodetect them is likely impossible. So just provide a simple way to
+package everything in one step.
+
+Also remove $(windowsdir) after ZIP was created same as other "make dist"
+targets.
+---
+ ChangeLog   | 5 +++++
+ Makefile.am | 4 ++++
+ 2 files changed, 9 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index f463e8b..749d27c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-01-21  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
++	* Makefile.am: Allow adding extra files to generated Windows ZIP
++	archive by setting GRUB_WINDOWS_EXTRA_DIST.
++
++2014-01-21  Andrey Borzenkov <arvidjaar at gmail.com>
++
+ 	* configure.ac: Look for DejaVuSans also in /usr/share/fonts/truetype.
+ 	Show detected font path in summary.
+ 
+diff --git a/Makefile.am b/Makefile.am
+index 97c062d..f02ae0a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -420,10 +420,14 @@ windowsdir: $(PROGRAMS) $(starfield_DATA) $(platform_DATA)
+ 	for x in $(starfield_DATA); do \
+ 		cp -fp $$x $(windowsdir)/themes/starfield/$$(basename $$x); \
+ 	done
++	for x in $(GRUB_WINDOWS_EXTRA_DIST); do \
++		cp -fp $$x $(windowsdir); \
++	done
+ 
+ windowszip=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows.zip
+ windowszip: windowsdir
+ 	test -f $(windowszip) && rm $(windowszip) || true
+ 	zip -r $(windowszip) $(windowsdir)
++	rm -rf $(windowsdir)
+ 
+ EXTRA_DIST += linguas.sh
+-- 
+1.8.5.3
+
diff --git a/0038-util-grub-install.c-write_to_disk-Add-an-info-messag.patch b/0038-util-grub-install.c-write_to_disk-Add-an-info-messag.patch
new file mode 100644
index 0000000..f3b7458
--- /dev/null
+++ b/0038-util-grub-install.c-write_to_disk-Add-an-info-messag.patch
@@ -0,0 +1,38 @@
+From 898e360b77d581651cdb098d920868676055decf Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson at ubuntu.com>
+Date: Thu, 23 Jan 2014 12:05:36 +0000
+Subject: [PATCH 038/112] * util/grub-install.c (write_to_disk): Add an info
+ message.
+
+---
+ ChangeLog           | 4 ++++
+ util/grub-install.c | 1 +
+ 2 files changed, 5 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index 749d27c..925e448 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-23  Colin Watson  <cjwatson at ubuntu.com>
++
++	* util/grub-install.c (write_to_disk): Add an info message.
++
+ 2014-01-21  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* Makefile.am: Allow adding extra files to generated Windows ZIP
+diff --git a/util/grub-install.c b/util/grub-install.c
+index 5903f34..787dc90 100644
+--- a/util/grub-install.c
++++ b/util/grub-install.c
+@@ -675,6 +675,7 @@ write_to_disk (grub_device_t dev, const char *fn)
+ 
+   core_img = grub_util_read_image (fn);    
+ 
++  grub_util_info ("writing `%s' to `%s'", fn, dev->disk->name);
+   err = grub_disk_write (dev->disk, 0, 0,
+ 			 core_size, core_img);
+   free (core_img);
+-- 
+1.8.5.3
+
diff --git a/0039-util-grub-install.c-List-available-targets.patch b/0039-util-grub-install.c-List-available-targets.patch
new file mode 100644
index 0000000..3ba942b
--- /dev/null
+++ b/0039-util-grub-install.c-List-available-targets.patch
@@ -0,0 +1,109 @@
+From d9a6e0c6231786a9f2e003606ee6ba16f1fb5f79 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Fri, 24 Jan 2014 18:09:25 +0100
+Subject: [PATCH 039/112] 	* util/grub-install.c: List available targets.
+
+---
+ ChangeLog                   |  4 ++++
+ include/grub/util/install.h |  2 ++
+ util/grub-install-common.c  | 30 ++++++++++++++++++++++++++++++
+ util/grub-install.c         | 10 ++++++++--
+ 4 files changed, 44 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 925e448..f37f8b1 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-24  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* util/grub-install.c: List available targets.
++
+ 2014-01-23  Colin Watson  <cjwatson at ubuntu.com>
+ 
+ 	* util/grub-install.c (write_to_disk): Add an info message.
+diff --git a/include/grub/util/install.h b/include/grub/util/install.h
+index bc987aa..aedcd29 100644
+--- a/include/grub/util/install.h
++++ b/include/grub/util/install.h
+@@ -138,6 +138,8 @@ grub_install_get_platform_cpu (enum grub_install_plat platid);
+ const char *
+ grub_install_get_platform_platform (enum grub_install_plat platid);
+ 
++char *
++grub_install_get_platforms_string (void);
+ 
+ typedef enum {
+   GRUB_COMPRESSION_AUTO,
+diff --git a/util/grub-install-common.c b/util/grub-install-common.c
+index 6ea0a8e..c8bedcb 100644
+--- a/util/grub-install-common.c
++++ b/util/grub-install-common.c
+@@ -668,6 +668,36 @@ static struct
+   }; 
+ 
+ char *
++grub_install_get_platforms_string (void)
++{
++  char **arr = xmalloc (sizeof (char *) * ARRAY_SIZE (platforms));
++  int platform_strins_len = 0;
++  char *platforms_string;
++  char *ptr;
++  unsigned i;
++  for (i = 0; i < ARRAY_SIZE (platforms); i++)
++    {
++      arr[i] = xasprintf ("%s-%s", platforms[i].cpu,
++			  platforms[i].platform);
++      platform_strins_len += strlen (arr[i]) + 2;
++    }
++  ptr = platforms_string = xmalloc (platform_strins_len);
++  qsort (arr, ARRAY_SIZE (platforms), sizeof (char *), grub_qsort_strcmp);
++  for (i = 0; i < ARRAY_SIZE (platforms); i++)
++    {
++      strcpy (ptr, arr[i]);
++      ptr += strlen (arr[i]);
++      *ptr++ = ',';
++      *ptr++ = ' ';
++      free (arr[i]);
++    }
++  ptr[-2] = 0;
++  free (arr);
++ 
++  return platforms_string;
++}
++
++char *
+ grub_install_get_platform_name (enum grub_install_plat platid)
+ {
+   return xasprintf ("%s-%s", platforms[platid].cpu,
+diff --git a/util/grub-install.c b/util/grub-install.c
+index 787dc90..2e6226a 100644
+--- a/util/grub-install.c
++++ b/util/grub-install.c
+@@ -256,7 +256,7 @@ static struct argp_option options[] = {
+    OPTION_HIDDEN, 0, 2},
+   {"target", OPTION_TARGET, N_("TARGET"),
+    /* TRANSLATORS: "TARGET" as in "target platform".  */
+-   0, N_("install GRUB for TARGET platform [default=%s]"), 2},
++   0, N_("install GRUB for TARGET platform [default=%s]; available targets: %s"), 2},
+   {"grub-setup", OPTION_SETUP, "FILE", OPTION_HIDDEN, 0, 2},
+   {"grub-mkrelpath", OPTION_MKRELPATH, "FILE", OPTION_HIDDEN, 0, 2},
+   {"grub-mkdevicemap", OPTION_MKDEVICEMAP, "FILE", OPTION_HIDDEN, 0, 2},
+@@ -340,7 +340,13 @@ help_filter (int key, const char *text, void *input __attribute__ ((unused)))
+     case OPTION_BOOT_DIRECTORY:
+       return xasprintf (text, GRUB_DIR_NAME, GRUB_BOOT_DIR_NAME "/" GRUB_DIR_NAME);
+     case OPTION_TARGET:
+-      return xasprintf (text, get_default_platform ());
++      {
++	char *plats = grub_install_get_platforms_string ();
++	char *ret;
++	ret = xasprintf (text, get_default_platform (), plats);
++	free (plats);
++	return ret;
++      }
+     case ARGP_KEY_HELP_POST_DOC:
+       return xasprintf (text, program_name, GRUB_BOOT_DIR_NAME "/" GRUB_DIR_NAME);
+     default:
+-- 
+1.8.5.3
+
diff --git a/0040-Fix-several-translatable-strings.patch b/0040-Fix-several-translatable-strings.patch
new file mode 100644
index 0000000..6de4ec5
--- /dev/null
+++ b/0040-Fix-several-translatable-strings.patch
@@ -0,0 +1,78 @@
+From a02fb69a9f830c19f5bf541a2c8e5ddd905e5904 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Fri, 24 Jan 2014 18:20:27 +0100
+Subject: [PATCH 040/112] 	Fix several translatable strings.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+	Suggested by: D. Prévot.
+---
+ ChangeLog                        | 6 ++++++
+ grub-core/commands/syslinuxcfg.c | 2 +-
+ grub-core/loader/arm64/linux.c   | 2 +-
+ util/grub-syslinux2cfg.c         | 4 ++--
+ 4 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index f37f8b1..192faac 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,11 @@
+ 2014-01-24  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	Fix several translatable strings.
++
++	Suggested by: D. Prévot.
++
++2014-01-24  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* util/grub-install.c: List available targets.
+ 
+ 2014-01-23  Colin Watson  <cjwatson at ubuntu.com>
+diff --git a/grub-core/commands/syslinuxcfg.c b/grub-core/commands/syslinuxcfg.c
+index a4bfc40..00ae113 100644
+--- a/grub-core/commands/syslinuxcfg.c
++++ b/grub-core/commands/syslinuxcfg.c
+@@ -50,7 +50,7 @@ static const struct grub_arg_option options[] =
+      N_("root directory of the syslinux disk [default=/]."),
+      N_("DIR"), ARG_TYPE_STRING},
+     {"cwd",  'c', 0,
+-     N_("current directory of the syslinux [default is parent directory of input file]."),
++     N_("current directory of syslinux [default is parent directory of input file]."),
+      N_("DIR"), ARG_TYPE_STRING},
+     {"isolinux",     'i',  0, N_("assume input is an isolinux configuration file."), 0, 0},
+     {"pxelinux",     'p',  0, N_("assume input is a pxelinux configuration file."), 0, 0},
+diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
+index 75ad871..65129c2 100644
+--- a/grub-core/loader/arm64/linux.c
++++ b/grub-core/loader/arm64/linux.c
+@@ -120,7 +120,7 @@ check_kernel (struct grub_arm64_linux_kernel_header *lh)
+ 
+   if ((lh->code0 & 0xffff) != GRUB_EFI_PE_MAGIC)
+     return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
+-		       N_("plain Image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled"));
++		       N_("plain image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled"));
+ 
+   grub_dprintf ("linux", "UEFI stub kernel:\n");
+   grub_dprintf ("linux", "text_offset = 0x%012llx\n",
+diff --git a/util/grub-syslinux2cfg.c b/util/grub-syslinux2cfg.c
+index 5e944c2..f4fda6d 100644
+--- a/util/grub-syslinux2cfg.c
++++ b/util/grub-syslinux2cfg.c
+@@ -66,10 +66,10 @@ static struct argp_option options[] = {
+    N_("root directory of the syslinux disk [default=/]."), 0},
+   {"target-cwd",  'T', N_("DIR"), 0,
+    N_(
+-      "current directory of the syslinux as it will be seen on runtime  [default is parent directory of input file]."
++      "current directory of syslinux as it will be seen on runtime  [default is parent directory of input file]."
+ ), 0},
+   {"cwd",  'c', N_("DIR"), 0,
+-   N_("current directory of the syslinux [default is parent directory of input file]."), 0},
++   N_("current directory of syslinux [default is parent directory of input file]."), 0},
+ 
+   {"output",  'o', N_("FILE"), 0, N_("write output to FILE [default=stdout]."), 0},
+   {"isolinux",     'i', 0,      0, N_("assume input is an isolinux configuration file."), 0},
+-- 
+1.8.5.3
+
diff --git a/0041-do-not-set-default-prefix-in-grub-mkimage.patch b/0041-do-not-set-default-prefix-in-grub-mkimage.patch
new file mode 100644
index 0000000..8798daa
--- /dev/null
+++ b/0041-do-not-set-default-prefix-in-grub-mkimage.patch
@@ -0,0 +1,75 @@
+From 1394cba424ec21b2d7f87b89517aeaa80125cb80 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 25 Jan 2014 19:54:51 +0400
+Subject: [PATCH 041/112] do not set default prefix in grub-mkimage
+
+Default prefix is likely wrong on Unix and completely wrong on Windows.
+Let caller set it explicitly to avoid any ambiguity.
+---
+ ChangeLog           |  4 ++++
+ util/grub-mkimage.c | 16 +++++++++++-----
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 192faac..000cfe3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-01-25  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* util/grub-mkimage.c: Make prefix argument mandatory.
++
+ 2014-01-24  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	Fix several translatable strings.
+diff --git a/util/grub-mkimage.c b/util/grub-mkimage.c
+index a2bd4c1..1e0bcf1 100644
+--- a/util/grub-mkimage.c
++++ b/util/grub-mkimage.c
+@@ -64,7 +64,7 @@ static struct argp_option options[] = {
+   {"directory",  'd', N_("DIR"), 0,
+    /* TRANSLATORS: platform here isn't identifier. It can be translated.  */
+    N_("use images and modules under DIR [default=%s/<platform>]"), 0},
+-  {"prefix",  'p', N_("DIR"), 0, N_("set prefix directory [default=%s]"), 0},
++  {"prefix",  'p', N_("DIR"), 0, N_("set prefix directory"), 0},
+   {"memdisk",  'm', N_("FILE"), 0,
+    /* TRANSLATORS: "memdisk" here isn't an identifier, it can be translated.
+     "embed" is a verb (command description).  "*/
+@@ -93,8 +93,6 @@ help_filter (int key, const char *text, void *input __attribute__ ((unused)))
+     {
+     case 'd':
+       return xasprintf (text, grub_util_get_pkglibdir ());
+-    case 'p':
+-      return xasprintf (text, DEFAULT_DIRECTORY);
+     case 'O':
+       {
+ 	char *formats = grub_install_get_image_targets_string (), *ret;
+@@ -268,6 +266,15 @@ main (int argc, char *argv[])
+       exit(1);
+     }
+ 
++  if (!arguments.prefix)
++    {
++      char *program = xstrdup(program_name);
++      printf ("%s\n", _("Prefix not specified (use the -p option)."));
++      argp_help (&argp, stderr, ARGP_HELP_STD_USAGE, program);
++      free (program);
++      exit(1);
++    }
++
+   if (arguments.output)
+     {
+       fp = grub_util_fopen (arguments.output, "wb");
+@@ -287,8 +294,7 @@ main (int argc, char *argv[])
+       strcpy (ptr, dn);
+     }
+ 
+-  grub_install_generate_image (arguments.dir,
+-			       arguments.prefix ? : DEFAULT_DIRECTORY, fp,
++  grub_install_generate_image (arguments.dir, arguments.prefix, fp,
+ 			       arguments.output, arguments.modules,
+ 			       arguments.memdisk, arguments.pubkeys,
+ 			       arguments.npubkeys, arguments.config,
+-- 
+1.8.5.3
+
diff --git a/0042-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch b/0042-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch
new file mode 100644
index 0000000..d9920b3
--- /dev/null
+++ b/0042-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch
@@ -0,0 +1,108 @@
+From 9a999c97353bddd8c3e6bfdbe7fd19d9f3d54a22 Mon Sep 17 00:00:00 2001
+From: Andrey Borzenkov <arvidjaar at gmail.com>
+Date: Sat, 25 Jan 2014 21:49:41 +0400
+Subject: [PATCH 042/112] fix Mingw W64-32 cross compile failure due to printf
+ redefinition in libintl.h
+
+In file included from util/misc.c:36:0:
+./include/grub/emu/misc.h:56:1: error: 'libintl_printf' is an unrecognized format function type [-Werror=format=]
+ char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) WARN_UNUSED_RESULT;
+ ^
+./include/grub/emu/misc.h:58:1: error: 'libintl_printf' is an unrecognized format function type [-Werror=format=]
+
+The reason is libintl.h which redefines printf as libintl_printf. The problem
+is not present in native MinGW build which avoids redefinition.  Use
+(format (__printf__) instead which is valid replacement in GCC.
+
+v2: add grub-core/lib/libgcrypt/src/g10lib.h
+v3: modify g10lib.h during import
+---
+ ChangeLog               | 9 +++++++++
+ include/grub/crypto.h   | 2 +-
+ include/grub/emu/misc.h | 8 ++++----
+ include/grub/err.h      | 2 +-
+ util/import_gcry.py     | 6 ++++++
+ 5 files changed, 21 insertions(+), 6 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 000cfe3..5707a2a 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,12 @@
++
++2014-01-25  Andrey Borzenkov <arvidjaar at gmail.com>
++
++	* include/grub/crypto.h: Replace __attribute__ ((format (printf)) with
++	__attribute__ ((format (__printf__)) to fix compilation under MinGW-w64.
++	* include/grub/emu/misc.h: ... and here.
++	* include/grub/err.h: ... and here.
++	* util/import_gcry.py: ... and here (in files g10lib.h).
++
+ 2014-01-25  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+ 	* util/grub-mkimage.c: Make prefix argument mandatory.
+diff --git a/include/grub/crypto.h b/include/grub/crypto.h
+index ec1b980..a24e89d 100644
+--- a/include/grub/crypto.h
++++ b/include/grub/crypto.h
+@@ -408,7 +408,7 @@ void _gcry_assert_failed (const char *expr, const char *file, int line,
+                           const char *func) __attribute__ ((noreturn));
+ 
+ void _gcry_burn_stack (int bytes);
+-void _gcry_log_error( const char *fmt, ... )  __attribute__ ((format (printf, 1, 2)));
++void _gcry_log_error( const char *fmt, ... )  __attribute__ ((format (__printf__, 1, 2)));
+ 
+ 
+ #ifdef GRUB_UTIL
+diff --git a/include/grub/emu/misc.h b/include/grub/emu/misc.h
+index dde48c1..a588ba2 100644
+--- a/include/grub/emu/misc.h
++++ b/include/grub/emu/misc.h
+@@ -53,11 +53,11 @@ grub_util_device_is_mapped (const char *dev);
+ void * EXPORT_FUNC(xmalloc) (grub_size_t size) WARN_UNUSED_RESULT;
+ void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) WARN_UNUSED_RESULT;
+ char * EXPORT_FUNC(xstrdup) (const char *str) WARN_UNUSED_RESULT;
+-char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) WARN_UNUSED_RESULT;
++char * EXPORT_FUNC(xasprintf) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))) WARN_UNUSED_RESULT;
+ 
+-void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
+-void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
+-void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2), noreturn));
++void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2)));
++void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2)));
++void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2), noreturn));
+ 
+ grub_uint64_t EXPORT_FUNC (grub_util_get_cpu_time_ms) (void);
+ 
+diff --git a/include/grub/err.h b/include/grub/err.h
+index 9896fcc..1590c68 100644
+--- a/include/grub/err.h
++++ b/include/grub/err.h
+@@ -91,6 +91,6 @@ int EXPORT_FUNC(grub_error_pop) (void);
+ void EXPORT_FUNC(grub_print_error) (void);
+ extern int EXPORT_VAR(grub_err_printed_errors);
+ int grub_err_printf (const char *fmt, ...)
+-     __attribute__ ((format (printf, 1, 2)));
++     __attribute__ ((format (__printf__, 1, 2)));
+ 
+ #endif /* ! GRUB_ERR_HEADER */
+diff --git a/util/import_gcry.py b/util/import_gcry.py
+index 63ebb90..2b3322d 100644
+--- a/util/import_gcry.py
++++ b/util/import_gcry.py
+@@ -534,6 +534,12 @@ for src in sorted (os.listdir (os.path.join (indir, "src"))):
+         fw.close ()
+         continue
+ 
++    if src == "g10lib.h":
++        fw.write (f.read ().replace ("(printf,f,a)", "(__printf__,f,a)"))
++        f.close ()
++        fw.close ()
++        continue
++
+     fw.write (f.read ())
+     f.close ()
+     fw.close ()
+-- 
+1.8.5.3
+
diff --git a/0043-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch b/0043-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch
new file mode 100644
index 0000000..60f7f65
--- /dev/null
+++ b/0043-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch
@@ -0,0 +1,60 @@
+From 9c84b40fa784f6c991f1ad16327843f3998134e2 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sun, 26 Jan 2014 02:36:05 +0100
+Subject: [PATCH 043/112] 	* grub-core/term/serial.c
+ (grub_serial_register): Fix invalid free. 	Ensure that pointers are
+ inited to NULL and that pointers are not 	accessed after free.
+
+---
+ ChangeLog               | 5 +++++
+ grub-core/term/serial.c | 8 ++++----
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 5707a2a..1bb6bff 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-01-26  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/term/serial.c (grub_serial_register): Fix invalid free.
++	Ensure that pointers are inited to NULL and that pointers are not
++	accessed after free.
+ 
+ 2014-01-25  Andrey Borzenkov <arvidjaar at gmail.com>
+ 
+diff --git a/grub-core/term/serial.c b/grub-core/term/serial.c
+index b581a76..c9b5574 100644
+--- a/grub-core/term/serial.c
++++ b/grub-core/term/serial.c
+@@ -338,23 +338,23 @@ grub_serial_register (struct grub_serial_port *port)
+       grub_free (indata);
+       return grub_errno;
+     }
+-  
+-  out = grub_malloc (sizeof (*out));
++
++  out = grub_zalloc (sizeof (*out));
+   if (!out)
+     {
+-      grub_free (in);
+       grub_free (indata);
+       grub_free ((char *) in->name);
++      grub_free (in);
+       return grub_errno;
+     }
+ 
+   outdata = grub_malloc (sizeof (*outdata));
+   if (!outdata)
+     {
+-      grub_free (in);
+       grub_free (indata);
+       grub_free ((char *) in->name);
+       grub_free (out);
++      grub_free (in);
+       return grub_errno;
+     }
+ 
+-- 
+1.8.5.3
+
diff --git a/0044-grub-install-support-for-partitioned-partx-loop-devi.patch b/0044-grub-install-support-for-partitioned-partx-loop-devi.patch
new file mode 100644
index 0000000..8847546
--- /dev/null
+++ b/0044-grub-install-support-for-partitioned-partx-loop-devi.patch
@@ -0,0 +1,55 @@
+From 36e229c5a97a946fa5312e8c2db8deaa9ab19c5c Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym at gentoo.org>
+Date: Sun, 26 Jan 2014 02:56:04 +0100
+Subject: [PATCH 044/112] 	grub-install: support for partitioned partx
+ loop devices.
+
+	* grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect
+	/dev/loopX as being the parent of /dev/loopXpY.
+---
+ ChangeLog                       |  7 +++++++
+ grub-core/osdep/linux/getroot.c | 13 +++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index 1bb6bff..a0fd566 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,10 @@
++2014-01-26  Mike Gilbert <floppym at gentoo.org>
++
++	grub-install: support for partitioned partx loop devices.
++
++	* grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect
++	/dev/loopX as being the parent of /dev/loopXpY.
++
+ 2014-01-26  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* grub-core/term/serial.c (grub_serial_register): Fix invalid free.
+diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
+index 772de0a..19581d3 100644
+--- a/grub-core/osdep/linux/getroot.c
++++ b/grub-core/osdep/linux/getroot.c
+@@ -883,6 +883,19 @@ grub_util_part_to_disk (const char *os_dev, struct stat *st,
+ 	  *pp = '\0';
+ 	  return path;
+ 	}
++
++      /* If this is a loop device */
++      if ((strncmp ("loop", p, 4) == 0) && p[4] >= '0' && p[4] <= '9')
++	{
++	  char *pp = p + 4;
++	  while (*pp >= '0' && *pp <= '9')
++	    pp++;
++	  if (*pp == 'p')
++	    *is_part = 1;
++	  /* /dev/loop[0-9]+p[0-9]* */
++	  *pp = '\0';
++	  return path;
++	}
+     }
+ 
+   return path;
+-- 
+1.8.5.3
+
diff --git a/0045-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch b/0045-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch
new file mode 100644
index 0000000..19bc1a3
--- /dev/null
+++ b/0045-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch
@@ -0,0 +1,110 @@
+From 47239a0fa4ac48ad86071d1bf6e1f9b0dc70b46b Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Sun, 26 Jan 2014 03:31:10 +0100
+Subject: [PATCH 045/112] 	* grub-core/term/at_keyboard.c: Tolerate
+ missing keyboard.
+
+---
+ .gitignore                   |  7 +++++++
+ ChangeLog                    | 19 ++++++++++++++++++-
+ grub-core/term/at_keyboard.c |  3 +++
+ util/grub-mkfont.c           | 14 ++++++++------
+ 4 files changed, 36 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index a0fd566..fe06210 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,20 @@
++2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* util/grub-mkfont.c: Downgrade warnings about unhandled features
++	to debug.
++
++2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/term/at_keyboard.c: Tolerate missing keyboard.
++
++2014-01-29  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
++
++	* .gitignore: add missing files and .exe variants.
++
++2014-01-26  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/term/at_keyboard.c: Tolerate missing keyboard.
++
+ 2014-01-26  Mike Gilbert <floppym at gentoo.org>
+ 
+ 	grub-install: support for partitioned partx loop devices.
+@@ -1116,7 +1133,7 @@
+ 
+ 2013-12-14  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+-	* .gitignore: Add .exe variants. Add missing files. Remove few outdated
++	* .gitignore: add .exe variants. add missing files. remove few outdated
+ 	entries.
+ 
+ 2013-12-14  Vladimir Serbinenko  <phcoder at gmail.com>
+diff --git a/grub-core/term/at_keyboard.c b/grub-core/term/at_keyboard.c
+index f5071ce..b4257e8 100644
+--- a/grub-core/term/at_keyboard.c
++++ b/grub-core/term/at_keyboard.c
+@@ -396,6 +396,9 @@ fetch_key (int *is_break)
+   if (! KEYBOARD_ISREADY (grub_inb (KEYBOARD_REG_STATUS)))
+     return -1;
+   at_key = grub_inb (KEYBOARD_REG_DATA);
++  /* May happen if no keyboard is connected. Just ignore this.  */
++  if (at_key == 0xff)
++    return -1;
+   if (at_key == 0xe0)
+     {
+       e0_received = 1;
+diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c
+index 3cb02ad..3de07ee 100644
+--- a/util/grub-mkfont.c
++++ b/util/grub-mkfont.c
+@@ -516,8 +516,8 @@ process_cursive (struct gsub_feature *feature,
+ 	}		      
+       if (grub_be_to_cpu16 (lookup->flag) & ~GSUB_RTL_CHAR)
+ 	{
+-	  printf (_("Unsupported substitution flag: 0x%x\n"),
+-		  grub_be_to_cpu16 (lookup->flag));
++	  grub_util_info ("unsupported substitution flag: 0x%x",
++			  grub_be_to_cpu16 (lookup->flag));
+ 	}
+       switch (feattag)
+ 	{
+@@ -577,7 +577,8 @@ process_cursive (struct gsub_feature *feature,
+ 	       There are 2 coverage specifications: list and range.
+ 	       This warning is thrown when another coverage specification
+ 	       is detected.  */
+-	    printf (_("Unsupported coverage specification: %d\n"), covertype);
++	    fprintf (stderr,
++		     _("Unsupported coverage specification: %d\n"), covertype);
+ 	}
+     }
+ }
+@@ -616,7 +617,8 @@ add_font (struct grub_font_info *font_info, FT_Face face, int nocut)
+ 	  grub_uint32_t feattag
+ 	    = grub_be_to_cpu32 (features->features[i].feature_tag);
+ 	  if (feature->params)
+-	    printf (_("WARNING: unsupported font feature parameters: %x\n"),
++	    fprintf (stderr,
++		     _("WARNING: unsupported font feature parameters: %x\n"),
+ 		    grub_be_to_cpu16 (feature->params));
+ 	  switch (feattag)
+ 	    {
+@@ -647,8 +649,8 @@ add_font (struct grub_font_info *font_info, FT_Face face, int nocut)
+ 		  if (!grub_isgraph (str[j]))
+ 		    str[j] = '?';
+ 		/* TRANSLATORS: It's gsub feature, not gsub font.  */
+-		printf (_("Unknown gsub font feature 0x%x (%s)\n"),
+-			feattag, str);
++		grub_util_info ("Unknown gsub font feature 0x%x (%s)",
++				feattag, str);
+ 	      }
+ 	    }
+ 	}
+-- 
+1.8.5.3
+
diff --git a/0046-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch b/0046-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch
new file mode 100644
index 0000000..5b15386
--- /dev/null
+++ b/0046-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch
@@ -0,0 +1,57 @@
+From 8ce75765ddc6b174873e7d05c15e86535c4780e8 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Wed, 29 Jan 2014 23:43:25 +0100
+Subject: [PATCH 046/112] 	* grub-core/disk/ahci.c: Do not enable I/O
+ decoding and keep 	enabling busmaster for the end.
+
+---
+ ChangeLog             |  5 +++++
+ grub-core/disk/ahci.c | 10 ++++++----
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index fe06210..db12dad 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/disk/ahci.c: Do not enable I/O decoding and keep
++	enabling busmaster for the end.
++
++2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* util/grub-mkfont.c: Downgrade warnings about unhandled features
+ 	to debug.
+ 
+diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
+index 0b13fb8..18c1327 100644
+--- a/grub-core/disk/ahci.c
++++ b/grub-core/disk/ahci.c
+@@ -194,10 +194,8 @@ grub_ahci_pciinit (grub_pci_device_t dev,
+     return 0;
+ 
+   addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
+-  grub_pci_write_word (addr, grub_pci_read_word (addr) | 
+-		    GRUB_PCI_COMMAND_IO_ENABLED
+-		    | GRUB_PCI_COMMAND_MEM_ENABLED
+-		    | GRUB_PCI_COMMAND_BUS_MASTER);
++  grub_pci_write_word (addr, grub_pci_read_word (addr)
++		    | GRUB_PCI_COMMAND_MEM_ENABLED);
+ 
+   hba = grub_pci_device_map_range (dev, bar & GRUB_PCI_ADDR_MEM_MASK,
+ 				   sizeof (hba));
+@@ -621,6 +619,10 @@ grub_ahci_pciinit (grub_pci_device_t dev,
+     if (adevs[i] && (adevs[i]->hba->ports[adevs[i]->port].sig >> 16) == 0xeb14)
+       adevs[i]->atapi = 1;
+ 
++  addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
++  grub_pci_write_word (addr, grub_pci_read_word (addr)
++		    | GRUB_PCI_COMMAND_BUS_MASTER);
++
+   for (i = 0; i < nports; i++)
+     if (adevs[i])
+       {
+-- 
+1.8.5.3
+
diff --git a/0047-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch b/0047-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch
new file mode 100644
index 0000000..afef38a
--- /dev/null
+++ b/0047-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch
@@ -0,0 +1,55 @@
+From cc6729328fa91ee4fab14686cb892ecaf7681345 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Wed, 29 Jan 2014 23:45:18 +0100
+Subject: [PATCH 047/112] 	* grub-core/disk/ahci.c: Allocate and clean
+ space for all possible 32 	slots to avoid pointing to uninited area.
+
+---
+ ChangeLog             | 5 +++++
+ grub-core/disk/ahci.c | 8 +++++++-
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index db12dad..734f762 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/disk/ahci.c: Allocate and clean space for all possible 32
++	slots to avoid pointing to uninited area.
++
++2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/disk/ahci.c: Do not enable I/O decoding and keep
+ 	enabling busmaster for the end.
+ 
+diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
+index 18c1327..d63fd09 100644
+--- a/grub-core/disk/ahci.c
++++ b/grub-core/disk/ahci.c
+@@ -358,7 +358,7 @@ grub_ahci_pciinit (grub_pci_device_t dev,
+ 	grub_dprintf ("ahci", "err: %x\n",
+ 		      adevs[i]->hba->ports[adevs[i]->port].sata_error);
+ 
+-	adevs[i]->command_list_chunk = grub_memalign_dma32 (1024, sizeof (struct grub_ahci_cmd_head));
++	adevs[i]->command_list_chunk = grub_memalign_dma32 (1024, sizeof (struct grub_ahci_cmd_head) * 32);
+ 	if (!adevs[i]->command_list_chunk)
+ 	  {
+ 	    adevs[i] = 0;
+@@ -376,6 +376,12 @@ grub_ahci_pciinit (grub_pci_device_t dev,
+ 
+ 	adevs[i]->command_list = grub_dma_get_virt (adevs[i]->command_list_chunk);
+ 	adevs[i]->command_table = grub_dma_get_virt (adevs[i]->command_table_chunk);
++
++	grub_memset ((void *) adevs[i]->command_list, 0,
++		     sizeof (struct grub_ahci_cmd_table));
++	grub_memset ((void *) adevs[i]->command_table, 0,
++		     sizeof (struct grub_ahci_cmd_head) * 32);
++
+ 	adevs[i]->command_list->command_table_base
+ 	  = grub_dma_get_phys (adevs[i]->command_table_chunk);
+ 
+-- 
+1.8.5.3
+
diff --git a/0048-grub-core-disk-ahci.c-Add-safety-cleanups.patch b/0048-grub-core-disk-ahci.c-Add-safety-cleanups.patch
new file mode 100644
index 0000000..d21a5a9
--- /dev/null
+++ b/0048-grub-core-disk-ahci.c-Add-safety-cleanups.patch
@@ -0,0 +1,62 @@
+From baf35aa3bad71e184058a348e33469db74c88ac2 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Wed, 29 Jan 2014 23:46:17 +0100
+Subject: [PATCH 048/112] 	* grub-core/disk/ahci.c: Add safety cleanups.
+
+---
+ ChangeLog             |  4 ++++
+ grub-core/disk/ahci.c | 10 ++++++++++
+ 2 files changed, 14 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index 734f762..b144c49 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,9 @@
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/disk/ahci.c: Add safety cleanups.
++
++2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/disk/ahci.c: Allocate and clean space for all possible 32
+ 	slots to avoid pointing to uninited area.
+ 
+diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
+index d63fd09..643e691 100644
+--- a/grub-core/disk/ahci.c
++++ b/grub-core/disk/ahci.c
+@@ -454,6 +454,7 @@ grub_ahci_pciinit (grub_pci_device_t dev,
+ 	adevs[i]->hba->ports[adevs[i]->port].fis_base = grub_dma_get_phys (adevs[i]->rfis);
+ 	adevs[i]->hba->ports[adevs[i]->port].command_list_base
+ 	  = grub_dma_get_phys (adevs[i]->command_list_chunk);
++	adevs[i]->hba->ports[adevs[i]->port].command_issue = 0;
+ 	adevs[i]->hba->ports[adevs[i]->port].command |= GRUB_AHCI_HBA_PORT_CMD_FRE;
+       }
+ 
+@@ -600,6 +601,9 @@ grub_ahci_pciinit (grub_pci_device_t dev,
+ 	failed_adevs[i] = adevs[i];
+ 	adevs[i] = 0;
+       }
++
++  grub_dprintf ("ahci", "cleaning up failed devs\n");
++
+   for (i = 0; i < nports; i++)
+     if (failed_adevs[i] && (fr_running & (1 << i)))
+       failed_adevs[i]->hba->ports[failed_adevs[i]->port].command &= ~GRUB_AHCI_HBA_PORT_CMD_FRE;
+@@ -855,6 +859,12 @@ grub_ahci_reset_port (struct grub_ahci_device *dev, int force)
+     {
+       struct grub_disk_ata_pass_through_parms parms2;
+       dev->hba->ports[dev->port].command &= ~GRUB_AHCI_HBA_PORT_CMD_ST;
++      dev->hba->ports[dev->port].command_issue = 0;
++      dev->command_list[0].config = 0;
++      dev->command_table[0].prdt[0].unused = 0;
++      dev->command_table[0].prdt[0].size = 0;
++      dev->command_table[0].prdt[0].data_base = 0;
++
+       endtime = grub_get_time_ms () + 1000;
+       while ((dev->hba->ports[dev->port].command & GRUB_AHCI_HBA_PORT_CMD_CR))
+ 	if (grub_get_time_ms () > endtime)
+-- 
+1.8.5.3
+
diff --git a/0049-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch b/0049-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch
new file mode 100644
index 0000000..17f33ea
--- /dev/null
+++ b/0049-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch
@@ -0,0 +1,54 @@
+From bb56ea0f455c89c582d41ef090ac9844cbf6d554 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Wed, 29 Jan 2014 23:49:51 +0100
+Subject: [PATCH 049/112] 	* grub-core/disk/ahci.c: Properly handle
+ transactions with no 	transferred data.
+
+---
+ ChangeLog             | 5 +++++
+ grub-core/disk/ahci.c | 7 +++++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index b144c49..3ca4bb4 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/disk/ahci.c: Properly handle transactions with no
++	transferred data.
++
++2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/disk/ahci.c: Add safety cleanups.
+ 
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
+index 643e691..fdd40c6 100644
+--- a/grub-core/disk/ahci.c
++++ b/grub-core/disk/ahci.c
+@@ -932,7 +932,10 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
+   if (parms->size > GRUB_AHCI_PRDT_MAX_CHUNK_LENGTH)
+     return grub_error (GRUB_ERR_BUG, "too big data buffer");
+ 
+-  bufc = grub_memalign_dma32 (1024, parms->size + (parms->size & 1));
++  if (parms->size)
++    bufc = grub_memalign_dma32 (1024, parms->size + (parms->size & 1));
++  else
++    bufc = grub_memalign_dma32 (1024, 512);
+ 
+   grub_dprintf ("ahci", "AHCI tfd = %x, CL=%p\n",
+ 		dev->hba->ports[dev->port].task_file_data,
+@@ -942,7 +945,7 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
+     = (5 << GRUB_AHCI_CONFIG_CFIS_LENGTH_SHIFT)
+     //    | GRUB_AHCI_CONFIG_CLEAR_R_OK
+     | (0 << GRUB_AHCI_CONFIG_PMP_SHIFT)
+-    | (1 << GRUB_AHCI_CONFIG_PRDT_LENGTH_SHIFT)
++    | ((parms->size ? 1 : 0) << GRUB_AHCI_CONFIG_PRDT_LENGTH_SHIFT)
+     | (parms->cmdsize ? GRUB_AHCI_CONFIG_ATAPI : 0)
+     | (parms->write ? GRUB_AHCI_CONFIG_WRITE : GRUB_AHCI_CONFIG_READ)
+     | (parms->taskfile.cmd == 8 ? (1 << 8) : 0);
+-- 
+1.8.5.3
+
diff --git a/0050-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch b/0050-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch
new file mode 100644
index 0000000..815610d
--- /dev/null
+++ b/0050-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch
@@ -0,0 +1,42 @@
+From dcff0582978093e3aa995a50120c35553e105edd Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Wed, 29 Jan 2014 23:50:49 +0100
+Subject: [PATCH 050/112] 	* grub-core/disk/ahci.c: Increase timeout.
+ Some SSDs take up to 	7 seconds to recover if last poweroff was bad.
+
+---
+ ChangeLog             | 5 +++++
+ grub-core/disk/ahci.c | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 3ca4bb4..1151ced 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/disk/ahci.c: Increase timeout. Some SSDs take up to
++	7 seconds to recover if last poweroff was bad.
++
++2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/disk/ahci.c: Properly handle transactions with no
+ 	transferred data.
+ 
+diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
+index fdd40c6..5e4a639 100644
+--- a/grub-core/disk/ahci.c
++++ b/grub-core/disk/ahci.c
+@@ -1022,7 +1022,7 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
+   grub_dprintf ("ahci", "AHCI tfd = %x\n",
+ 		dev->hba->ports[dev->port].task_file_data);
+ 
+-  endtime = grub_get_time_ms () + (spinup ? 10000 : 5000);
++  endtime = grub_get_time_ms () + (spinup ? 20000 : 20000);
+   while ((dev->hba->ports[dev->port].command_issue & 1))
+     if (grub_get_time_ms () > endtime)
+       {
+-- 
+1.8.5.3
+
diff --git a/0051-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch b/0051-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch
new file mode 100644
index 0000000..08c7494
--- /dev/null
+++ b/0051-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch
@@ -0,0 +1,42 @@
+From 54d09228116ac505407e380bd123fddf64f0fb79 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Mon, 3 Feb 2014 14:34:27 +0100
+Subject: [PATCH 051/112] 	* util/grub-mkfont.c: Build fix for argp.h
+ with older gcc.
+
+---
+ ChangeLog          | 4 ++++
+ util/grub-mkfont.c | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index 1151ced..2605dda 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,7 @@
++2014-02-03  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* util/grub-mkfont.c: Build fix for argp.h with older gcc.
++
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* grub-core/disk/ahci.c: Increase timeout. Some SSDs take up to
+diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c
+index 3de07ee..e6485b4 100644
+--- a/util/grub-mkfont.c
++++ b/util/grub-mkfont.c
+@@ -33,7 +33,11 @@
+ 
+ #ifndef GRUB_BUILD
+ #define _GNU_SOURCE	1
++#pragma GCC diagnostic ignored "-Wmissing-prototypes"
++#pragma GCC diagnostic ignored "-Wmissing-declarations"
+ #include <argp.h>
++#pragma GCC diagnostic error "-Wmissing-prototypes"
++#pragma GCC diagnostic error "-Wmissing-declarations"
+ #endif
+ #include <assert.h>
+ 
+-- 
+1.8.5.3
+
diff --git a/0052-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch b/0052-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch
new file mode 100644
index 0000000..cf675ea
--- /dev/null
+++ b/0052-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch
@@ -0,0 +1,44 @@
+From a598e74ddc4b0c4716b57ed65e804e4db8941486 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Mon, 3 Feb 2014 14:35:51 +0100
+Subject: [PATCH 052/112] 	* util/grub-mkrescue.c: Build fix for argp.h
+ with older gcc.
+
+---
+ ChangeLog            | 4 ++++
+ util/grub-mkrescue.c | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index 2605dda..8307e11 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,9 @@
+ 2014-02-03  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* util/grub-mkrescue.c: Build fix for argp.h with older gcc.
++
++2014-02-03  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* util/grub-mkfont.c: Build fix for argp.h with older gcc.
+ 
+ 2014-01-29  Vladimir Serbinenko  <phcoder at gmail.com>
+diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
+index 34e0b7a..e719839 100644
+--- a/util/grub-mkrescue.c
++++ b/util/grub-mkrescue.c
+@@ -25,7 +25,11 @@
+ #include <grub/emu/exec.h>
+ #include <grub/emu/config.h>
+ #include <grub/emu/hostdisk.h>
++#pragma GCC diagnostic ignored "-Wmissing-prototypes"
++#pragma GCC diagnostic ignored "-Wmissing-declarations"
+ #include <argp.h>
++#pragma GCC diagnostic error "-Wmissing-prototypes"
++#pragma GCC diagnostic error "-Wmissing-declarations"
+ 
+ #include <sys/types.h>
+ #include <sys/wait.h>
+-- 
+1.8.5.3
+
diff --git a/0053-add-grub_env_set_net_property-function.patch b/0053-add-grub_env_set_net_property-function.patch
new file mode 100644
index 0000000..68bc180
--- /dev/null
+++ b/0053-add-grub_env_set_net_property-function.patch
@@ -0,0 +1,199 @@
+From eefe8e5ad98edc3adedf6432969574ab3b68e090 Mon Sep 17 00:00:00 2001
+From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
+Date: Tue, 4 Feb 2014 18:41:38 -0200
+Subject: [PATCH 053/112] add grub_env_set_net_property function
+
+* grub-core/net/bootp.c: Remove set_env_limn_ro.
+* grub-core/net/net.c: Add grub_env_set_net_property.
+* include/grub/net.h: Likewise.
+---
+ ChangeLog             |  8 +++++++
+ grub-core/net/bootp.c | 63 +++++++++++++--------------------------------------
+ grub-core/net/net.c   | 38 +++++++++++++++++++++++++++++++
+ include/grub/net.h    |  4 ++++
+ 4 files changed, 66 insertions(+), 47 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 8307e11..675475c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,11 @@
++2014-02-04  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
++
++	Add grub_env_set_net_property function.
++
++	* grub-core/net/bootp.c: Remove set_env_limn_ro.
++	* grub-core/net/net.c: Add grub_env_set_net_property.
++	* include/grub/net.h: Likewise.
++
+ 2014-02-03  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* util/grub-mkrescue.c: Build fix for argp.h with older gcc.
+diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
+index c14e9de..6310ed4 100644
+--- a/grub-core/net/bootp.c
++++ b/grub-core/net/bootp.c
+@@ -25,41 +25,6 @@
+ #include <grub/net/udp.h>
+ #include <grub/datetime.h>
+ 
+-static char *
+-grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)),
+-			 const char *val __attribute__ ((unused)))
+-{
+-  return NULL;
+-}
+-
+-static void
+-set_env_limn_ro (const char *intername, const char *suffix,
+-		 const char *value, grub_size_t len)
+-{
+-  char *varname, *varvalue;
+-  char *ptr;
+-  varname = grub_xasprintf ("net_%s_%s", intername, suffix);
+-  if (!varname)
+-    return;
+-  for (ptr = varname; *ptr; ptr++)
+-    if (*ptr == ':')
+-      *ptr = '_';
+-  varvalue = grub_malloc (len + 1);
+-  if (!varvalue)
+-    {
+-      grub_free (varname);
+-      return;
+-    }
+-
+-  grub_memcpy (varvalue, value, len);
+-  varvalue[len] = 0;
+-  grub_env_set (varname, varvalue);
+-  grub_register_variable_hook (varname, 0, grub_env_write_readonly);
+-  grub_env_export (varname);
+-  grub_free (varname);
+-  grub_free (varvalue);
+-}
+-
+ static void
+ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask)
+ {
+@@ -136,20 +101,24 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask)
+ 	  }
+ 	  continue;
+ 	case GRUB_NET_BOOTP_HOSTNAME:
+-	  set_env_limn_ro (name, "hostname", (const char *) ptr, taglength);
+-	  break;
++          grub_env_set_net_property (name, "hostname", (const char *) ptr,
++                                     taglength);
++          break;
+ 
+ 	case GRUB_NET_BOOTP_DOMAIN:
+-	  set_env_limn_ro (name, "domain", (const char *) ptr, taglength);
+-	  break;
++          grub_env_set_net_property (name, "domain", (const char *) ptr,
++                                     taglength);
++          break;
+ 
+ 	case GRUB_NET_BOOTP_ROOT_PATH:
+-	  set_env_limn_ro (name, "rootpath", (const char *) ptr, taglength);
+-	  break;
++          grub_env_set_net_property (name, "rootpath", (const char *) ptr,
++                                     taglength);
++          break;
+ 
+ 	case GRUB_NET_BOOTP_EXTENSIONS_PATH:
+-	  set_env_limn_ro (name, "extensionspath", (const char *) ptr, taglength);
+-	  break;
++          grub_env_set_net_property (name, "extensionspath", (const char *) ptr,
++                                     taglength);
++          break;
+ 
+ 	  /* If you need any other options please contact GRUB
+ 	     development team.  */
+@@ -211,8 +180,8 @@ grub_net_configure_by_dhcp_ack (const char *name,
+     }
+ 
+   if (size > OFFSET_OF (boot_file, bp))
+-    set_env_limn_ro (name, "boot_file", (char *) bp->boot_file,
+-		     sizeof (bp->boot_file));
++    grub_env_set_net_property (name, "boot_file", bp->boot_file,
++                               sizeof (bp->boot_file));
+   if (is_def)
+     grub_net_default_server = 0;
+   if (is_def && !grub_net_default_server && bp->server_ip)
+@@ -243,8 +212,8 @@ grub_net_configure_by_dhcp_ack (const char *name,
+   if (size > OFFSET_OF (server_name, bp)
+       && bp->server_name[0])
+     {
+-      set_env_limn_ro (name, "dhcp_server_name", (char *) bp->server_name,
+-		       sizeof (bp->server_name));
++      grub_env_set_net_property (name, "dhcp_server_name", bp->server_name,
++                                 sizeof (bp->server_name));
+       if (is_def && !grub_net_default_server)
+ 	{
+ 	  grub_net_default_server = grub_strdup (bp->server_name);
+diff --git a/grub-core/net/net.c b/grub-core/net/net.c
+index 1521d8d..f2e723b 100644
+--- a/grub-core/net/net.c
++++ b/grub-core/net/net.c
+@@ -1480,6 +1480,44 @@ receive_packets (struct grub_net_card *card, int *stop_condition)
+   grub_print_error ();
+ }
+ 
++static char *
++grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)),
++			 const char *val __attribute__ ((unused)))
++{
++  return NULL;
++}
++
++grub_err_t
++grub_env_set_net_property (const char *intername, const char *suffix,
++                           const char *value, grub_size_t len)
++{
++  char *varname, *varvalue;
++  char *ptr;
++
++  varname = grub_xasprintf ("net_%s_%s", intername, suffix);
++  if (!varname)
++    return grub_errno;
++  for (ptr = varname; *ptr; ptr++)
++    if (*ptr == ':')
++      *ptr = '_';
++  varvalue = grub_malloc (len + 1);
++  if (!varvalue)
++    {
++      grub_free (varname);
++      return grub_errno;
++    }
++
++  grub_memcpy (varvalue, value, len);
++  varvalue[len] = 0;
++  grub_err_t ret = grub_env_set (varname, varvalue);
++  grub_register_variable_hook (varname, 0, grub_env_write_readonly);
++  grub_env_export (varname);
++  grub_free (varname);
++  grub_free (varvalue);
++
++  return ret;
++}
++
+ void
+ grub_net_poll_cards (unsigned time, int *stop_condition)
+ {
+diff --git a/include/grub/net.h b/include/grub/net.h
+index 0e0a605..538baa3 100644
+--- a/include/grub/net.h
++++ b/include/grub/net.h
+@@ -480,6 +480,10 @@ grub_net_addr_to_str (const grub_net_network_level_address_t *target,
+ void
+ grub_net_hwaddr_to_str (const grub_net_link_level_address_t *addr, char *str);
+ 
++grub_err_t
++grub_env_set_net_property (const char *intername, const char *suffix,
++                           const char *value, grub_size_t len);
++
+ void
+ grub_net_poll_cards (unsigned time, int *stop_condition);
+ 
+-- 
+1.8.5.3
+
diff --git a/0054-add-bootpath-parser-for-open-firmware.patch b/0054-add-bootpath-parser-for-open-firmware.patch
new file mode 100644
index 0000000..e79676b
--- /dev/null
+++ b/0054-add-bootpath-parser-for-open-firmware.patch
@@ -0,0 +1,211 @@
+From 91824aaef6ac5080f6c5419f33fdcc8efe329ebc Mon Sep 17 00:00:00 2001
+From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
+Date: Tue, 4 Feb 2014 19:00:55 -0200
+Subject: [PATCH 054/112] add bootpath parser for open firmware
+
+It enables net boot even when there is no bootp/dhcp server.
+
+* grub-core/net/drivers/ieee1275/ofnet.c: Add grub_ieee1275_parse_bootpath and
+call it at grub_ieee1275_net_config_real.
+* grub-core/kern/ieee1275/init.c: Add bootpath to grub_ieee1275_net_config.
+* include/grub/ieee1275/ieee1275.h: Likewise.
+---
+ ChangeLog                              |  13 ++++
+ grub-core/kern/ieee1275/init.c         |   7 +--
+ grub-core/net/drivers/ieee1275/ofnet.c | 107 ++++++++++++++++++++++++++++++++-
+ include/grub/ieee1275/ieee1275.h       |   5 +-
+ 4 files changed, 125 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 675475c..d026637 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,18 @@
+ 2014-02-04  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
+ 
++	Add bootpath parser for open firmware.
++
++	It enables net boot even when there is no bootp/dhcp server.
++
++	* grub-core/net/drivers/ieee1275/ofnet.c: Add grub_ieee1275_parse_bootpath
++	and call it at grub_ieee1275_net_config_real.
++	* grub-core/kern/ieee1275/init.c: Add bootpath to
++	grub_ieee1275_net_config.
++	* include/grub/ieee1275/ieee1275.h: Likewise.
++
++
++2014-02-04  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
++
+ 	Add grub_env_set_net_property function.
+ 
+ 	* grub-core/net/bootp.c: Remove set_env_limn_ro.
+diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
+index 89b2822..d5bd74d 100644
+--- a/grub-core/kern/ieee1275/init.c
++++ b/grub-core/kern/ieee1275/init.c
+@@ -80,9 +80,8 @@ grub_translate_ieee1275_path (char *filepath)
+     }
+ }
+ 
+-void (*grub_ieee1275_net_config) (const char *dev,
+-				  char **device,
+-				  char **path);
++void (*grub_ieee1275_net_config) (const char *dev, char **device, char **path,
++                                  char *bootpath);
+ void
+ grub_machine_get_bootlocation (char **device, char **path)
+ {
+@@ -126,7 +125,7 @@ grub_machine_get_bootlocation (char **device, char **path)
+       *ptr = 0;
+ 
+       if (grub_ieee1275_net_config)
+-	grub_ieee1275_net_config (canon, device, path);
++	grub_ieee1275_net_config (canon, device, path, bootpath);
+       grub_free (dev);
+       grub_free (canon);
+     }
+diff --git a/grub-core/net/drivers/ieee1275/ofnet.c b/grub-core/net/drivers/ieee1275/ofnet.c
+index 4483c91..eea8e71 100644
+--- a/grub-core/net/drivers/ieee1275/ofnet.c
++++ b/grub-core/net/drivers/ieee1275/ofnet.c
+@@ -127,8 +127,111 @@ bootp_response_properties[] =
+     { .name = "bootpreply-packet", .offset = 0x2a},
+   };
+ 
++enum
++{
++  BOOTARGS_SERVER_ADDR,
++  BOOTARGS_FILENAME,
++  BOOTARGS_CLIENT_ADDR,
++  BOOTARGS_GATEWAY_ADDR,
++  BOOTARGS_BOOTP_RETRIES,
++  BOOTARGS_TFTP_RETRIES,
++  BOOTARGS_SUBNET_MASK,
++  BOOTARGS_BLOCKSIZE
++};
++
++static int
++grub_ieee1275_parse_bootpath (const char *devpath, char *bootpath,
++                              char **device, struct grub_net_card **card)
++{
++  char *args;
++  char *comma_char = 0;
++  char *equal_char = 0;
++  grub_size_t field_counter = 0;
++
++  grub_net_network_level_address_t client_addr, gateway_addr, subnet_mask;
++  grub_net_link_level_address_t hw_addr;
++  grub_net_interface_flags_t flags = 0;
++  struct grub_net_network_level_interface *inter;
++
++  hw_addr.type = GRUB_NET_LINK_LEVEL_PROTOCOL_ETHERNET;
++
++  args = bootpath + grub_strlen (devpath) + 1;
++  do
++    {
++      comma_char = grub_strchr (args, ',');
++      if (comma_char != 0)
++        *comma_char = 0;
++
++      /* Check if it's an option (like speed=auto) and not a default parameter */
++      equal_char = grub_strchr (args, '=');
++      if (equal_char != 0)
++        {
++          *equal_char = 0;
++          grub_env_set_net_property ((*card)->name, args, equal_char + 1,
++                                     grub_strlen(equal_char + 1));
++          *equal_char = '=';
++        }
++      else
++        {
++          switch (field_counter++)
++            {
++            case BOOTARGS_SERVER_ADDR:
++              *device = grub_xasprintf ("tftp,%s", args);
++              if (!*device)
++                return grub_errno;
++              break;
++
++            case BOOTARGS_CLIENT_ADDR:
++              grub_net_resolve_address (args, &client_addr);
++              break;
++
++            case BOOTARGS_GATEWAY_ADDR:
++              grub_net_resolve_address (args, &gateway_addr);
++              break;
++
++            case BOOTARGS_SUBNET_MASK:
++              grub_net_resolve_address (args, &subnet_mask);
++              break;
++            }
++        }
++      args = comma_char + 1;
++      if (comma_char != 0)
++        *comma_char = ',';
++    } while (comma_char != 0);
++
++  if ((client_addr.ipv4 != 0) && (subnet_mask.ipv4 != 0))
++    {
++      grub_ieee1275_phandle_t devhandle;
++      grub_ieee1275_finddevice (devpath, &devhandle);
++      grub_ieee1275_get_property (devhandle, "mac-address",
++                                  hw_addr.mac, sizeof(hw_addr.mac), 0);
++      inter = grub_net_add_addr ((*card)->name, *card, &client_addr, &hw_addr,
++                                 flags);
++      grub_net_add_ipv4_local (inter,
++                          __builtin_ctz (~grub_le_to_cpu32 (subnet_mask.ipv4)));
++    }
++
++  if (gateway_addr.ipv4 != 0)
++    {
++      grub_net_network_level_netaddress_t target;
++      char *rname;
++
++      target.type = GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV4;
++      target.ipv4.base = 0;
++      target.ipv4.masksize = 0;
++      rname = grub_xasprintf ("%s:default", ((*card)->name));
++      if (rname)
++        grub_net_add_route_gw (rname, target, gateway_addr);
++      else
++        return grub_errno;
++    }
++
++  return 0;
++}
++
+ static void
+-grub_ieee1275_net_config_real (const char *devpath, char **device, char **path)
++grub_ieee1275_net_config_real (const char *devpath, char **device, char **path,
++                               char *bootpath)
+ {
+   struct grub_net_card *card;
+ 
+@@ -158,6 +261,8 @@ grub_ieee1275_net_config_real (const char *devpath, char **device, char **path)
+       }
+     grub_free (canon);
+ 
++    grub_ieee1275_parse_bootpath (devpath, bootpath, device, &card);
++
+     for (i = 0; i < ARRAY_SIZE (bootp_response_properties); i++)
+       if (grub_ieee1275_get_property_length (grub_ieee1275_chosen,
+ 					     bootp_response_properties[i].name,
+diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
+index dc54bea..8e42513 100644
+--- a/include/grub/ieee1275/ieee1275.h
++++ b/include/grub/ieee1275/ieee1275.h
+@@ -70,8 +70,9 @@ struct grub_ieee1275_devalias
+ };
+ 
+ extern void (*EXPORT_VAR(grub_ieee1275_net_config)) (const char *dev,
+-						     char **device,
+-						     char **path);
++                                                     char **device,
++                                                     char **path,
++                                                     char *bootargs);
+ 
+ /* Maps a device alias to a pathname.  */
+ extern grub_ieee1275_phandle_t EXPORT_VAR(grub_ieee1275_chosen);
+-- 
+1.8.5.3
+
diff --git a/0055-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch b/0055-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch
new file mode 100644
index 0000000..984e8bc
--- /dev/null
+++ b/0055-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch
@@ -0,0 +1,40 @@
+From f8cb2c7aec369b3f12d2a05289b6f65716264079 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Thu, 20 Feb 2014 10:11:43 +0100
+Subject: [PATCH 055/112] 	* grub-core/disk/ahci.c: Ignore NPORTS field
+ and rely on PI 	exclusively.
+
+---
+ ChangeLog             | 5 +++++
+ grub-core/disk/ahci.c | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index d026637..b6bcfd0 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-02-20  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/disk/ahci.c: Ignore NPORTS field and rely on PI
++	exclusively.
++
+ 2014-02-04  Paulo Flabiano Smorigo  <pfsmorigo at br.ibm.com>
+ 
+ 	Add bootpath parser for open firmware.
+diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
+index 5e4a639..89365cd 100644
+--- a/grub-core/disk/ahci.c
++++ b/grub-core/disk/ahci.c
+@@ -322,7 +322,7 @@ grub_ahci_pciinit (grub_pci_device_t dev,
+ 
+   grub_dprintf ("ahci", "GLC:%x\n", hba->global_control);
+ 
+-  nports = (hba->cap & GRUB_AHCI_HBA_CAP_NPORTS_MASK) + 1;
++  nports = (GRUB_AHCI_HBA_CAP_NPORTS_MASK) + 1;
+ 
+   grub_dprintf ("ahci", "%d AHCI ports, PI = 0x%x\n", nports,
+ 		hba->ports_implemented);
+-- 
+1.8.5.3
+
diff --git a/0056-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch b/0056-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch
new file mode 100644
index 0000000..cc02759
--- /dev/null
+++ b/0056-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch
@@ -0,0 +1,82 @@
+From 454a98fa890038be4581226c28727481a5d174d6 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Fri, 28 Feb 2014 09:47:57 +0100
+Subject: [PATCH 056/112] 	* grub-core/kern/i386/coreboot/mmap.c: Filter
+ out 0xa0000-0x100000 	region.
+
+---
+ ChangeLog                           |  5 +++++
+ grub-core/kern/i386/coreboot/mmap.c | 38 +++++++++++++++++++++++++++++++------
+ 2 files changed, 37 insertions(+), 6 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index b6bcfd0..6aa347b 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
++
++	* grub-core/kern/i386/coreboot/mmap.c: Filter out 0xa0000-0x100000
++	region.
++
+ 2014-02-20  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
+ 	* grub-core/disk/ahci.c: Ignore NPORTS field and rely on PI
+diff --git a/grub-core/kern/i386/coreboot/mmap.c b/grub-core/kern/i386/coreboot/mmap.c
+index 1197975..4d29f6b 100644
+--- a/grub-core/kern/i386/coreboot/mmap.c
++++ b/grub-core/kern/i386/coreboot/mmap.c
+@@ -44,18 +44,44 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data)
+   mem_region =
+     (mem_region_t) ((long) table_item +
+ 			       sizeof (struct grub_linuxbios_table_item));
+-  while ((long) mem_region < (long) table_item + (long) table_item->size)
++  for (; (long) mem_region < (long) table_item + (long) table_item->size;
++       mem_region++)
+     {
+-      if (ctx->hook (mem_region->addr, mem_region->size,
++      grub_uint64_t start = mem_region->addr;
++      grub_uint64_t end = mem_region->addr + mem_region->size;
++      /* Mark region 0xa0000 - 0x100000 as reserved.  */
++      if (start < 0x100000 && end >= 0xa0000
++	  && mem_region->type == GRUB_MACHINE_MEMORY_AVAILABLE)
++	{
++	  if (start < 0xa0000
++	      && ctx->hook (start, 0xa0000 - start,
++			    /* Multiboot mmaps match with the coreboot mmap
++			       definition.  Therefore, we can just pass type
++			       through.  */
++			    mem_region->type,
++			    ctx->hook_data))
++	    return 1;
++	  if (start < 0xa0000)
++	    start = 0xa0000;
++	  if (start >= end)
++	    continue;
++
++	  if (ctx->hook (start, (end > 0x100000 ? 0x100000 : end) - start,
++			 GRUB_MEMORY_RESERVED,
++			 ctx->hook_data))
++	    return 1;
++	  start = 0x100000;
++
++	  if (end <= start)
++	    continue;
++	}
++      if (ctx->hook (start, end - start,
+ 		     /* Multiboot mmaps match with the coreboot mmap
+ 		        definition.  Therefore, we can just pass type
+ 		        through.  */
+-		     (((mem_region->type <= GRUB_MACHINE_MEMORY_BADRAM) && (mem_region->type >= GRUB_MACHINE_MEMORY_AVAILABLE))
+-		      || mem_region->type == GRUB_MEMORY_COREBOOT_TABLES) ? mem_region->type : GRUB_MEMORY_RESERVED,
++		     mem_region->type,
+ 		     ctx->hook_data))
+ 	return 1;
+-
+-      mem_region++;
+     }
+ 
+   return 0;
+-- 
+1.8.5.3
+
diff --git a/0057-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch b/0057-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch
new file mode 100644
index 0000000..f4253e9
--- /dev/null
+++ b/0057-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch
@@ -0,0 +1,42 @@
+From 131dca6803c35679d8ff9bc60a96f3060f44fda9 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Fri, 28 Feb 2014 09:48:57 +0100
+Subject: [PATCH 057/112] 	* grub-core/loader/i386/multiboot_mbi.c
+ (grub_multiboot_make_mbi): Limit 	location to 640K.
+
+---
+ ChangeLog                             | 5 +++++
+ grub-core/loader/i386/multiboot_mbi.c | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 6aa347b..74485f3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Limit
++	location to 640K.
++
++2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/kern/i386/coreboot/mmap.c: Filter out 0xa0000-0x100000
+ 	region.
+ 
+diff --git a/grub-core/loader/i386/multiboot_mbi.c b/grub-core/loader/i386/multiboot_mbi.c
+index 7431aa4..f10c087 100644
+--- a/grub-core/loader/i386/multiboot_mbi.c
++++ b/grub-core/loader/i386/multiboot_mbi.c
+@@ -446,7 +446,7 @@ grub_multiboot_make_mbi (grub_uint32_t *target)
+   bufsize = grub_multiboot_get_mbi_size ();
+ 
+   err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch,
+-					  0x10000, 0x100000 - bufsize,
++					  0x10000, 0xa0000 - bufsize,
+ 					  bufsize, 4,
+ 					  GRUB_RELOCATOR_PREFERENCE_NONE, 0);
+   if (err)
+-- 
+1.8.5.3
+
diff --git a/0058-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch b/0058-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch
new file mode 100644
index 0000000..abb1a9b
--- /dev/null
+++ b/0058-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch
@@ -0,0 +1,47 @@
+From f523d8c3a8d328369672320dbd43c1bbffa119ab Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Fri, 28 Feb 2014 09:50:47 +0100
+Subject: [PATCH 058/112] 	* grub-core/mmap/i386/uppermem.c (lower_hook)
+ [COREBOOT]: Ignore low 	tables for low memory calculations.
+
+---
+ ChangeLog                      | 5 +++++
+ grub-core/mmap/i386/uppermem.c | 6 +++++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 74485f3..f827cde 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/mmap/i386/uppermem.c (lower_hook) [COREBOOT]: Ignore low
++	tables for low memory calculations.
++
++2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Limit
+ 	location to 640K.
+ 
+diff --git a/grub-core/mmap/i386/uppermem.c b/grub-core/mmap/i386/uppermem.c
+index bd8b429..a6be989 100644
+--- a/grub-core/mmap/i386/uppermem.c
++++ b/grub-core/mmap/i386/uppermem.c
+@@ -31,8 +31,12 @@ lower_hook (grub_uint64_t addr, grub_uint64_t size, grub_memory_type_t type,
+ 
+   if (type != GRUB_MEMORY_AVAILABLE)
+     return 0;
++#ifdef GRUB_MACHINE_COREBOOT
++  if (addr <= 0x1000)
++#else
+   if (addr == 0)
+-    *lower = size;
++#endif
++    *lower = size + addr;
+   return 0;
+ }
+ 
+-- 
+1.8.5.3
+
diff --git a/0059-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch b/0059-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch
new file mode 100644
index 0000000..cf22700
--- /dev/null
+++ b/0059-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch
@@ -0,0 +1,88 @@
+From 31373f6367113bff201df6d9f8fcf47119e4e961 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Fri, 28 Feb 2014 10:07:11 +0100
+Subject: [PATCH 059/112] 	* grub-core/kern/i386/pc/mmap.c: Fallback to
+ EISA memory map 	if E820 failed to return any regions.
+
+---
+ ChangeLog                     |  5 +++++
+ grub-core/kern/i386/pc/mmap.c | 40 +++++++++++++++++++++-------------------
+ 2 files changed, 26 insertions(+), 19 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index f827cde..a79fafb 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* grub-core/kern/i386/pc/mmap.c: Fallback to EISA memory map
++	if E820 failed to return any regions.
++
++2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/mmap/i386/uppermem.c (lower_hook) [COREBOOT]: Ignore low
+ 	tables for low memory calculations.
+ 
+diff --git a/grub-core/kern/i386/pc/mmap.c b/grub-core/kern/i386/pc/mmap.c
+index 8009e83..f1375f3 100644
+--- a/grub-core/kern/i386/pc/mmap.c
++++ b/grub-core/kern/i386/pc/mmap.c
+@@ -141,33 +141,35 @@ grub_get_mmap_entry (struct grub_machine_mmap_entry *entry,
+ grub_err_t
+ grub_machine_mmap_iterate (grub_memory_hook_t hook, void *hook_data)
+ {
+-  grub_uint32_t cont;
++  grub_uint32_t cont = 0;
+   struct grub_machine_mmap_entry *entry
+     = (struct grub_machine_mmap_entry *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
++  int e820_works = 0;
+ 
+-  grub_memset (entry, 0, sizeof (entry));
++  while (1)
++    {
++      grub_memset (entry, 0, sizeof (entry));
+ 
+-  /* Check if grub_get_mmap_entry works.  */
+-  cont = grub_get_mmap_entry (entry, 0);
++      cont = grub_get_mmap_entry (entry, cont);
+ 
+-  if (entry->size)
+-    do
+-      {
+-	if (hook (entry->addr, entry->len,
+-		  /* GRUB mmaps have been defined to match with the E820 definition.
+-		     Therefore, we can just pass type through.  */
+-		  entry->type, hook_data))
+-	  break;
++      if (!entry->size)
++	break;
+ 
+-	if (! cont)
+-	  break;
++      if (entry->len)
++	e820_works = 1;
++      if (entry->len
++	  && hook (entry->addr, entry->len,
++		   /* GRUB mmaps have been defined to match with
++		      the E820 definition.
++		      Therefore, we can just pass type through.  */
++		   entry->type, hook_data))
++	break;
+ 
+-	grub_memset (entry, 0, sizeof (entry));
++      if (! cont)
++	break;
++    }
+ 
+-	cont = grub_get_mmap_entry (entry, cont);
+-      }
+-    while (entry->size);
+-  else
++  if (!e820_works)
+     {
+       grub_uint32_t eisa_mmap = grub_get_eisa_mmap ();
+ 
+-- 
+1.8.5.3
+
diff --git a/0060-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch b/0060-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch
new file mode 100644
index 0000000..39178a0
--- /dev/null
+++ b/0060-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch
@@ -0,0 +1,70 @@
+From 27c4fcc66ec41707cd67ed4d7d789d437c391d07 Mon Sep 17 00:00:00 2001
+From: Vladimir Serbinenko <phcoder at gmail.com>
+Date: Fri, 28 Feb 2014 10:50:05 +0100
+Subject: [PATCH 060/112] 	* include/grub/i386/openbsd_bootarg.h: Add
+ addr and frequency fields. 	* grub-core/loader/i386/bsd.c
+ (grub_cmd_openbsd): Fill addr field.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+	Suggested by: Markus Müller.
+---
+ ChangeLog                           | 7 +++++++
+ grub-core/loader/i386/bsd.c         | 2 ++
+ include/grub/i386/openbsd_bootarg.h | 2 ++
+ 3 files changed, 11 insertions(+)
+
+diff --git a/ChangeLog b/ChangeLog
+index a79fafb..bd34ec4 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,12 @@
+ 2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
+ 
++	* include/grub/i386/openbsd_bootarg.h: Add addr and frequency fields.
++	* grub-core/loader/i386/bsd.c (grub_cmd_openbsd): Fill addr field.
++
++	Suggested by: Markus Müller.
++
++2014-02-28  Vladimir Serbinenko  <phcoder at gmail.com>
++
+ 	* grub-core/kern/i386/pc/mmap.c: Fallback to EISA memory map
+ 	if E820 failed to return any regions.
+ 
+diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c
+index ea0edfa..19985f0 100644
+--- a/grub-core/loader/i386/bsd.c
++++ b/grub-core/loader/i386/bsd.c
+@@ -1646,6 +1646,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[])
+ 
+       serial.device = (GRUB_OPENBSD_COM_MAJOR << 8) | port;
+       serial.speed = speed;
++      serial.addr = grub_ns8250_hw_get_port (port);
+ 	  
+       grub_bsd_add_meta (OPENBSD_BOOTARG_CONSOLE, &serial, sizeof (serial));
+       bootflags |= OPENBSD_RB_SERCONS;
+@@ -1656,6 +1657,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[])
+ 
+       grub_memset (&serial, 0, sizeof (serial));
+       serial.device = (GRUB_OPENBSD_VGA_MAJOR << 8);
++      serial.addr = 0xffffffff;
+       grub_bsd_add_meta (OPENBSD_BOOTARG_CONSOLE, &serial, sizeof (serial));
+       bootflags &= ~OPENBSD_RB_SERCONS;
+     }
+diff --git a/include/grub/i386/openbsd_bootarg.h b/include/grub/i386/openbsd_bootarg.h
+index 01ca486..9ebe6b4 100644
+--- a/include/grub/i386/openbsd_bootarg.h
++++ b/include/grub/i386/openbsd_bootarg.h
+@@ -75,6 +75,8 @@ struct grub_openbsd_bootarg_console
+ {
+   grub_uint32_t device;
+   grub_uint32_t speed;
++  grub_uint32_t addr;
++  grub_uint32_t frequency;
+ };
+ 
+ struct grub_openbsd_bootarg_pcibios
+-- 
+1.8.5.3
+
diff --git a/0001-Migrate-PPC-from-Yaboot-to-Grub2.patch b/0061-Migrate-PPC-from-Yaboot-to-Grub2.patch
similarity index 95%
rename from 0001-Migrate-PPC-from-Yaboot-to-Grub2.patch
rename to 0061-Migrate-PPC-from-Yaboot-to-Grub2.patch
index f01aa06..adff1f6 100644
--- a/0001-Migrate-PPC-from-Yaboot-to-Grub2.patch
+++ b/0061-Migrate-PPC-from-Yaboot-to-Grub2.patch
@@ -1,7 +1,7 @@
-From be4a014a8024153e201eb1f79069ec1584001305 Mon Sep 17 00:00:00 2001
+From ba24acd4e6ee6f96ded477a062213879e06bac19 Mon Sep 17 00:00:00 2001
 From: Mark Hamzy <hamzy at us.ibm.com>
 Date: Wed, 28 Mar 2012 14:46:41 -0500
-Subject: [PATCH 01/37] Migrate PPC from Yaboot to Grub2
+Subject: [PATCH 061/112] Migrate PPC from Yaboot to Grub2
 
 Add configuration support for serial terminal consoles.  This will set the
 maximum screen size so that text is not overwritten.
@@ -12,7 +12,7 @@ maximum screen size so that text is not overwritten.
  create mode 100644 util/grub.d/20_ppc_terminfo.in
 
 diff --git a/Makefile.util.def b/Makefile.util.def
-index 985e76c..b88ce42 100644
+index a286a89..8f40e78 100644
 --- a/Makefile.util.def
 +++ b/Makefile.util.def
 @@ -485,6 +485,13 @@ script = {
@@ -150,5 +150,5 @@ index 0000000..10d6658
 +  terminfo -g ${X}x${Y} ${TERMINAL}
 +EOF
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0002-Add-fw_path-variable-revised.patch b/0062-Add-fw_path-variable-revised.patch
similarity index 90%
rename from 0002-Add-fw_path-variable-revised.patch
rename to 0062-Add-fw_path-variable-revised.patch
index 83c6a3e..2cd53b6 100644
--- a/0002-Add-fw_path-variable-revised.patch
+++ b/0062-Add-fw_path-variable-revised.patch
@@ -1,7 +1,7 @@
-From 6759845abe79871a4241041915b56f617679e0b5 Mon Sep 17 00:00:00 2001
+From 43043c52e35c5e10917680785ffa424dded3ee2b Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Wed, 19 Sep 2012 21:22:55 -0300
-Subject: [PATCH 02/37] Add fw_path variable (revised)
+Subject: [PATCH 062/112] Add fw_path variable (revised)
 
 This patch makes grub look for its config file on efi where the app was
 found. It was originally written by Matthew Garrett, and adapted to fix the
@@ -41,10 +41,10 @@ index 9cad0c4..8ab7794 100644
      }
  
 diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index c36663f..243b9d6 100644
+index 3a926fc..6f4970f 100644
 --- a/grub-core/normal/main.c
 +++ b/grub-core/normal/main.c
-@@ -311,7 +311,30 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
+@@ -319,7 +319,30 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
        /* Guess the config filename. It is necessary to make CONFIG static,
  	 so that it won't get broken by longjmp.  */
        char *config;
@@ -77,5 +77,5 @@ index c36663f..243b9d6 100644
        prefix = grub_env_get ("prefix");
        if (prefix)
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0003-Add-support-for-linuxefi.patch b/0063-Add-support-for-linuxefi.patch
similarity index 98%
rename from 0003-Add-support-for-linuxefi.patch
rename to 0063-Add-support-for-linuxefi.patch
index 0e85a63..c144376 100644
--- a/0003-Add-support-for-linuxefi.patch
+++ b/0063-Add-support-for-linuxefi.patch
@@ -1,7 +1,7 @@
-From c17e307b40695b73fd972a6a4526424e9a591310 Mon Sep 17 00:00:00 2001
+From cfff39b9ce8df82b953b43fae15bbff32d3d0e86 Mon Sep 17 00:00:00 2001
 From: Matthew Garrett <mjg at redhat.com>
 Date: Tue, 10 Jul 2012 11:58:52 -0400
-Subject: [PATCH 03/37] Add support for linuxefi
+Subject: [PATCH 063/112] Add support for linuxefi
 
 ---
  grub-core/Makefile.core.def       |   8 +
@@ -13,7 +13,7 @@ Subject: [PATCH 03/37] Add support for linuxefi
  create mode 100644 grub-core/loader/i386/efi/linux.c
 
 diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index c916246..8c246c6 100644
+index 42443bc..ec46506 100644
 --- a/grub-core/Makefile.core.def
 +++ b/grub-core/Makefile.core.def
 @@ -1706,6 +1706,14 @@ module = {
@@ -478,5 +478,5 @@ index da0ca3b..fc36bda 100644
  
  /* Boot parameters for Linux based on 2.6.12. This is used by the setup
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0004-Use-linuxefi-and-initrdefi-where-appropriate.patch b/0064-Use-linuxefi-and-initrdefi-where-appropriate.patch
similarity index 91%
rename from 0004-Use-linuxefi-and-initrdefi-where-appropriate.patch
rename to 0064-Use-linuxefi-and-initrdefi-where-appropriate.patch
index 7b75977..b8dbd2c 100644
--- a/0004-Use-linuxefi-and-initrdefi-where-appropriate.patch
+++ b/0064-Use-linuxefi-and-initrdefi-where-appropriate.patch
@@ -1,7 +1,7 @@
-From 9309e5ea7f0c65e9c575508de59c09a0ff732fcb Mon Sep 17 00:00:00 2001
+From 8fbe65e81f9f2d1c8595174b52e9652fd9ba1f2f Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Mon, 16 Jul 2012 18:57:11 -0400
-Subject: [PATCH 04/37] Use "linuxefi" and "initrdefi" where appropriate.
+Subject: [PATCH 064/112] Use "linuxefi" and "initrdefi" where appropriate.
 
 ---
  util/grub.d/10_linux.in | 18 ++++++++++++++++--
@@ -46,5 +46,5 @@ index 00d1931..ad34cc0 100644
    sed "s/^/$submenu_indentation/" << EOF
  }
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0005-Don-t-allow-insmod-when-secure-boot-is-enabled.patch b/0065-Don-t-allow-insmod-when-secure-boot-is-enabled.patch
similarity index 95%
rename from 0005-Don-t-allow-insmod-when-secure-boot-is-enabled.patch
rename to 0065-Don-t-allow-insmod-when-secure-boot-is-enabled.patch
index 15037e6..d4970fa 100644
--- a/0005-Don-t-allow-insmod-when-secure-boot-is-enabled.patch
+++ b/0065-Don-t-allow-insmod-when-secure-boot-is-enabled.patch
@@ -1,7 +1,7 @@
-From 926684b8498a820b2e1446b697ab9c746f5302ba Mon Sep 17 00:00:00 2001
+From 5bea89dbabf74ecc9214fe007af2332badc8539a Mon Sep 17 00:00:00 2001
 From: Colin Watson <cjwatson at ubuntu.com>
 Date: Tue, 23 Oct 2012 10:40:49 -0400
-Subject: [PATCH 05/37] Don't allow insmod when secure boot is enabled.
+Subject: [PATCH 065/112] Don't allow insmod when secure boot is enabled.
 
 Hi,
 
@@ -62,7 +62,7 @@ index 6850e04..b0b0405 100644
  
    file = grub_file_open (filename);
 diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
-index b253141..aa81322 100644
+index b9eb1ab..cd839cc 100644
 --- a/grub-core/kern/efi/efi.c
 +++ b/grub-core/kern/efi/efi.c
 @@ -259,6 +259,34 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
@@ -113,5 +113,5 @@ index 9370fd5..a000c38 100644
  EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
  					     const grub_efi_device_path_t *dp2);
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0006-Pass-x-hex-hex-straight-through-unmolested.patch b/0066-Pass-x-hex-hex-straight-through-unmolested.patch
similarity index 96%
rename from 0006-Pass-x-hex-hex-straight-through-unmolested.patch
rename to 0066-Pass-x-hex-hex-straight-through-unmolested.patch
index 7877886..c9239c3 100644
--- a/0006-Pass-x-hex-hex-straight-through-unmolested.patch
+++ b/0066-Pass-x-hex-hex-straight-through-unmolested.patch
@@ -1,7 +1,7 @@
-From 0e470ac45edd8c3e6cd06d2c6bdd5cdcf389af34 Mon Sep 17 00:00:00 2001
+From 6e8b72a26bc7a42903b6c75b131981ceac59f6ef Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Mon, 1 Oct 2012 13:24:37 -0400
-Subject: [PATCH 06/37] Pass "\x[[:hex:]][[:hex:]]" straight through
+Subject: [PATCH 066/112] Pass "\x[[:hex:]][[:hex:]]" straight through
  unmolested.
 
 ---
@@ -179,5 +179,5 @@ index afd5513..8f01c1b 100644
        case '$':
  	if (escaped)
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0007-Fix-crash-on-http.patch b/0067-Fix-crash-on-http.patch
similarity index 87%
rename from 0007-Fix-crash-on-http.patch
rename to 0067-Fix-crash-on-http.patch
index ee9d23d..2ee43a6 100644
--- a/0007-Fix-crash-on-http.patch
+++ b/0067-Fix-crash-on-http.patch
@@ -1,7 +1,7 @@
-From 24dd7353a3c7691714661ddfdc1de1c0d8386d7f Mon Sep 17 00:00:00 2001
+From 811019810ebfa189f344c0b383edd2b1e1c2642e Mon Sep 17 00:00:00 2001
 From: Gustavo Luiz Duarte <gustavold at linux.vnet.ibm.com>
 Date: Tue, 25 Sep 2012 18:40:55 -0400
-Subject: [PATCH 07/37] Fix crash on http
+Subject: [PATCH 067/112] Fix crash on http
 
 Don't free file->data on receiving FIN flag since it is used all over without
 checking. http_close() will be called later to free that memory.
@@ -24,5 +24,5 @@ index 4684f8b..ef9538c 100644
    if (!data->sock)
      {
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0008-IBM-client-architecture-CAS-reboot-support.patch b/0068-IBM-client-architecture-CAS-reboot-support.patch
similarity index 94%
rename from 0008-IBM-client-architecture-CAS-reboot-support.patch
rename to 0068-IBM-client-architecture-CAS-reboot-support.patch
index f0035e5..8983032 100644
--- a/0008-IBM-client-architecture-CAS-reboot-support.patch
+++ b/0068-IBM-client-architecture-CAS-reboot-support.patch
@@ -1,7 +1,7 @@
-From 2d1f5f8f92f230c6c1e7cf84deacb1224d8cca1a Mon Sep 17 00:00:00 2001
+From 63142e7aa720617eb8bbf36d6b6eb78b78337332 Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Thu, 20 Sep 2012 18:07:39 -0300
-Subject: [PATCH 08/37] IBM client architecture (CAS) reboot support
+Subject: [PATCH 068/112] IBM client architecture (CAS) reboot support
 
 This is an implementation of IBM client architecture (CAS) reboot for GRUB.
 
@@ -95,20 +95,20 @@ index ddb7783..6db8b98 100644
 +  return 0;
 +}
 diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index 243b9d6..4ce71fc 100644
+index 6f4970f..f72844c 100644
 --- a/grub-core/normal/main.c
 +++ b/grub-core/normal/main.c
-@@ -32,6 +32,9 @@
- #include <grub/i18n.h>
+@@ -33,6 +33,9 @@
  #include <grub/charset.h>
  #include <grub/script_sh.h>
+ #include <grub/bufio.h>
 +#ifdef GRUB_MACHINE_IEEE1275
 +#include <grub/ieee1275/ieee1275.h>
 +#endif
  
  GRUB_MOD_LICENSE ("GPLv3+");
  
-@@ -267,6 +270,22 @@ grub_normal_execute (const char *config, int nested, int batch)
+@@ -275,6 +278,22 @@ grub_normal_execute (const char *config, int nested, int batch)
      {
        menu = read_config_file (config);
  
@@ -157,10 +157,10 @@ index 8f01c1b..cec9539 100644
      {
        char *line;
 diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
-index dc54bea..35618f4 100644
+index 8e42513..9f26c69 100644
 --- a/include/grub/ieee1275/ieee1275.h
 +++ b/include/grub/ieee1275/ieee1275.h
-@@ -233,6 +233,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_next) (struct grub_ieee1275_devalias *ali
+@@ -234,6 +234,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_next) (struct grub_ieee1275_devalias *ali
  void EXPORT_FUNC(grub_ieee1275_children_peer) (struct grub_ieee1275_devalias *alias);
  void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
  						struct grub_ieee1275_devalias *alias);
@@ -170,5 +170,5 @@ index dc54bea..35618f4 100644
  #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));)
  
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0009-Add-vlan-tag-support.patch b/0069-Add-vlan-tag-support.patch
similarity index 92%
rename from 0009-Add-vlan-tag-support.patch
rename to 0069-Add-vlan-tag-support.patch
index f879b7f..8a4b22a 100644
--- a/0009-Add-vlan-tag-support.patch
+++ b/0069-Add-vlan-tag-support.patch
@@ -1,7 +1,7 @@
-From f002b23fc4b892ae630d8e5cb8f0101ae7321ea5 Mon Sep 17 00:00:00 2001
+From 6ab7728e1097f9f6968627b26c61c08af1b2643c Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Tue, 30 Oct 2012 15:19:39 -0200
-Subject: [PATCH 09/37] Add vlan-tag support
+Subject: [PATCH 069/112] Add vlan-tag support
 
 This patch adds support for virtual LAN (VLAN) tagging. VLAN tagging allows
 multiple VLANs in a bridged network to share the same physical network link but
@@ -20,10 +20,10 @@ https://bugzilla.redhat.com/show_bug.cgi?id=871563
  5 files changed, 73 insertions(+), 3 deletions(-)
 
 diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
-index 89b2822..f43f6b9 100644
+index d5bd74d..8191f8c 100644
 --- a/grub-core/kern/ieee1275/init.c
 +++ b/grub-core/kern/ieee1275/init.c
-@@ -118,6 +118,7 @@ grub_machine_get_bootlocation (char **device, char **path)
+@@ -117,6 +117,7 @@ grub_machine_get_bootlocation (char **device, char **path)
        char *dev, *canon;
        char *ptr;
        dev = grub_ieee1275_get_aliasdevname (bootpath);
@@ -159,10 +159,10 @@ index c397b1b..faaca67 100644
      return err;
  
 diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
-index 35618f4..2b64a92 100644
+index 9f26c69..6a21f5d 100644
 --- a/include/grub/ieee1275/ieee1275.h
 +++ b/include/grub/ieee1275/ieee1275.h
-@@ -235,6 +235,7 @@ void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
+@@ -236,6 +236,7 @@ void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
  						struct grub_ieee1275_devalias *alias);
  int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script);
  int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text);
@@ -171,16 +171,16 @@ index 35618f4..2b64a92 100644
  #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));)
  
 diff --git a/include/grub/net.h b/include/grub/net.h
-index de6259e..c8ce8db 100644
+index 538baa3..a799e6b 100644
 --- a/include/grub/net.h
 +++ b/include/grub/net.h
-@@ -533,4 +533,6 @@ extern char *grub_net_default_server;
- #define GRUB_NET_TRIES 40
+@@ -538,4 +538,6 @@ extern char *grub_net_default_server;
  #define GRUB_NET_INTERVAL 400
+ #define GRUB_NET_INTERVAL_ADDITION 20
  
 +#define VLANTAG_IDENTIFIER 0x8100
 +
  #endif /* ! GRUB_NET_HEADER */
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0010-Add-X-option-to-printf-functions.patch b/0070-Add-X-option-to-printf-functions.patch
similarity index 91%
rename from 0010-Add-X-option-to-printf-functions.patch
rename to 0070-Add-X-option-to-printf-functions.patch
index 984f3ef..8ba5252 100644
--- a/0010-Add-X-option-to-printf-functions.patch
+++ b/0070-Add-X-option-to-printf-functions.patch
@@ -1,7 +1,7 @@
-From 5541dfb70397abc279cf4cb858eb9bf76bceadbd Mon Sep 17 00:00:00 2001
+From 2f091e824e81e17008f0ba6bf36ac659e82df371 Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Tue, 27 Nov 2012 16:58:39 -0200
-Subject: [PATCH 10/37] Add %X option to printf functions.
+Subject: [PATCH 070/112] Add %X option to printf functions.
 
 ---
  grub-core/kern/misc.c | 7 +++++--
@@ -54,5 +54,5 @@ index 54db2e1..50f7f53 100644
  	case 'd':
  	  {
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0011-DHCP-client-ID-and-UUID-options-added.patch b/0071-DHCP-client-ID-and-UUID-options-added.patch
similarity index 77%
rename from 0011-DHCP-client-ID-and-UUID-options-added.patch
rename to 0071-DHCP-client-ID-and-UUID-options-added.patch
index a001581..d921f43 100644
--- a/0011-DHCP-client-ID-and-UUID-options-added.patch
+++ b/0071-DHCP-client-ID-and-UUID-options-added.patch
@@ -1,7 +1,7 @@
-From 35135f5d14fb0f2dc86f76874973f9c5f34f4255 Mon Sep 17 00:00:00 2001
+From 018833135590fe2791e44e4f3248f6d2908d0793 Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Tue, 27 Nov 2012 17:18:53 -0200
-Subject: [PATCH 11/37] DHCP client ID and UUID options added.
+Subject: [PATCH 071/112] DHCP client ID and UUID options added.
 
 ---
  grub-core/net/bootp.c | 52 +++++++++++++++++++++++++++++++++++++++++++--------
@@ -9,12 +9,12 @@ Subject: [PATCH 11/37] DHCP client ID and UUID options added.
  2 files changed, 46 insertions(+), 8 deletions(-)
 
 diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
-index c14e9de..656bb71 100644
+index 6310ed4..420ec8a 100644
 --- a/grub-core/net/bootp.c
 +++ b/grub-core/net/bootp.c
-@@ -60,6 +60,14 @@ set_env_limn_ro (const char *intername, const char *suffix,
-   grub_free (varvalue);
- }
+@@ -25,6 +25,14 @@
+ #include <grub/net/udp.h>
+ #include <grub/datetime.h>
  
 +static char
 +hexdigit (grub_uint8_t val)
@@ -27,7 +27,7 @@ index c14e9de..656bb71 100644
  static void
  parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask)
  {
-@@ -90,6 +98,9 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask)
+@@ -55,6 +63,9 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask)
  
        taglength = *ptr++;
  
@@ -37,12 +37,12 @@ index c14e9de..656bb71 100644
        switch (tagtype)
  	{
  	case GRUB_NET_BOOTP_NETMASK:
-@@ -151,6 +162,39 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask)
- 	  set_env_limn_ro (name, "extensionspath", (const char *) ptr, taglength);
- 	  break;
+@@ -120,6 +131,39 @@ parse_dhcp_vendor (const char *name, const void *vend, int limit, int *mask)
+                                      taglength);
+           break;
  
 +        case GRUB_NET_BOOTP_CLIENT_ID:
-+	  set_env_limn_ro (name, "clientid", (char *) ptr, taglength);
++	  grub_env_set_net_property (name, "clientid", (char *) ptr, taglength);
 +          break;
 +
 +        case GRUB_NET_BOOTP_CLIENT_UUID:
@@ -70,14 +70,14 @@ index c14e9de..656bb71 100644
 +                    }
 +                }
 +
-+              set_env_limn_ro (name, "clientuuid", (char *) val, 2 * taglength + 4);
++              grub_env_set_net_property (name, "clientuuid", (char *) val, 2 * taglength + 4);
 +            }
 +          break;
 +
  	  /* If you need any other options please contact GRUB
  	     development team.  */
  	}
-@@ -319,14 +363,6 @@ grub_net_process_dhcp (struct grub_net_buff *nb,
+@@ -288,14 +332,6 @@ grub_net_process_dhcp (struct grub_net_buff *nb,
      }
  }
  
@@ -93,7 +93,7 @@ index c14e9de..656bb71 100644
  grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)),
  		  int argc, char **args)
 diff --git a/include/grub/net.h b/include/grub/net.h
-index c8ce8db..ea4978d 100644
+index a799e6b..59e5975 100644
 --- a/include/grub/net.h
 +++ b/include/grub/net.h
 @@ -433,6 +433,8 @@ enum
@@ -106,5 +106,5 @@ index c8ce8db..ea4978d 100644
    };
  
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0012-Search-for-specific-config-file-for-netboot.patch b/0072-Search-for-specific-config-file-for-netboot.patch
similarity index 92%
rename from 0012-Search-for-specific-config-file-for-netboot.patch
rename to 0072-Search-for-specific-config-file-for-netboot.patch
index acb7580..bb69943 100644
--- a/0012-Search-for-specific-config-file-for-netboot.patch
+++ b/0072-Search-for-specific-config-file-for-netboot.patch
@@ -1,7 +1,7 @@
-From 464d6b12534735a09c2e634c4cab99bc186d34ca Mon Sep 17 00:00:00 2001
+From ff234fd6fe2cdc8514c16ee786d7b66bed123371 Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Tue, 27 Nov 2012 17:22:07 -0200
-Subject: [PATCH 12/37] Search for specific config file for netboot
+Subject: [PATCH 072/112] Search for specific config file for netboot
 
 This patch implements a search for a specific configuration when the config
 file is on a remoteserver. It uses the following order:
@@ -22,10 +22,10 @@ https://bugzilla.redhat.com/show_bug.cgi?id=873406
  3 files changed, 135 insertions(+), 4 deletions(-)
 
 diff --git a/grub-core/net/net.c b/grub-core/net/net.c
-index 0e57e93..f1eefe0 100644
+index f2e723b..578e057 100644
 --- a/grub-core/net/net.c
 +++ b/grub-core/net/net.c
-@@ -1663,6 +1663,124 @@ grub_net_restore_hw (void)
+@@ -1702,6 +1702,124 @@ grub_net_restore_hw (void)
    return GRUB_ERR_NONE;
  }
  
@@ -151,18 +151,18 @@ index 0e57e93..f1eefe0 100644
  
  static grub_command_t cmd_addaddr, cmd_deladdr, cmd_addroute, cmd_delroute;
 diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index 4ce71fc..ac4ee63 100644
+index f72844c..85d2a28 100644
 --- a/grub-core/normal/main.c
 +++ b/grub-core/normal/main.c
-@@ -32,6 +32,7 @@
- #include <grub/i18n.h>
+@@ -33,6 +33,7 @@
  #include <grub/charset.h>
  #include <grub/script_sh.h>
+ #include <grub/bufio.h>
 +#include <grub/net.h>
  #ifdef GRUB_MACHINE_IEEE1275
  #include <grub/ieee1275/ieee1275.h>
  #endif
-@@ -357,10 +358,19 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
+@@ -365,10 +366,19 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
  
        prefix = grub_env_get ("prefix");
        if (prefix)
@@ -187,10 +187,10 @@ index 4ce71fc..ac4ee63 100644
  	  grub_enter_normal_mode (config);
  	  grub_free (config);
 diff --git a/include/grub/net.h b/include/grub/net.h
-index ea4978d..314a610 100644
+index 59e5975..88fc71c 100644
 --- a/include/grub/net.h
 +++ b/include/grub/net.h
-@@ -537,4 +537,7 @@ extern char *grub_net_default_server;
+@@ -542,4 +542,7 @@ extern char *grub_net_default_server;
  
  #define VLANTAG_IDENTIFIER 0x8100
  
@@ -199,5 +199,5 @@ index ea4978d..314a610 100644
 +
  #endif /* ! GRUB_NET_HEADER */
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0013-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch b/0073-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch
similarity index 97%
rename from 0013-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch
rename to 0073-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch
index 51c5027..2510adb 100644
--- a/0013-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch
+++ b/0073-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch
@@ -1,7 +1,7 @@
-From 2fc621a2a9869ee83269a0b7a41c40b04fe8258e Mon Sep 17 00:00:00 2001
+From af6d85a2f3a57b142e1f746e132a5a786d3d7a2b Mon Sep 17 00:00:00 2001
 From: Fedora Ninjas <grub2-owner at fedoraproject.org>
 Date: Tue, 22 Jan 2013 06:31:38 +0100
-Subject: [PATCH 13/37] blscfg: add blscfg module to parse Boot Loader
+Subject: [PATCH 073/112] blscfg: add blscfg module to parse Boot Loader
  Specification snippets
 
 http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec
@@ -21,7 +21,7 @@ Signed-off-by: Peter Jones <grub2-owner at fedoraproject.org>
  create mode 100644 grub-core/commands/blscfg.c
 
 diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 8c246c6..25d80ee 100644
+index ec46506..7bf1c8a 100644
 --- a/grub-core/Makefile.core.def
 +++ b/grub-core/Makefile.core.def
 @@ -747,6 +747,14 @@ module = {
@@ -247,5 +247,5 @@ index 0000000..4274aca
 +  grub_unregister_extcmd (cmd);
 +}
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0014-Move-bash-completion-script-922997.patch b/0074-Move-bash-completion-script-922997.patch
similarity index 85%
rename from 0014-Move-bash-completion-script-922997.patch
rename to 0074-Move-bash-completion-script-922997.patch
index 483a6ec..cf1cb98 100644
--- a/0014-Move-bash-completion-script-922997.patch
+++ b/0074-Move-bash-completion-script-922997.patch
@@ -1,7 +1,7 @@
-From aa984a032856f825c07fc8112f92582e0b483ebb Mon Sep 17 00:00:00 2001
+From b1a735a85211fb6485df569c68ccbff0d802f419 Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Wed, 3 Apr 2013 14:35:34 -0400
-Subject: [PATCH 14/37] Move bash completion script (#922997)
+Subject: [PATCH 074/112] Move bash completion script (#922997)
 
 Apparently these go in a new place now.
 ---
@@ -22,5 +22,5 @@ index 136287c..0bcdb06 100644
  
  $(bash_completion_script): $(bash_completion_source) $(top_builddir)/config.status
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0015-for-ppc-reset-console-display-attr-when-clear-screen.patch b/0075-for-ppc-reset-console-display-attr-when-clear-screen.patch
similarity index 84%
rename from 0015-for-ppc-reset-console-display-attr-when-clear-screen.patch
rename to 0075-for-ppc-reset-console-display-attr-when-clear-screen.patch
index d48b451..8d7c234 100644
--- a/0015-for-ppc-reset-console-display-attr-when-clear-screen.patch
+++ b/0075-for-ppc-reset-console-display-attr-when-clear-screen.patch
@@ -1,7 +1,7 @@
-From 8977267e31aa10ad15ba31b236a2d2bf08c268de Mon Sep 17 00:00:00 2001
+From 5e088d722e5429cfa240d892651a5e2b10a21ed8 Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Wed, 24 Apr 2013 10:51:48 -0300
-Subject: [PATCH 15/37] for ppc, reset console display attr when clear screen
+Subject: [PATCH 075/112] for ppc, reset console display attr when clear screen
 
 This should fix this bugzilla:
 https://bugzilla.redhat.com/show_bug.cgi?id=908519
@@ -10,7 +10,7 @@ https://bugzilla.redhat.com/show_bug.cgi?id=908519
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c
-index 3d48b19..0825ca2 100644
+index f0d3e3d..7cb7909 100644
 --- a/grub-core/term/terminfo.c
 +++ b/grub-core/term/terminfo.c
 @@ -151,7 +151,7 @@ grub_terminfo_set_current (struct grub_term_output *term,
@@ -23,5 +23,5 @@ index 3d48b19..0825ca2 100644
        data->reverse_video_off = grub_strdup ("\e[m");
        if (grub_strcmp ("ieee1275", str) == 0)
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0016-Don-t-write-messages-to-the-screen.patch b/0076-Don-t-write-messages-to-the-screen.patch
similarity index 97%
rename from 0016-Don-t-write-messages-to-the-screen.patch
rename to 0076-Don-t-write-messages-to-the-screen.patch
index 988e8ea..ebfd733 100644
--- a/0016-Don-t-write-messages-to-the-screen.patch
+++ b/0076-Don-t-write-messages-to-the-screen.patch
@@ -1,7 +1,7 @@
-From eae0ba1000eaa6bcba04cd4708ef705526eb0a10 Mon Sep 17 00:00:00 2001
+From c363af23257c228d2380b4ddcc10bcd9081ebae7 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Wed, 15 May 2013 13:30:20 -0400
-Subject: [PATCH 16/37] Don't write messages to the screen
+Subject: [PATCH 076/112] Don't write messages to the screen
 
 Writing messages to the screen before the menus or boot splash
 happens so quickly it looks like something is wrong and isn't
@@ -154,5 +154,5 @@ index ad34cc0..e762e1f 100644
  EOF
      fi
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0017-Don-t-print-GNU-GRUB-header.patch b/0077-Don-t-print-GNU-GRUB-header.patch
similarity index 67%
rename from 0017-Don-t-print-GNU-GRUB-header.patch
rename to 0077-Don-t-print-GNU-GRUB-header.patch
index 1780007..3615d58 100644
--- a/0017-Don-t-print-GNU-GRUB-header.patch
+++ b/0077-Don-t-print-GNU-GRUB-header.patch
@@ -1,7 +1,7 @@
-From 2881f5032ed87e9220298cf9c83d30d94a1806ae Mon Sep 17 00:00:00 2001
+From 13d4be835d61ce8deba306472ad26a8fe04fce79 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Wed, 15 May 2013 13:53:48 -0400
-Subject: [PATCH 17/37] Don't print GNU GRUB header
+Subject: [PATCH 077/112] Don't print GNU GRUB header
 
 No one cares.
 ---
@@ -9,10 +9,10 @@ No one cares.
  1 file changed, 2 insertions(+)
 
 diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index ac4ee63..3edb687 100644
+index 85d2a28..3777cd2 100644
 --- a/grub-core/normal/main.c
 +++ b/grub-core/normal/main.c
-@@ -204,6 +204,7 @@ grub_normal_init_page (struct grub_term_output *term,
+@@ -212,6 +212,7 @@ grub_normal_init_page (struct grub_term_output *term,
   
    grub_term_cls (term);
  
@@ -20,7 +20,7 @@ index ac4ee63..3edb687 100644
    msg_formatted = grub_xasprintf (_("GNU GRUB  version %s"), PACKAGE_VERSION);
    if (!msg_formatted)
      return;
-@@ -227,6 +228,7 @@ grub_normal_init_page (struct grub_term_output *term,
+@@ -235,6 +236,7 @@ grub_normal_init_page (struct grub_term_output *term,
    grub_putcode ('\n', term);
    grub_putcode ('\n', term);
    grub_free (unicode_msg);
@@ -29,5 +29,5 @@ index ac4ee63..3edb687 100644
  
  static void
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0018-Don-t-add-to-highlighted-row.patch b/0078-Don-t-add-to-highlighted-row.patch
similarity index 84%
rename from 0018-Don-t-add-to-highlighted-row.patch
rename to 0078-Don-t-add-to-highlighted-row.patch
index 60d9850..1242ff5 100644
--- a/0018-Don-t-add-to-highlighted-row.patch
+++ b/0078-Don-t-add-to-highlighted-row.patch
@@ -1,7 +1,7 @@
-From b3102b1ff224c355cf0433e6709c86eaeb16960f Mon Sep 17 00:00:00 2001
+From 01cd2e5801596931a09a3c4b6759915f7b04c08a Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Wed, 15 May 2013 17:49:45 -0400
-Subject: [PATCH 18/37] Don't add '*' to highlighted row
+Subject: [PATCH 078/112] Don't add '*' to highlighted row
 
 It is already highlighted.
 ---
@@ -22,5 +22,5 @@ index 2ff2941..daf92b5 100644
    grub_print_ucs4_menu (unicode_title,
  			unicode_title + len,
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0019-Don-t-add-to-highlighted-row.patch b/0079-Don-t-add-to-highlighted-row.patch
similarity index 83%
rename from 0019-Don-t-add-to-highlighted-row.patch
rename to 0079-Don-t-add-to-highlighted-row.patch
index b64716e..3221af7 100644
--- a/0019-Don-t-add-to-highlighted-row.patch
+++ b/0079-Don-t-add-to-highlighted-row.patch
@@ -1,7 +1,7 @@
-From 454c328a5e7ba487feb695a9c0dad54ca993c578 Mon Sep 17 00:00:00 2001
+From ad87f63c1936729ae09871cfed7a5900cdabe626 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Wed, 15 May 2013 17:49:45 -0400
-Subject: [PATCH 19/37] Don't add '*' to highlighted row
+Subject: [PATCH 079/112] Don't add '*' to highlighted row
 
 It is already highlighted.
 ---
@@ -22,5 +22,5 @@ index daf92b5..2f84fcc 100644
    grub_print_ucs4_menu (unicode_title,
  			unicode_title + len,
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0020-Message-string-cleanups.patch b/0080-Message-string-cleanups.patch
similarity index 96%
rename from 0020-Message-string-cleanups.patch
rename to 0080-Message-string-cleanups.patch
index 4b1914d..ab0be39 100644
--- a/0020-Message-string-cleanups.patch
+++ b/0080-Message-string-cleanups.patch
@@ -1,7 +1,7 @@
-From ad9df3ea0720e27d3883c59888aeae46361cba5d Mon Sep 17 00:00:00 2001
+From a235208d5de23499f7d6e801116fceea170ccd08 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Fri, 7 Jun 2013 11:09:04 -0400
-Subject: [PATCH 20/37] Message string cleanups
+Subject: [PATCH 080/112] Message string cleanups
 
 Make use of terminology consistent. Remove jargon.
 ---
@@ -67,5 +67,5 @@ index 2f84fcc..9d20c6b 100644
      {
        grub_print_error ();
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0021-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch b/0081-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch
similarity index 85%
rename from 0021-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch
rename to 0081-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch
index f16c759..843f12f 100644
--- a/0021-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch
+++ b/0081-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch
@@ -1,7 +1,7 @@
-From 978679e2e8f568a7a9cccc423588875697c8ea42 Mon Sep 17 00:00:00 2001
+From 8f07fb007025c69cb13fa0a9f3c74c89bd85e75a Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Fri, 7 Jun 2013 14:08:23 -0400
-Subject: [PATCH 21/37] Fix border spacing now that we aren't displaying it
+Subject: [PATCH 081/112] Fix border spacing now that we aren't displaying it
 
 ---
  grub-core/normal/menu_text.c | 6 +++---
@@ -28,5 +28,5 @@ index 9d20c6b..aa3454f 100644
    geo->timeout_lines = 2;
  
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0022-Use-the-correct-indentation-for-the-term-help-text.patch b/0082-Use-the-correct-indentation-for-the-term-help-text.patch
similarity index 77%
rename from 0022-Use-the-correct-indentation-for-the-term-help-text.patch
rename to 0082-Use-the-correct-indentation-for-the-term-help-text.patch
index 67d0d00..f417716 100644
--- a/0022-Use-the-correct-indentation-for-the-term-help-text.patch
+++ b/0082-Use-the-correct-indentation-for-the-term-help-text.patch
@@ -1,7 +1,7 @@
-From c8b5bbff3c0537f6c0703c36de3a7d48cb239db9 Mon Sep 17 00:00:00 2001
+From 1ec2c6847fcf55a2fce2f1fdef5d3f5b3e0d55d2 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Fri, 7 Jun 2013 14:08:49 -0400
-Subject: [PATCH 22/37] Use the correct indentation for the term help text
+Subject: [PATCH 082/112] Use the correct indentation for the term help text
 
 That is consistent with the menu help text
 ---
@@ -9,10 +9,10 @@ That is consistent with the menu help text
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index 3edb687..6c24a07 100644
+index 3777cd2..0da2a52 100644
 --- a/grub-core/normal/main.c
 +++ b/grub-core/normal/main.c
-@@ -418,8 +418,8 @@ grub_normal_reader_init (int nested)
+@@ -426,8 +426,8 @@ grub_normal_reader_init (int nested)
      grub_normal_init_page (term, 1);
      grub_term_setcursor (term, 1);
  
@@ -24,5 +24,5 @@ index 3edb687..6c24a07 100644
        grub_print_message_indented (msg_formatted, 0, 0, term);
      grub_putcode ('\n', term);
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0023-Indent-menu-entries.patch b/0083-Indent-menu-entries.patch
similarity index 85%
rename from 0023-Indent-menu-entries.patch
rename to 0083-Indent-menu-entries.patch
index d4ace8c..0c9cf1e 100644
--- a/0023-Indent-menu-entries.patch
+++ b/0083-Indent-menu-entries.patch
@@ -1,7 +1,7 @@
-From c40c055022f5b5984422e32d5bf588a47147121d Mon Sep 17 00:00:00 2001
+From ed8061445a585b697a74946d9b6e7d3dcd611824 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Fri, 7 Jun 2013 14:30:55 -0400
-Subject: [PATCH 23/37] Indent menu entries
+Subject: [PATCH 083/112] Indent menu entries
 
 ---
  grub-core/normal/menu_text.c | 3 ++-
@@ -22,5 +22,5 @@ index aa3454f..01b6f1c 100644
    grub_print_ucs4_menu (unicode_title,
  			unicode_title + len,
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0024-Fix-margins.patch b/0084-Fix-margins.patch
similarity index 91%
rename from 0024-Fix-margins.patch
rename to 0084-Fix-margins.patch
index 6f7f6ef..567de5c 100644
--- a/0024-Fix-margins.patch
+++ b/0084-Fix-margins.patch
@@ -1,7 +1,7 @@
-From 02153b5b456d33afff074454ac008fb4391533c4 Mon Sep 17 00:00:00 2001
+From 0bbd90ced7f33ffd5d8de3c552a2bd4c513f5024 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Fri, 7 Jun 2013 14:59:36 -0400
-Subject: [PATCH 24/37] Fix margins
+Subject: [PATCH 084/112] Fix margins
 
 ---
  grub-core/normal/menu_text.c | 8 +++-----
@@ -33,5 +33,5 @@ index 01b6f1c..ead3391 100644
      - geo->timeout_lines /* timeout */
      - 1 /* empty final line  */;
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0025-Add-support-for-UEFI-operating-systems-returned-by-o.patch b/0085-Add-support-for-UEFI-operating-systems-returned-by-o.patch
similarity index 87%
rename from 0025-Add-support-for-UEFI-operating-systems-returned-by-o.patch
rename to 0085-Add-support-for-UEFI-operating-systems-returned-by-o.patch
index c480d78..6b336f2 100644
--- a/0025-Add-support-for-UEFI-operating-systems-returned-by-o.patch
+++ b/0085-Add-support-for-UEFI-operating-systems-returned-by-o.patch
@@ -1,7 +1,7 @@
-From 306ea2bec37abaa5f35507766451061b946139ad Mon Sep 17 00:00:00 2001
+From 04f3190eefe364984e6f46cb22e1852baf6a2b52 Mon Sep 17 00:00:00 2001
 From: Matthew Garrett <matthew.garrett at nebula.com>
 Date: Wed, 12 Jun 2013 11:51:49 -0400
-Subject: [PATCH 25/37] Add support for UEFI operating systems returned by
+Subject: [PATCH 085/112] Add support for UEFI operating systems returned by
  os-prober
 
 os-prober returns UEFI operating systems in the form:
@@ -15,7 +15,7 @@ contrast to legacy OSes, where path is the device string. Handle this case.
  1 file changed, 18 insertions(+), 4 deletions(-)
 
 diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in
-index 0470e66..8650a79 100644
+index 7cf8487..390bb0e 100644
 --- a/util/grub.d/30_os-prober.in
 +++ b/util/grub.d/30_os-prober.in
 @@ -319,9 +319,23 @@ EOF
@@ -47,5 +47,5 @@ index 0470e66..8650a79 100644
    esac
  done
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0026-Disable-GRUB-video-support-for-IBM-power-machines.patch b/0086-Disable-GRUB-video-support-for-IBM-power-machines.patch
similarity index 90%
rename from 0026-Disable-GRUB-video-support-for-IBM-power-machines.patch
rename to 0086-Disable-GRUB-video-support-for-IBM-power-machines.patch
index 9167d42..b41bd7f 100644
--- a/0026-Disable-GRUB-video-support-for-IBM-power-machines.patch
+++ b/0086-Disable-GRUB-video-support-for-IBM-power-machines.patch
@@ -1,7 +1,7 @@
-From 7c23b55851824ce06ff8f32db0defe0a5409265e Mon Sep 17 00:00:00 2001
+From 177a0a8aa023838195f34802125707428042a159 Mon Sep 17 00:00:00 2001
 From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
 Date: Tue, 11 Jun 2013 15:14:05 -0300
-Subject: [PATCH 26/37] Disable GRUB video support for IBM power machines
+Subject: [PATCH 086/112] Disable GRUB video support for IBM power machines
 
 Should fix the problem in bugzilla:
 https://bugzilla.redhat.com/show_bug.cgi?id=973205
@@ -48,10 +48,10 @@ index 0b150ec..813ab38 100644
  
  GRUB_MOD_FINI(ieee1275_fb)
 diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
-index 2b64a92..29f3a1d 100644
+index 6a21f5d..663935d 100644
 --- a/include/grub/ieee1275/ieee1275.h
 +++ b/include/grub/ieee1275/ieee1275.h
-@@ -145,6 +145,8 @@ enum grub_ieee1275_flag
+@@ -146,6 +146,8 @@ enum grub_ieee1275_flag
    GRUB_IEEE1275_FLAG_BROKEN_REPEAT,
  
    GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN,
@@ -61,5 +61,5 @@ index 2b64a92..29f3a1d 100644
  
  extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag);
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0027-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch b/0087-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch
similarity index 83%
rename from 0027-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch
rename to 0087-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch
index 07f33c6..a97a324 100644
--- a/0027-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch
+++ b/0087-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch
@@ -1,7 +1,7 @@
-From 4ff77afc3062ad26fb77319876c323f2f4448cf3 Mon Sep 17 00:00:00 2001
+From 5155dc7742218bf40ec1c28430af4a8758dc101e Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Fri, 21 Jun 2013 14:44:08 -0400
-Subject: [PATCH 27/37] Use -2 instead of -1 for our right-hand margin, so
+Subject: [PATCH 087/112] Use -2 instead of -1 for our right-hand margin, so
  linewrapping works (#976643).
 
 Signed-off-by: Peter Jones <grub2-owner at fedoraproject.org>
@@ -23,5 +23,5 @@ index ead3391..bc1fc71 100644
    geo->first_entry_y = 3; /* three empty lines*/
  
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0028-Use-linux16-when-appropriate-880840.patch b/0088-Use-linux16-when-appropriate-880840.patch
similarity index 90%
rename from 0028-Use-linux16-when-appropriate-880840.patch
rename to 0088-Use-linux16-when-appropriate-880840.patch
index 6d2ffa5..9f25948 100644
--- a/0028-Use-linux16-when-appropriate-880840.patch
+++ b/0088-Use-linux16-when-appropriate-880840.patch
@@ -1,7 +1,7 @@
-From af7aee883ca2308881a49020c83aca12859dc088 Mon Sep 17 00:00:00 2001
+From 30e29a3cad6153c188d809bdf5f939bbaf5f0941 Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Mon, 28 Oct 2013 10:05:07 -0400
-Subject: [PATCH 28/37] Use linux16 when appropriate (#880840)
+Subject: [PATCH 088/112] Use linux16 when appropriate (#880840)
 
 The kernel group really would prefer that we use the 16 bit entry point
 on x86 bios machines.
@@ -48,5 +48,5 @@ index e762e1f..600bfd2 100644
      fi
    fi
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0029-Enable-pager-by-default.-985860.patch b/0089-Enable-pager-by-default.-985860.patch
similarity index 78%
rename from 0029-Enable-pager-by-default.-985860.patch
rename to 0089-Enable-pager-by-default.-985860.patch
index 3cd89e9..caeb0ad 100644
--- a/0029-Enable-pager-by-default.-985860.patch
+++ b/0089-Enable-pager-by-default.-985860.patch
@@ -1,7 +1,7 @@
-From 06eb9bcde2d8460f00dfdafbcd1aa50bb04809b2 Mon Sep 17 00:00:00 2001
+From 0fde3057b8c44516559de63a36fd0d4243988c13 Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Mon, 28 Oct 2013 10:09:27 -0400
-Subject: [PATCH 29/37] Enable pager by default. (#985860)
+Subject: [PATCH 089/112] Enable pager by default. (#985860)
 
 Signed-off-by: Peter Jones <pjones at redhat.com>
 ---
@@ -9,7 +9,7 @@ Signed-off-by: Peter Jones <pjones at redhat.com>
  1 file changed, 2 insertions(+)
 
 diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
-index 0c82f23..dc6bbbb 100644
+index ce2ec81..fefa7dd 100644
 --- a/util/grub.d/00_header.in
 +++ b/util/grub.d/00_header.in
 @@ -43,6 +43,8 @@ if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_
@@ -22,5 +22,5 @@ index 0c82f23..dc6bbbb 100644
    load_env
  fi
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0030-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch b/0090-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch
similarity index 85%
rename from 0030-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch
rename to 0090-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch
index 020f9b4..38470ed 100644
--- a/0030-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch
+++ b/0090-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch
@@ -1,7 +1,7 @@
-From 03693b39a4673347f24409fabae167b4b1386308 Mon Sep 17 00:00:00 2001
+From f6a7dbcc10c5d5268a0a72af27dc5bbcd2badec7 Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Mon, 28 Oct 2013 10:13:27 -0400
-Subject: [PATCH 30/37] F10 doesn't work on serial, so don't tell the user to
+Subject: [PATCH 090/112] F10 doesn't work on serial, so don't tell the user to
  hit it (#987443)
 
 Signed-off-by: Peter Jones <pjones at redhat.com>
@@ -23,5 +23,5 @@ index bc1fc71..6202c2a 100644
  					       STANDARD_MARGIN, STANDARD_MARGIN,
  					       term, dry_run);
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0031-Don-t-say-GNU-Linux-in-generated-menus.patch b/0091-Don-t-say-GNU-Linux-in-generated-menus.patch
similarity index 90%
rename from 0031-Don-t-say-GNU-Linux-in-generated-menus.patch
rename to 0091-Don-t-say-GNU-Linux-in-generated-menus.patch
index 6c2cdb2..3088c6d 100644
--- a/0031-Don-t-say-GNU-Linux-in-generated-menus.patch
+++ b/0091-Don-t-say-GNU-Linux-in-generated-menus.patch
@@ -1,7 +1,7 @@
-From 283624a8caaa0fb184c200eac370b184a23790c8 Mon Sep 17 00:00:00 2001
+From b2a9d95e5e1ecaf5eb2814c6f35c26f432c4c810 Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Mon, 14 Mar 2011 14:27:42 -0400
-Subject: [PATCH 31/37] Don't say "GNU/Linux" in generated menus.
+Subject: [PATCH 091/112] Don't say "GNU/Linux" in generated menus.
 
 ---
  util/grub.d/10_linux.in     | 4 ++--
@@ -41,5 +41,5 @@ index a608435..79d4e38 100644
  fi
  
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0032-Don-t-draw-a-border-around-the-menu.patch b/0092-Don-t-draw-a-border-around-the-menu.patch
similarity index 95%
rename from 0032-Don-t-draw-a-border-around-the-menu.patch
rename to 0092-Don-t-draw-a-border-around-the-menu.patch
index 52a7b61..a46661d 100644
--- a/0032-Don-t-draw-a-border-around-the-menu.patch
+++ b/0092-Don-t-draw-a-border-around-the-menu.patch
@@ -1,7 +1,7 @@
-From 869a1495667b5fcff237c38d0a21067e7dded2dc Mon Sep 17 00:00:00 2001
+From 66fe0163ad12914729e064ec92364a1f0fb6a016 Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Wed, 15 May 2013 16:47:33 -0400
-Subject: [PATCH 32/37] Don't draw a border around the menu
+Subject: [PATCH 092/112] Don't draw a border around the menu
 
 It looks cleaner without it.
 ---
@@ -70,5 +70,5 @@ index 6202c2a..beddd7f 100644
    grub_term_highlight_color = old_color_highlight;
    geo->timeout_y = geo->first_entry_y + geo->num_entries
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0033-Use-the-standard-margin-for-the-timeout-string.patch b/0093-Use-the-standard-margin-for-the-timeout-string.patch
similarity index 90%
rename from 0033-Use-the-standard-margin-for-the-timeout-string.patch
rename to 0093-Use-the-standard-margin-for-the-timeout-string.patch
index 021ec27..1f1d71b 100644
--- a/0033-Use-the-standard-margin-for-the-timeout-string.patch
+++ b/0093-Use-the-standard-margin-for-the-timeout-string.patch
@@ -1,7 +1,7 @@
-From fdb5da3e0a0a481d7ac25ca1dad141e692eb7e14 Mon Sep 17 00:00:00 2001
+From 2941e05b1a087aa449373086d3d5518bb2d5fa9a Mon Sep 17 00:00:00 2001
 From: William Jon McCann <william.jon.mccann at gmail.com>
 Date: Fri, 7 Jun 2013 10:52:32 -0400
-Subject: [PATCH 33/37] Use the standard margin for the timeout string
+Subject: [PATCH 093/112] Use the standard margin for the timeout string
 
 So that it aligns with the other messages
 ---
@@ -39,5 +39,5 @@ index beddd7f..33b208b 100644
      }
  
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0034-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch b/0094-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch
similarity index 75%
rename from 0034-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch
rename to 0094-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch
index d9261c7..1bbca86 100644
--- a/0034-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch
+++ b/0094-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch
@@ -1,7 +1,7 @@
-From 72cc0eaa566ac27b56c84021887ada3ba8c02380 Mon Sep 17 00:00:00 2001
+From 236f9489de02fc6d1c64cc428d78b55b269ec7c2 Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Fri, 10 Jan 2014 09:36:24 -0500
-Subject: [PATCH 34/37] Fix grub_script_execute_sourcecode() usage on ppc.
+Subject: [PATCH 094/112] Fix grub_script_execute_sourcecode() usage on ppc.
 
 593e430c made it not take the extra argc/argv that this code still
 passes it.
@@ -12,10 +12,10 @@ Signed-off-by: Peter Jones <pjones at redhat.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index 6c24a07..6eae828 100644
+index 0da2a52..f66c03c 100644
 --- a/grub-core/normal/main.c
 +++ b/grub-core/normal/main.c
-@@ -281,7 +281,7 @@ grub_normal_execute (const char *config, int nested, int batch)
+@@ -289,7 +289,7 @@ grub_normal_execute (const char *config, int nested, int batch)
        if (! grub_ieee1275_cas_reboot (script))
          {
            char *dummy[1] = { NULL };
@@ -25,5 +25,5 @@ index 6c24a07..6eae828 100644
          }
        grub_free (script);
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0035-Add-.eh_frame-to-list-of-relocations-stripped.patch b/0095-Add-.eh_frame-to-list-of-relocations-stripped.patch
similarity index 87%
rename from 0035-Add-.eh_frame-to-list-of-relocations-stripped.patch
rename to 0095-Add-.eh_frame-to-list-of-relocations-stripped.patch
index 541144f..dfaee69 100644
--- a/0035-Add-.eh_frame-to-list-of-relocations-stripped.patch
+++ b/0095-Add-.eh_frame-to-list-of-relocations-stripped.patch
@@ -1,7 +1,7 @@
-From b8390dd8375913be61332cde658506d5d7ae11b0 Mon Sep 17 00:00:00 2001
+From 7f1cf8a3e6ba5c6eb64f8c3ef5a3b2274c53b5b5 Mon Sep 17 00:00:00 2001
 From: Fedora Ninjas <grub2-owner at fedoraproject.org>
 Date: Mon, 13 Jan 2014 21:50:59 -0500
-Subject: [PATCH 35/37] Add .eh_frame to list of relocations stripped
+Subject: [PATCH 095/112] Add .eh_frame to list of relocations stripped
 
 ---
  conf/Makefile.common | 2 +-
@@ -21,5 +21,5 @@ index e4c301f..6f836d8 100644
  CFLAGS_MODULE = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding
  LDFLAGS_MODULE = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r,-d
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0037-Make-10_linux-work-with-our-changes-for-linux16-and-.patch b/0096-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
similarity index 93%
rename from 0037-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
rename to 0096-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
index 662c615..d5f0844 100644
--- a/0037-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
+++ b/0096-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
@@ -1,7 +1,7 @@
-From fd50e126118bbe1f09f1d7aa576240a61fefc479 Mon Sep 17 00:00:00 2001
+From 86833e4fabbbf0eacef7501ec1520d5086ab2b9c Mon Sep 17 00:00:00 2001
 From: Peter Jones <pjones at redhat.com>
 Date: Tue, 14 Jan 2014 13:12:23 -0500
-Subject: [PATCH 37/37] Make 10_linux work with our changes for linux16 and
+Subject: [PATCH 096/112] Make 10_linux work with our changes for linux16 and
  linuxefi on aarch64
 
 Signed-off-by: Peter Jones <pjones at redhat.com>
@@ -81,5 +81,5 @@ index c943a1e..2b8c561 100644
    for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
      if test -e "${i}" ; then
 -- 
-1.8.4.2
+1.8.5.3
 
diff --git a/0097-Don-t-print-during-fdt-loading-method.patch b/0097-Don-t-print-during-fdt-loading-method.patch
new file mode 100644
index 0000000..6053760
--- /dev/null
+++ b/0097-Don-t-print-during-fdt-loading-method.patch
@@ -0,0 +1,27 @@
+From 74b685c11c5be60033cb3e9fb65760e2ab0aa087 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Tue, 14 Jan 2014 16:15:46 -0500
+Subject: [PATCH 097/112] Don't print during fdt loading method.
+
+Signed-off-by: Peter Jones <pjones at redhat.com>
+---
+ util/grub.d/10_linux.in | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index 2b8c561..acf2e0e 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -162,9 +162,7 @@ EOF
+     fi
+   fi
+   if test -n "${fdt}" ; then
+-    message="$(gettext_printf "Loading fdt ...")"
+     sed "s/^/$submenu_indentation/" << EOF
+-	echo	'$(echo "$message" | grub_quote)'
+ 	devicetree	${rel_dirname}/${fdt}
+ EOF
+   fi
+-- 
+1.8.5.3
+
diff --git a/0098-Honor-a-symlink-when-generating-configuration-by-gru.patch b/0098-Honor-a-symlink-when-generating-configuration-by-gru.patch
new file mode 100644
index 0000000..d84bea4
--- /dev/null
+++ b/0098-Honor-a-symlink-when-generating-configuration-by-gru.patch
@@ -0,0 +1,29 @@
+From 6ff2c5cd3d4b323d9ce9e306eb2ff23123bc49e7 Mon Sep 17 00:00:00 2001
+From: Marcel Kolaja <mkolaja at redhat.com>
+Date: Tue, 21 Jan 2014 10:57:08 -0500
+Subject: [PATCH 098/112] Honor a symlink when generating configuration by
+ grub2-mkconfig
+
+Honor a symlink when generating configuration by grub2-mkconfig, so that
+the -o option follows it rather than overwriting it with a regular file.
+---
+ util/grub-mkconfig.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
+index ca040dd..b00f9e6 100644
+--- a/util/grub-mkconfig.in
++++ b/util/grub-mkconfig.in
+@@ -272,7 +272,8 @@ and /etc/grub.d/* files or please file a bug report with
+     echo >&2
+   else
+     # none of the children aborted with error, install the new grub.cfg
+-    mv -f ${grub_cfg}.new ${grub_cfg}
++    cat ${grub_cfg}.new > ${grub_cfg}
++    rm -f ${grub_cfg}.new
+   fi
+ fi
+ 
+-- 
+1.8.5.3
+
diff --git a/0099-Don-t-require-a-password-to-boot-entries-generated-b.patch b/0099-Don-t-require-a-password-to-boot-entries-generated-b.patch
new file mode 100644
index 0000000..3de6add
--- /dev/null
+++ b/0099-Don-t-require-a-password-to-boot-entries-generated-b.patch
@@ -0,0 +1,31 @@
+From 620f2b6d613c1a1c176a24d338ebb112e9db0c1d Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Tue, 11 Feb 2014 11:14:50 -0500
+Subject: [PATCH 099/112] Don't require a password to boot entries generated by
+ grub-mkconfig.
+
+When we set a password, we just want that to mean you can't /edit/ an entry.
+
+Resolves: rhbz#1030176
+
+Signed-off-by: Peter Jones <pjones at redhat.com>
+---
+ util/grub.d/10_linux.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index acf2e0e..136abd7 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -26,7 +26,7 @@ datarootdir="@datarootdir@"
+ export TEXTDOMAIN=@PACKAGE@
+ export TEXTDOMAINDIR="@localedir@"
+ 
+-CLASS="--class gnu-linux --class gnu --class os"
++CLASS="--class gnu-linux --class gnu --class os --unrestricted"
+ 
+ if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+   OS="$(sed 's, release .*$,,g' /etc/system-release)"
+-- 
+1.8.5.3
+
diff --git a/0100-Don-t-emit-Booting-.-message.patch b/0100-Don-t-emit-Booting-.-message.patch
new file mode 100644
index 0000000..c85e665
--- /dev/null
+++ b/0100-Don-t-emit-Booting-.-message.patch
@@ -0,0 +1,48 @@
+From ff7ae4d9410e282ecb10e4fb7cb34c274543406c Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Tue, 18 Feb 2014 09:37:49 -0500
+Subject: [PATCH 100/112] Don't emit "Booting ..." message.
+
+UI team still hates this stuff, so we're disabling it for RHEL 7.
+
+Resolves: rhbz#1023142
+
+Signed-off-by: Peter Jones <pjones at redhat.com>
+---
+ grub-core/normal/menu.c       | 2 ++
+ grub-core/normal/menu_entry.c | 3 ---
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/grub-core/normal/menu.c b/grub-core/normal/menu.c
+index b47991a..cc27c37 100644
+--- a/grub-core/normal/menu.c
++++ b/grub-core/normal/menu.c
+@@ -810,9 +810,11 @@ static void
+ notify_booting (grub_menu_entry_t entry,
+ 		void *userdata __attribute__((unused)))
+ {
++#if 0
+   grub_printf ("  ");
+   grub_printf_ (N_("Booting `%s'"), entry->title);
+   grub_printf ("\n\n");
++#endif
+ }
+ 
+ /* Callback invoked when a default menu entry executed because of a timeout
+diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
+index b485df8..62e5db1 100644
+--- a/grub-core/normal/menu_entry.c
++++ b/grub-core/normal/menu_entry.c
+@@ -1156,9 +1156,6 @@ run (struct screen *screen)
+   char *dummy[1] = { NULL };
+ 
+   grub_cls ();
+-  grub_printf ("  ");
+-  grub_printf_ (N_("Booting a command list"));
+-  grub_printf ("\n\n");
+ 
+   errs_before = grub_err_printed_errors;
+ 
+-- 
+1.8.5.3
+
diff --git a/0101-Make-CTRL-and-ALT-keys-work-as-expected-on-EFI-syste.patch b/0101-Make-CTRL-and-ALT-keys-work-as-expected-on-EFI-syste.patch
new file mode 100644
index 0000000..a7134f4
--- /dev/null
+++ b/0101-Make-CTRL-and-ALT-keys-work-as-expected-on-EFI-syste.patch
@@ -0,0 +1,304 @@
+From 0f4b22f0c161076af596bf0d368e28e8b117cfab Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Mon, 3 Feb 2014 15:21:46 -0500
+Subject: [PATCH 101/112] Make CTRL and ALT keys work as expected on EFI
+ systems (version 5).
+
+This is version 4.
+
+Changes from version 1:
+- handles SHIFT as a modifier
+- handles F11 and F12 keys
+- uses the handle provided by the system table to find our _EX protocol.
+
+Changes from version 2:
+- eliminate duplicate keycode translation.
+
+Changes from version 3:
+- Do not add the shift modifier for any ascii character between space
+  (0x20) and DEL (0x7f); the combination of the modifier and many of the
+  keys causes it not to be recognized at all.  Specifically, if we
+  include the modifier on any querty punctuation character, i.e.
+  anything the string "~!@#$%^&*()_+{}|:\"<>?" represents in C, it stops
+  being recognized whatsoever.
+
+Changes from version 4:
+- Always initialize term->data from locate protocol (i.e. make it
+  unconditional.)
+
+Signed-off-by: Peter Jones <pjones at redhat.com>
+---
+ grub-core/term/efi/console.c | 118 +++++++++++++++++++++++++++++++++++--------
+ include/grub/efi/api.h       |  65 +++++++++++++++++++++++-
+ 2 files changed, 161 insertions(+), 22 deletions(-)
+
+diff --git a/grub-core/term/efi/console.c b/grub-core/term/efi/console.c
+index a37eb84..677eab5 100644
+--- a/grub-core/term/efi/console.c
++++ b/grub-core/term/efi/console.c
+@@ -104,26 +104,12 @@ const unsigned efi_codes[] =
+     GRUB_TERM_KEY_DC, GRUB_TERM_KEY_PPAGE, GRUB_TERM_KEY_NPAGE, GRUB_TERM_KEY_F1,
+     GRUB_TERM_KEY_F2, GRUB_TERM_KEY_F3, GRUB_TERM_KEY_F4, GRUB_TERM_KEY_F5,
+     GRUB_TERM_KEY_F6, GRUB_TERM_KEY_F7, GRUB_TERM_KEY_F8, GRUB_TERM_KEY_F9,
+-    GRUB_TERM_KEY_F10, 0, 0, '\e'
++    GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F10, GRUB_TERM_KEY_F11, '\e'
+   };
+ 
+-
+ static int
+-grub_console_getkey (struct grub_term_input *term __attribute__ ((unused)))
++grub_efi_translate_key (grub_efi_input_key_t key)
+ {
+-  grub_efi_simple_input_interface_t *i;
+-  grub_efi_input_key_t key;
+-  grub_efi_status_t status;
+-
+-  if (grub_efi_is_finished)
+-    return 0;
+-
+-  i = grub_efi_system_table->con_in;
+-  status = efi_call_2 (i->read_key_stroke, i, &key);
+-
+-  if (status != GRUB_EFI_SUCCESS)
+-    return GRUB_TERM_NO_KEY;
+-
+   if (key.scan_code == 0)
+     {
+       /* Some firmware implementations use VT100-style codes against the spec.
+@@ -139,9 +125,98 @@ grub_console_getkey (struct grub_term_input *term __attribute__ ((unused)))
+   else if (key.scan_code < ARRAY_SIZE (efi_codes))
+     return efi_codes[key.scan_code];
+ 
++  if (key.unicode_char >= 0x20 && key.unicode_char <= 0x7f)
++    return key.unicode_char;
++
+   return GRUB_TERM_NO_KEY;
+ }
+ 
++static int
++grub_console_getkey_con (struct grub_term_input *term __attribute__ ((unused)))
++{
++  grub_efi_simple_input_interface_t *i;
++  grub_efi_input_key_t key;
++  grub_efi_status_t status;
++
++  i = grub_efi_system_table->con_in;
++  status = efi_call_2 (i->read_key_stroke, i, &key);
++
++  if (status != GRUB_EFI_SUCCESS)
++    return GRUB_TERM_NO_KEY;
++
++  return grub_efi_translate_key(key);
++}
++
++static int
++grub_console_getkey_ex(struct grub_term_input *term)
++{
++  grub_efi_key_data_t key_data;
++  grub_efi_status_t status;
++  grub_efi_uint32_t kss;
++  int key = -1;
++
++  grub_efi_simple_text_input_ex_interface_t *text_input = term->data;
++
++  status = efi_call_2 (text_input->read_key_stroke, text_input, &key_data);
++
++  if (status != GRUB_EFI_SUCCESS)
++    return GRUB_TERM_NO_KEY;
++
++  kss = key_data.key_state.key_shift_state;
++  key = grub_efi_translate_key(key_data.key);
++
++  if (key == GRUB_TERM_NO_KEY)
++    return GRUB_TERM_NO_KEY;
++
++  if (kss & GRUB_EFI_SHIFT_STATE_VALID)
++    {
++      if ((kss & GRUB_EFI_LEFT_SHIFT_PRESSED
++	   || kss & GRUB_EFI_RIGHT_SHIFT_PRESSED)
++	  && !(key >= 0x20 && key <= 0x7f))
++	key |= GRUB_TERM_SHIFT;
++      if (kss & GRUB_EFI_LEFT_ALT_PRESSED || kss & GRUB_EFI_RIGHT_ALT_PRESSED)
++	key |= GRUB_TERM_ALT;
++      if (kss & GRUB_EFI_LEFT_CONTROL_PRESSED
++	  || kss & GRUB_EFI_RIGHT_CONTROL_PRESSED)
++	key |= GRUB_TERM_CTRL;
++    }
++
++  return key;
++}
++
++static grub_err_t
++grub_efi_console_input_init (struct grub_term_input *term)
++{
++  grub_efi_guid_t text_input_ex_guid =
++    GRUB_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID;
++
++  if (grub_efi_is_finished)
++    return 0;
++
++  grub_efi_simple_text_input_ex_interface_t *text_input = term->data;
++  if (text_input)
++    return 0;
++
++  text_input = grub_efi_open_protocol(grub_efi_system_table->console_in_handler,
++				      &text_input_ex_guid,
++				      GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
++  term->data = (void *)text_input;
++
++  return 0;
++}
++
++static int
++grub_console_getkey (struct grub_term_input *term)
++{
++  if (grub_efi_is_finished)
++    return 0;
++
++  if (term->data)
++    return grub_console_getkey_ex(term);
++  else
++    return grub_console_getkey_con(term);
++}
++
+ static struct grub_term_coordinate
+ grub_console_getwh (struct grub_term_output *term __attribute__ ((unused)))
+ {
+@@ -243,7 +318,7 @@ grub_console_setcursor (struct grub_term_output *term __attribute__ ((unused)),
+ }
+ 
+ static grub_err_t
+-grub_efi_console_init (struct grub_term_output *term)
++grub_efi_console_output_init (struct grub_term_output *term)
+ {
+   grub_efi_set_text_mode (1);
+   grub_console_setcursor (term, 1);
+@@ -251,7 +326,7 @@ grub_efi_console_init (struct grub_term_output *term)
+ }
+ 
+ static grub_err_t
+-grub_efi_console_fini (struct grub_term_output *term)
++grub_efi_console_output_fini (struct grub_term_output *term)
+ {
+   grub_console_setcursor (term, 0);
+   grub_efi_set_text_mode (0);
+@@ -262,13 +337,14 @@ static struct grub_term_input grub_console_term_input =
+   {
+     .name = "console",
+     .getkey = grub_console_getkey,
++    .init = grub_efi_console_input_init,
+   };
+ 
+ static struct grub_term_output grub_console_term_output =
+   {
+     .name = "console",
+-    .init = grub_efi_console_init,
+-    .fini = grub_efi_console_fini,
++    .init = grub_efi_console_output_init,
++    .fini = grub_efi_console_output_fini,
+     .putchar = grub_console_putchar,
+     .getwh = grub_console_getwh,
+     .getxy = grub_console_getxy,
+@@ -291,8 +367,8 @@ grub_console_init (void)
+       return;
+     }
+ 
+-  grub_term_register_input ("console", &grub_console_term_input);
+   grub_term_register_output ("console", &grub_console_term_output);
++  grub_term_register_input ("console", &grub_console_term_input);
+ }
+ 
+ void
+diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
+index e5dd543..1423403 100644
+--- a/include/grub/efi/api.h
++++ b/include/grub/efi/api.h
+@@ -111,7 +111,7 @@
+     { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
+   }
+ 
+-#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
++#define GRUB_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
+   { 0xdd9e7534, 0x7762, 0x4698, \
+     { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } \
+   }
+@@ -952,6 +952,32 @@ struct grub_efi_input_key
+ };
+ typedef struct grub_efi_input_key grub_efi_input_key_t;
+ 
++typedef grub_efi_uint8_t grub_efi_key_toggle_state_t;
++struct grub_efi_key_state
++{
++	grub_efi_uint32_t key_shift_state;
++	grub_efi_key_toggle_state_t key_toggle_state;
++};
++typedef struct grub_efi_key_state grub_efi_key_state_t;
++
++#define GRUB_EFI_SHIFT_STATE_VALID     0x80000000
++#define GRUB_EFI_RIGHT_SHIFT_PRESSED   0x00000001
++#define GRUB_EFI_LEFT_SHIFT_PRESSED    0x00000002
++#define GRUB_EFI_RIGHT_CONTROL_PRESSED 0x00000004
++#define GRUB_EFI_LEFT_CONTROL_PRESSED  0x00000008
++#define GRUB_EFI_RIGHT_ALT_PRESSED     0x00000010
++#define GRUB_EFI_LEFT_ALT_PRESSED      0x00000020
++#define GRUB_EFI_RIGHT_LOGO_PRESSED    0x00000040
++#define GRUB_EFI_LEFT_LOGO_PRESSED     0x00000080
++#define GRUB_EFI_MENU_KEY_PRESSED      0x00000100
++#define GRUB_EFI_SYS_REQ_PRESSED       0x00000200
++
++#define GRUB_EFI_TOGGLE_STATE_VALID 0x80
++#define GRUB_EFI_KEY_STATE_EXPOSED  0x40
++#define GRUB_EFI_SCROLL_LOCK_ACTIVE 0x01
++#define GRUB_EFI_NUM_LOCK_ACTIVE    0x02
++#define GRUB_EFI_CAPS_LOCK_ACTIVE   0x04
++
+ struct grub_efi_simple_text_output_mode
+ {
+   grub_efi_int32_t max_mode;
+@@ -1294,6 +1320,43 @@ struct grub_efi_simple_input_interface
+ };
+ typedef struct grub_efi_simple_input_interface grub_efi_simple_input_interface_t;
+ 
++struct grub_efi_key_data {
++	grub_efi_input_key_t key;
++	grub_efi_key_state_t key_state;
++};
++typedef struct grub_efi_key_data grub_efi_key_data_t;
++
++typedef grub_efi_status_t (*grub_efi_key_notify_function_t) (
++	grub_efi_key_data_t *key_data
++	);
++
++struct grub_efi_simple_text_input_ex_interface
++{
++	grub_efi_status_t
++	(*reset) (struct grub_efi_simple_text_input_ex_interface *this,
++		  grub_efi_boolean_t extended_verification);
++
++	grub_efi_status_t
++	(*read_key_stroke) (struct grub_efi_simple_text_input_ex_interface *this,
++			    grub_efi_key_data_t *key_data);
++
++	grub_efi_event_t wait_for_key;
++
++	grub_efi_status_t
++	(*set_state) (struct grub_efi_simple_text_input_ex_interface *this,
++		      grub_efi_key_toggle_state_t *key_toggle_state);
++
++	grub_efi_status_t
++	(*register_key_notify) (struct grub_efi_simple_text_input_ex_interface *this,
++				grub_efi_key_data_t *key_data,
++				grub_efi_key_notify_function_t key_notification_function);
++
++	grub_efi_status_t
++	(*unregister_key_notify) (struct grub_efi_simple_text_input_ex_interface *this,
++				  void *notification_handle);
++};
++typedef struct grub_efi_simple_text_input_ex_interface grub_efi_simple_text_input_ex_interface_t;
++
+ struct grub_efi_simple_text_output_interface
+ {
+   grub_efi_status_t
+-- 
+1.8.5.3
+
diff --git a/0102-May-as-well-try-it.patch b/0102-May-as-well-try-it.patch
new file mode 100644
index 0000000..2938952
--- /dev/null
+++ b/0102-May-as-well-try-it.patch
@@ -0,0 +1,1963 @@
+From bc450a7ff6c40a2f498ce6026d9e6c4dd022ca59 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Tue, 4 Mar 2014 11:00:23 -0500
+Subject: [PATCH 102/112] May as well try it.
+
+---
+ .gitignore                        |   2 +
+ conf/Makefile.extra-dist          |   1 -
+ configure.ac                      |  23 ++++++
+ docs/Makefile.am                  |   2 -
+ docs/man/grub-bios-setup.h2m      |   6 --
+ docs/man/grub-editenv.h2m         |   5 --
+ docs/man/grub-emu.h2m             |   6 --
+ docs/man/grub-file.h2m            |   2 -
+ docs/man/grub-fstest.h2m          |   4 -
+ docs/man/grub-glue-efi.h2m        |   4 -
+ docs/man/grub-install.h2m         |   6 --
+ docs/man/grub-kbdcomp.h2m         |  10 ---
+ docs/man/grub-macbless.h2m        |   4 -
+ docs/man/grub-macho2img.h2m       |   4 -
+ docs/man/grub-menulst2cfg.h2m     |   4 -
+ docs/man/grub-mkconfig.h2m        |   4 -
+ docs/man/grub-mkfont.h2m          |   4 -
+ docs/man/grub-mkimage.h2m         |   6 --
+ docs/man/grub-mklayout.h2m        |  10 ---
+ docs/man/grub-mknetdir.h2m        |   4 -
+ docs/man/grub-mkpasswd-pbkdf2.h2m |   4 -
+ docs/man/grub-mkrelpath.h2m       |   4 -
+ docs/man/grub-mkrescue.h2m        |   4 -
+ docs/man/grub-mkstandalone.h2m    |   4 -
+ docs/man/grub-mount.h2m           |   2 -
+ docs/man/grub-ofpathname.h2m      |   4 -
+ docs/man/grub-pe2elf.h2m          |   4 -
+ docs/man/grub-probe.h2m           |   4 -
+ docs/man/grub-reboot.h2m          |   5 --
+ docs/man/grub-render-label.h2m    |   3 -
+ docs/man/grub-script-check.h2m    |   4 -
+ docs/man/grub-set-default.h2m     |   5 --
+ docs/man/grub-sparc64-setup.h2m   |   6 --
+ docs/man/grub-syslinux2cfg.h2m    |   4 -
+ gentpl.py                         |   5 +-
+ util/grub-bios-setup.8            |  54 +++++++++++++
+ util/grub-editenv.1               |  46 +++++++++++
+ util/grub-file.1                  | 165 ++++++++++++++++++++++++++++++++++++++
+ util/grub-fstest.1                |  99 +++++++++++++++++++++++
+ util/grub-glue-efi.1              |  31 +++++++
+ util/grub-install.8               | 129 +++++++++++++++++++++++++++++
+ util/grub-kbdcomp.1               |  19 +++++
+ util/grub-macbless.1              |  22 +++++
+ util/grub-menulst2cfg.1           |  12 +++
+ util/grub-mkconfig.8              |  17 ++++
+ util/grub-mkfont.1                |  87 ++++++++++++++++++++
+ util/grub-mkimage.1               |  95 ++++++++++++++++++++++
+ util/grub-mklayout.1              |  27 +++++++
+ util/grub-mknetdir.1              |  12 +++
+ util/grub-mkpasswd-pbkdf2.1       |  27 +++++++
+ util/grub-mkrelpath.1             |  12 +++
+ util/grub-mkrescue.1              | 123 ++++++++++++++++++++++++++++
+ util/grub-mkstandalone.1          | 100 +++++++++++++++++++++++
+ util/grub-ofpathname.8            |  12 +++
+ util/grub-probe.8                 |  80 ++++++++++++++++++
+ util/grub-reboot.8                |  21 +++++
+ util/grub-render-label.1          |  51 ++++++++++++
+ util/grub-script-check.1          |  21 +++++
+ util/grub-set-default.8           |  21 +++++
+ util/grub-sparc64-setup.8         |  12 +++
+ 60 files changed, 1321 insertions(+), 147 deletions(-)
+ delete mode 100644 docs/man/grub-bios-setup.h2m
+ delete mode 100644 docs/man/grub-editenv.h2m
+ delete mode 100644 docs/man/grub-emu.h2m
+ delete mode 100644 docs/man/grub-file.h2m
+ delete mode 100644 docs/man/grub-fstest.h2m
+ delete mode 100644 docs/man/grub-glue-efi.h2m
+ delete mode 100644 docs/man/grub-install.h2m
+ delete mode 100644 docs/man/grub-kbdcomp.h2m
+ delete mode 100644 docs/man/grub-macbless.h2m
+ delete mode 100644 docs/man/grub-macho2img.h2m
+ delete mode 100644 docs/man/grub-menulst2cfg.h2m
+ delete mode 100644 docs/man/grub-mkconfig.h2m
+ delete mode 100644 docs/man/grub-mkfont.h2m
+ delete mode 100644 docs/man/grub-mkimage.h2m
+ delete mode 100644 docs/man/grub-mklayout.h2m
+ delete mode 100644 docs/man/grub-mknetdir.h2m
+ delete mode 100644 docs/man/grub-mkpasswd-pbkdf2.h2m
+ delete mode 100644 docs/man/grub-mkrelpath.h2m
+ delete mode 100644 docs/man/grub-mkrescue.h2m
+ delete mode 100644 docs/man/grub-mkstandalone.h2m
+ delete mode 100644 docs/man/grub-mount.h2m
+ delete mode 100644 docs/man/grub-ofpathname.h2m
+ delete mode 100644 docs/man/grub-pe2elf.h2m
+ delete mode 100644 docs/man/grub-probe.h2m
+ delete mode 100644 docs/man/grub-reboot.h2m
+ delete mode 100644 docs/man/grub-render-label.h2m
+ delete mode 100644 docs/man/grub-script-check.h2m
+ delete mode 100644 docs/man/grub-set-default.h2m
+ delete mode 100644 docs/man/grub-sparc64-setup.h2m
+ delete mode 100644 docs/man/grub-syslinux2cfg.h2m
+ create mode 100644 util/grub-bios-setup.8
+ create mode 100644 util/grub-editenv.1
+ create mode 100644 util/grub-file.1
+ create mode 100644 util/grub-fstest.1
+ create mode 100644 util/grub-glue-efi.1
+ create mode 100644 util/grub-install.8
+ create mode 100644 util/grub-kbdcomp.1
+ create mode 100644 util/grub-macbless.1
+ create mode 100644 util/grub-menulst2cfg.1
+ create mode 100644 util/grub-mkconfig.8
+ create mode 100644 util/grub-mkfont.1
+ create mode 100644 util/grub-mkimage.1
+ create mode 100644 util/grub-mklayout.1
+ create mode 100644 util/grub-mknetdir.1
+ create mode 100644 util/grub-mkpasswd-pbkdf2.1
+ create mode 100644 util/grub-mkrelpath.1
+ create mode 100644 util/grub-mkrescue.1
+ create mode 100644 util/grub-mkstandalone.1
+ create mode 100644 util/grub-ofpathname.8
+ create mode 100644 util/grub-probe.8
+ create mode 100644 util/grub-reboot.8
+ create mode 100644 util/grub-render-label.1
+ create mode 100644 util/grub-script-check.1
+ create mode 100644 util/grub-set-default.8
+ create mode 100644 util/grub-sparc64-setup.8
+
+diff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist
+index 51f08c1..e914dfd 100644
+--- a/conf/Makefile.extra-dist
++++ b/conf/Makefile.extra-dist
+@@ -10,7 +10,6 @@ EXTRA_DIST += unicode
+ EXTRA_DIST += util/import_gcry.py
+ EXTRA_DIST += util/import_unicode.py
+ 
+-EXTRA_DIST += docs/man
+ EXTRA_DIST += docs/autoiso.cfg
+ EXTRA_DIST += docs/grub.cfg
+ EXTRA_DIST += docs/osdetect.cfg
+diff --git a/configure.ac b/configure.ac
+index 8888c2f..2632e2d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -70,6 +70,29 @@ grub_TRANSFORM([grub-set-default])
+ grub_TRANSFORM([grub-sparc64-setup])
+ grub_TRANSFORM([grub-render-label])
+ grub_TRANSFORM([grub-file])
++grub_TRANSFORM([grub-bios-setup.3])
++grub_TRANSFORM([grub-editenv.1])
++grub_TRANSFORM([grub-fstest.3])
++grub_TRANSFORM([grub-glue-efi.3])
++grub_TRANSFORM([grub-install.1])
++grub_TRANSFORM([grub-kbdcomp.3])
++grub_TRANSFORM([grub-menulst2cfg.1])
++grub_TRANSFORM([grub-mkconfig.1])
++grub_TRANSFORM([grub-mkfont.3])
++grub_TRANSFORM([grub-mkimage.1])
++grub_TRANSFORM([grub-mklayout.3])
++grub_TRANSFORM([grub-mknetdir.3])
++grub_TRANSFORM([grub-mkpasswd-pbkdf2.3])
++grub_TRANSFORM([grub-mkrelpath.3])
++grub_TRANSFORM([grub-mkrescue.1])
++grub_TRANSFORM([grub-mkstandalone.3])
++grub_TRANSFORM([grub-ofpathname.3])
++grub_TRANSFORM([grub-probe.3])
++grub_TRANSFORM([grub-reboot.3])
++grub_TRANSFORM([grub-render-label.3])
++grub_TRANSFORM([grub-script-check.3])
++grub_TRANSFORM([grub-set-default.1])
++grub_TRANSFORM([grub-sparc64-setup.3])
+ 
+ # Optimization flag.  Allow user to override.
+ if test "x$TARGET_CFLAGS" = x; then
+diff --git a/docs/Makefile.am b/docs/Makefile.am
+index 93eb396..ab28f19 100644
+--- a/docs/Makefile.am
++++ b/docs/Makefile.am
+@@ -5,5 +5,3 @@ info_TEXINFOS = grub.texi grub-dev.texi
+ grub_TEXINFOS = fdl.texi
+ 
+ EXTRA_DIST = font_char_metrics.png font_char_metrics.txt
+-
+-
+diff --git a/docs/man/grub-bios-setup.h2m b/docs/man/grub-bios-setup.h2m
+deleted file mode 100644
+index ac6ede3..0000000
+--- a/docs/man/grub-bios-setup.h2m
++++ /dev/null
+@@ -1,6 +0,0 @@
+-[NAME]
+-grub-bios-setup \- set up a device to boot using GRUB
+-[SEE ALSO]
+-.BR grub-install (8),
+-.BR grub-mkimage (1),
+-.BR grub-mkrescue (1)
+diff --git a/docs/man/grub-editenv.h2m b/docs/man/grub-editenv.h2m
+deleted file mode 100644
+index 3859d3d..0000000
+--- a/docs/man/grub-editenv.h2m
++++ /dev/null
+@@ -1,5 +0,0 @@
+-[NAME]
+-grub-editenv \- edit GRUB environment block
+-[SEE ALSO]
+-.BR grub-reboot (8),
+-.BR grub-set-default (8)
+diff --git a/docs/man/grub-emu.h2m b/docs/man/grub-emu.h2m
+deleted file mode 100644
+index ef1c000..0000000
+--- a/docs/man/grub-emu.h2m
++++ /dev/null
+@@ -1,6 +0,0 @@
+-[NAME]
+-grub-emu \- GRUB emulator
+-[SEE ALSO]
+-If you are trying to install GRUB, then you should use
+-.BR grub-install (8)
+-rather than this program.
+diff --git a/docs/man/grub-file.h2m b/docs/man/grub-file.h2m
+deleted file mode 100644
+index e09bb4d..0000000
+--- a/docs/man/grub-file.h2m
++++ /dev/null
+@@ -1,2 +0,0 @@
+-[NAME]
+-grub-file \- check file type
+diff --git a/docs/man/grub-fstest.h2m b/docs/man/grub-fstest.h2m
+deleted file mode 100644
+index 9676b15..0000000
+--- a/docs/man/grub-fstest.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-fstest \- debug tool for GRUB filesystem drivers
+-[SEE ALSO]
+-.BR grub-probe (8)
+diff --git a/docs/man/grub-glue-efi.h2m b/docs/man/grub-glue-efi.h2m
+deleted file mode 100644
+index c1c6ded..0000000
+--- a/docs/man/grub-glue-efi.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-glue-efi \- generate a fat binary for EFI
+-[DESCRIPTION]
+-grub-glue-efi processes ia32 and amd64 EFI images and glues them according to Apple format.
+diff --git a/docs/man/grub-install.h2m b/docs/man/grub-install.h2m
+deleted file mode 100644
+index 8cbbc87..0000000
+--- a/docs/man/grub-install.h2m
++++ /dev/null
+@@ -1,6 +0,0 @@
+-[NAME]
+-grub-install \- install GRUB to a device
+-[SEE ALSO]
+-.BR grub-mkconfig (8),
+-.BR grub-mkimage (1),
+-.BR grub-mkrescue (1)
+diff --git a/docs/man/grub-kbdcomp.h2m b/docs/man/grub-kbdcomp.h2m
+deleted file mode 100644
+index d81f915..0000000
+--- a/docs/man/grub-kbdcomp.h2m
++++ /dev/null
+@@ -1,10 +0,0 @@
+-[NAME]
+-grub-kbdcomp \- generate a GRUB keyboard layout file
+-[DESCRIPTION]
+-grub-kbdcomp processes a X keyboard layout description in
+-.BR keymaps (5)
+-format into a format that can be used by GRUB's
+-.B keymap
+-command.
+-[SEE ALSO]
+-.BR grub-mklayout (8)
+diff --git a/docs/man/grub-macbless.h2m b/docs/man/grub-macbless.h2m
+deleted file mode 100644
+index 0197c00..0000000
+--- a/docs/man/grub-macbless.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-macbless \- bless a mac file/directory
+-[SEE ALSO]
+-.BR grub-install (1)
+diff --git a/docs/man/grub-macho2img.h2m b/docs/man/grub-macho2img.h2m
+deleted file mode 100644
+index d79aaee..0000000
+--- a/docs/man/grub-macho2img.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-macho2img \- convert Mach-O to raw image
+-[SEE ALSO]
+-.BR grub-mkimage (1)
+diff --git a/docs/man/grub-menulst2cfg.h2m b/docs/man/grub-menulst2cfg.h2m
+deleted file mode 100644
+index c2e0055..0000000
+--- a/docs/man/grub-menulst2cfg.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-menulst2cfg \- transform legacy menu.lst into grub.cfg
+-[SEE ALSO]
+-.BR grub-mkconfig (8)
+diff --git a/docs/man/grub-mkconfig.h2m b/docs/man/grub-mkconfig.h2m
+deleted file mode 100644
+index 9b42f81..0000000
+--- a/docs/man/grub-mkconfig.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-mkconfig \- generate a GRUB configuration file
+-[SEE ALSO]
+-.BR grub-install (8)
+diff --git a/docs/man/grub-mkfont.h2m b/docs/man/grub-mkfont.h2m
+deleted file mode 100644
+index d46fe60..0000000
+--- a/docs/man/grub-mkfont.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-mkfont \- make GRUB font files
+-[SEE ALSO]
+-.BR grub-mkconfig (8)
+diff --git a/docs/man/grub-mkimage.h2m b/docs/man/grub-mkimage.h2m
+deleted file mode 100644
+index f0fbc2b..0000000
+--- a/docs/man/grub-mkimage.h2m
++++ /dev/null
+@@ -1,6 +0,0 @@
+-[NAME]
+-grub-mkimage \- make a bootable image of GRUB
+-[SEE ALSO]
+-.BR grub-install (8),
+-.BR grub-mkrescue (1),
+-.BR grub-mknetdir (8)
+diff --git a/docs/man/grub-mklayout.h2m b/docs/man/grub-mklayout.h2m
+deleted file mode 100644
+index 1e43409..0000000
+--- a/docs/man/grub-mklayout.h2m
++++ /dev/null
+@@ -1,10 +0,0 @@
+-[NAME]
+-grub-mklayout \- generate a GRUB keyboard layout file
+-[DESCRIPTION]
+-grub-mklayout processes a keyboard layout description in
+-.BR keymaps (5)
+-format into a format that can be used by GRUB's
+-.B keymap
+-command.
+-[SEE ALSO]
+-.BR grub-mkconfig (8)
+diff --git a/docs/man/grub-mknetdir.h2m b/docs/man/grub-mknetdir.h2m
+deleted file mode 100644
+index a2ef13e..0000000
+--- a/docs/man/grub-mknetdir.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-mknetdir \- prepare a GRUB netboot directory.
+-[SEE ALSO]
+-.BR grub-mkimage (1)
+diff --git a/docs/man/grub-mkpasswd-pbkdf2.h2m b/docs/man/grub-mkpasswd-pbkdf2.h2m
+deleted file mode 100644
+index 4d202f3..0000000
+--- a/docs/man/grub-mkpasswd-pbkdf2.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-mkpasswd-pbkdf2 \- generate hashed password for GRUB
+-[SEE ALSO]
+-.BR grub-mkconfig (8)
+diff --git a/docs/man/grub-mkrelpath.h2m b/docs/man/grub-mkrelpath.h2m
+deleted file mode 100644
+index d01f396..0000000
+--- a/docs/man/grub-mkrelpath.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-mkrelpath \- make a system path relative to its root
+-[SEE ALSO]
+-.BR grub-probe (8)
+diff --git a/docs/man/grub-mkrescue.h2m b/docs/man/grub-mkrescue.h2m
+deleted file mode 100644
+index a427f02..0000000
+--- a/docs/man/grub-mkrescue.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-mkrescue \- make a GRUB rescue image
+-[SEE ALSO]
+-.BR grub-mkimage (1)
+diff --git a/docs/man/grub-mkstandalone.h2m b/docs/man/grub-mkstandalone.h2m
+deleted file mode 100644
+index c773139..0000000
+--- a/docs/man/grub-mkstandalone.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-mkstandalone \- make a memdisk-based GRUB image
+-[SEE ALSO]
+-.BR grub-mkimage (1)
+diff --git a/docs/man/grub-mount.h2m b/docs/man/grub-mount.h2m
+deleted file mode 100644
+index 8d16898..0000000
+--- a/docs/man/grub-mount.h2m
++++ /dev/null
+@@ -1,2 +0,0 @@
+-[NAME]
+-grub-mount \- export GRUB filesystem with FUSE
+diff --git a/docs/man/grub-ofpathname.h2m b/docs/man/grub-ofpathname.h2m
+deleted file mode 100644
+index 74b43ee..0000000
+--- a/docs/man/grub-ofpathname.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-ofpathname \- find OpenBOOT path for a device
+-[SEE ALSO]
+-.BR grub-probe (8)
+diff --git a/docs/man/grub-pe2elf.h2m b/docs/man/grub-pe2elf.h2m
+deleted file mode 100644
+index 7ca29bd..0000000
+--- a/docs/man/grub-pe2elf.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-pe2elf \- convert PE image to ELF
+-[SEE ALSO]
+-.BR grub-mkimage (1)
+diff --git a/docs/man/grub-probe.h2m b/docs/man/grub-probe.h2m
+deleted file mode 100644
+index 6e1ffdc..0000000
+--- a/docs/man/grub-probe.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-probe \- probe device information for GRUB
+-[SEE ALSO]
+-.BR grub-fstest (1)
+diff --git a/docs/man/grub-reboot.h2m b/docs/man/grub-reboot.h2m
+deleted file mode 100644
+index e4acace..0000000
+--- a/docs/man/grub-reboot.h2m
++++ /dev/null
+@@ -1,5 +0,0 @@
+-[NAME]
+-grub-reboot \- set the default boot entry for GRUB, for the next boot only
+-[SEE ALSO]
+-.BR grub-set-default (8),
+-.BR grub-editenv (1)
+diff --git a/docs/man/grub-render-label.h2m b/docs/man/grub-render-label.h2m
+deleted file mode 100644
+index 50ae524..0000000
+--- a/docs/man/grub-render-label.h2m
++++ /dev/null
+@@ -1,3 +0,0 @@
+-[NAME]
+-grub-render-label \- generate a .disk_label for Apple Macs.
+-
+diff --git a/docs/man/grub-script-check.h2m b/docs/man/grub-script-check.h2m
+deleted file mode 100644
+index 3653682..0000000
+--- a/docs/man/grub-script-check.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-script-check \- check grub.cfg for syntax errors
+-[SEE ALSO]
+-.BR grub-mkconfig (8)
+diff --git a/docs/man/grub-set-default.h2m b/docs/man/grub-set-default.h2m
+deleted file mode 100644
+index 7945001..0000000
+--- a/docs/man/grub-set-default.h2m
++++ /dev/null
+@@ -1,5 +0,0 @@
+-[NAME]
+-grub-set-default \- set the saved default boot entry for GRUB
+-[SEE ALSO]
+-.BR grub-reboot (8),
+-.BR grub-editenv (1)
+diff --git a/docs/man/grub-sparc64-setup.h2m b/docs/man/grub-sparc64-setup.h2m
+deleted file mode 100644
+index 18f803a..0000000
+--- a/docs/man/grub-sparc64-setup.h2m
++++ /dev/null
+@@ -1,6 +0,0 @@
+-[NAME]
+-grub-sparc64-setup \- set up a device to boot using GRUB
+-[SEE ALSO]
+-.BR grub-install (8),
+-.BR grub-mkimage (1),
+-.BR grub-mkrescue (1)
+diff --git a/docs/man/grub-syslinux2cfg.h2m b/docs/man/grub-syslinux2cfg.h2m
+deleted file mode 100644
+index ad25c8a..0000000
+--- a/docs/man/grub-syslinux2cfg.h2m
++++ /dev/null
+@@ -1,4 +0,0 @@
+-[NAME]
+-grub-syslinux2cfg \- transform syslinux config into grub.cfg
+-[SEE ALSO]
+-.BR grub-menulst2cfg (8)
+diff --git a/gentpl.py b/gentpl.py
+index bdcae1a..889cc91 100644
+--- a/gentpl.py
++++ b/gentpl.py
+@@ -792,10 +792,7 @@ def manpage(defn, adddeps):
+ 
+     output("if COND_MAN_PAGES\n")
+     gvar_add("man_MANS", name + "." + mansection)
+-    rule(name + "." + mansection, name + " " + adddeps, """
+-chmod a+x """ + name + """
+-PATH=$(builddir):$$PATH pkgdatadir=$(builddir) $(HELP2MAN) --section=""" + mansection + """ -i $(top_srcdir)/docs/man/""" + name + """.h2m -o $@ """ + name + """
+-""")
++    rule(name + "." + mansection, name + " " + adddeps, "cat $(top_srcdir)/util/" + name + "." + mansection + " | $(top_builddir)/config.status --file=$@:-")
+     gvar_add("CLEANFILES", name + "." + mansection)
+     output("endif\n")
+ 
+diff --git a/util/grub-bios-setup.8 b/util/grub-bios-setup.8
+new file mode 100644
+index 0000000..56f582b
+--- /dev/null
++++ b/util/grub-bios-setup.8
+@@ -0,0 +1,54 @@
++.TH GRUB-BIOS-SETUP 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-bios-setup\fR \(em Set up images to boot from a device.
++
++.SH SYNOPSIS
++\fBgrub-bios-setup\fR [-a | --allow-floppy] [-b | --boot-image=\fIFILE\fR]
++.RS 17
++[-c | --core-image=\fIFILE\fR] [-d | --directory=\fIDIR\fR]
++.RE
++.RS 17
++[-f | --force] [-m | --device-map=\fIFILE\fR]
++.RE
++.RS 17
++[-s | --skip-fs-probe] [-v | --verbose] \fIDEVICE\fR
++
++.SH DESCRIPTION
++You should not normally run this program directly.  Use grub-install instead.
++
++.SH OPTIONS
++.TP
++\fB--allow-floppy\fR
++Make the device also bootable as a floppy.  This option is the default for
++/dev/fdX devices.  Some BIOSes will not boot images created with this option.
++
++.TP
++\fB--boot-image\fR=\fIFILE\fR
++Use FILE as the boot image.  The default value is \fBboot.img\fR.
++
++.TP
++\fB--core-image\fR=\fIFILE\fR
++Use FILE as ther core image.  The default value is \fBcore.img\fR.
++
++.TP
++\fB--directory\fR=\fIDIR\fR
++Use GRUB files in the directory DIR.  The default value is \fB/boot/grub\fR.
++
++.TP
++\fB--force\fR
++Install even if problems are detected.
++
++.TP
++\fB--device-map\fR=\fIFILE\fR
++Use FILE as the device map.  The default value is /boot/grub/device.map .
++
++.TP
++\fB--skip-fs-probe\fR
++Do not probe DEVICE for filesystems.
++
++.TP
++\fB--verbose\fR
++Print verbose messages.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-editenv.1 b/util/grub-editenv.1
+new file mode 100644
+index 0000000..8dad33f
+--- /dev/null
++++ b/util/grub-editenv.1
+@@ -0,0 +1,46 @@
++.TH GRUB-EDITENV 1 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-editenv\fR \(em Manage the GRUB environment block.
++
++.SH SYNOPSIS
++\fBgrub-editenv\fR [-v | --verbose] [\fIFILE\fR]
++.RS 14
++<create | list | set \fINAME\fR=\fIVALUE\fR | unset \fINAME\fR>
++
++.SH DESCRIPTION
++\fBgrub-editenv\fR is a command line tool to manage GRUB's stored environment.
++
++.SH OPTIONS
++.TP
++\fB--verbose\fR 
++Print verbose messages.
++
++.TP
++\fBFILE\fR
++.RS 7
++File name to use for grub environment.  Default is /boot/grub/grubenv .
++.RE
++
++.SH COMMANDS
++.TP
++\fBcreate\fR
++.RS 7
++Create a blank environment block file.
++.RE
++
++.TP
++\fBlist\fR
++.RS 7
++List the current variables.
++.RE
++
++.TP
++\fBset\fR [\fINAME\fR=\fIVALUE\fR ...]
++Set variables.
++
++.TP
++\fBunset [\fINAME\fR ...]
++Delete variables.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-file.1 b/util/grub-file.1
+new file mode 100644
+index 0000000..b29cb32
+--- /dev/null
++++ b/util/grub-file.1
+@@ -0,0 +1,165 @@
++.TH GRUB-FILE 1 "Web Feb 26 2014"
++.SH NAME
++\fBgrub-file\fR \(em Check if FILE is of specified type.
++
++.SH SYNOPSIS
++\fBgrub-file\fR (--is-i386-xen-pae-domu | --is-x86_64-xen-domu |
++.RS 11
++--is-x86-xen-dom0 | --is-x86-multiboot |
++.RE
++.RS 11
++--is-x86-multiboot2 | --is-arm-linux | --is-arm64-linux |
++.RE
++.RS 11
++--is-ia64-linux | --is-mips-linux | --is-mipsel-linux |
++.RE
++.RS 11
++--is-sparc64-linux | --is-powerpc-linux | --is-x86-linux |
++.RE
++.RS 11
++--is-x86-linux32 | --is-x86-kfreebsd | --is-i386-kfreebsd |
++.RE
++.RS 11
++--is-x86_64-kfreebsd | --is-x86-knetbsd |
++.RE
++.RS 11
++--is-i386-knetbsd | --is-x86_64-knetbsd | --is-i386-efi |
++.RE
++.RS 11
++--is-x86_64-efi | --is-ia64-efi | --is-arm64-efi |
++.RE
++.RS 11
++--is-arm-efi | --is-hibernated-hiberfil | --is-x86_64-xnu |
++.RE
++.RS 11
++--is-i386-xnu | --is-xnu-hibr | --is-x86-bios-bootsector)
++.RE
++.RS 11
++\fIFILE\fR
++
++.SH DESCRIPTION
++\fBgrub-file\fR is used to check if \fIFILE\fR is of a specified type.
++
++.SH OPTIONS
++.TP
++--is-i386-xen-pae-domu
++Check if FILE can be booted as i386 PAE Xen unprivileged guest kernel
++
++.TP
++--is-x86_64-xen-domu
++Check if FILE can be booted as x86_64 Xen unprivileged guest kernel
++
++.TP
++--is-x86-xen-dom0
++Check if FILE can be used as Xen x86 privileged guest kernel
++
++.TP
++--is-x86-multiboot
++Check if FILE can be used as x86 multiboot kernel
++
++.TP
++--is-x86-multiboot2
++Check if FILE can be used as x86 multiboot2 kernel
++
++.TP
++--is-arm-linux
++Check if FILE is ARM Linux
++
++.TP
++--is-arm64-linux
++Check if FILE is ARM64 Linux
++
++.TP
++--is-ia64-linux
++Check if FILE is IA64 Linux
++
++.TP
++--is-mips-linux
++Check if FILE is MIPS Linux
++
++.TP
++--is-mipsel-linux
++Check if FILE is MIPSEL Linux
++
++.TP
++--is-sparc64-linux
++Check if FILE is SPARC64 Linux
++
++.TP
++--is-powerpc-linux
++Check if FILE is POWERPC Linux
++
++.TP
++--is-x86-linux
++Check if FILE is x86 Linux
++
++.TP
++--is-x86-linux32
++Check if FILE is x86 Linux supporting 32-bit protocol
++
++.TP
++--is-x86-kfreebsd
++Check if FILE is x86 kFreeBSD
++
++.TP
++--is-i386-kfreebsd
++Check if FILE is i386 kFreeBSD
++
++.TP
++--is-x86_64-kfreebsd
++Check if FILE is x86_64 kFreeBSD
++
++.TP
++--is-x86-knetbsd
++Check if FILE is x86 kNetBSD
++
++.TP
++--is-i386-knetbsd
++Check if FILE is i386 kNetBSD
++
++.TP
++--is-x86_64-knetbsd
++Check if FILE is x86_64 kNetBSD
++
++.TP
++--is-i386-efi
++Check if FILE is i386 EFI file
++
++.TP
++--is-x86_64-efi
++Check if FILE is x86_64 EFI file
++
++.TP
++--is-ia64-efi
++Check if FILE is IA64 EFI file
++
++.TP
++--is-arm64-efi
++Check if FILE is ARM64 EFI file
++
++.TP
++--is-arm-efi
++Check if FILE is ARM EFI file
++
++.TP
++--is-hibernated-hiberfil
++Check if FILE is hiberfil.sys in hibernated state
++
++.TP
++--is-x86_64-xnu
++Check if FILE is x86_64 XNU (Mac OS X kernel)
++
++.TP
++--is-i386-xnu
++Check if FILE is i386 XNU (Mac OS X kernel)
++
++.TP
++--is-xnu-hibr
++Check if FILE is XNU (Mac OS X kernel) hibernated image
++
++.TP
++--is-x86-bios-bootsector
++Check if FILE is BIOS bootsector
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-fstest.1 b/util/grub-fstest.1
+new file mode 100644
+index 0000000..792fa78
+--- /dev/null
++++ b/util/grub-fstest.1
+@@ -0,0 +1,99 @@
++.TH GRUB-FSTEST 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-fstest\fR — Debug tool for GRUB's filesystem driver.
++
++.SH SYNOPSIS
++\fBgrub-fstest\fR [-c | --diskcount=\fINUM\fR] [-C | --crypto]
++.RS 13
++[-d | --debug=\fISTRING\fR] [-K | --zfs-key=\fIFILE\fR|\fIprompt\fR]
++.RE
++.RS 13
++[-n | --length=\fINUM\fR] [-r | --root=\fIDEVICE_NAME\fR]
++.RE
++.RS 13
++[-s | --skip=\fINUM\fR] [-u | --uncompress] [-v | --verbose]
++.RE
++.RS 13
++\fIIMAGE_PATH\fR <blocklist \fIFILE\fR | cat \fIFILE\fR |
++.RE
++.RS 13
++cmp \fIFILE\fR \fILOCAL\fR | cp \fIFILE\fR \fILOCAL\fR | crc \fIFILE\fR |
++.RE
++.RS 13
++hex \fIFILE\fR | ls \fIPATH\fR | xnu_uuid \fIDEVICE\fR>
++
++.SH DESCRIPTION
++\fBgrub-fstest\fR is a tool for testing GRUB's filesystem drivers.  You should not normally need to run this program.
++
++.SH OPTIONS
++.TP
++\fB--diskcount\fR=\fINUM\fR
++Specify the number of input files.
++
++.TP
++\fB--crypto\fR
++Mount cryptographic devices.
++
++.TP
++\fB--debug\fR=\fISTRING\fR
++Set debug environment variable.
++
++.TP
++\fB--zfs-key\fR=\fIFILE\fR|\fIprompt\fR
++Load ZFS cryptographic key.
++
++.TP
++\fB--length\fR=\fINUM\fR
++Handle NUM bytes in output file.
++
++.TP
++\fB--root\fR=\fIDEVICE_NAME\fR
++Set root device.
++
++.TP
++\fB--skip\fR=\fINUM\fR
++Skip NUM bytes from output file.
++
++.TP
++\fB--uncompress\fR
++Uncompress data.
++
++.TP
++\fB--verbose\fR
++Print verbose messages.
++
++.SH COMMANDS
++.TP
++\fBblocklist\fR \fIFILE\fR
++Display block list of \fIFILE\fR.
++
++.TP
++\fBcat\fR \fIFILE\fR
++Display \fIFILE\fR on standard output.
++
++.TP
++\fBcmp\fR \fIFILE\fR \fILOCAL\fR
++Compare \fIFILE\fR with local file \fILOCAL\fR.
++
++.TP
++\fBcp\fR \fIFILE\fR \fILOCAL\fR
++Copy \fIFILE\fR to local file \fILOCAL\fR.
++
++.TP
++\fBcrc\fR \fIFILE\fR
++Display the CRC-32 checksum of \fIFILE\fR.
++
++.TP
++\fBhex\fR \fIFILE\fR
++Display contents of \fIFILE\fR in hexidecimal.
++
++.TP
++\fBls\fR \fIPATH\fR
++List files at \fIPATH\fR.
++
++.TP
++\fBxnu_uuid\fR \fIDEVICE\fR
++Display the XNU UUID of \fIDEVICE\fR.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-glue-efi.1 b/util/grub-glue-efi.1
+new file mode 100644
+index 0000000..72bd555
+--- /dev/null
++++ b/util/grub-glue-efi.1
+@@ -0,0 +1,31 @@
++.TH GRUB-GLUE-EFI 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-glue-efi\fR \(em Create an Apple fat EFI binary.
++
++.SH SYNOPSIS
++\fBgrub-glue-efi\fR <-3 | --input32=\fIFILE\fR> <-6 | --input64=\fIFILE\fR>
++.RS 15
++<-o | --output=\fIFILE\fR> [-v | --verbose]
++
++.SH DESCRIPTION
++\fBgrub-glue-efi\fR creates an Apple fat EFI binary from two EFI binaries.
++
++.SH OPTIONS
++.TP
++\fB--input32\fR=\fIFILE\fR
++Read 32-bit binary from \fIFILE\fR.
++
++.TP
++\fB--input64\fR=\fIFILE\fR
++Read 64-bit binary from \fIFILE\fR.
++
++.TP
++\fB--output\fR=\fIFILE\fR
++Write resulting fat binary to \fIFILE\fR.
++
++.TP
++\fB--verbose\fR
++Print verbose messages.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-install.8 b/util/grub-install.8
+new file mode 100644
+index 0000000..76272a3
+--- /dev/null
++++ b/util/grub-install.8
+@@ -0,0 +1,129 @@
++.TH GRUB-INSTALL 1 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-install\fR \(em Install GRUB on a device.
++
++.SH SYNOPSIS
++\fBgrub-install\fR [--modules=\fIMODULES\fR] [--install-modules=\fIMODULES\fR]
++.RS 14
++[--themes=\fITHEMES\fR] [--fonts=\fIFONTS\fR] [--locales=\fILOCALES\fR]
++.RE
++.RS 14
++[--compress[=\fIno\fR,\fIxz\fR,\fIgz\fR,\fIlzo\fR]] [-d | --directory=\fIDIR\fR]
++.RE
++.RS 14
++[--grub-mkimage=\fIFILE\fR] [--boot-directory=\fIDIR\fR]
++.RE
++.RS 14
++[--target=\fITARGET\fR] [--grub-setup=\fIFILE\fR]
++.RE
++.RS 14
++[--grub-mkrelpath=\fIFILE\fR] [--grub-probe=\fIFILE\fR]
++.RE
++.RS 14
++[--allow-floppy] [--recheck] [--force] [--force-file-id]
++.RE
++.RS 14
++[--disk-module=\fIMODULE\fR] [--no-nvram] [--removable]
++.RE
++.RS 14
++[--bootloader-id=\fIID\fR] [--efi-directory=\fIDIR\fR] \fIINSTALL_DEVICE\fR
++
++.SH DESCRIPTION
++\fBgrub-install\fR installs GRUB onto a device.  This includes copying GRUB images into the target directory (generally \fI/boot/grub\fR), and on some platforms may also include installing GRUB onto a boot sector.
++
++.SH OPTIONS
++.TP
++\fB--modules\fR=\fIMODULES\fR\!
++Pre-load modules specified by \fIMODULES\fR.
++
++.TP
++\fB--install-modules\fR=\fIMODULES\fR
++Install only \fIMODULES\fR and their dependencies.  The default is to install all available modules.
++
++.TP
++\fB--themes\fR=\fITHEMES\fR
++Install \fITHEMES\fR.  The default is to install the \fIstarfield\fR theme, if available.
++
++.TP
++\fB--fonts\fR=\fIFONTS\fR
++Install \fIFONTS\fR.  The default is to install the \fIunicode\fR font.
++
++.TP
++\fB--locales\fR=\fILOCALES\fR
++Install only locales listed in \fILOCALES\fR.  The default is to install all available locales.
++
++.TP
++\fB--compress\fR=\fIno\fR,\fIxz\fR,\fIgz\fR,\fIlzo\fR
++Compress GRUB files using the specified compression algorithm.
++
++.TP
++\fB--directory\fR=\fIDIR\fR
++Use images and modules in \fIDIR\fR.
++
++.TP
++\fB--grub-mkimage\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-mkimage\fR.  The default is \fI/usr/bin/grub-mkimage\fR.
++
++.TP
++\fB--boot-directory\fR=\fIDIR\fR
++Use \fIDIR\fR as the boot directory.  The default is \fI/boot\fR.  GRUB will put its files in a subdirectory of this directory named \fIgrub\fR.
++
++.TP
++\fB--target\fR=\fITARGET\fR
++Install GRUB for \fITARGET\fR platform.  The default is the platform \fBgrub-install\fR is running on.
++
++.TP
++\fB--grub-setup\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-setup\fR.  The default is \fI/usr/bin/grub-setup\fR.
++
++.TP
++\fB--grub-mkrelpath\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-mkrelpath\fR.  The default is \fI/usr/bin/grub-mkrelpath\fR.
++
++.TP
++\fB--grub-probe\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-probe\fR.  The default is \fI/usr/bin/grub-mkrelpath\fR.
++
++.TP
++\fB--allow-floppy
++Make the device also bootable as a floppy.  This option is the default for /dev/fdX devices. Some BIOSes will not boot images created with this option.
++
++.TP
++\fB--recheck
++Delete any existing device map and create a new one if necessary.
++
++.TP
++\fB--force
++Install even if problems are detected.
++
++.TP
++\fB--force-file-id
++Use identifier file even if UUID is available.
++
++.TP
++\fB--disk-module\fR=\fIMODULE\fR
++Use \fIMODULE\fR for disk access.  This allows you to manually specify either \fIbiosdisk\fR or \fInative\fR disk access.  This option is only available on the BIOS target platform.
++
++.TP
++\fB--no-nvram
++Do not update the \fIboot-device\fR NVRAM variable.  This option is only available on IEEE1275 target platforms.
++
++.TP
++\fB--removable
++Treat the target device as if it is removeable.  This option is only available on the EFI target platform.
++
++.TP
++\fB--bootloader-id\fR=\fIID\fR
++Use \fIID\fR as the bootloader ID.  This opption is only available on the EFI target platform.
++
++.TP
++\fB--efi-directory\fR=\fIDIR\fR
++Use \fIDIR\fR as the EFI System Partition root.  This opption is only available on the EFI ta
++rget platform.
++
++.TP
++\fIINSTALL_DEVICE\fR
++Install GRUB to the block device \fIINSTALL_DEVICE\fR.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-kbdcomp.1 b/util/grub-kbdcomp.1
+new file mode 100644
+index 0000000..0bb969a
+--- /dev/null
++++ b/util/grub-kbdcomp.1
+@@ -0,0 +1,19 @@
++.TH GRUB-KBDCOMP 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-kbdcomp\fR \(em Generate a GRUB keyboard layout file.
++
++.SH SYNOPSIS
++\fBgrub-kbdcomp\fR <-o | --output=\fIFILE\fR> \fICKBMAP_ARGUMENTS\fR
++
++.SH DESCRIPTION
++\fBgrub-kbdcomp\fR processes an X keyboard layout description in
++\fBkeymaps\fR(5) format into a format that can be used by GRUB's \fBkeymap\fR
++command.
++
++.SH OPTIONS
++.TP
++\fB--output\fR=\fIFILE\fR
++Write output to \fIFILE\fR.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-macbless.1 b/util/grub-macbless.1
+new file mode 100644
+index 0000000..41a9618
+--- /dev/null
++++ b/util/grub-macbless.1
+@@ -0,0 +1,22 @@
++.TH GRUB-MACBLESS 1 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-macbless\fR \(em Mac-style bless on HFS or HFS+
++
++.SH SYNOPSIS
++\fBgrub-macbless\fR [-v | --verbose] [-p | --ppc] \fIFILE\fR | [-x | --x86] \fIFILE\fR
++
++.SH OPTIONS
++.TP
++--x86
++Bless for x86 based Macs.
++
++.TP
++--ppc
++Bless for PPC based Macs.
++
++.TP
++--verbose
++Print verbose messages.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-menulst2cfg.1 b/util/grub-menulst2cfg.1
+new file mode 100644
+index 0000000..91e2ef8
+--- /dev/null
++++ b/util/grub-menulst2cfg.1
+@@ -0,0 +1,12 @@
++.TH GRUB-MENULST2CFG 1 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-menulst2cfg\fR \(em Convert a configuration file from GRUB 0.xx to GRUB 2.xx format.
++
++.SH SYNOPSIS
++\fBgrub-menulst2cfg\fR [\fIINFILE\fR [\fIOUTFILE\fR]]
++
++.SH DESCRIPTION
++\fBgrub-menulst2cfg\fR converts a configuration file from GRUB 0.xx to the current format.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mkconfig.8 b/util/grub-mkconfig.8
+new file mode 100644
+index 0000000..a2d1f57
+--- /dev/null
++++ b/util/grub-mkconfig.8
+@@ -0,0 +1,17 @@
++.TH GRUB-MKCONFIG 1 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mkconfig\fR \(em Generate a GRUB configuration file.
++
++.SH SYNOPSIS
++\fBgrub-mkconfig\fR [-o | --output=\fIFILE\fR]
++
++.SH DESCRIPTION
++\fBgrub-mkconfig\fR generates a configuration file for GRUB.
++
++.SH OPTIONS
++.TP
++\fB--output\fR=\fIFILE\fR
++Write generated output to \fIFILE\fR.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mkfont.1 b/util/grub-mkfont.1
+new file mode 100644
+index 0000000..3494857
+--- /dev/null
++++ b/util/grub-mkfont.1
+@@ -0,0 +1,87 @@
++.TH GRUB-MKFONT 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mkfont\fR \(em Convert common font file formats into the PF2 format.
++
++.SH SYNOPSIS
++\fBgrub-mkfont\fR [--ascii-bitmaps] [-a | --force-autohint]
++.RS 13
++[-b | --bold] [-c | --asce=\fINUM\fR] [-d | --desc=\fINUM\fR]
++.RE
++.RS 13
++[-i | --index=\fINUM\fR] [-n | --name=\fINAME\fR] [--no-bitmap]
++.RE
++.RS 13
++[--no-hinting] <-o | --output=\fIFILE\fR>
++.RE
++.RS 13
++[-r | --range=\fIFROM-TO\fR[\fI,FROM-TO\fR]] [-s | --size=\fISIZE\fR]
++.RE
++.RS 13
++[-v | --verbose] [--width-spec] \fIFONT_FILES\fR
++
++.SH DESCRIPTION
++\fBgrub-mkfont\fR converts font files from common formats into the PF2 format used by GRUB.
++
++.SH OPTIONS
++.TP
++--ascii-bitmaps
++Save only bitmaps for ASCII characters.
++
++.TP
++--force-autohint
++Force generation of automatic hinting.
++
++.TP
++--bold
++Convert font to bold.
++
++.TP
++--asce=\fINUM\fR
++Set font ascent to \fINUM\fR.
++
++.TP
++--desc=\fINUM\fR
++Set font descent to \fINUM\fR.
++
++.TP
++--index=\fINUM\fR
++Select face index \fINUM\fR.
++
++.TP
++--name=\fINAME\fR
++Set font family to \fINAME\fR.
++
++.TP
++--no-bitmap
++Ignore bitmap strikes when loading.
++
++.TP
++--no-hinting
++Disable hinting.
++
++.TP
++--output=\fIFILE\fR
++Save ouptut to \fIFILE\fR.  This argument is required.
++
++.TP
++--range=\fIFROM-TO\fR\fI,FROM-TO\fR
++Set the font ranges to each pair of \fIFROM\fR,\fITO\fR.
++
++.TP
++--size=\fISIZE\fR
++Set font size to \fISIZE\fR.
++
++.TP
++--verbose
++Print verbose messages.
++
++.TP
++--width-spec
++Create a width summary file.
++
++.TP
++\fIFONT_FILES\fR
++The input files to be converted.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mkimage.1 b/util/grub-mkimage.1
+new file mode 100644
+index 0000000..4dea4f5
+--- /dev/null
++++ b/util/grub-mkimage.1
+@@ -0,0 +1,95 @@
++.TH GRUB-MKIMAGE 1 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mkimage\fR \(em Make a bootable GRUB image.
++
++.SH SYNOPSIS
++\fBgrub-mkimage\fR [-c | --config=\fRFILE\fI] [-C | --compression=(\fIxz\fR,\fInone\fR,\fIauto\fR)]
++.RS 14
++[-d | --directory=\fRDIR\fR] [-k | --pubkey=\fIFILE\fR]
++.RE
++.RS 14
++[-m | --memdisk=\fIFILE\fR] [-n | --note] [-o | --output=\fIFILE\fR]
++.RE
++.RS 14
++[-O | --format=\fIFORMAT\fR] [-p | --prefix=\fIDIR\fR]
++.RE
++.RS 14
++[-v | --verbose] \fIMODULES\fR
++
++.SH DESCRIPTION
++\fBgrub-mkimage\fI builds a bootable image of GRUB.
++
++.SH OPTIONS
++.TP
++--config=\fIFILE\fR
++Embed \fIFILE\fR as the image's initial configuration file.
++
++.TP
++--compression=(\fIxz\fR,\fInone\fR,\fIauto\fR)
++Use one of \fIxz\fR, \fInone\fR, or \fIauto\fR as the compression method for the core image.
++
++.TP
++--directory=\fIDIR\fR
++Use images and modules from \fIDIR\fR.  The default value is \fB/usr/lib/grub/<platform>\fR.
++
++.TP
++--pubkey=\fIFILE\fR
++Embed the public key \fIFILE\fR for signature checking.
++
++.TP
++--memdisk=\fIFILE\fR
++Embed the memdisk image \fIFILE\fR.  If no \fB-p\fR option is also specified, this implies \fI-p (memdisk)/boot/grub\fR.
++
++.TP
++--note
++Add a CHRP \fINOTE\fR section.  This option is only valid on IEEE1275 platforms.
++
++.TP
++--output=\fIFILE\fR
++Write the generated file to \fIFILE\fR.  The default is to write to standard output.
++
++.TP
++--format=\fIFORMAT\fR
++Generate an image in the specified \fIFORMAT\fR.  Valid values are:
++.RS
++.RS 4
++.P
++i386-coreboot,
++i386-multiboot,
++i386-pc,
++i386-pc-pxe,
++i386-efi,
++i386-ieee1275,
++i386-qemu,
++x86_64-efi,
++mipsel-yeeloong-flash,
++mipsel-fuloong2f-flash,
++mipself-loongson-elf,
++powerpc-ieee1275,
++sparc64-ieee1275-raw,
++sparc64-ieee1275-cdcore,
++sparc64-ieee1275-aout,
++ia64-efi,
++mips-arc,
++mipsel-arc,
++mipsel-qemu_mips-elf,
++mips-qemu_mips-flash,
++mipsel-qemu_mips-flash,
++mips-qemu_mips-elf
++.RE
++.RE
++
++.TP
++--prefix=\fIDIR\fR
++Set prefix directory.  The default value is \fI/boot/grub\fR.
++
++.TP
++--verbose
++Print verbose messages.
++
++.TP
++\fIMODULES\fR
++Include \fIMODULES\fR.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mklayout.1 b/util/grub-mklayout.1
+new file mode 100644
+index 0000000..d1bbc2e
+--- /dev/null
++++ b/util/grub-mklayout.1
+@@ -0,0 +1,27 @@
++.TH GRUB-MKLAYOUT 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mklayout\fR \(em Generate a GRUB keyboard layout file.
++
++.SH SYNOPSIS
++\fBgrub-mklayout\fR [-i | --input=\fIFILE\fR] [-o | --output=\fIFILE\fR]
++.RS 15
++[-v | --verbose]
++
++.SH DESCRIPTION
++\fBgrub-mklayout\fR generates a GRUB keyboard layout description which corresponds with the Linux console layout description given as input.
++
++.SH OPTIONS
++.TP
++--input=\fIFILE\fR
++Use \fIFILE\fR as the input.  The default value is the standard input device.
++
++.TP
++--output=\fIFILE\fR
++Use \fIFILE\fR as the output.  The default value is the standard output device.
++
++.TP
++--verbose
++Print verbose messages.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mknetdir.1 b/util/grub-mknetdir.1
+new file mode 100644
+index 0000000..69c2262
+--- /dev/null
++++ b/util/grub-mknetdir.1
+@@ -0,0 +1,12 @@
++.TH GRUB-MKNETDIR 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mknetdir\fR \(em Prepare a GRUB netboot directory.
++
++.SH SYNOPSIS
++\fBgrub-mknetdir\fR 
++
++.SH DESCRIPTION
++\fBgrub-mknetdir\fR prepares a directory for GRUB to be netbooted from.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mkpasswd-pbkdf2.1 b/util/grub-mkpasswd-pbkdf2.1
+new file mode 100644
+index 0000000..73c437c
+--- /dev/null
++++ b/util/grub-mkpasswd-pbkdf2.1
+@@ -0,0 +1,27 @@
++.TH GRUB-MKPASSWD-PBKDF2 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mkpasswd-pbkdf2\fR \(em Generate a PBKDF2 password hash.
++
++.SH SYNOPSIS
++\fBgrub-mkpasswd-pbkdf2\fR [-c | --iteration-count=\fINUM\fR] [-l | --buflen=\fINUM\fR]
++.RS 22
++[-s | --salt=\fINUM\fR]
++
++.SH DESCRIPTION
++\fBgrub-mkpasswd-pbkdf2\fR generates a PBKDF2 password string suitable for use in a GRUB configuration file.
++
++.SH OPTIONS
++.TP
++--iteration-count=\fINUM\fR
++Number of PBKDF2 iterations.
++
++.TP
++--buflen=\fINUM\fR
++Length of generated hash.
++
++.TP
++--salt=\fINUM\fR
++Length of salt to use.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mkrelpath.1 b/util/grub-mkrelpath.1
+new file mode 100644
+index 0000000..85f1113
+--- /dev/null
++++ b/util/grub-mkrelpath.1
+@@ -0,0 +1,12 @@
++.TH GRUB-MKRELPATH 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mkrelpath\fR \(em Generate a relative GRUB path given an OS path.
++
++.SH SYNOPSIS
++\fBgrub-mkrelpath\fR \fIFILE\fR
++
++.SH DESCRIPTION
++\fBgrub-mkrelpath\fR takes an OS filesystem path for \fIFILE\fR and returns a relative path suitable for use in a GRUB configuration file.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mkrescue.1 b/util/grub-mkrescue.1
+new file mode 100644
+index 0000000..4ed9fc7
+--- /dev/null
++++ b/util/grub-mkrescue.1
+@@ -0,0 +1,123 @@
++.TH GRUB-MKRESCUE 3 "Wed Feb 26 2014"
++.SH NAME
++grub-mkrescue \(em Generate a GRUB rescue image using GNU Xorriso.
++
++.SH SYNOPSIS
++\fBgrub-mkrescue\fR [-o | --output=\fIFILE\fR] [--modules=\fIMODULES\fR]
++.RS 15
++[--install-modules=\fIMODULES\fR] [--themes=\fITHEMES\fR]
++.RE
++.RS 15
++[--fonts=\fIFONTS\fR] [--locales=\fILOCALES\fR]
++.RE
++.RS 15
++[--compress[=\fIno\fR,\fIxz\fR,\fIgz\fR,\fIlzo\fR]] [-d | --directory=\fIDIR\fR]
++.RE
++.RS 15
++[--grub-mkimage=\fIFILE\fR] [--rom-directory=\fIDIR\fR]
++.RE
++.RS 15
++[--xorriso=\fIFILE\fR] [--grub-glue-efi=\fIFILE\fR]
++.RE
++.RS 15
++[--grub-render-label=\fIFILE\fR] [--label-font=\fIFILE\fR]
++.RE
++.RS 15
++[--label-color=\fICOLOR\fR] [--label-bgcolor=\fIFILE\fR]
++.RE
++.RS 15
++[--product-name=\fISTRING\fR] [--product-version=\fISTRING\fR]
++.RE
++.RS 15
++[--sparc-boot] [--arcs-boot]
++
++.SH DESCRIPTION
++\fBgrub-mkrescue\fR can be used to generate a rescue image with the GRUB bootloader.
++
++.SH OPTIONS
++.TP
++\fB--output\fR=\fIFILE\fR
++Write the generated file to \fIFILE\fR.  The default is to write to standard output.
++
++.TP
++\fB--modules\fR=\fIMODULES\fR
++Pre-load modules specified by \fIMODULES\fR.
++
++.TP
++\fB--install-modules\fR=\fIMODULES\fR
++Install only \fIMODULES\fR and their dependencies.  The default is to install all available modules.
++
++.TP
++\fB--themes\fR=\fITHEMES\fR
++Install \fITHEMES\fR.  The default is to install the \fIstarfield\fR theme, if available.
++
++.TP
++\fB--fonts\fR=\fIFONTS\fR
++Install \fIFONTS\fR.  The default is to install the \fIunicode\fR font.
++
++.TP
++\fB--locales\fR=\fILOCALES\fR
++Install only locales listed in \fILOCALES\fR.  The default is to install all available locales.
++
++.TP
++\fB--compress\fR[=\fIno\fR,\fIxz\fR,\fIgz\fR,\fIlzo\fR]
++Compress GRUB files using the specified compression algorithm.
++
++.TP
++\fB--directory\fR=\fIDIR\fR
++Use images and modules in \fIDIR\fR.
++
++.TP
++\fB--grub-mkimage\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-mkimage\fR(1).  The default is \fI/usr/bin/grub-mkimage\fR.
++
++.TP
++\fB--rom-directory\fR=\fIDIR\fR
++Save ROM images in \fIDIR\fR.
++
++.TP
++\fB--xorriso\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBxorriso\fI.
++
++.TP
++\fB--grub-glue-efi\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-glue-efi\fR(3).
++
++.TP
++\fB--grub-render-label\fR=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-render-label\fR(3).
++
++.TP
++\fB--label-font\fR=\fIFILE\fR
++Use \fIFILE\fR as the font file for generated labels.
++
++.TP
++\fB--label-color\fR=\fICOLOR\fR
++Use \fICOLOR\fI as the color for generated labels.
++
++.TP
++\fB--label-bgcolor\fR=\fICOLOR\fR
++Use \fICOLOR\fR as the background color for generated labels.
++
++.TP
++\fB--product-name\fR=\fISTRING\fR
++Use \fISTRING\fR as the product name in generated labels.
++
++.TP
++\fB--product-version\fR=\fISTRING\fR
++Use \fISTRING\fR as the product version in generated labels.
++
++.TP
++\fB--sparc-boot\fR
++Enable booting the SPARC platform.  This disables HFS+, APM, ARCS, and "boot as disk image" on the \fIi386-pc\fR target platform.
++
++.TP
++\fB--arcs-boot\fR
++Enable ARCS booting.  This is typically for big-endian MIPS machines, and disables HFS+, APM, sparc64, and "boot as disk image" on the \fIi386-pc\fR target platform.
++
++.TP
++\fB--\fR
++All options after a \fB--\fR will be passed directly to xorriso's command line when generating the image.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-mkstandalone.1 b/util/grub-mkstandalone.1
+new file mode 100644
+index 0000000..ba2d2bd
+--- /dev/null
++++ b/util/grub-mkstandalone.1
+@@ -0,0 +1,100 @@
++.TH GRUB-MKSTANDALONE 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-mkstandalone\fR \(em Generate a standalone image in the selected format.
++
++.SH SYNOPSIS
++\fBgrub-mkstandalone\fR [-o | --output=\fIFILE\fR] [-O | --format=\fIFORMAT\fR]
++.RS 19
++[-C | --compression=(\fIxz\fR|\fInone\fR|\fIauto\fR)]
++.RE
++.RS 19
++[--modules=\fIMODULES\fR] [--install-modules=\fIMODULES\fR]
++.RE
++.RS 19
++[--themes=\fITHEMES\fR] [--fonts=\fIFONTS\fR]
++.RE
++.RS 19
++[--locales=\fILOCALES\fR] [--compress[=\fIno\fR,\fIxz\fR,\fIgz\fR,\fIlzo\fR]]
++.RE
++.RS 19
++[-d | --directory=\fIDIR\fR] [--grub-mkimage=\fIFILE\fR]
++.RE
++.RS 19
++\fISOURCE...\fR
++
++.SH DESCRIPTION
++
++.SH OPTIONS
++.TP
++--output=\fIFILE\fR
++Write the generated file to \fIFILE\fR.  The default is to write to standard output.
++
++.TP
++--format=\fIFORMAT\fR
++Generate an image in the specified \fIFORMAT\fR.  Valid values are:
++.RS
++.RS 4
++.P
++i386-coreboot,
++i386-multiboot,
++i386-pc,
++i386-pc-pxe,
++i386-efi,
++i386-ieee1275,
++i386-qemu,
++x86_64-efi,
++mipsel-yeeloong-flash,
++mipsel-fuloong2f-flash,
++mipself-loongson-elf,
++powerpc-ieee1275,
++sparc64-ieee1275-raw,
++sparc64-ieee1275-cdcore,
++sparc64-ieee1275-aout,
++ia64-efi,
++mips-arc,
++mipsel-arc,
++mipsel-qemu_mips-elf,
++mips-qemu_mips-flash,
++mipsel-qemu_mips-flash,
++mips-qemu_mips-elf
++.RE
++.RE
++
++.TP
++--compression=(\fIxz\fR|\fInone\fR|\fIauto\fR)
++Use one of \fIxz\fR, \fInone\fR, or \fIauto\fR as the compression method for the core image.
++
++.TP
++--modules=\fIMODULES\fR
++Pre-load modules specified by \fIMODULES\fR.
++
++.TP
++--install-modules=\fIMODULES\fR
++Install only \fIMODULES\fR and their dependencies.  The default is to install all available modules.
++
++.TP
++--themes=\fITHEMES\fR
++Install \fITHEMES\fR.  The default is to install the \fIstarfield\fR theme, if available.
++
++.TP
++--fonts=\fIFONTS\fR
++Install \fIFONTS\fR.  The default is to install the \fIunicode\fR font.
++
++.TP
++--locales=\fILOCALES\fR
++Install only locales listed in \fILOCALES\fR.  The default is to install all available locales.
++
++.TP
++--compress[=\fIno\fR,\fIxz\fR,\fIgz\fR,\fIlzo\fR]
++Compress GRUB files using the specified compression algorithm.
++
++.TP
++--directory=\fIDIR\fR
++Use images and modules in \fIDIR\fR.
++
++.TP
++--grub-mkimage=\fIFILE\fR
++Use \fIFILE\fR as \fBgrub-mkimage\fR.  The default is \fI/usr/bin/grub-mkimage\fR.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-ofpathname.8 b/util/grub-ofpathname.8
+new file mode 100644
+index 0000000..bf3743a
+--- /dev/null
++++ b/util/grub-ofpathname.8
+@@ -0,0 +1,12 @@
++.TH GRUB-OFPATHNAME 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-ofpathname\fR \(em Generate an IEEE-1275 device path for a specified device.
++
++.SH SYNOPSIS
++\fBgrub-ofpathname\fR \fIDEVICE\fR
++
++.SH DESCRIPTION
++\fBgrub-ofpathname\fR generates an IEEE-1275 device path for the specified \fIDEVICE\fR.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-probe.8 b/util/grub-probe.8
+new file mode 100644
+index 0000000..04e26c8
+--- /dev/null
++++ b/util/grub-probe.8
+@@ -0,0 +1,80 @@
++.TH GRUB-PROBE 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-probe\fR \(em Probe device information for a given path.
++
++.SH SYNOPSIS
++\fBgrub-probe\fR \[-d | --device] [-m | --device-map=\fIFILE\fR]
++.RS 12
++[-t | --target=(fs|fs_uuid|fs_label|drive|device|partmap|
++.RE
++.RS 28
++abstraction|cryptodisk_uuid|
++.RE
++.RS 28
++msdos_parttype)]
++.RE
++.RS 12
++[-v | --verbose] (PATH|DEVICE)
++
++.SH DESCRIPTION
++\fBgrub-probe\fR probes a path or device for filesystem and related information.
++
++.SH OPTIONS
++.TP
++--device
++Final option represents a \fIDEVICE\fR, rather than a filesystem \fIPATH\fR.
++.TP
++--device-map=\fIFILE\fR
++Use \fIFILE\fR as the device map.  The default value is \fI/boot/grub/device.map\fR.
++
++.TP
++--target=(fs|fs_uuid|fs_label|drive|device|partmap|msdos_parttype)
++Select among various output definitions.  The default is \fIfs\fR.
++.RS
++.TP
++\fIfs\fR
++filesystem module
++
++.TP
++\fIfs_uuid\fR
++filesystem UUID
++
++.TP
++\fIfs_label\fR
++filesystem label
++
++.TP
++\fIdrive\fR
++GRUB drive name
++
++.TP
++\fIdevice\fR
++System device
++
++.TP
++\fIpartmap\fR
++partition map module
++
++.TP
++\fIabstraction\fR
++abstraction module
++
++.TP
++\fIcryptodisk_uuid\fR
++cryptographic container
++
++.TP
++\fImsdos_partmap\fR
++MS-DOS partition map
++.RE
++
++.TP
++--verbose
++Print verbose output.
++
++.TP
++(\fIPATH\fR|\fIDEVICE\fR)
++If --device is passed, a block \fIDEVICE\fR.  Otherwise, the \fIPATH\fR of a file on the filesystem.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-reboot.8 b/util/grub-reboot.8
+new file mode 100644
+index 0000000..faa5e4e
+--- /dev/null
++++ b/util/grub-reboot.8
+@@ -0,0 +1,21 @@
++.TH GRUB-REBOOT 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-reboot\fR \(em Set the default boot menu entry for the next boot only.
++
++.SH SYNOPSIS
++\fBgrub-reboot\fR [--boot-directory=\fIDIR\fR] \fIMENU_ENTRY\fR
++
++.SH DESCRIPTION
++\fBgrub-reboot\fR sets the default boot menu entry for the next boot, but not further boots after that.  This command only works for GRUB configuration files created with \fIGRUB_DEFAULT=saved\fR in \fI/etc/default/grub\fR.
++
++.SH OPTIONS
++.TP
++--boot-directory=\fIDIR\fR
++Find GRUB images under \fIDIR/grub\fR.  The default value is \fI/boot\fR, resulting in grub images being search for at \fI/boot/grub\fR.
++
++.TP
++\fIMENU_ENTRY\fR
++A number, a menu item title or a menu item identifier.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-render-label.1 b/util/grub-render-label.1
+new file mode 100644
+index 0000000..4d51c8a
+--- /dev/null
++++ b/util/grub-render-label.1
+@@ -0,0 +1,51 @@
++.TH GRUB-RENDER-LABEL 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-render-label\fR \(em Render an Apple disk label.
++
++.SH SYNOPSIS
++\fBgrub-render-label\fR [-b | --bgcolor=\fICOLOR\fR] [-c | --color=\fICOLOR\fR]
++.RS 19
++[-f | --font=\fIFILE\fR] [-i | --input=\fIFILE\fR]
++.RE
++.RS 19
++[-o | --output=\fIFILE\fR] [-t | --text=\fISTRING\fR]
++.RE
++.RS 19
++[-v | --verbose]
++
++.SH DESCRIPTION
++\fBgrub-render-label\fR renders an Apple disk label (.disk_label) file.
++
++
++.SH OPTIONS
++.TP
++\fB--color\fR=\fICOLOR\fR
++Use \fICOLOR\fI as the color for generated labels.
++
++.TP
++\fB--bgcolor\fR=\fICOLOR\fR
++Use \fICOLOR\fR as the background color for generated labels.
++
++.TP
++\fB--font\fR=\fIFILE\fR
++Use \fIFILE\fR as the font file for generated labels.
++
++.TP
++--input=\fIFILE\fR
++Read input text from \fIFILE\fR.
++
++.TP
++--output=\fIFILE\fR
++Render output to \fIFILE\fR.
++
++.TP
++--text=\fISTRING\fR
++Use \fISTRING\fR as input text.
++
++.TP
++--verbose
++Print verbose output.
++
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-script-check.1 b/util/grub-script-check.1
+new file mode 100644
+index 0000000..0f1f625
+--- /dev/null
++++ b/util/grub-script-check.1
+@@ -0,0 +1,21 @@
++.TH GRUB-SCRIPT-CHECK 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-script-check\fR \(em Check GRUB configuration file for syntax errors.
++
++.SH SYNOPSIS
++\fBgrub-script-check\fR [-v | --verbose] \fIPATH\fR
++
++.SH DESCRIPTION
++\fBgrub-script-check\fR verifies that a specified GRUB configuration file does not contain syntax errors.
++
++.SH OPTIONS
++.TP
++--verbose
++Print verbose output.
++
++.TP
++\fIPATH\fR
++Path of the file to use as input.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-set-default.8 b/util/grub-set-default.8
+new file mode 100644
+index 0000000..a96265a
+--- /dev/null
++++ b/util/grub-set-default.8
+@@ -0,0 +1,21 @@
++.TH GRUB-SET-DEFAULT 1 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-set-default\fR \(em Set the default boot menu entry for GRUB.
++
++.SH SYNOPSIS
++\fBgrub-set-default\fR [--boot-directory=\fIDIR\fR] \fIMENU_ENTRY\fR
++
++.SH DESCRIPTION
++\fBgrub-set-default\fR sets the default boot menu entry for all subsequent boots.  This command only works for GRUB configuration files created with \fIGRUB_DEFAULT=saved\fR in \fI/etc/default/grub\fR.
++
++.SH OPTIONS
++.TP
++--boot-directory=\fIDIR\fR
++Find GRUB images under \fIDIR/grub\fR.  The default value is \fI/boot\fR, resulting in grub images being search for at \fI/boot/grub\fR.
++
++.TP
++\fIMENU_ENTRY\fR
++A number, a menu item title or a menu item identifier.
++
++.SH SEE ALSO
++.BR "info grub"
+diff --git a/util/grub-sparc64-setup.8 b/util/grub-sparc64-setup.8
+new file mode 100644
+index 0000000..37ea2dd
+--- /dev/null
++++ b/util/grub-sparc64-setup.8
+@@ -0,0 +1,12 @@
++.TH GRUB-SPARC64-SETUP 3 "Wed Feb 26 2014"
++.SH NAME
++\fBgrub-sparc64-setup\fR \(em Set up a device to boot a sparc64 GRUB image.
++
++.SH SYNOPSIS
++\fBgrub-sparc64-setup\fR [OPTIONS].
++
++.SH DESCRIPTION
++You should not normally run this program directly.  Use grub-install instead.
++
++.SH SEE ALSO
++.BR "info grub"
+-- 
+1.8.5.3
+
diff --git a/0103-use-fw_path-prefix-when-fallback-searching-for-grub-.patch b/0103-use-fw_path-prefix-when-fallback-searching-for-grub-.patch
new file mode 100644
index 0000000..2ce20b2
--- /dev/null
+++ b/0103-use-fw_path-prefix-when-fallback-searching-for-grub-.patch
@@ -0,0 +1,45 @@
+From 44880b8c21f94703940a7cfb5e0a66d0e9185dcf Mon Sep 17 00:00:00 2001
+From: Fedora Ninjas <grub2-owner at fedoraproject.org>
+Date: Wed, 19 Feb 2014 15:58:43 -0500
+Subject: [PATCH 103/112] use fw_path prefix when fallback searching for grub
+ config
+
+When PXE booting via UEFI firmware, grub was searching for grub.cfg
+in the fw_path directory where the grub application was found. If
+that didn't exist, a fallback search would look for config file names
+based on MAC and IP address. However, the search would look in the
+prefix directory which may not be the same fw_path. This patch
+changes that behavior to use the fw_path directory for the fallback
+search. Only if fw_path is NULL will the prefix directory be searched.
+
+Signed-off-by: Mark Salter <msalter at redhat.com>
+---
+ grub-core/normal/main.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
+index f66c03c..5e2ac15 100644
+--- a/grub-core/normal/main.c
++++ b/grub-core/normal/main.c
+@@ -343,7 +343,7 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
+       char *config;
+       const char *prefix, *fw_path;
+ 
+-      fw_path = grub_env_get ("fw_path");
++      prefix = fw_path = grub_env_get ("fw_path");
+       if (fw_path)
+ 	{
+ 	  config = grub_xasprintf ("%s/grub.cfg", fw_path);
+@@ -366,7 +366,8 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
+ 	    }
+ 	}
+ 
+-      prefix = grub_env_get ("prefix");
++      if (! prefix)
++	      prefix = grub_env_get ("prefix");
+       if (prefix)
+         {
+           grub_size_t config_len;
+-- 
+1.8.5.3
+
diff --git a/0104-Try-mac-guid-etc-before-grub.cfg-on-tftp-config-file.patch b/0104-Try-mac-guid-etc-before-grub.cfg-on-tftp-config-file.patch
new file mode 100644
index 0000000..d22cfa4
--- /dev/null
+++ b/0104-Try-mac-guid-etc-before-grub.cfg-on-tftp-config-file.patch
@@ -0,0 +1,115 @@
+From ae4b0a2e8a798b13e351c4b830e31021ca2d8da3 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Thu, 6 Mar 2014 11:51:33 -0500
+Subject: [PATCH 104/112] Try mac/guid/etc before grub.cfg on tftp config
+ files.
+
+Signed-off-by: Peter Jones <pjones at redhat.com>
+---
+ grub-core/normal/main.c | 80 ++++++++++++++++++++++++++-----------------------
+ 1 file changed, 43 insertions(+), 37 deletions(-)
+
+diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
+index 5e2ac15..4190985 100644
+--- a/grub-core/normal/main.c
++++ b/grub-core/normal/main.c
+@@ -341,53 +341,59 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
+       /* Guess the config filename. It is necessary to make CONFIG static,
+ 	 so that it won't get broken by longjmp.  */
+       char *config;
+-      const char *prefix, *fw_path;
+-
+-      prefix = fw_path = grub_env_get ("fw_path");
+-      if (fw_path)
+-	{
+-	  config = grub_xasprintf ("%s/grub.cfg", fw_path);
+-	  if (config)
+-	    {
+-	      grub_file_t file;
+-
+-	      file = grub_file_open (config);
+-	      if (file)
+-		{
+-		  grub_file_close (file);
+-		  grub_enter_normal_mode (config);
+-		}
+-              else
+-                {
+-                  /*  Ignore all errors.  */
+-                  grub_errno = 0;
+-                }
+-	      grub_free (config);
+-	    }
+-	}
++      const char *prefix;
+ 
++      prefix = grub_env_get ("fw_path");
+       if (! prefix)
+ 	      prefix = grub_env_get ("prefix");
++
+       if (prefix)
+-        {
+-          grub_size_t config_len;
+-          config_len = grub_strlen (prefix) +
+-                      sizeof ("/grub.cfg-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
+-          config = grub_malloc (config_len);
++	{
++	  if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0)
++	    {
++	      grub_size_t config_len;
++	      config_len = grub_strlen (prefix) +
++		sizeof ("/grub.cfg-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
++	      config = grub_malloc (config_len);
++
++	      if (! config)
++		goto quit;
+ 
+-          if (! config)
+-            goto quit;
++	      grub_snprintf (config, config_len, "%s/grub.cfg", prefix);
+ 
+-          grub_snprintf (config, config_len, "%s/grub.cfg", prefix);
++	      grub_net_search_configfile (config);
+ 
+-          if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0)
+-            grub_net_search_configfile (config);
++	      grub_enter_normal_mode (config);
++	      grub_free (config);
++	      config = NULL;
++	    }
+ 
+-	  grub_enter_normal_mode (config);
+-	  grub_free (config);
++	  if (!config)
++	    {
++	      config = grub_xasprintf ("%s/grub.cfg", prefix);
++	      if (config)
++		{
++		  grub_file_t file;
++
++		  file = grub_file_open (config);
++		  if (file)
++		    {
++		      grub_file_close (file);
++		      grub_enter_normal_mode (config);
++		    }
++		  else
++		    {
++		      /*  Ignore all errors.  */
++		      grub_errno = 0;
++		    }
++		  grub_free (config);
++		}
++	    }
+ 	}
+       else
+-	grub_enter_normal_mode (0);
++	{
++	  grub_enter_normal_mode (0);
++	}
+     }
+   else
+     grub_enter_normal_mode (argv[0]);
+-- 
+1.8.5.3
+
diff --git a/0105-trim-arp-packets-with-abnormal-size.patch b/0105-trim-arp-packets-with-abnormal-size.patch
new file mode 100644
index 0000000..aad519d
--- /dev/null
+++ b/0105-trim-arp-packets-with-abnormal-size.patch
@@ -0,0 +1,31 @@
+From 876f1ca10cf9c59b32ebb5184901eb44559f1afe Mon Sep 17 00:00:00 2001
+From: Paulo Flabiano Smorigo <pfsmorigo at br.ibm.com>
+Date: Wed, 5 Feb 2014 09:42:42 -0200
+Subject: [PATCH 105/112] trim arp packets with abnormal size
+
+GRUB uses arp request to create the arp response. If the incoming packet
+is foobared, GRUB needs to trim the arp response packet before sending it.
+---
+ grub-core/net/arp.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/grub-core/net/arp.c b/grub-core/net/arp.c
+index d62d0cc..77581f4 100644
+--- a/grub-core/net/arp.c
++++ b/grub-core/net/arp.c
+@@ -162,6 +162,12 @@ grub_net_arp_receive (struct grub_net_buff *nb,
+     if (grub_net_addr_cmp (&inf->address, &target_addr) == 0
+ 	&& grub_be_to_cpu16 (arp_header->op) == ARP_REQUEST)
+       {
++        if ((nb->tail - nb->data) > 50)
++          {
++            grub_dprintf ("net", "arp packet with abnormal size (%ld bytes).\n",
++                         nb->tail - nb->data);
++            nb->tail = nb->data + 50;
++          }
+ 	grub_net_link_level_address_t target;
+ 	/* We've already checked that pln is either 4 or 16.  */
+ 	char tmp[16];
+-- 
+1.8.5.3
+
diff --git a/0106-Fix-convert-function-to-support-NVMe-devices.patch b/0106-Fix-convert-function-to-support-NVMe-devices.patch
new file mode 100644
index 0000000..62a43aa
--- /dev/null
+++ b/0106-Fix-convert-function-to-support-NVMe-devices.patch
@@ -0,0 +1,59 @@
+From 0389c4140e8b359323e3d614032b0e55142ef337 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Tue, 18 Feb 2014 11:34:00 -0500
+Subject: [PATCH 106/112] Fix convert function to support NVMe devices
+
+This is adapted from the patch at
+https://bugzilla.redhat.com/show_bug.cgi?id=1019660 , which is against
+the now very old version of convert_system_partition_to_system_disk().
+
+As such, it certainly not the right thing for upstream, but should
+function for now.
+
+Resolves: rhbz#1019660
+
+Signed-off-by: Peter Jones <grub2-owner at fedoraproject.org>
+---
+ util/getroot.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/util/getroot.c b/util/getroot.c
+index 3958105..e700610 100644
+--- a/util/getroot.c
++++ b/util/getroot.c
+@@ -152,6 +152,7 @@ convert_system_partition_to_system_disk (const char *os_dev, int *is_part)
+ {
+ #if GRUB_UTIL_FD_STAT_IS_FUNCTIONAL
+   struct stat st;
++  char *path = xmalloc(PATH_MAX);
+ 
+   if (stat (os_dev, &st) < 0)
+     {
+@@ -164,6 +165,24 @@ convert_system_partition_to_system_disk (const char *os_dev, int *is_part)
+ 
+   *is_part = 0;
+ 
++  if (realpath(os_dev, path))
++    {
++      if ((strncmp ("/dev/nvme", path, 9) == 0))
++	{
++	  char *p = path + 5;
++	  p = strchr(p, 'p');
++	  if (p)
++	    {
++	      *is_part = 1;
++	      *p = '\0';
++	    }
++	  return path;
++	}
++    }
++
++  grub_free (path);
++  *is_part = 0;
++
+   if (grub_util_device_is_mapped_stat (&st))
+     return grub_util_devmapper_part_to_disk (&st, is_part, os_dev);
+ 
+-- 
+1.8.5.3
+
diff --git a/0107-Fix-bad-test-on-GRUB_DISABLE_SUBMENU.patch b/0107-Fix-bad-test-on-GRUB_DISABLE_SUBMENU.patch
new file mode 100644
index 0000000..3f636db
--- /dev/null
+++ b/0107-Fix-bad-test-on-GRUB_DISABLE_SUBMENU.patch
@@ -0,0 +1,37 @@
+From 958c24780d09d0f08869aee320db830634269911 Mon Sep 17 00:00:00 2001
+From: Prarit Bhargava <prarit at redhat.com>
+Date: Wed, 12 Mar 2014 10:58:16 -0400
+Subject: [PATCH 107/112] Fix bad test on GRUB_DISABLE_SUBMENU.
+
+The file /etc/grub.d/10_linux does
+
+if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+
+when it should do
+
+if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
+
+which results in submenus in /boot/grub2/grub.cfg when
+GRUB_DISABLE_SUBMENU="yes".
+
+Resolves: rhbz#1063414
+---
+ util/grub.d/10_linux.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index 136abd7..3f799e9 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -255,7 +255,7 @@ while [ "x$list" != "x" ] ; do
+     linux_root_device_thisversion=${GRUB_DEVICE}
+   fi
+ 
+-  if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
++  if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
+     linux_entry "${OS}" "${version}" simple \
+     "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+ 
+-- 
+1.8.5.3
+
diff --git a/0108-Switch-to-use-APM-Mustang-device-tree-for-hardware-t.patch b/0108-Switch-to-use-APM-Mustang-device-tree-for-hardware-t.patch
new file mode 100644
index 0000000..dba3173
--- /dev/null
+++ b/0108-Switch-to-use-APM-Mustang-device-tree-for-hardware-t.patch
@@ -0,0 +1,29 @@
+From 9266ee449882452a32f8cfd0d9ef590ca8c8851c Mon Sep 17 00:00:00 2001
+From: Fedora Ninjas <grub2-owner at fedoraproject.org>
+Date: Mon, 10 Feb 2014 16:13:10 -0500
+Subject: [PATCH 108/112] Switch to use APM Mustang device tree, for hardware
+ testing.
+
+Signed-off-by: David A. Marlin <d.marlin at redhat.com>
+---
+ util/grub.d/10_linux.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index 3f799e9..2639511 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -228,8 +228,8 @@ while [ "x$list" != "x" ] ; do
+ 
+   fdt=
+   for i in "dtb-${version}" "dtb-${alt_version}"; do
+-    if test -e "${dirname}/${i}/foundation-v8.dtb" ; then
+-      fdt="${i}/foundation-v8.dtb"
++    if test -e "${dirname}/${i}/apm-mustang.dtb" ; then
++      fdt="${i}/apm-mustang.dtb"
+       break
+     fi
+   done
+-- 
+1.8.5.3
+
diff --git a/0109-Use-the-default-device-tree-from-the-grub-default-fi.patch b/0109-Use-the-default-device-tree-from-the-grub-default-fi.patch
new file mode 100644
index 0000000..048e3df
--- /dev/null
+++ b/0109-Use-the-default-device-tree-from-the-grub-default-fi.patch
@@ -0,0 +1,46 @@
+From 3d0e76048d0c50fb3f02fbd27f7bf52fbf8ca2c4 Mon Sep 17 00:00:00 2001
+From: Fedora Ninjas <grub2-owner at fedoraproject.org>
+Date: Wed, 12 Feb 2014 14:54:04 -0500
+Subject: [PATCH 109/112] Use the default device tree from the grub default
+ file
+
+instead of hardcoding a value.
+
+Signed-off-by: David A. Marlin <dmarlin at redhat.com>
+---
+ util/grub-mkconfig.in   | 3 ++-
+ util/grub.d/10_linux.in | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
+index b00f9e6..beb22de 100644
+--- a/util/grub-mkconfig.in
++++ b/util/grub-mkconfig.in
+@@ -224,7 +224,8 @@ export GRUB_DEFAULT \
+   GRUB_ENABLE_CRYPTODISK \
+   GRUB_BADRAM \
+   GRUB_OS_PROBER_SKIP_LIST \
+-  GRUB_DISABLE_SUBMENU
++  GRUB_DISABLE_SUBMENU \
++  GRUB_DEFAULT_DTB
+ 
+ if test "x${grub_cfg}" != "x"; then
+   rm -f "${grub_cfg}.new"
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index 2639511..6480cd6 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -228,8 +228,8 @@ while [ "x$list" != "x" ] ; do
+ 
+   fdt=
+   for i in "dtb-${version}" "dtb-${alt_version}"; do
+-    if test -e "${dirname}/${i}/apm-mustang.dtb" ; then
+-      fdt="${i}/apm-mustang.dtb"
++    if test -f "${dirname}/${i}/${GRUB_DEFAULT_DTB}" ; then
++      fdt="${i}/${GRUB_DEFAULT_DTB}"
+       break
+     fi
+   done
+-- 
+1.8.5.3
+
diff --git a/0110-reopen-SNP-protocol-for-exclusive-use-by-grub.patch b/0110-reopen-SNP-protocol-for-exclusive-use-by-grub.patch
new file mode 100644
index 0000000..350055a
--- /dev/null
+++ b/0110-reopen-SNP-protocol-for-exclusive-use-by-grub.patch
@@ -0,0 +1,46 @@
+From 42d3848d0162ea8f824d63d57afb43b8b0a96860 Mon Sep 17 00:00:00 2001
+From: Fedora Ninjas <grub2-owner at fedoraproject.org>
+Date: Sat, 15 Feb 2014 15:10:22 -0500
+Subject: [PATCH 110/112] reopen SNP protocol for exclusive use by grub
+
+---
+ grub-core/net/drivers/efi/efinet.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/grub-core/net/drivers/efi/efinet.c b/grub-core/net/drivers/efi/efinet.c
+index 2b344d6..a6e4c79 100644
+--- a/grub-core/net/drivers/efi/efinet.c
++++ b/grub-core/net/drivers/efi/efinet.c
+@@ -223,6 +223,7 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
+ {
+   struct grub_net_card *card;
+   grub_efi_device_path_t *dp;
++  grub_efi_simple_network_t *net;
+ 
+   dp = grub_efi_get_device_path (hnd);
+   if (! dp)
+@@ -250,6 +251,21 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
+ 				    &pxe_mode->dhcp_ack,
+ 				    sizeof (pxe_mode->dhcp_ack),
+ 				    1, device, path);
++    net = grub_efi_open_protocol (card->efi_handle, &net_io_guid,
++				  GRUB_EFI_OPEN_PROTOCOL_BY_EXCLUSIVE);
++    if (net) {
++      if (net->mode->state == GRUB_EFI_NETWORK_STOPPED
++	  && efi_call_1 (net->start, net) != GRUB_EFI_SUCCESS)
++	continue;
++
++      if (net->mode->state == GRUB_EFI_NETWORK_STOPPED)
++	continue;
++
++      if (net->mode->state == GRUB_EFI_NETWORK_STARTED
++	  && efi_call_3 (net->initialize, net, 0, 0) != GRUB_EFI_SUCCESS)
++	continue;
++      card->efi_net = net;
++    }
+     return;
+   }
+ }
+-- 
+1.8.5.3
+
diff --git a/0111-Reduce-timer-event-frequency-by-10.patch b/0111-Reduce-timer-event-frequency-by-10.patch
new file mode 100644
index 0000000..2882ea5
--- /dev/null
+++ b/0111-Reduce-timer-event-frequency-by-10.patch
@@ -0,0 +1,40 @@
+From 3cedd7c7beb7244ef9bd0e52ca7e3dcef0f206ff Mon Sep 17 00:00:00 2001
+From: Mark Salter <msalter at redhat.com>
+Date: Thu, 20 Feb 2014 12:54:52 -0500
+Subject: [PATCH 111/112] Reduce timer event frequency by 10
+
+Timer event to keep grub msec counter was running at 1000HZ. This was too
+fast for UEFI timer driver and resulted in a 10x slowdown in grub time
+versus wallclock. Reduce the timer event frequency and increase tick
+increment accordingly to keep better time.
+
+Signed-off-by: Mark Salter <msalter at redhat.com>
+---
+ grub-core/kern/arm/efi/init.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/grub-core/kern/arm/efi/init.c b/grub-core/kern/arm/efi/init.c
+index a6ae034..0c17d83 100644
+--- a/grub-core/kern/arm/efi/init.c
++++ b/grub-core/kern/arm/efi/init.c
+@@ -38,7 +38,7 @@ static void
+ increment_timer (grub_efi_event_t event __attribute__ ((unused)),
+ 		 void *context __attribute__ ((unused)))
+ {
+-  tmr++;
++  tmr += 10;
+ }
+ 
+ void
+@@ -52,7 +52,7 @@ grub_machine_init (void)
+ 
+   efi_call_5 (b->create_event, GRUB_EFI_EVT_TIMER | GRUB_EFI_EVT_NOTIFY_SIGNAL,
+ 	      GRUB_EFI_TPL_CALLBACK, increment_timer, NULL, &tmr_evt);
+-  efi_call_3 (b->set_timer, tmr_evt, GRUB_EFI_TIMER_PERIODIC, 10000);
++  efi_call_3 (b->set_timer, tmr_evt, GRUB_EFI_TIMER_PERIODIC, 100000);
+ 
+   grub_install_get_time_ms (grub_efi_get_time_ms);
+ }
+-- 
+1.8.5.3
+
diff --git a/0112-always-return-error-to-UEFI.patch b/0112-always-return-error-to-UEFI.patch
new file mode 100644
index 0000000..523f591
--- /dev/null
+++ b/0112-always-return-error-to-UEFI.patch
@@ -0,0 +1,25 @@
+From 3349ad8d2c349541a42867afd389cdbe0d413dd6 Mon Sep 17 00:00:00 2001
+From: Fedora Ninjas <grub2-owner at fedoraproject.org>
+Date: Wed, 26 Feb 2014 21:49:12 -0500
+Subject: [PATCH 112/112] always return error to UEFI
+
+---
+ grub-core/kern/efi/efi.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
+index cd839cc..1a8dba5 100644
+--- a/grub-core/kern/efi/efi.c
++++ b/grub-core/kern/efi/efi.c
+@@ -158,7 +158,7 @@ grub_exit (void)
+ {
+   grub_efi_fini ();
+   efi_call_4 (grub_efi_system_table->boot_services->exit,
+-              grub_efi_image_handle, GRUB_EFI_SUCCESS, 0, 0);
++              grub_efi_image_handle, GRUB_EFI_LOAD_ERROR, 0, 0);
+   for (;;) ;
+ }
+ 
+-- 
+1.8.5.3
+
diff --git a/grub2.spec b/grub2.spec
index 64faeb1..56a6058 100644
--- a/grub2.spec
+++ b/grub2.spec
@@ -47,7 +47,7 @@
 Name:           grub2
 Epoch:          1
 Version:        2.02
-Release:        0.2%{?dist}
+Release:        0.3%{?dist}
 Summary:        Bootloader with support for Linux, Multiboot and more
 
 Group:          System Environment/Base
@@ -59,46 +59,122 @@ Source0:        ftp://alpha.gnu.org/gnu/grub/grub-%{tarversion}.tar.xz
 Source4:	http://unifoundry.com/unifont-5.1.20080820.pcf.gz
 Source5:	theme.tar.bz2
 #Source6:	grub-cd.cfg
-Patch0001: 0001-Migrate-PPC-from-Yaboot-to-Grub2.patch
-Patch0002: 0002-Add-fw_path-variable-revised.patch
-Patch0003: 0003-Add-support-for-linuxefi.patch
-Patch0004: 0004-Use-linuxefi-and-initrdefi-where-appropriate.patch
-Patch0005: 0005-Don-t-allow-insmod-when-secure-boot-is-enabled.patch
-Patch0006: 0006-Pass-x-hex-hex-straight-through-unmolested.patch
-Patch0007: 0007-Fix-crash-on-http.patch
-Patch0008: 0008-IBM-client-architecture-CAS-reboot-support.patch
-Patch0009: 0009-Add-vlan-tag-support.patch
-Patch0010: 0010-Add-X-option-to-printf-functions.patch
-Patch0011: 0011-DHCP-client-ID-and-UUID-options-added.patch
-Patch0012: 0012-Search-for-specific-config-file-for-netboot.patch
-Patch0013: 0013-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch
-Patch0014: 0014-Move-bash-completion-script-922997.patch
-Patch0015: 0015-for-ppc-reset-console-display-attr-when-clear-screen.patch
-Patch0016: 0016-Don-t-write-messages-to-the-screen.patch
-Patch0017: 0017-Don-t-print-GNU-GRUB-header.patch
-Patch0018: 0018-Don-t-add-to-highlighted-row.patch
-Patch0019: 0019-Don-t-add-to-highlighted-row.patch
-Patch0020: 0020-Message-string-cleanups.patch
-Patch0021: 0021-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch
-Patch0022: 0022-Use-the-correct-indentation-for-the-term-help-text.patch
-Patch0023: 0023-Indent-menu-entries.patch
-Patch0024: 0024-Fix-margins.patch
-Patch0025: 0025-Add-support-for-UEFI-operating-systems-returned-by-o.patch
-Patch0026: 0026-Disable-GRUB-video-support-for-IBM-power-machines.patch
-Patch0027: 0027-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch
-Patch0028: 0028-Use-linux16-when-appropriate-880840.patch
-Patch0029: 0029-Enable-pager-by-default.-985860.patch
-Patch0030: 0030-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch
-Patch0031: 0031-Don-t-say-GNU-Linux-in-generated-menus.patch
-Patch0032: 0032-Don-t-draw-a-border-around-the-menu.patch
-Patch0033: 0033-Use-the-standard-margin-for-the-timeout-string.patch
-Patch0034: 0034-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch
-Patch0035: 0035-Add-.eh_frame-to-list-of-relocations-stripped.patch
-Patch0036: 0036-arm64-set-correct-length-of-device-path-end-entry.patch
-Patch0037: 0037-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
+
+Patch0001: 0001-fix-EFI-detection-on-Windows.patch
+Patch0002: 0002-grub-core-kern-arm-cache_armv6.S-Remove-.arch-direct.patch
+Patch0003: 0003-NEWS-First-draft-of-2.02-entry.patch
+Patch0004: 0004-remove-unused-error.h-from-kern-emu-misc.c.patch
+Patch0005: 0005-Don-t-abort-on-unavailable-coreboot-tables-if-not-ru.patch
+Patch0006: 0006-NEWS-Add-few-missing-entries.-Correct-existing-ones.patch
+Patch0007: 0007-strip-.eh_frame-section-from-arm64-efi-kernel.patch
+Patch0008: 0008-use-grub-boot-aa64.efi-for-boot-images-on-AArch64.patch
+Patch0009: 0009-fix-32-bit-compilation-on-MinGW-w64.patch
+Patch0010: 0010-Change-grub-mkrescue-to-use-bootaa64.efi-too.patch
+Patch0011: 0011-arm64-set-correct-length-of-device-path-end-entry.patch
+Patch0012: 0012-Makefile.util.def-grub-macbless-Change-mansection-to.patch
+Patch0013: 0013-add-part_apple-to-EFI-rescue-image-to-fix-missing-pr.patch
+Patch0014: 0014-freebsd-hostdisk.c-is-only-ever-compiled-on-FreeBSD.patch
+Patch0015: 0015-Prefer-more-portable-test-1-constructs.patch
+Patch0016: 0016-NEWS-Add-few-missing-entries.patch
+Patch0017: 0017-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch
+Patch0018: 0018-util-grub-mount.c-Extend-GCC-warning-workaround-to-g.patch
+Patch0019: 0019-reintroduce-BUILD_LDFLAGS-for-the-cross-compile-case.patch
+Patch0020: 0020-grub-core-term-terminfo.c-Recognize-keys-F1-F12.patch
+Patch0021: 0021-Fix-ChangeLog-date.patch
+Patch0022: 0022-Use-_W64-to-detect-MinGW-W64-32-instead-of-_FILE_OFF.patch
+Patch0023: 0023-add-BUILD_EXEEXT-support-to-fix-make-clean-on-Window.patch
+Patch0024: 0024-fix-include-loop-on-MinGW-due-to-libintl.h-pulling-s.patch
+Patch0025: 0025-grub-core-commands-macbless.c-Rename-FILE-and-DIR-to.patch
+Patch0026: 0026-Makefile.util.def-Link-grub-ofpathname-with-zfs-libs.patch
+Patch0027: 0027-Makefile.am-default_payload.elf-Add-modules.patch
+Patch0028: 0028-fix-removal-of-cpu-machine-links-on-mingw-msys.patch
+Patch0029: 0029-grub-core-normal-main.c-read_config_file-Buffer-conf.patch
+Patch0030: 0030-util-grub-install.c-Fix-a-typo.patch
+Patch0031: 0031-use-MODULE_FILES-for-genemuinit-instead-of-MOD_FILES.patch
+Patch0032: 0032-Ignore-EPERM-when-modifying-kern.geom.debugflags.patch
+Patch0033: 0033-change-stop-condition-to-avoid-infinite-loops.patch
+Patch0034: 0034-increase-network-try-interval-gradually.patch
+Patch0035: 0035-look-for-DejaVu-also-in-usr-share-fonts-truetype.patch
+Patch0036: 0036-Show-detected-path-to-DejaVuSans-in-configure-summar.patch
+Patch0037: 0037-add-GRUB_WINDOWS_EXTRA_DIST-to-allow-shipping-runtim.patch
+Patch0038: 0038-util-grub-install.c-write_to_disk-Add-an-info-messag.patch
+Patch0039: 0039-util-grub-install.c-List-available-targets.patch
+Patch0040: 0040-Fix-several-translatable-strings.patch
+Patch0041: 0041-do-not-set-default-prefix-in-grub-mkimage.patch
+Patch0042: 0042-fix-Mingw-W64-32-cross-compile-failure-due-to-printf.patch
+Patch0043: 0043-grub-core-term-serial.c-grub_serial_register-Fix-inv.patch
+Patch0044: 0044-grub-install-support-for-partitioned-partx-loop-devi.patch
+Patch0045: 0045-grub-core-term-at_keyboard.c-Tolerate-missing-keyboa.patch
+Patch0046: 0046-grub-core-disk-ahci.c-Do-not-enable-I-O-decoding-and.patch
+Patch0047: 0047-grub-core-disk-ahci.c-Allocate-and-clean-space-for-a.patch
+Patch0048: 0048-grub-core-disk-ahci.c-Add-safety-cleanups.patch
+Patch0049: 0049-grub-core-disk-ahci.c-Properly-handle-transactions-w.patch
+Patch0050: 0050-grub-core-disk-ahci.c-Increase-timeout.-Some-SSDs-ta.patch
+Patch0051: 0051-util-grub-mkfont.c-Build-fix-for-argp.h-with-older-g.patch
+Patch0052: 0052-util-grub-mkrescue.c-Build-fix-for-argp.h-with-older.patch
+Patch0053: 0053-add-grub_env_set_net_property-function.patch
+Patch0054: 0054-add-bootpath-parser-for-open-firmware.patch
+Patch0055: 0055-grub-core-disk-ahci.c-Ignore-NPORTS-field-and-rely-o.patch
+Patch0056: 0056-grub-core-kern-i386-coreboot-mmap.c-Filter-out-0xa00.patch
+Patch0057: 0057-grub-core-loader-i386-multiboot_mbi.c-grub_multiboot.patch
+Patch0058: 0058-grub-core-mmap-i386-uppermem.c-lower_hook-COREBOOT-I.patch
+Patch0059: 0059-grub-core-kern-i386-pc-mmap.c-Fallback-to-EISA-memor.patch
+Patch0060: 0060-include-grub-i386-openbsd_bootarg.h-Add-addr-and-fre.patch
+Patch0061: 0061-Migrate-PPC-from-Yaboot-to-Grub2.patch
+Patch0062: 0062-Add-fw_path-variable-revised.patch
+Patch0063: 0063-Add-support-for-linuxefi.patch
+Patch0064: 0064-Use-linuxefi-and-initrdefi-where-appropriate.patch
+Patch0065: 0065-Don-t-allow-insmod-when-secure-boot-is-enabled.patch
+Patch0066: 0066-Pass-x-hex-hex-straight-through-unmolested.patch
+Patch0067: 0067-Fix-crash-on-http.patch
+Patch0068: 0068-IBM-client-architecture-CAS-reboot-support.patch
+Patch0069: 0069-Add-vlan-tag-support.patch
+Patch0070: 0070-Add-X-option-to-printf-functions.patch
+Patch0071: 0071-DHCP-client-ID-and-UUID-options-added.patch
+Patch0072: 0072-Search-for-specific-config-file-for-netboot.patch
+Patch0073: 0073-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch
+Patch0074: 0074-Move-bash-completion-script-922997.patch
+Patch0075: 0075-for-ppc-reset-console-display-attr-when-clear-screen.patch
+Patch0076: 0076-Don-t-write-messages-to-the-screen.patch
+Patch0077: 0077-Don-t-print-GNU-GRUB-header.patch
+Patch0078: 0078-Don-t-add-to-highlighted-row.patch
+Patch0079: 0079-Don-t-add-to-highlighted-row.patch
+Patch0080: 0080-Message-string-cleanups.patch
+Patch0081: 0081-Fix-border-spacing-now-that-we-aren-t-displaying-it.patch
+Patch0082: 0082-Use-the-correct-indentation-for-the-term-help-text.patch
+Patch0083: 0083-Indent-menu-entries.patch
+Patch0084: 0084-Fix-margins.patch
+Patch0085: 0085-Add-support-for-UEFI-operating-systems-returned-by-o.patch
+Patch0086: 0086-Disable-GRUB-video-support-for-IBM-power-machines.patch
+Patch0087: 0087-Use-2-instead-of-1-for-our-right-hand-margin-so-line.patch
+Patch0088: 0088-Use-linux16-when-appropriate-880840.patch
+Patch0089: 0089-Enable-pager-by-default.-985860.patch
+Patch0090: 0090-F10-doesn-t-work-on-serial-so-don-t-tell-the-user-to.patch
+Patch0091: 0091-Don-t-say-GNU-Linux-in-generated-menus.patch
+Patch0092: 0092-Don-t-draw-a-border-around-the-menu.patch
+Patch0093: 0093-Use-the-standard-margin-for-the-timeout-string.patch
+Patch0094: 0094-Fix-grub_script_execute_sourcecode-usage-on-ppc.patch
+Patch0095: 0095-Add-.eh_frame-to-list-of-relocations-stripped.patch
+Patch0096: 0096-Make-10_linux-work-with-our-changes-for-linux16-and-.patch
+Patch0097: 0097-Don-t-print-during-fdt-loading-method.patch
+Patch0098: 0098-Honor-a-symlink-when-generating-configuration-by-gru.patch
+Patch0099: 0099-Don-t-require-a-password-to-boot-entries-generated-b.patch
+Patch0100: 0100-Don-t-emit-Booting-.-message.patch
+Patch0101: 0101-Make-CTRL-and-ALT-keys-work-as-expected-on-EFI-syste.patch
+Patch0102: 0102-May-as-well-try-it.patch
+Patch0103: 0103-use-fw_path-prefix-when-fallback-searching-for-grub-.patch
+Patch0104: 0104-Try-mac-guid-etc-before-grub.cfg-on-tftp-config-file.patch
+Patch0105: 0105-trim-arp-packets-with-abnormal-size.patch
+Patch0106: 0106-Fix-convert-function-to-support-NVMe-devices.patch
+Patch0107: 0107-Fix-bad-test-on-GRUB_DISABLE_SUBMENU.patch
+Patch0108: 0108-Switch-to-use-APM-Mustang-device-tree-for-hardware-t.patch
+Patch0109: 0109-Use-the-default-device-tree-from-the-grub-default-fi.patch
+Patch0110: 0110-reopen-SNP-protocol-for-exclusive-use-by-grub.patch
+Patch0111: 0111-Reduce-timer-event-frequency-by-10.patch
+Patch0112: 0112-always-return-error-to-UEFI.patch
 
 BuildRequires:  flex bison binutils python
-BuildRequires:  ncurses-devel xz-devel
+BuildRequires:  ncurses-devel xz-devel bzip2-devel
 BuildRequires:  freetype-devel libusb-devel
 %ifarch %{sparc} x86_64 aarch64
 # sparc builds need 64 bit glibc-devel - also for 32 bit userland
@@ -524,6 +600,9 @@ fi
 %{_datarootdir}/grub/themes/
 
 %changelog
+* Thu Mar 13 2014 Peter Jones <pjones at redhat.com> - 2.02-0.3
+- Merge in RHEL 7 changes and ARM works in progress.
+
 * Mon Jan 06 2014 Peter Jones <pjones at redhat.com> - 2.02-0.2
 - Update to grub-2.02~beta2
 


More information about the scm-commits mailing list