summaryrefslogtreecommitdiffstats
path: root/debian/patches/vt-handoff.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/vt-handoff.patch')
-rw-r--r--debian/patches/vt-handoff.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/debian/patches/vt-handoff.patch b/debian/patches/vt-handoff.patch
new file mode 100644
index 0000000..153c58d
--- /dev/null
+++ b/debian/patches/vt-handoff.patch
@@ -0,0 +1,101 @@
+From 4336395ce7d82827b466a0088e1b08d42ef24ae8 Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson@ubuntu.com>
+Date: Mon, 13 Jan 2014 12:13:30 +0000
+Subject: Add configure option to use vt.handoff=7
+
+This is used for non-recovery Linux entries only; it enables
+flicker-free booting if gfxpayload=keep is in use and a suitable kernel
+is present.
+
+Author: Andy Whitcroft <apw@canonical.com>
+Forwarded: not-needed
+Last-Update: 2013-12-25
+
+Patch-Name: vt-handoff.patch
+---
+ configure.ac | 11 +++++++++++
+ util/grub.d/10_linux.in | 28 +++++++++++++++++++++++++++-
+ 2 files changed, 38 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 947fd529f..e11df6bc5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1948,6 +1948,17 @@ else
+ fi
+ AC_SUBST([GFXPAYLOAD_DYNAMIC])
+
++AC_ARG_ENABLE([vt-handoff],
++ [AS_HELP_STRING([--enable-vt-handoff],
++ [use Linux vt.handoff option for flicker-free booting (default=no)])],
++ [], [enable_vt_handoff=no])
++if test x"$enable_vt_handoff" = xyes ; then
++ VT_HANDOFF=1
++else
++ VT_HANDOFF=0
++fi
++AC_SUBST([VT_HANDOFF])
++
+ LIBS=""
+
+ AC_SUBST([FONT_SOURCE])
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index d46d7852b..64204c216 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -24,6 +24,7 @@ ubuntu_recovery="@UBUNTU_RECOVERY@"
+ quiet_boot="@QUIET_BOOT@"
+ quick_boot="@QUICK_BOOT@"
+ gfxpayload_dynamic="@GFXPAYLOAD_DYNAMIC@"
++vt_handoff="@VT_HANDOFF@"
+
+ . "$pkgdatadir/grub-mkconfig_lib"
+
+@@ -104,6 +105,14 @@ if [ "$ubuntu_recovery" = 1 ]; then
+ GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
+ fi
+
++if [ "$vt_handoff" = 1 ]; then
++ for word in $GRUB_CMDLINE_LINUX_DEFAULT; do
++ if [ "$word" = splash ]; then
++ GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff"
++ fi
++ done
++fi
++
+ linux_entry ()
+ {
+ os="$1"
+@@ -149,7 +158,7 @@ linux_entry ()
+ fi
+ if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
+ ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
+- echo " set gfxpayload=\$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
++ echo " gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
+ fi
+
+ echo " insmod gzio" | sed "s/^/$submenu_indentation/"
+@@ -228,6 +237,23 @@ prepare_root_cache=
+ boot_device_id=
+ title_correction_code=
+
++cat << 'EOF'
++function gfxmode {
++ set gfxpayload="${1}"
++EOF
++if [ "$vt_handoff" = 1 ]; then
++ cat << 'EOF'
++ if [ "${1}" = "keep" ]; then
++ set vt_handoff=vt.handoff=7
++ else
++ set vt_handoff=
++ fi
++EOF
++fi
++cat << EOF
++}
++EOF
++
+ # Use ELILO's generic "efifb" when it's known to be available.
+ # FIXME: We need an interface to select vesafb in case efifb can't be used.
+ if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then