Hi, Since I'm unable to reproduce this, I will need some help. I need you to boot a modified Linux image with the "linux16" loader, e.g.:
linux16 /boot/bzImage boot and then tell me the output (if you're using the older version of GRUB, linux16 won't be present, in that case use "linux" instead). You might be able to get it through a serial port with console=ttyS0 parameter, but I'm not sure if that will work at this point in the boot process. Otherwise, use pencil and paper! The patch you need to apply to Linux is attached. If it's more practical to you, you can use this prebuilt image instead: http://people.debian.org/~rmh/bzImage which is gpg-signed: http://people.debian.org/~rmh/bzImage.sig -- 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(); }