Bug 44881

Summary: [arrandale] Black screen on login regression (oneiric->precise) with external displayport monitor
Product: DRI Reporter: Bryce Harrington <bryce>
Component: DRM/IntelAssignee: Jesse Barnes <jbarnes>
Status: CLOSED FIXED QA Contact:
Severity: major    
Priority: highest CC: ben, chris, daniel, jbarnes, leann.ogasawara, roland
Version: unspecifiedKeywords: regression
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
i915 platform: i915 features:
Description Flags
fixup dp bpc calculations none

Description Bryce Harrington 2012-01-18 00:41:02 UTC
Forwarding this bug from Ubuntu reporter Roland Dreier:

Currently, the login screen is set to mirrored (at a lower resolution).  On login, the system reconfigures the displays to their native resolutions, but the external DP monitor just shows black.

The kernel log shows:
[  382.963872] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting

[Original Description]
I have a Lenovo t410s laptop (Arrandale graphics) that I use with a docking station  that is connected to an external monitor via displayport.  I just updated from Oneiric to the latest Precise daily, and I've seen big regressions using this setup.  I went into the display control panel and set my monitors to be non-mirrored and set my DP monitor to its native (2560x1440) resolution.

Now, after a cold reboot, the login screen comes up fine (in its bad fallback resolution -- this I think is a known lightdm issue, where a laptop+external monitor ends up with lightdm using some non-native resolution).  But then when I log in, X tries to change the mode of the DP monitor to the correct one, and at that point the monitor just goes black.  If I do alt-f1 I can get back to a text console, but alt-f7 just goes back to the black screen.

I am able to open my laptop and bring up the LVDS1 output, but I have not been able to figure out how to light up the DP output.

Oneiric was able to handle this pretty well -- if I booted docked, the external monitor was used at its native resolution, and if I booted undocked the internal LVDS was used at its native resolution.  And even suspend/resume and docking/undocking usually worked. 

I see messages like:

[  382.963872] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting

in the kernel log, which are presumably related to the failure to light up the DP monitor.

DistroRelease: Ubuntu 12.04
Package: xserver-xorg-video-intel 2:2.15.901-1ubuntu4
ProcVersionSignature: Ubuntu 3.2.0-7.13-generic 3.2.0-rc7
Uname: Linux 3.2.0-7-generic x86_64
ApportVersion: 1.90-0ubuntu1
Architecture: amd64
CompizPlugins: [core,bailer,detection,composite,opengl,compiztoolbox,decor,resize,gnomecompat,grid,move,snap,vpswitch,place,regex,session,imgpng,mousepoll,animation,wall,expo,unitymtgrabhandles,fade,workarounds,scale,ezoom,unityshell]
CompositorRunning: compiz
Date: Thu Jan  5 08:55:36 2012
DistUpgraded: Fresh install
DistroCodename: precise
DistroVariant: ubuntu
EcryptfsInUse: Yes
ExtraDebuggingInterest: Yes, whatever it takes to get this fixed in Ubuntu
 Intel Corporation Core Processor Integrated Graphics Controller [8086:0046] (rev 02) (prog-if 00 [VGA controller])
   Subsystem: Lenovo Device [17aa:21c1]
InstallationMedia: Ubuntu 12.04 LTS "Precise Pangolin" - Alpha amd64 (20120104)
MachineType: LENOVO 2901CTO
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.2.0-7-generic root=UUID=677292b2-a7ba-4d9e-8f1a-662c546b62ce ro intel_iommu=igfx_off quiet splash vt.handoff=7
SourcePackage: xserver-xorg-video-intel
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 10/27/2010
dmi.bios.vendor: LENOVO
dmi.bios.version: 6UET61WW (1.41 )
dmi.board.name: 2901CTO
dmi.board.vendor: LENOVO
dmi.board.version: Not Available
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: Not Available
dmi.modalias: dmi:bvnLENOVO:bvr6UET61WW(1.41):bd10/27/2010:svnLENOVO:pn2901CTO:pvrThinkPadT410s:rvnLENOVO:rn2901CTO:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:
dmi.product.name: 2901CTO
dmi.product.version: ThinkPad T410s
dmi.sys.vendor: LENOVO
version.compiz: compiz 1:0.9.6+bzr20110929-0ubuntu8
version.ia32-libs: ia32-libs N/A
version.libdrm2: libdrm2 2.4.29-1ubuntu1
version.libgl1-mesa-dri: libgl1-mesa-dri 7.11-0ubuntu4
version.libgl1-mesa-dri-experimental: libgl1-mesa-dri-experimental N/A
version.libgl1-mesa-glx: libgl1-mesa-glx 7.11-0ubuntu4
version.xserver-xorg-core: xserver-xorg-core 2:1.10.4-1ubuntu6
version.xserver-xorg-input-evdev: xserver-xorg-input-evdev 1:2.6.0-1ubuntu13
version.xserver-xorg-video-ati: xserver-xorg-video-ati 1:6.14.99~git20110811.g93fc084-0ubuntu1
version.xserver-xorg-video-intel: xserver-xorg-video-intel 2:2.15.901-1ubuntu4
version.xserver-xorg-video-nouveau: xserver-xorg-video-nouveau 1:0.0.16+git20111201+b5534a1-1
Comment 1 Bryce Harrington 2012-01-18 00:43:18 UTC
Created attachment 55714 [details]

I added "drm.debug=0xe" to my kernel command line by hand, and got the following output.

This is not exactly the scenario described above -- I actually booted up at home away from my dock, suspended the laptop, came to work, and resumed in the dock. I had exactly the same situation that my external monitor wouldn't light up though, and I went through my (now-standard) workaround dance of:
 - log into text kernel and do xrandr --output LVDS1 --auto to turn on the laptop screen
 - light up the DP monitor at 1024x768
 - switch the DP monitor to 2560x1440 at the same time as I turn off the laptop screen

and I now have my X session working at native resolution on my external monitor.
Comment 2 Bryce Harrington 2012-01-18 00:43:39 UTC
Created attachment 55715 [details]

OK, here's a kernel log of me booting up and then going through the dance to get my DP monitor lit up at the right resolution.
Comment 3 Daniel Vetter 2012-01-26 03:44:20 UTC
Created attachment 56176 [details] [review]
fixup dp bpc calculations

Can you please try this patch?
Comment 4 Leann Ogasawara 2012-02-03 07:13:25 UTC
Hi Roland,

I've taken the patch suggested by Daniel in comment 3 and built an Ubuntu Precise test kernel.  If you could please test and let Daniel know your results that would be very much appreciated.  Thanks in advance.

Comment 5 Roland Dreier 2012-02-03 09:32:25 UTC
Thanks Leann.  I'm running:

$ uname -a
Linux roland-t410s 3.2.0-13-generic #22+fdo44881v1 SMP Fri Feb 3 05:42:29 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

and I can confirm that the problem appears to be resolved.  I rebooted with my DP monitor connected, logged in, and came up in the native resolution perfectly.  This never worked with the stock precise kernel.
Comment 6 Florian Mickler 2012-02-19 03:20:27 UTC
A patch referencing this bug report has been merged in Linux v3.3-rc4:

commit c898261c0dad617f0f1080bedc02d507a2fcfb92
Author: Keith Packard <keithp@keithp.com>
Date:   Wed Jan 25 08:16:25 2012 -0800

    drm/i915: Force explicit bpp selection for intel_dp_link_required
Comment 7 Jari Tahvanainen 2016-09-23 10:05:15 UTC
Merged -> closed.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.