Bug 90951 - [snb dp] Display connected to displayport doesn't wake up when it's turn off and on or enters power saving mode
Summary: [snb dp] Display connected to displayport doesn't wake up when it's turn off ...
Status: RESOLVED OBSOLETE
Alias: None
Product: Drivers
Classification: Unclassified
Component: Video(DRI - Intel) (show other bugs)
Hardware: All Linux
: P3 normal
Assignee: intel-gfx-bugs@lists.freedesktop.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-01-08 02:20 UTC by Thomas Mann
Modified: 2015-10-08 07:52 UTC (History)
1 user (show)

See Also:
Kernel Version: 3.18.1
Subsystem:
Regression: No
Bisected commit-id:


Attachments
dmesg output (251.54 KB, text/plain)
2015-01-09 16:32 UTC, Thomas Mann
Details
better dmesg (172.20 KB, text/plain)
2015-01-09 16:41 UTC, Thomas Mann
Details
dmesg output directly after boot (116.74 KB, text/plain)
2015-01-09 16:47 UTC, Thomas Mann
Details

Description Thomas Mann 2015-01-08 02:20:22 UTC
I use a x220 with a Hd4000 GPU. It only supports two display at the same time and has a Display connected to the displayport and one connected to the VGA port (both are active and the integrated display is turned off)

Screen 0: minimum 8 x 8, current 3584 x 1080, maximum 32767 x 32767
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
DP1 connected primary 2560x1080+0+0 (normal left inverted right x axis y axis) 677mm x 290mm
   2560x1080      60.0*+
   1920x1080      60.0     60.0     50.0     59.9  
   1920x1080i     60.1     50.0     60.0  
   1680x1050      60.0  
   1600x900       60.0  
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1280x720       60.0     50.0     59.9  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   720x576        50.0  
   720x480        60.0     59.9  
   640x480        75.0     60.0     59.9  
   720x400        70.1  
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1024x768+2560+0 (normal left inverted right x axis y axis) 920mm x 518mm
   1024x768       60.0*+   75.1     70.1  
   800x600        85.1     72.2     75.0     60.3     56.2  
   848x480        60.0  
   640x480        85.0     75.0     72.8     60.0     59.9  
   720x400        70.1  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

After the display that is connted to the displayport is turned off and on again the display doesnt work anymore and goes back into power saving mode after a few seconds. When i turn off the display and turn it on again with xrandr it works again.The same happens when i just use the display at the display port and the internal display. The same thing also happens when the display connected to the displayport enters sleeping mode, most of the time.

The display at the VGA port works as expected.
Comment 1 Thomas Mann 2015-01-08 02:25:42 UTC
after the display stopped working, the output of xrandr looks like this:

Screen 0: minimum 8 x 8, current 3584 x 1080, maximum 32767 x 32767
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
DP1 connected primary 2560x1080+0+0 (normal left inverted right x axis y axis) 677mm x 290mm
   2560x1080      60.0*+
   1920x1080      60.0     60.0     50.0     59.9  
   1920x1080i     60.1     50.0     60.0  
   1680x1050      60.0  
   1600x900       60.0  
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1280x720       60.0     50.0     59.9  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   720x576        50.0  
   720x480        60.0     59.9  
   640x480        75.0     60.0     59.9  
   720x400        70.1  
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1024x768+2560+0 (normal left inverted right x axis y axis) 920mm x 518mm
   1024x768       60.0*+   75.1     70.1  
   800x600        85.1     72.2     75.0     60.3     56.2  
   848x480        60.0  
   640x480        85.0     75.0     72.8     60.0     59.9  
   720x400        70.1  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
Comment 2 Thomas Mann 2015-01-08 15:07:17 UTC
calling xset dpms force standby
and moving the mouse also works most of the time to wake up the screen after it stays black instead of showing the desktop
Comment 3 Jani Nikula 2015-01-09 08:10:05 UTC
Please attach /sys/kernel/debug/dri/0/i915_power_domain_info and dmesg all the way from boot with drm.debug=14 set.
Comment 4 Thomas Mann 2015-01-09 16:31:56 UTC
cat /sys/kernel/debug/dri/0/i915_power_domain_info
Power well/domain         Use count
always-on                 8
  PIPE_A                  1
  PIPE_B                  1
  PIPE_C                  0
  PIPE_A_PANEL_FITTER     0
  PIPE_B_PANEL_FITTER     0
  PIPE_C_PANEL_FITTER     0
  TRANSCODER_A            1
  TRANSCODER_B            1
  TRANSCODER_C            0
  TRANSCODER_EDP          0
  PORT_DDI_A_2_LANES      0
  PORT_DDI_A_4_LANES      0
  PORT_DDI_B_2_LANES      0
  PORT_DDI_B_4_LANES      1
  PORT_DDI_C_2_LANES      0
  PORT_DDI_C_4_LANES      0
  PORT_DDI_D_2_LANES      0
  PORT_DDI_D_4_LANES      0
  PORT_DSI                0
  PORT_CRT                0
  PORT_OTHER              1
  VGA                     0
  AUDIO                   0
  PLLS                    2
  INIT                    0
Comment 5 Thomas Mann 2015-01-09 16:32:40 UTC
Created attachment 162961 [details]
dmesg output
Comment 6 Thomas Mann 2015-01-09 16:33:26 UTC
after
[   44.484441] [drm:drm_mode_addfb] [FB:44]

i attached the display to the displayport

and after 


[   91.427813] [drm:intel_crtc_cursor_set_obj] cursor off

i called 

sleep 1 ; xset dpms force standby
Comment 7 Thomas Mann 2015-01-09 16:41:28 UTC
Created attachment 162971 [details]
better dmesg
Comment 8 Thomas Mann 2015-01-09 16:43:57 UTC
the last dmesg shows the error from the beginning.

The display works and is set to sleep with

sleep 1 ; xset dpms force standby

i think in line the problem begins, here the display should wake up.

[  615.886870] [drm:intel_dp_set_signal_levels] Using signal levels 00000000
[  615.889556] [drm:intel_dp_aux_ch] dp_aux_ch timeout status 0x7013003f
[  615.889563] [drm:intel_dp_start_link_train] *ERROR* failed to enable link training
[  615.892245] [drm:intel_dp_aux_ch] dp_aux_ch timeout status 0x7013003f
[  615.892252] [drm:intel_dp_complete_link_train] *ERROR* failed to start channel equalization
[  615.894763] [drm:intel_dp_aux_ch] dp_aux_ch timeout status 0x7013003f
[  615.895282] [drm:ironlake_update_primary_plane] Writing base 0D480000 00000000 0 0 15872
[  615.895301] [drm:intel_update_fbc] more than one pipe active, disabling compression
[  615.895400] [drm:intel_connector_check_state] [CONNECTOR:14:LVDS-1]
[  615.895414] [drm:intel_connector_check_state] [CONNECTOR:28:DP-1]

the rest of the output also includes

the commands:
         xrandr --output VGA1 \
                --off \
                --output DP1 \
                --off
         xrandr --output LVDS1 \
                --auto \
                --primary

        xrandr --dpi 96

        xrandr --output LVDS1 \
                --auto \
                --output  DP1 \
                --auto \
                --left-of LVDS1

which brings DP1 back o life
Comment 9 Thomas Mann 2015-01-09 16:47:54 UTC
Created attachment 162981 [details]
dmesg output directly after boot
Comment 10 Thomas Mann 2015-01-27 15:40:07 UTC
it's a HD3000 card and the error still exists

the error also doesnt happen when only DP1 is used. with this configuration the display works as expected
Comment 11 Thomas Mann 2015-02-07 16:38:04 UTC
tested 3.18.8 - bugs is still present
Comment 12 Thomas Mann 2015-02-07 16:38:20 UTC
i ment 3.18.6
Comment 13 Jani Nikula 2015-02-11 14:06:29 UTC
Probably doesn't matter, but please drop these from the kernel cmdline:

i915.i915_enable_fbc=1 i915.lvds_downclock=1 i915.i915_enable_rc6=3
Comment 14 Thomas Mann 2015-02-13 13:41:18 UTC
removing the cmdline options doesn't solve the problem.

tested with 3.19.0
Comment 15 Thomas Mann 2015-02-15 10:03:57 UTC
i found this in my latest 3.19.0 log

[29279.887541] ------------[ cut here ]------------
[29279.887555] WARNING: CPU: 0 PID: 22736 at drivers/gpu/drm/i915/intel_display.c:9713 intel_check_page_flip+0xbc/0xd0()
[29279.887557] Kicking stuck page flip: queued at 521920, now 521926
[29279.887563] CPU: 0 PID: 22736 Comm: crypter Not tainted 3.19.0-gentoo #3
[29279.887565] Hardware name: LENOVO 4291UYX/4291UYX, BIOS 8DET69WW (1.39 ) 07/18/2013
[29279.887568]  0000000000000000 ffffffff81f683a0 ffffffff81b60554 ffff88041e203de8
[29279.887572]  ffffffff811024a2 ffff88040bfe3800 ffff88040b625000 0000000000000001
[29279.887575]  0000000000000001 0000000000000001 ffffffff81102555 ffffffff81f6b090
[29279.887579] Call Trace:
[29279.887580]  <IRQ>  [<ffffffff81b60554>] ? dump_stack+0x40/0x50
[29279.887592]  [<ffffffff811024a2>] ? warn_slowpath_common+0x72/0xb0
[29279.887596]  [<ffffffff81102555>] ? warn_slowpath_fmt+0x45/0x50
[29279.887602]  [<ffffffff815f7bac>] ? __intel_pageflip_stall_check+0xbc/0x100
[29279.887605]  [<ffffffff8160a29c>] ? intel_check_page_flip+0xbc/0xd0
[29279.887611]  [<ffffffff815dfffd>] ? ironlake_irq_handler+0x31d/0x1040
[29279.887616]  [<ffffffff81143f39>] ? handle_irq_event_percpu+0x29/0xf0
[29279.887619]  [<ffffffff8114402c>] ? handle_irq_event+0x2c/0x50
[29279.887623]  [<ffffffff81146b5f>] ? handle_edge_irq+0x6f/0x110
[29279.887628]  [<ffffffff8103ec25>] ? handle_irq+0x15/0x20
[29279.887631]  [<ffffffff8103e642>] ? do_IRQ+0x42/0xe0
[29279.887636]  [<ffffffff81b6a9ea>] ? common_interrupt+0x6a/0x6a
[29279.887637]  <EOI> 
[29279.887639] ---[ end trace eea2bdafb747793a ]---
Comment 16 Thomas Mann 2015-03-20 20:42:53 UTC
bus still present in 3.19.2
Comment 17 Tom Yan 2015-03-21 07:02:20 UTC
I used to have a similar problem when I use a Radeon with my DP monitor. I recall if I remove a whole part of code, everything will works perfectly, while the dev claimed that it's required by most because hot plug detection of DP is kind of tricky, and my case is a special case.

Later when I read the manual of my monitor, it seems to me that for some board it needs to be switched to a special mode so that it would handle dpms correctly. I cannot test if it's the solution because I no longer have the radeon board and my monitor works perfectly with the DP onboard (haswell gfx) and nvidia without going into that mode. Nevertheless you might want to see if yours got such a mode.

References:
1. The code I removed to make things work: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/radeon/radeon_connectors.c?id=bfa76d49576599a4b9f9b7a71f23d73d6dcff735#n69

2. Manual of my monitor, see Chapter 5.1 Case 3: http://www.eizoglobal.com/support/db/files/manuals/03V24733D1/UM-03V24733D1-EN.pdf
Comment 18 Jani Nikula 2015-06-16 10:12:14 UTC
Please try v4.0-rc8.
Comment 19 Jani Nikula 2015-10-07 10:57:47 UTC
Long time no updates, closing.

If the problem persists with latest kernels, please file a bug at the freedesktop.org bugzilla [1], referencing this bug. Thank you.

[1] https://bugs.freedesktop.org/enter_bug.cgi?product=DRI&component=DRM/Intel

Note You need to log in before you can comment on or make changes to this bug.