[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#567747: patches that helped me with this or a similar problem



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 <eric@anholt.net>
  *      Dave Airlie <airlied@linux.ie>
  *      Jesse Barnes <jesse.barnes@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 <eric@anholt.net>
  *      Dave Airlie <airlied@linux.ie>
  *      Jesse Barnes <jesse.barnes@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"),
+		},
+	},
 	{ }
 };
 

Attachment: dmidecode.out
Description: Binary data


Reply to: