Bug 89483

Summary: [NV11] Hangs on boot with external monitor active on Dell Latitude C810
Product: xorg Reporter: Ondrej Zary <linux>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED MOVED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: 7.7 (2012.06)   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
netconsole log from nouveau before hang
none
netconsole log from nouveau when it works
none
BIOS none

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
Comment 10 Martin Peres 2019-12-04 08:56:16 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/173.

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.