I respond in the same time to all bugs probably related to KMS. Previously grub2 defaulted to start linux in text mode unless VESA graphics mode was explicitly requested. Recently we changed to defaulting to generic framebuffer when its support is enabled in linux. I found 3 problems: 1) At least some KMS modules expect graphics card to be in text mode. It would be kernel-side problem since on some firmware types this mode isn't easily or sometimes isn't at all available. On the other hand it's useful to be able to tell grub2 to start in text mode even if generic framebuffer is supported by kernel. I added this ability to mainstream grub. To use it add: GRUB_GFXPAYLOAD_LINUX=text to /etc/default/grub 2) generic framebuffer expects size in bytes and not 64KiB blocks. I fixed it in mainstream 3) intelfb expects handover only from vesa. Attached patch to linux may help.
None of 3 changes I mentioned is packaged in debian yet. -- Regards Vladimir 'φ-coder/phcoder' Serbinenko
diff --git a/drivers/video/intelfb/intelfbdrv.c b/drivers/video/intelfb/intelfbdrv.c
index 5ba3999..de6fda1 100644
--- a/drivers/video/intelfb/intelfbdrv.c
+++ b/drivers/video/intelfb/intelfbdrv.c
@@ -819,7 +819,8 @@ static int __devinit intelfb_pci_register(struct pci_dev *pdev,
bailout(dinfo);
if (FIXED_MODE(dinfo) &&
- screen_info.orig_video_isVGA != VIDEO_TYPE_VLFB) {
+ screen_info.orig_video_isVGA != VIDEO_TYPE_VLFB
+ && screen_info.orig_video_isVGA != VIDEO_TYPE_EFI) {
ERR_MSG("Video mode must be programmed at boot time.\n");
cleanup(dinfo);
return -ENODEV;
@@ -830,7 +831,8 @@ static int __devinit intelfb_pci_register(struct pci_dev *pdev,
/* Initialise dinfo and related data. */
/* If an initial mode was programmed at boot time, get its details. */
- if (screen_info.orig_video_isVGA == VIDEO_TYPE_VLFB)
+ if (screen_info.orig_video_isVGA == VIDEO_TYPE_VLFB
+ || screen_info.orig_video_isVGA == VIDEO_TYPE_EFI)
get_initial_mode(dinfo);
if (bailearly == 3)
@@ -978,7 +980,10 @@ static void __devinit get_initial_mode(struct intelfb_info *dinfo)
dinfo->initial_vga = 1;
dinfo->initial_fb_base = screen_info.lfb_base;
- dinfo->initial_video_ram = screen_info.lfb_size * KB(64);
+
+ dinfo->initial_video_ram = screen_info.lfb_size;
+ if (screen_info.orig_video_isVGA == VIDEO_TYPE_VLFB)
+ dinfo->initial_video_ram *= KB(64);
dinfo->initial_pitch = screen_info.lfb_linelength;
var = &dinfo->initial_var;
signature.asc
Description: OpenPGP digital signature

