Bug 89483 - [NV11] Hangs on boot with external monitor active on Dell Latitude C810
Summary: [NV11] Hangs on boot with external monitor active on Dell Latitude C810
Status: NEW
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: 7.7 (2012.06)
Hardware: Other All
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-03-07 16:46 UTC by Ondrej Zary
Modified: 2015-03-28 17:13 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
netconsole log from nouveau before hang (3.20 KB, text/plain)
2015-03-07 16:46 UTC, Ondrej Zary
no flags Details
netconsole log from nouveau when it works (3.67 KB, text/plain)
2015-03-07 16:48 UTC, Ondrej Zary
no flags Details
BIOS (55.00 KB, application/octet-stream)
2015-03-28 12:58 UTC, Ondrej Zary
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ondrej Zary 2015-03-07 16:46:55 UTC
Created attachment 114114 [details]
netconsole log from nouveau before hang

Nouveau works fine on Dell Latitude C810 (GeForce2 Go) if no external monitor is connected and also when an external monitor is connected but not enabled before booting Linux.

However, when the external monitor is enabled (internal LCD is automatically disabled - seems that the BIOS does not support clone mode), machine hangs during nouveau initialization.

The weird thing is that when the monitors are switched using Fn+F8 before boot (doesn't matter which one is kept enabled), nouveau does not hang.

The same thing happens with Debian Wheezy default 3.2 kernel and also 3.16 kernel from backports.
Comment 1 Ondrej Zary 2015-03-07 16:48:31 UTC
Created attachment 114115 [details]
netconsole log from nouveau when it works
Comment 2 Ilia Mirkin 2015-03-07 17:06:24 UTC
Could you do the problematic boot with

nouveau.debug=trace

I assume that the nouveau messages are the last ones you see before the hang? 

Also upload your vbios (/sys/kernel/debug/dri/0/vbios.rom) from a non-problematic boot.
Comment 3 Ondrej Zary 2015-03-28 12:56:12 UTC
Yes, that are the last messages.
nouveau.debug=trace does not seem to provide any more output
Comment 4 Ondrej Zary 2015-03-28 12:58:26 UTC
Created attachment 114682 [details]
BIOS
Comment 5 Ondrej Zary 2015-03-28 13:52:08 UTC
By adding printks to the code, I found that it hangs in drm_fb_helper_single_add_all_connectors()
Comment 6 Ondrej Zary 2015-03-28 14:00:38 UTC
Sorry, I missed one printk. It hangs in drm_helper_disable_unused_functions()
Comment 7 Ondrej Zary 2015-03-28 14:35:27 UTC
Hangs while disabling LVDS:

[  261.444665] before fbcon_init
[  261.444733] before helper_prepare
[  261.444743] before helper_init
[  261.444769] before helper_add_all_conn
[  261.444780] after helper_add_all_conn, ret=0
[  261.444833] before disable_unused
[  261.444843] drm_helper_disable_unused_functions
[  261.445683] __drm_helper_disable_unused_functions
[  261.445697] encoder=DAC-28
[  261.445755] encoder not in use
[  261.445765] setting dpms off
[  261.445797] encoder disabled ok
[  261.445806] encoder=LVDS-30
[  261.445859] encoder not in use
[  261.445868] setting dpms off
Comment 8 Ilia Mirkin 2015-03-28 14:47:57 UTC
One thing to note is that your DCB has 3 items:

DCB 0: type 0 [ANALOG] I2C 0 heads 0 conntag 0 LOCAL OR 0 maxfreq 350000kHz
DCB 1: type 4 [???] I2C 1 heads 1 unk00_4 1 conntag 1 LOCAL OR 1
DCB 2: type 1 [TV] I2C 1 heads 0 unk00_4 1 conntag 2 EXT 0 OR 0

Type 4 is a reserved type, I've seen it used for external encoders like the external DVI encoder on 6150SE nForce motherboards. (There is also Type 3, LVDS, which you don't appear to have, but perhaps it didn't exist in the NV11 days.) However you're seeing a LVDS connector in the logs, which means that *somehow* it knows...

BTW, a bunch of the dispnv04 code uses NV_DEBUG() which IIRC will show up with drm.debug=0xe. I thought I had changed it to work with nouveau.debug, but... you may be using an older kernel, or I'm misremembering.
Comment 9 Ondrej Zary 2015-03-28 17:13:57 UTC
It looks like it hangs in nv04_dfp_get_bound_head() in the final NVReadRAMDAC call (in return):

[  356.630063] encoder disabled ok
[  356.630072] encoder=LVDS-30
[  356.630125] encoder not in use
[  356.630134] setting dpms off
[  356.630156] nv04_lvds_dpms
[  356.630167] Setting dpms mode 3 on lvds encoder (output 1)
[  356.630219] before power_scripts
[  356.630229] use_power_scripts
[  356.630251] nv04_dfp_get_bound_head
[  356.630261] nv04_dfp_get_bound_head after writeRAMDAC


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.