These patches might be helpful in case someone runs in trouble with the
new loader.  They instrument Linux to obtain a screen_info structure dump,
which can be used to compare the output of "linux16" vs "linux".

-- 
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."
diff --git a/arch/x86/boot/main.c b/arch/x86/boot/main.c
index 140172b..8cb5195 100644
--- a/arch/x86/boot/main.c
+++ b/arch/x86/boot/main.c
@@ -172,6 +172,30 @@ void main(void)
 	if (cmdline_find_option_bool("quiet"))
 		boot_params.hdr.loadflags |= QUIET_FLAG;
 
+	puts ("screen_info dump:\n");
+	printf ("orig_x = 0x%x, orig_y =  0x%x\n", boot_params.screen_info.orig_x, boot_params.screen_info.orig_y);
+	printf ("ext_mem_k = 0x%x\n", boot_params.screen_info.ext_mem_k);
+	printf ("orig_video_page = 0x%x\n", boot_params.screen_info.orig_video_page);
+	printf ("orig_video_mode = 0x%x\n", boot_params.screen_info.orig_video_mode);
+	printf ("orig_video_cols = 0x%x\n", boot_params.screen_info.orig_video_cols);
+	printf ("orig_video_ega_bx = 0x%x\n", boot_params.screen_info.orig_video_ega_bx);
+	printf ("orig_video_lines = 0x%x\n", boot_params.screen_info.orig_video_lines);
+	printf ("orig_video_isVGA = 0x%x\n", boot_params.screen_info.orig_video_isVGA);
+	printf ("orig_video_points = 0x%x\n", boot_params.screen_info.orig_video_points);
+	printf ("lfb_width / lfb_height / lfb_depth = %dx%dx%d\n", boot_params.screen_info.lfb_width, boot_params.screen_info.lfb_height, boot_params.screen_info.lfb_depth);
+	printf ("lfb_base = 0x%x, lfb_size = 0x%x\n", boot_params.screen_info.lfb_base, boot_params.screen_info.lfb_size);
+	printf ("cl_magic = 0x%x, cl_offset = 0x%x\n", boot_params.screen_info.cl_magic, boot_params.screen_info.cl_offset);
+	printf ("lfb_linelength = 0x%x\n", boot_params.screen_info.lfb_linelength);
+	printf ("red_size = 0x%x, red_pos = 0x%x\n", boot_params.screen_info.red_size, boot_params.screen_info.red_pos);
+	printf ("green_size = 0x%x, green_pos = 0x%x\n", boot_params.screen_info.green_size, boot_params.screen_info.green_pos);
+	printf ("blue_size = 0x%x, blue_pos = 0x%x\n", boot_params.screen_info.blue_size, boot_params.screen_info.blue_pos);
+	printf ("rsvd_size = 0x%x, rsvd_pos = 0x%x\n", boot_params.screen_info.rsvd_size, boot_params.screen_info.rsvd_pos);
+	printf ("vesapm = 0x%x:0x%x\n", boot_params.screen_info.vesapm_seg, boot_params.screen_info.vesapm_off);
+	printf ("pages = 0x%x\n", boot_params.screen_info.pages);
+	printf ("vesa_attributes = 0x%x\n", boot_params.screen_info.vesa_attributes);
+	printf ("capabilities = 0x%x\n", boot_params.screen_info.capabilities);
+	die ();
+
 	/* Do the last things and invoke protected mode */
 	go_to_protected_mode();
 }
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c
index bd37ee1..52a27e7 100644
--- a/drivers/video/vesafb.c
+++ b/drivers/video/vesafb.c
@@ -465,6 +465,32 @@ static int __init vesafb_probe(struct platform_device *dev)
 		fb_dealloc_cmap(&info->cmap);
 		goto err;
 	}
+
+	printk(KERN_INFO "screen_info dump:\n");
+	printk(KERN_INFO "orig_x = 0x%x, orig_y =  0x%x\n", screen_info.orig_x, screen_info.orig_y);
+	printk(KERN_INFO "ext_mem_k = 0x%x\n", screen_info.ext_mem_k);
+	printk(KERN_INFO "orig_video_page = 0x%x\n", screen_info.orig_video_page);
+	printk(KERN_INFO "orig_video_mode = 0x%x\n", screen_info.orig_video_mode);
+	printk(KERN_INFO "orig_video_cols = 0x%x\n", screen_info.orig_video_cols);
+	printk(KERN_INFO "orig_video_ega_bx = 0x%x\n", screen_info.orig_video_ega_bx);
+	printk(KERN_INFO "orig_video_lines = 0x%x\n", screen_info.orig_video_lines);
+	printk(KERN_INFO "orig_video_isVGA = 0x%x\n", screen_info.orig_video_isVGA);
+	printk(KERN_INFO "orig_video_points = 0x%x\n", screen_info.orig_video_points);
+	printk(KERN_INFO "lfb_width / lfb_height / lfb_depth = %dx%dx%d\n", screen_info.lfb_width, screen_info.lfb_height, screen_info.lfb_depth);
+	printk(KERN_INFO "lfb_base = 0x%x, lfb_size = 0x%x\n", screen_info.lfb_base, screen_info.lfb_size);
+	printk(KERN_INFO "cl_magic = 0x%x, cl_offset = 0x%x\n", screen_info.cl_magic, screen_info.cl_offset);
+	printk(KERN_INFO "lfb_linelength = 0x%x\n", screen_info.lfb_linelength);
+	printk(KERN_INFO "red_size = 0x%x, red_pos = 0x%x\n", screen_info.red_size, screen_info.red_pos);
+	printk(KERN_INFO "green_size = 0x%x, green_pos = 0x%x\n", screen_info.green_size, screen_info.green_pos);
+	printk(KERN_INFO "blue_size = 0x%x, blue_pos = 0x%x\n", screen_info.blue_size, screen_info.blue_pos);
+	printk(KERN_INFO "rsvd_size = 0x%x, rsvd_pos = 0x%x\n", screen_info.rsvd_size, screen_info.rsvd_pos);
+	printk(KERN_INFO "vesapm = 0x%x:0x%x\n", screen_info.vesapm_seg, screen_info.vesapm_off);
+	printk(KERN_INFO "pages = 0x%x\n", screen_info.pages);
+	printk(KERN_INFO "vesa_attributes = 0x%x\n", screen_info.vesa_attributes);
+	printk(KERN_INFO "capabilities = 0x%x\n", screen_info.capabilities);
+
+	while (1);
+
 	printk(KERN_INFO "fb%d: %s frame buffer device\n",
 	       info->node, info->fix.id);
 	return 0;
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to