+2011-03-24 Colin Watson <cjwatson@ubuntu.com>
+
+ * grub-core/video/fb/video_fb.c (grub_video_fb_get_info_and_fini):
+ Switch back to page zero before loading a kernel, since some kernel
+ drivers expect that.
+ Thanks to: Felix Kuehling.
+
2011-03-24 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/lib/relocator.c (grub_relocator_alloc_chunk_addr)
{
grub_memcpy (mode_info, &(framebuffer.front_target->mode_info),
sizeof (*mode_info));
+
+ /* We are about to load a kernel. Switch back to page zero, since some
+ kernel drivers expect that. */
+ if ((mode_info->mode_type & GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED)
+ && framebuffer.set_page && framebuffer.displayed_page != 0)
+ {
+ /* Ensure both pages are exactly in sync. */
+ grub_memcpy (framebuffer.back_target->data,
+ framebuffer.front_target->data,
+ framebuffer.back_target->mode_info.pitch
+ * framebuffer.back_target->mode_info.height);
+ grub_video_swap_buffers ();
+ }
+
*framebuf = framebuffer.front_target->data;
grub_video_fb_fini ();