Bug 13214 - Blank internal Display on Notebook with Intel GPU (855GM)
Blank internal Display on Notebook with Intel GPU (855GM)
Product: Drivers
Classification: Unclassified
Component: Video(DRI - non Intel)
All Linux
: P1 normal
Assigned To: drivers_video-dri
Depends on:
  Show dependency treegraph
Reported: 2009-04-30 13:52 UTC by djenett
Modified: 2009-09-17 03:35 UTC (History)
10 users (show)

See Also:
Kernel Version: 2.6.30-rc3
Tree: Mainline
Regression: No

Kernel log (5.64 KB, application/octet-stream)
2009-04-30 13:52 UTC, djenett
Kernel-log with activated KMS, no external display (32.44 KB, application/octet-stream)
2009-04-30 18:12 UTC, Stefan Glasenhardt

Description djenett 2009-04-30 13:52:52 UTC
Created attachment 21171 [details]
Kernel log

Notebook: Acer TravelMate 660, Intel 855GM GPU, internal 15" 1400x1050 LCD.

This behavior can be seen with or without building the kernel with internal KMS support. Tested Kernel was mainline 2.6.30-rc2 and -rc3. Both scenario are without X, just multi-user (rl 3, console) on Archlinux. Arch-Kernel 2.6.29 also show this issue.

With builtin KMS: start up the maschine you see some kernel messages. When drm/i915 is loaded/started the internal display goes blank. Backlight however is on.
Without builtin KMS: start up the maschine you see all kernel messages and can login normally on the console. After that I do:

$ modprobe drm debug=1
$ modprobe i915 modeset=1
(please see attached kernel.log)

Here the display goes blank but you can still "fly blind", so system still is working (same as with builtin KMS). If you have attached an external display, that one is working as expected. KMS/drm/i915 switches the resolution and you have the console output on the external display but still no internal display.

With attached external display you can start xserver and it is working as expected, but output on external display only.

If you need more info/log files please let my know. I would be also able to test patches if there are any.
Comment 1 Stefan Glasenhardt 2009-04-30 18:12:32 UTC
Created attachment 21172 [details]
Kernel-log with activated KMS, no external display

I've exact the same problem with my notebook (Dell Latitude D505, Intel 855GM). If i attach an external monitor (VGA or DVI) KMS works perfectly.
Comment 2 Bruno Prémont 2009-04-30 18:31:34 UTC
This issue is already tracked in freedesktop bugzilla (Also Acer TM660):
Comment 3 djenett 2009-04-30 18:57:09 UTC
OK, original Post (bug report) from February but no solution yet. Thanks for pointing it out Bruno (Sorry, I did not find it).
Any chance to get this fixed. ;)

btw. As you correctly stated (in your bug report) it doesn't seem to be a xorg related Problem. Up to console, xorg is nowhere involved here, it's just kernel (drm/i915/KMS).

Should I mark this as duplicate?
Comment 4 Bruno Prémont 2009-04-30 19:18:28 UTC
Don't think you can mark it as duplicate against a bug from external bugzilla (looks like verified/moved would be more appropriate)

What you should definitely do is post a link to this bug on http://bugs.freedesktop.org/show_bug.cgi?id=20115 so bidirectional link exists and add yourself to the CC.
Comment 5 Stefan Glasenhardt 2009-05-16 00:29:51 UTC

I played it little with the KMS-kernel-code and got the internal display running. I disabled some lines in the file "intel_display.c" to force-enable the LVDS-output :

		switch (intel_output->type) {
			is_lvds = true;
/*			break;
			is_sdvo = true;
			if (intel_output->needs_tv_clock)
				is_tv = true;
			is_dvo = true;
			is_tv = true;
			is_crt = false;


I know, it is a very crude hack, but i know to little about the drm-kernel-stuff to make a better solution. I hope some kernel-hacker can improve the code, so i can normally use KMS.

P.S. :

I also had to add the following patch to the same file to improve the image quality. Without this patch my LC-Display constantly flickers.

} else if (IS_I9XX(dev) || IS_I855(dev)) { /* Added query 855GM-chipset
	refclk = 96000;
} else {
	refclk = 48000;
Comment 6 Jesse Barnes 2009-05-16 03:20:42 UTC
Oh interesting.  I lost track of this one; we usually track our bugs at bugs.freedesktop.org (even for DRM issues).  Sounds like your output types aren't getting set up properly on this machine...

Can you post your patch along with your log & machine info to intel-gfx@lists.freedesktop.org?  Would be best if you moved this bug over to bugs.freedesktop.org as well so we don't lose it again.  Thanks.
Comment 7 djenett 2009-05-16 13:33:22 UTC
I can confirm that the fix from Stefan is working here also.
I used Kernel 2.6.30-rc6.

Jesse, the bug is listet at freedesktop. See link from Bruno, I even put a link to this report for bidirectional refernce there.
Comment 8 Johannes Engel 2009-05-16 16:13:49 UTC
Can you try instead to compile the kernel with drm, agpgart, framebuffer all in kernel (not as modules)? That helped for my 945GM.
Comment 9 Jesse Barnes 2009-05-16 18:24:47 UTC
Oh sorry I didn't see that it had already been filed at fdo, it's probably even assigned to me...  I should have a chance to look at it next week.
Comment 10 Bruno Prémont 2009-05-17 09:46:14 UTC
Regarding Stefan's suggestion in comment #5, that does not seem to help on my side.

I did try a slightly different approach (e.g. not forcing ALL outputs to get handled as LVDS), but internal display kept showing black content.

When booting with a VGA display connected (1280x1024 native) I do see kernel boot output on external monitor (though that one is complaining about signal timing: horizontal 40.0kHz, vertical 37.5Hz)

(Note: while playing with Xorg (1.5.3 + 2.7.1 driver) I could not convince the local display to change it's mind but had both displays unexpectedly disabled at some time andsystem frozen hard slightly later)

The patch I used looks like this (sorry for line-wrapping):
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 3387cf3..5a82cff 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1094,12 +1094,15 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
+               DRM_INFO("Checking output '%s' of type %d (LVDS: %d, num_outputs=%d)\n",
+                               connector->display_info.name, intel_output->type, is_lvds,
+                               num_outputs);
        if (is_lvds && dev_priv->lvds_use_ssc && num_outputs < 2) {
                refclk = dev_priv->lvds_ssc_freq * 1000;
                DRM_DEBUG("using SSC reference clock of %d MHz\n", refclk / 1000);
-       } else if (IS_I9XX(dev)) {
+       } else if (IS_I9XX(dev) || IS_I855(dev)) {
                refclk = 96000;
        } else {
                refclk = 48000;

Snipplet of boot output with external display connected:
[    0.545852] Linux agpgart interface v0.103
[    0.545935] agpgart-intel 0000:00:00.0: Intel 855GM Chipset
[    0.546813] agpgart-intel 0000:00:00.0: detected 32636K stolen memory
[    0.548387] agpgart-intel 0000:00:00.0: AGP aperture is 128M @ 0xe8000000
[    0.548559] [drm] Initialized drm 1.1.0 20060810
[    0.548655] i915 0000:00:02.0: power state changed by ACPI to D0
[    0.548998] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
[    0.549053] PCI: setting IRQ 11 as level-triggered
[    0.549059] i915 0000:00:02.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
[    0.549135] i915 0000:00:02.0: setting latency timer to 64
[    1.545459] allocated 1400x1050 fb: 0x01fff000, bo dda08f60
[    1.545658] async/0 used greatest stack depth: 2568 bytes left
[    1.545750] fbcon: inteldrmfb (fb0) is primary device
[    1.589763] [drm] Checking output '' of type 1 (LVDS: 0, num_outputs=1)
[    1.635699] [drm] DAC-6: set mode 1280x1024 1e
[    1.681779] [drm] Checking output '' of type 4 (LVDS: 1, num_outputs=1)
[    1.723225] [drm] LVDS-8: set mode 1400x1050 15
[    1.946998] Console: switching to colour frame buffer device 160x64
[    1.956947] fb0: inteldrmfb frame buffer device
[    1.957005] registered panic notifier
[    1.957060] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0

Will try with unchanged refclk to see if this one does affect signal timing.
Comment 11 Bruno Prémont 2009-05-17 10:21:56 UTC
With unchanged refclk (e.g. not adding "|| IS_I855(dev)" signal timing is correct for VGA output.

xrandr output from Xorg is suboptimal if not even wrong:
Screen 0: minimum 320 x 200, current 1400 x 1050, maximum 2048 x 2048
VGA1 connected 1400x1050+0+0 (normal left inverted right x axis y axis) 340mm x 270mm
   1400x1050      60.0*+
   1280x1024      75.0 +   75.0     60.0  
   1280x960       60.0  
   1152x864       75.0  
   1024x768       75.1     75.0     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        72.8     75.0     72.8     75.0     66.7     60.0     59.9  
   720x400        70.1  
LVDS1 connected 1400x1050+0+0 (normal left inverted right x axis y axis) 305mm x 228mm
   1400x1050      60.0*+
   1280x1024      60.0  
   1280x960       60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        59.9  
DVI1 disconnected (normal left inverted right x axis y axis)

external display reports 1280x1024 though Xorg seems to say it's producing 1400x1050 and cursor can go beyond bottom of visible area but not so for the width (on external display)
So I guess external display is rather getting real 1400x1050 but scaling the width to fit its 1280 and cropping the addidional lines. (the injected 1400x1050 is just wrong for the external display - but this probably should go to a separate bug report - this is an Xorg/fx86-video-intel issue as the extra mode is not listed by kernel)

ps: tests for this and previous comment were done with 2.6.30-rc6
Comment 12 yury 2009-06-11 16:09:49 UTC
confirmed for 2.6.30
acer travelmate 4051, intel 855GM
Comment 13 Gordon Jin 2009-09-17 03:35:12 UTC
Let's track at freedesktop (which has been fixed).

Note You need to log in before you can comment on or make changes to this bug.