On Mon, Apr 13, 2009 at 04:16:57PM +0200, Robert Millan wrote:
> > The default VGA mode is now GRUB_LINUX_VID_MODE_NORMAL, not the mode of
> > the kernel we tried to load before.
> 
> Ok, BUT if we're already in vesa mode, and we know it works (since we're using
> it), there's no point in wasting time only to get a worse mode.
> 
> We should just make sure subsequent calls to "linux" command override the
> previous one.

I think this should do it.  Can you confirm this works for you?

(note: this patch is intentionally missing indentation, for readability)

-- 
Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."
	* loader/i386/linux.c (grub_linux_boot): Only go back to text
	mode when `vid_mode' wasn't initialized.  Otherwise leave the
	current mode (whatever that is).
	(grub_cmd_linux): Default to `vid_mode = 0' rather than
	`GRUB_LINUX_VID_MODE_NORMAL'.

Index: loader/i386/linux.c
===================================================================
--- loader/i386/linux.c	(revision 2097)
+++ loader/i386/linux.c	(working copy)
@@ -331,12 +331,14 @@ grub_linux_boot (void)
   
   params = real_mode_mem;
 
-  if (vid_mode < GRUB_LINUX_VID_MODE_VESA_START ||
-      vid_mode >= GRUB_LINUX_VID_MODE_VESA_START +
-		  ARRAY_SIZE (linux_vesafb_modes))
-    grub_video_restore ();
-  else if (vid_mode)
+  if (vid_mode)
     {
+      if (vid_mode < GRUB_LINUX_VID_MODE_VESA_START ||
+	  vid_mode >= GRUB_LINUX_VID_MODE_VESA_START +
+	  ARRAY_SIZE (linux_vesafb_modes))
+	grub_video_restore ();
+      else
+	{
       struct linux_vesafb_mode *linux_mode;
       int depth, flags;
       
@@ -366,6 +368,7 @@ grub_linux_boot (void)
 	  return grub_errno;
 	}
     }
+    }
 
   if (! grub_linux_setup_video (params))
     params->have_vga = GRUB_VIDEO_TYPE_VLFB;
@@ -570,8 +573,7 @@ grub_cmd_linux (grub_command_t cmd __att
 	       (unsigned) real_size, (unsigned) prot_size);
 
   /* Look for memory size and video mode specified on the command line.  */
-  vid_mode = GRUB_LINUX_VID_MODE_NORMAL;
-  linux_mem_size = 0;
+  vid_mode = linux_mem_size = 0;
   for (i = 1; i < argc; i++)
     if (grub_memcmp (argv[i], "vga=", 4) == 0)
       {
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to