Bug 27398

Summary: displayport: x server does not draw anything on ThinkPad T410
Product: xorg Reporter: Pavel S. <pav_s>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: major    
Priority: medium CC: arun, e-mail+freedesktop, felipe.contreras, homyur
Version: git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 34429    
Attachments:
Description Flags
dmesg when DP-1 is plugged in
none
X log with DP-1 attatched
none
dmesg wthen booted without external display on DP-1
none
dmesg output on macbook pro none

Description Pavel S. 2010-03-31 09:08:32 UTC
Created attachment 34582 [details]
dmesg when DP-1 is plugged in

This happens when booting with an external monitor attached to Displayport on ThinkPad T410.

After loading nouveau.ko the main display on LVDS-1 switches to hi-res framebuffer (KMS) like during normal boot. But when X is started, it switches to vt7 and then nothing happens - neither is the frame buffer is redrawn anymore, nor the external display is enabled. This is not a lockup, though. I can switch back to vt1 with ctrl-alt-f1, and I can login into the x session by blindly typing username/password (though xdm) or start gtk-demo from vt1. (Same happens if I just start X with "X -wr&" .)

[in brief]

xorg.conf:
----> snip ----->
Section "Device"
	Identifier  "Card0"
	Driver      "nouveau"
	VendorName  "nVidia Corporation"
	BoardName   "NVIDIA Quadro NVS 3100m"
	BusID       "PCI:1:0:0"
EndSection
<---- snap <-----

steps to reproduce:
 - boot and load nouveau.ko
 - start X with "X -wr -config ./xorg.conf&"

result:
 - KMS console works, but
 - X stops redrawing the frambuffer switching to vt7 does not change the screen

expected:
 - KMS console works
 - X draws a blank white screen on LVDS-1 (in vt7)
 - xrandr can enable DP-1


[notes]

kernel reports several:
[drm] nouveau 0000:01:00.0: 0xD404: Init table command not found: 0x3A
   errors.

what is SOR?
[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
[drm] nouveau 0000:01:00.0: SOR-1: link training failed
[drm] nouveau 0000:01:00.0: SOR-1: link training failed
[drm] nouveau 0000:01:00.0: SOR-1: link training failed
[drm] nouveau 0000:01:00.0: SOR-1: link training failed

this looks suspicious
[drm] nouveau 0000:01:00.0: unplugged DisplayPort-1
[drm] nouveau 0000:01:00.0: unplugged DisplayPort-1
[drm] nouveau 0000:01:00.0: unplugged DisplayPort-1
[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
[drm] nouveau 0000:01:00.0: SOR-1: link training failed

Thanks in advance!
Comment 1 Pavel S. 2010-03-31 09:10:28 UTC
Created attachment 34583 [details]
X log with DP-1 attatched
Comment 2 Pavel S. 2010-03-31 09:25:14 UTC
Created attachment 34584 [details]
dmesg wthen booted without external display on DP-1 

--- 2	2010-03-31 18:22:07.363618422 +0200
+++ 1	2010-03-31 18:22:13.202493358 +0200
@@ -64,16 +64,55 @@
 [drm] nouveau 0000:01:00.0: Detected a DisplayPort connector
 [drm] nouveau 0000:01:00.0: Detected a DisplayPort connector
 [drm] nouveau 0000:01:00.0: Detected a DisplayPort connector
-[drm] nouveau 0000:01:00.0: allocated 1440x900 fb: 0x40250000, bo ffff880133654600
+[drm] nouveau 0000:01:00.0: allocated 1680x1050 fb: 0x40250000, bo ffff880134734600

1440x900 is the resolution of the internal LVDS-1 display while 1680x1050 of the external display

+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
 [drm] nouveau 0000:01:00.0: 0xCC16: parsing output script 1
 [drm] nouveau 0000:01:00.0: 0xCAAD: parsing clock script 0
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
 fb0: nouveaufb frame buffer device
 [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0
-[drm] nouveau 0000:01:00.0: 0xCAAD: parsing clock script 0
-[drm] nouveau 0000:01:00.0: 0xCAAD: parsing clock script 0
-[drm] nouveau 0000:01:00.0: 0xCAAD: parsing clock script 0
+[drm] nouveau 0000:01:00.0: unplugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
 [drm] nouveau 0000:01:00.0: 0xCC0D: parsing clock script 1
+[drm] nouveau 0000:01:00.0: 0xD441: parsing output script 1
+[drm] nouveau 0000:01:00.0: 0xD16B: parsing clock script 0
 [drm] nouveau 0000:01:00.0: Allocating FIFO number 2
 [drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 2
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: unplugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: unplugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: unplugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: plugged DisplayPort-1
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: expected bit 24 == 0, got 0x81109000
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: INIT_AUXCH: rd auxch fail -121
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: INIT_AUXCH: rd auxch fail -121
+[drm] nouveau 0000:01:00.0: INIT_AUXCH: rd auxch fail -121
+[drm] nouveau 0000:01:00.0: INIT_AUXCH: rd auxch fail -121
 [drm] nouveau 0000:01:00.0: Allocating FIFO number 3
 [drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 3
+[drm] nouveau 0000:01:00.0: 0xD076: Init table command not found: 0x3A
+[drm] nouveau 0000:01:00.0: SOR-1: link training failed
+[drm] nouveau 0000:01:00.0: INIT_AUXCH: rd auxch fail -121
Comment 3 Ben Skeggs 2010-03-31 15:12:21 UTC
The first obvious thing to tackle is the unknown init table commands.  I've seen another case where these are used, and should have my hands on a laptop that has them at some point in the near future, so I'll tackle them then.

In the meantime, it'd be very useful to grab a mmio-trace of the nvidia binary driver initialising your displays as another data point.

http://nouveau.freedesktop.org/wiki/MmioTrace has detailed instructions how to grab one.
Comment 4 Pavel S. 2010-04-12 07:37:45 UTC
> In the meantime, it'd be very useful to grab a mmio-trace of the nvidia binary
> driver initialising your displays as another data point.

I sent a mmiotrace some weeks ago the the email from the FAQ, did you recieve it?
Comment 5 Arun Raghavan 2011-04-17 21:43:07 UTC
Created attachment 45754 [details]
dmesg output on macbook pro

I see the same problem here with a MacBook Pro and a display connected to the mini DisplayPort via a mini-DP<->VGA adapter. Attaching kernel log, fwiw. The bits about not being able to get the EDID are the same as the original reporter. Happy to help test/debug.
Comment 6 Pavel S. 2011-05-20 04:32:43 UTC
Hardware: Thinkpad T410, NVS 3100M (nva8?)
Kernel: vanilla 2.6.39+ from kernel.org + nouveau tree merged

Displayport still is not working if not activated by BIOS (xranrd claims that the CRTC is in use, but there is no signal on the display).

The mentioned xorg hang disappeared long time ago (in my case at least)...
Comment 7 Felipe Contreras 2011-09-01 08:41:18 UTC
(In reply to comment #6)
> Displayport still is not working if not activated by BIOS (xranrd claims that
> the CRTC is in use, but there is no signal on the display).

I have the same issue on a Thinkpad W510; the display is supposed to be active, but I don't see anything on the screen.
Comment 8 Pavel S. 2011-09-02 02:39:11 UTC
> The mentioned xorg hang disappeared long time ago (in my case at least)...
I am sorry, just tried to install fedora15 on my T410 and could not continue the install after reboot, because DP was plugged in and xorg would hang infinitely.
(machine worked fine though, had to install the blob through USBtty, though :-()

what I want to say, this bug is still there in stable releases, my post from the last time was from gentoo and everything installed from git...

btw. will DP be useful at any time, or is this a hard to reverse engineer BIOS issue?

> I have the same issue on a Thinkpad W510; the display is supposed to be active,
but I don't see anything on the screen.

on git versions: If I close the lid then will BIOS disable LVDS and enable DP, which then works as expected in xorg, you can even enable LVDS afterwards - so maybe this can work for you until this bug is fixed...
Comment 9 Ben Skeggs 2011-09-08 21:01:17 UTC
This is actually fixed now in the nouveau kernel git tree, closing.
Comment 10 Yuriy Khomchik 2011-09-09 06:18:51 UTC
I have a similar 34429 bug, which is reproduced on the latest git version. See the attached dmesg log to this bug.
Comment 11 Ben Skeggs 2011-09-09 06:20:34 UTC
(In reply to comment #10)
> I have a similar 34429 bug, which is reproduced on the latest git version. See
> the attached dmesg log to this bug.

It's not the same bug.  This bug is about DP outputs not working unless initialised by the VBIOS.
Comment 12 Yuriy Khomchik 2011-09-09 06:42:36 UTC
(In reply to comment #11)
> (In reply to comment #10)
> > I have a similar 34429 bug, which is reproduced on the latest git version. See
> > the attached dmesg log to this bug.
> 
> It's not the same bug.  This bug is about DP outputs not working unless
> initialised by the VBIOS.

Is it possible that the bug 34429 causes the same problem - uninitialized eDP output after suspend and resume?

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.