Bug 91900 - Unable to correctly set 3 monitor outputs with different resolution/clock on newer kernel/intel driver
Summary: Unable to correctly set 3 monitor outputs with different resolution/clock on ...
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: medium major
Assignee: Intel GFX Bugs mailing list
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-09-07 00:54 UTC by MaurizioB
Modified: 2017-07-24 22:45 UTC (History)
2 users (show)

See Also:
i915 platform: IVB
i915 features: display/HDMI, display/Other


Attachments
Xorg.0.log (separated with marks) (21.05 KB, text/plain)
2015-09-07 00:54 UTC, MaurizioB
no flags Details
intel_reg_dumper output (17.68 KB, text/plain)
2015-09-07 00:56 UTC, MaurizioB
no flags Details
VBIOS dump (64.00 KB, application/octet-stream)
2015-09-07 00:56 UTC, MaurizioB
no flags Details
xrandr --verbose outputs (9.43 KB, application/zip)
2015-09-07 00:58 UTC, MaurizioB
no flags Details
dmesg with drm.debug=0xe (62.68 KB, application/zip)
2015-09-07 01:01 UTC, MaurizioB
no flags Details

Description MaurizioB 2015-09-07 00:54:07 UTC
Created attachment 118113 [details]
Xorg.0.log (separated with marks)

This setup used to work with xf86-video-intel version 2.21.15 and kernel 3.10.7:
VGA1: analog output to 1280x1024 - VGA connector
HDMI1: digital output to 1440x900 - DVI connector
HDMI2: digital output to 1280x1024 - HDMI connector
from left to right, total screen size: 4000x1024

Using the same kernel with driver 2.99.917 it is possible by manually and respectively setting the resolution of HDMI1 to 1280x960, 1280x1024 and finally 1440x900 like this:

xrandr --output HDMI1 --off
xrandr --output HDMI2 --off
xrandr --output VGA1 --mode 1280x1024 --primary --output HDMI2 --mode 1280x1024 --right-of VGA1
xrandr --output HDMI1 --mode 1280x960
xrandr --output HDMI1 --mode 1280x1024
xrandr --output HDMI1 --mode 1440x900 --primary --right-of VGA1 --output HDMI2 --mode 1280x1024 --right-of HDMI1

With kernel 4.0.5 (latest stable for my distribution) it's not possible even with this "workaround".

After talking on #intel-gfx I came up with some test outputs, this is the sequence of what happens (with intel-2.99.917 and kernel-4.0.5) for the logs I'll attach later, they are numbered according to the file name suffix:

00 - boot:
 outputs of boot after login shell

0 - startup, no xrandr commands:
 VGA1 ok (1280x1024)
 HDMI1 clone of VGA1 - correct resolution (1440x900)
 HDMI2 off
 actual screen size: 1440x1024

1 - run working xrandr script (sequence reported above)
 VGA1 ok
 HDMI1 clone of VGA1 (1280x1024)
 HDMI2 right of VGA1/HDMI1 (1280x1024)

2 - noscreen: disabling everything
 nothing

3 - vga1 only
 VGA1 ok
 HDMI1/2 off

4 - resetting
 VGA1 ok
 HDMI1 clone of VGA1
 HDMI2 ok (1280x1024) but at right of "ghost" HDMI1, x offset 1280(VGA1)+1440(HDMI1)

The command for "resetting" was:
xrandr --output VGA1 --crtc 2 --mode 1280x1024 --refresh 60 --left-of HDMI1 --output HDMI1 --crtc 0 --mode 1440x900 --refresh 60 --output HDMI2 --crtc 1 --mode 1280x1024 --refresh 60 --right-of HDMI1


System info:
i686 architecture
kernels 3.10.7-gentoo-r1 (working with workaround) and 4.0.5-gentoo
Gentoo Linux
i5-3570K CPU @ 3.40GHz
ASUS P8Z77-V LX

Attaching the Xorg log (for kernel 4) with 3 separation asterisks and description to mark the different points.
Comment 1 MaurizioB 2015-09-07 00:56:10 UTC
Created attachment 118114 [details]
intel_reg_dumper output

This is actually the output for kernel 3.10.7, notify me if you need the 4.0.5.
Comment 2 MaurizioB 2015-09-07 00:56:32 UTC
Created attachment 118115 [details]
VBIOS dump
Comment 3 MaurizioB 2015-09-07 00:58:27 UTC
Created attachment 118116 [details]
xrandr --verbose outputs
Comment 4 MaurizioB 2015-09-07 01:01:31 UTC
Created attachment 118117 [details]
dmesg with drm.debug=0xe

dmesg outputs after setting 0xe > /sys/module/drm/parameters/debug

The intel-dmesg-3.10-* refer to kernel 3.10.7 (full setup working with workaround), the intel-dmesg-4.0-* refer to kernel 4.0.5
Comment 5 Ville Syrjala 2015-09-08 15:40:09 UTC
The dmesgs don't seem to match your supposed xrandr calls very well. Looking at intel-dmesg-4.0-3-vgaonly, I see it doing the following

1. enables pipe A -> HDMI-A-1, picks DPLL A, clock is 106500kHz
2. enables pipe B -> HDMI-A-2, picks DPLL B, clock is 108000kHz
3. tries to enable pipe C -> VGA-1, fails to find a DPLL even though the clock is the same 108000kHz that DPLL B is already producing

I don't see what could be different between DPLL settings between pipe B an C, both use the same PLL limits, and there should be no SSC/etc. things to worry about. Unfortunately the driver is being extremely unhelpful and doesn't print out any of the DPLL settings it's trying to match so I can't see what the actual difference is.
Comment 6 dog 2016-11-02 22:23:58 UTC
Please retest with the latest upstream driver and report if the problem is still being seen.  Thanks.
Comment 7 Ville Syrjala 2016-11-02 23:32:36 UTC
This should be fixed by:
commit a3fd4c67af3d8a81d241b3d51b3525f36f1d68bb
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Sep 26 11:30:46 2016 +0300

    drm/i915: Allow PCH DPLL sharing regardless of DPLL_SDVO_HIGH_SPEED

Seems I forgot that we had more than one bug report about this problem.


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.