b4e6bbb
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
b4e6bbb
Subject: Don't accept text modes on EFI when booting Linux.
b4e6bbb
Date: 2011-08-16 16:11:10 +0200
b4e6bbb
b4e6bbb
------------------------------------------------------------
b4e6bbb
revno: 3402
b4e6bbb
committer: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
b4e6bbb
branch nick: grub
b4e6bbb
timestamp: Tue 2011-08-16 16:11:10 +0200
b4e6bbb
message:
b4e6bbb
  	Don't accept text modes on EFI when booting Linux.
b4e6bbb
  
b4e6bbb
  	* grub-core/loader/i386/linux.c (ACCEPTS_PURE_TEXT): New define.
b4e6bbb
  	(grub_linux_boot) [!ACCEPTS_PURE_TEXT]: Restrict to graphics modes.
b4e6bbb
diff:
b4e6bbb
b4e6bbb
=== modified file 'grub-core/loader/i386/linux.c'
b4e6bbb
--- a/grub-core/loader/i386/linux.c	2011-05-18 07:56:33 +0000
b4e6bbb
+++ b/grub-core/loader/i386/linux.c	2011-08-16 14:11:10 +0000
b4e6bbb
@@ -45,15 +45,18 @@
b4e6bbb
 #include <grub/efi/efi.h>
b4e6bbb
 #define HAS_VGA_TEXT 0
b4e6bbb
 #define DEFAULT_VIDEO_MODE "auto"
b4e6bbb
+#define ACCEPTS_PURE_TEXT 0
b4e6bbb
 #elif defined (GRUB_MACHINE_IEEE1275)
b4e6bbb
 #include <grub/ieee1275/ieee1275.h>
b4e6bbb
 #define HAS_VGA_TEXT 0
b4e6bbb
 #define DEFAULT_VIDEO_MODE "text"
b4e6bbb
+#define ACCEPTS_PURE_TEXT 1
b4e6bbb
 #else
b4e6bbb
 #include <grub/i386/pc/vbe.h>
b4e6bbb
 #include <grub/i386/pc/console.h>
b4e6bbb
 #define HAS_VGA_TEXT 1
b4e6bbb
 #define DEFAULT_VIDEO_MODE "text"
b4e6bbb
+#define ACCEPTS_PURE_TEXT 1
b4e6bbb
 #endif
b4e6bbb
 
b4e6bbb
 #define GRUB_LINUX_CL_OFFSET		0x1000
b4e6bbb
@@ -483,12 +486,22 @@
b4e6bbb
       tmp = grub_xasprintf ("%s;" DEFAULT_VIDEO_MODE, modevar);
b4e6bbb
       if (! tmp)
b4e6bbb
 	return grub_errno;
b4e6bbb
+#if ACCEPTS_PURE_TEXT
b4e6bbb
       err = grub_video_set_mode (tmp, 0, 0);
b4e6bbb
+#else
b4e6bbb
+      err = grub_video_set_mode (tmp, GRUB_VIDEO_MODE_TYPE_PURE_TEXT, 0);
b4e6bbb
+#endif
b4e6bbb
       grub_free (tmp);
b4e6bbb
     }
b4e6bbb
   else
b4e6bbb
-    err = grub_video_set_mode (DEFAULT_VIDEO_MODE, 0, 0);
b4e6bbb
-
b4e6bbb
+    {
b4e6bbb
+#if ACCEPTS_PURE_TEXT
b4e6bbb
+      err = grub_video_set_mode (DEFAULT_VIDEO_MODE, 0, 0);
b4e6bbb
+#else
b4e6bbb
+      err = grub_video_set_mode (DEFAULT_VIDEO_MODE,
b4e6bbb
+				 GRUB_VIDEO_MODE_TYPE_PURE_TEXT, 0);
b4e6bbb
+#endif
b4e6bbb
+    }
b4e6bbb
   if (err)
b4e6bbb
     {
b4e6bbb
       grub_print_error ();