Hello. Sorry if I send this to the wrong place, but I started commenting on another bug (#534422), now I no longer think it is appropiate there and I don't know if it belongs here, but it's late, I'm half asleep and yesterday I already felt asleep before finding the right place to post.
2.6.26 from a clean lenny install worked, and the I just upgraded to sid, with some misunderstnading on my part about udev and the kernel, that I finally sorted out. I've also being unable to boot with KMS on my laptop, with linux-image-2.6.32-trunk-686 2.6.32-5 . The laptop is some model of the brand Ahtec, forgot which, but it is a clone of an AOpen 1551 and a label at the bottom says so. I can dig up old papers if you need more info. It has a 1.5 GHz pentium M and intel 855 GME graphics. The panel native resolution is 1280x800, and I set it in Grub-pc after using its 915resolution module. It showed the console on an external monitor but it would not display on the laptop panel. If I booted in text mode then it showed text, but X would not start, and the Xorg log said LVDS1 was disconnected. It could be fixed by closing and opening the laptop lid twice before re/starting X. But then Ctrl-Alt-F1 did not work. It just removed the cursor from screen until I pressed Ctrl-Alt-F7. So it apparently was something about guessing wrong the initial lid state in inteldrmfb (i915 kernel module). In the kernel source I found some quirk provision for an Aspire One which apparently had the same problem, and I just copypasted it for my laptop. This is patch i915-aopen1551.diff It works for me (it no longer requires me to open and close the laptop before X) but I don't know if the match with DMI info is the best one. It might be too specific or too general (is BOARD_SERIAL supposed to be unique for each board manufactured, like a CPU UUID, or just identifies the board model?). I'll attach the output of dmidecode, but it does not look very explicit to me. Then I did another patch (forcelvds.diff) to simply accept a kernel boot parameter to tell it it should consider the LVDS1 connected at boot regardless of the lid state it thinks it's in just in case the previous quirk does not match all cases. With this patch I can pass i915.forcelvds=1 in the kernel command line and it also works for me like with the i915_aopen1551.diff. Its the same with either patch or both. But with either of those I have to boot in text mode (i.e. without video=i915 in the kernel command line). If I put video=i915 then i get blank screen and the console or X only in the external monitor. I also get /dev/fb0 and /dev/fb1 and the messages below in syslog . This happens both with and without those patches, i.e. with the debian kernel too. It's the same also with this patch http://lists.freedesktop.org/archives/intel-gfx/2009-December/004979.html (I tried it because i2cdetect output looked strange). # grep fb /var/log/syslog Feb 9 23:21:54 ideafix kernel: [ 0.513612] efifb: probing for efifb Feb 9 23:21:54 ideafix kernel: [ 0.513708] efifb: framebuffer at 0xe8000000, mapped to 0xdff00000, using 4000k, total 4000k Feb 9 23:21:54 ideafix kernel: [ 0.513712] efifb: mode is 1280x800x32, linelength=5120, pages=1 Feb 9 23:21:54 ideafix kernel: [ 0.513714] efifb: scrolling: redraw Feb 9 23:21:54 ideafix kernel: [ 0.513719] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0 Feb 9 23:21:54 ideafix kernel: [ 0.618139] fb0: EFI VGA frame buffer device Feb 9 23:21:54 ideafix kernel: [ 2.183638] fb: conflicting fb hw usage inteldrmfb vs EFI VGA - removing generic driver Feb 9 23:21:54 ideafix kernel: [ 2.183836] fb1: inteldrmfb frame buffer device So it looks that efifb is finding the laptop panel already configured by grub, and the efifb gets hold of it, and it won't let go when i915 (inteldrmfb) tries to open it, so i915 uses the external monitor for an output (and I think it hangs if it is not connected). If I compile a kernel with either or both patches, without vesafb or efifb and with i915, intel_agpgart, drm etc. linked in (<y>), not as modules (not <m>) , and without initrd (I don't think initrd matters, but I never use it in custom kernels) then inteldrmfb gets the laptop panel, I can see the console in it, X works fine and all is well. Is there away to tell the kernel to never activate efifb or vesafb and load i915 form initrd instead ? Or is there a way to unbind it from all outputs before loading inteldrmfb ? I'd prefer to use debian kernels than rebuild them at each upgrade. And I guess that compiling in all framebuffers in a distribution kernel is a little contrary to the idea of initrd, keeping the kernel small and all that. It should be obvious by now, but I have no clue about kernel programming, so don't trust the patches too much (at least until someone knowledgeable looks at them). It's more a way to describe a problem by something that fixes it than a good fix. They might be incorrect or undesirable or redundant or ... Thanks all for your work.
diff -ru linux-source-2.6.32.orig/drivers/gpu/drm/i915/intel_lvds.c linux-source-2.6.32/drivers/gpu/drm/i915/intel_lvds.c --- linux-source-2.6.32.orig/drivers/gpu/drm/i915/intel_lvds.c 2010-02-01 00:52:57.000000000 +0100 +++ linux-source-2.6.32/drivers/gpu/drm/i915/intel_lvds.c 2010-02-09 00:33:04.000000000 +0100 @@ -25,6 +25,7 @@ * Eric Anholt <e...@anholt.net> * Dave Airlie <airl...@linux.ie> * Jesse Barnes <jesse.bar...@intel.com> + * modified by xdrudis 8.2.2010 to try to get it to recognize my laptop LVDS */ #include <acpi/button.h> @@ -608,6 +609,12 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire one"), }, }, + { + .ident = "Aopen 1551/MS2145", + .matches = { + DMI_MATCH(DMI_BOARD_SERIAL, "9144EZ1011423034CFK000"), + }, + }, { } };
diff -ru linux-source-2.6.32.orig/drivers/gpu/drm/i915/intel_lvds.c linux-source-2.6.32/drivers/gpu/drm/i915/intel_lvds.c --- linux-source-2.6.32.orig/drivers/gpu/drm/i915/intel_lvds.c 2010-02-01 00:52:57.000000000 +0100 +++ linux-source-2.6.32/drivers/gpu/drm/i915/intel_lvds.c 2010-02-09 00:33:04.000000000 +0100 @@ -25,6 +25,7 @@ * Eric Anholt <e...@anholt.net> * Dave Airlie <airl...@linux.ie> * Jesse Barnes <jesse.bar...@intel.com> + * modified by xdrudis 8.2.2010 to try to get it to recognize my laptop LVDS */ #include <acpi/button.h> @@ -608,6 +609,12 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire one"), }, }, + { + .ident = "Aopen 1551/MS2145", + .matches = { + DMI_MATCH(DMI_BOARD_SERIAL, "9144EZ1011423034CFK000"), + }, + }, { } };
dmidecode.out
Description: Binary data