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