Bug 30086 - Nouveau fails with unreadable EDID
Summary: Nouveau fails with unreadable EDID
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-09-08 04:55 UTC by alci
Modified: 2011-03-11 21:44 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
xorg log when using nouveau driver (8.99 KB, text/plain)
2010-09-08 07:25 UTC, alci
no flags Details
dmesg no xorg (59.61 KB, text/plain)
2010-09-13 00:40 UTC, alci
no flags Details
Xorg.0.log no xorg.conf (65.25 KB, text/plain)
2010-09-13 00:41 UTC, alci
no flags Details
dmesg nv (59.96 KB, text/plain)
2010-09-13 00:41 UTC, alci
no flags Details
xorg.0.log nv (54.59 KB, text/plain)
2010-09-13 00:42 UTC, alci
no flags Details
dmesg nouveau (59.57 KB, text/plain)
2010-09-13 00:42 UTC, alci
no flags Details
Xorg.0.log nouveau (8.99 KB, text/plain)
2010-09-13 00:43 UTC, alci
no flags Details
dmesg after removing nvidia install, no xorg.conf (64.88 KB, text/plain)
2010-09-13 08:08 UTC, alci
no flags Details
Xorg.0.log after removing nvidia install, no xorg.conf (24.40 KB, text/plain)
2010-09-13 08:09 UTC, alci
no flags Details

Description alci 2010-09-08 04:55:45 UTC
On a Sony VPCCW2S1E laptop, EDID seems to be somehow unreadable:

get-edid: get-edid version 2.0.0
 Performing real mode VBE call
 Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
 Function supported
 Call successful

 VBE version 300
 VBE string at 0x11100 "NVIDIA"

VBE/DDC service about to be called
 Report DDC capabilities

 Performing real mode VBE call
 Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
 Function supported
 Call successful

 Monitor and video card combination does not support DDC1 transfers
 Monitor and video card combination does not support DDC2 transfers
 0 seconds per 128 byte EDID block transfer
 Screen is not blanked during DDC transfer

Reading next EDID block

VBE/DDC service about to be called
 Read EDID

 Performing real mode VBE call
 Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
 Function supported
 Call failed

The EDID data should not be trusted as the VBE call failed
Error: output block unchanged


Video card is a GT 330 M:

01:00.0 VGA compatible controller: nVidia Corporation GT216 [GeForce GT 330M] (rev a2) (prog-if 00 [VGA controller])
	Subsystem: Sony Corporation Device 9072
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at e2000000 (32-bit, non-prefetchable) [size=16M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	Memory at e0000000 (64-bit, prefetchable) [size=32M]
	I/O ports at d000 [size=128]
	Expansion ROM at e3000000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: nvidia
	Kernel modules: nvidia-current, nouveau, nvidiafb


When loading, nouveau driver can't find the laptop's LCD screen, and display is black.
Notice that proprietary NVidia driver has the same problem, but it offers a workaround with the customEDID option:

Option "CustomEDID" "DFP-0:/etc/X11/SNY05FA.bin"


Nouveau does not seem to have such an option... Is there a workaround for nouveau? Or is there a way to find why the EDID cannot be read?
Comment 1 Ben Skeggs 2010-09-08 05:37:15 UTC
Can you post your dmesg log from after loading the nouveau driver please?

Nouveau should be able to find your EDID if you're using new enough code.
Comment 2 alci 2010-09-08 07:25:04 UTC
Created attachment 38551 [details]
xorg log when using nouveau driver

Here is the output of xorg when using nouveau.

(by using nouveau in the device section of xorg.conf. If no xorg.conf, seems to fallback to fbdev).
Comment 3 Ben Skeggs 2010-09-09 02:36:20 UTC
Can I see your kernel log please (/var/log/messages or "dmesg" after a failed attempt at using nouveau).
Comment 4 alci 2010-09-09 10:03:23 UTC
There is not much in /var/log/messages after a failed attempt... If I change xorg.conf from nv to nouveau, then logout from gnome, gdm will fail to start.

At that time, I have nothing added in /var/log/messages.
In /var/log/syslog, I get:

Sep  9 18:52:27 franck-laptop gdm-binary[23109]: WARNING: GdmDisplay: display lasted 0,230001 seconds
Sep  9 18:52:27 franck-laptop gdm-binary[23109]: WARNING: GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors

In /var/log/Xorg.0.log, I get the same messages as in the attachment I made, ending with:

[   339.439] (EE) [drm] failed to open device
[   339.439] (EE) No devices detected.

Is there any other log I can provide ?
Comment 5 walt 2010-09-09 11:53:58 UTC
(In reply to comment #4)

> [   339.439] (EE) [drm] failed to open device
> [   339.439] (EE) No devices detected.

I got that error too at first.  The device it's looking for is
crw-rw---- 1 root video 226, 0 2010-09-09 06:39 /dev/dri/card0

In my case that device wasn't created during boot until I added
console framebuffer support in the kernel. CONFIG_FRAMEBUFFER_CONSOLE=y

After I made that change, then I could see that the nouveau fb
driver takes over the console during early bootup -- and that
(somehow) prods udev into creating the missing device.

There may be an alternative way to do the same thing but I don't
know how to do it.  (Hints welcomed.)
Comment 6 Pekka Paalanen 2010-09-09 14:10:31 UTC
(In reply to comment #5)
> In my case that device wasn't created during boot until I added
> console framebuffer support in the kernel. CONFIG_FRAMEBUFFER_CONSOLE=y

Why would you *not* have fbcon=y? Without fbcon, you will not have a text console at all with Nouveau.

> After I made that change, then I could see that the nouveau fb
> driver takes over the console during early bootup -- and that
> (somehow) prods udev into creating the missing device.

That is a little odd trigger for it, but still just an unrelated theoretical issue of the case when someone wants to have graphics but not a console.


To the original poster:

You were asked to provide a complete kernel log from boot up to the original failure. Do not filter it, do not interpret it, do not compress it. Without the log you cannot be helped.

It is almost as if you do not have KMS enabled (or Nouveau installed properly). The log will show the cause. When Nouveau loads, it will print many lines to the kernel log at kernel module init time, before X starts.
Comment 7 walt 2010-09-09 15:32:40 UTC
(In reply to comment #6)
> (In reply to comment #5)
> > In my case that device wasn't created during boot until I added
> > console framebuffer support in the kernel. CONFIG_FRAMEBUFFER_CONSOLE=y
> 
> Why would you *not* have fbcon=y? Without fbcon, you will not have a text
> console at all with Nouveau.

Now I remember.  My mistake was building fbcon as a module.  When I changed
it to built-in then everything started working correctly.

Before I figured it all out, I loaded the fbcon module from a blank console screen before starting X -- thus getting the missing device error mentioned by the OP.

If there's a way to shoot yourself in the foot -- I promise to find it :)
Comment 8 Ben Skeggs 2010-09-09 15:40:54 UTC
(In reply to comment #4)
> There is not much in /var/log/messages after a failed attempt... If I change
> xorg.conf from nv to nouveau, then logout from gnome, gdm will fail to start.
> 
> At that time, I have nothing added in /var/log/messages.
> In /var/log/syslog, I get:
> 
> Sep  9 18:52:27 franck-laptop gdm-binary[23109]: WARNING: GdmDisplay: display
> lasted 0,230001 seconds
> Sep  9 18:52:27 franck-laptop gdm-binary[23109]: WARNING:
> GdmLocalDisplayFactory: maximum number of X display failures reached: check X
> server log for errors
> 
> In /var/log/Xorg.0.log, I get the same messages as in the attachment I made,
> ending with:
> 
> [   339.439] (EE) [drm] failed to open device
> [   339.439] (EE) No devices detected.
> 
> Is there any other log I can provide ?

I need to see your dmesg output (or /var/log/messages) from nouveau trying to start *without* "nomodeset" (so, you'll get a blank screen because nouveau can't read your edid) in order to better diagnose the problem.

"failed to open device" is probably because you were trying to use nouveau without kernel modesetting enabled.
Comment 9 alci 2010-09-13 00:39:44 UTC
Ok, here I come with the requested log files. Sorry for being tough on this :-)

1) with no xorg.conf, let X11 auto-configure:

dmesg-noxorg.txt
Xorg.noxorg.log

works but fallback to vesa (output is quite bad)

2) with a xorg.conf using nv driver

dmesg-xorg-nv.txt
Xorg.nv.log

Works (but no 3D of course)

3) with a xorg.conf using nouveau driver

dmesg-xorg-nouveau.txt
Xorg.nouveau.log

Fails, X won't start.
Comment 10 alci 2010-09-13 00:40:17 UTC
Created attachment 38661 [details]
dmesg no xorg
Comment 11 alci 2010-09-13 00:41:07 UTC
Created attachment 38662 [details]
Xorg.0.log no xorg.conf
Comment 12 alci 2010-09-13 00:41:33 UTC
Created attachment 38663 [details]
dmesg nv
Comment 13 alci 2010-09-13 00:42:02 UTC
Created attachment 38664 [details]
xorg.0.log nv
Comment 14 alci 2010-09-13 00:42:34 UTC
Created attachment 38665 [details]
dmesg nouveau
Comment 15 alci 2010-09-13 00:43:02 UTC
Created attachment 38666 [details]
Xorg.0.log nouveau
Comment 16 Marcin Slusarz 2010-09-13 06:15:33 UTC
In all 3 cases you had nvidia proprietary driver (both kernel and userspace).
Uninstall it and try again.

You should not see this in kernel log:
"NVRM: loading NVIDIA UNIX x86_64 Kernel Module"

and this in xorg.0.log:
Module glx: vendor="NVIDIA Corporation"
Comment 17 alci 2010-09-13 08:07:40 UTC
Ok, I have removed all previously installed proprietary NVidia drivers. I have removed any xorg.conf file from the way, and here are my dmesg and Xorg.0.log files.
Display is black, no X, no console.
Comment 18 alci 2010-09-13 08:08:33 UTC
Created attachment 38669 [details]
dmesg after removing nvidia install, no xorg.conf
Comment 19 alci 2010-09-13 08:09:21 UTC
Created attachment 38670 [details]
Xorg.0.log after removing nvidia install, no xorg.conf
Comment 20 Ben Skeggs 2010-09-13 15:32:37 UTC
OK, Your laptop is one of those weirdo Sony laptops that don't provide EDID in any normal way.  This has been implemented in Nouveau upstream, but your distribution appears not to ship it.
Comment 21 alci 2010-09-14 02:47:00 UTC
Thanks Ben. This seems like a good news to me!

May I ask if there is an easy way to test latest nouveau driver, ala 'compat-wireless' ?
Comment 22 Pekka Paalanen 2010-09-14 07:12:12 UTC
(In reply to comment #21)
> May I ask if there is an easy way to test latest nouveau driver, ala
> 'compat-wireless' ?

Yes, sort of, the out-of-tree build:
http://nouveau.freedesktop.org/wiki/InstallDRM
It may require you to upgrade your kernel, anyway.

You can find that page via Nouveau wiki front page -> Installing (compiling and using Nouveau) -> Step 2, the kernel modules.
Comment 23 Marcin Slusarz 2011-02-10 09:12:05 UTC
(In reply to comment #20)
> OK, Your laptop is one of those weirdo Sony laptops that don't provide EDID in
> any normal way.  This has been implemented in Nouveau upstream, but your
> distribution appears not to ship it.

Marking as FIXED.
Comment 24 alci 2011-02-24 06:13:21 UTC
I just tried latest (alpha) ubuntu, that ships with nouveau driver git20110107(+b795ca6e).

But I now get this error:

[drm] nouveau Pointer to BIT loadval table invalid

So unless this is some other unrelated error showing up, the fix does not seem to work (here).
Comment 25 alci 2011-03-11 21:44:13 UTC
Last upgrade did fix the issue for me. As I was the initial reporter and the problem was supposed to be resolved, I close it again.
Many thanks to all.


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.