Bug 111179

Summary: [Regression]Multiple monitors via DP TB dock detection/resolution/layout failure after Skylake->Coffeelake upgrade
Product: DRI Reporter: Arcadiy Ivanov <arcadiy>
Component: DRM/IntelAssignee: Intel GFX Bugs mailing list <intel-gfx-bugs>
Status: RESOLVED MOVED QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: major    
Priority: high CC: intel-gfx-bugs
Version: unspecifiedKeywords: regression
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard: Triaged
i915 platform: CFL i915 features: display/DP, display/eDP
Attachments:
Description Flags
5.1.18 debug log
none
debug dmesg of drm-tip 2019y-07m-23d-12h-27m-47s UTC none

Description Arcadiy Ivanov 2019-07-20 21:58:33 UTC
1. Dell Precision 7510 (Skylake) laptop running Fedora KDE 30 is used with a TB dock (StarTech TB3DKM2DP) and two 4k Samsung monitors via DisplayPort without a problem. One 4K monitor runs vertically, one horizontally, plus a laptop panel, unified into one virtual.

2. An SSD is removed from the Skylake and placed into a brand new Dell Precision 5540 (Coffeelake), connecting into exactly the same TB dock with exactly the same monitor setup via the same cables.

3. Attempting the same layout results in a variety of failures in X11 with a failure to activate one of the 4K monitors, errors in X11 logs, layout failure etc. End result is one of the two monitors never functions.

4. Changing the type of a TB dock (Dell WD19TB) produces same results on 5540.

Key point: setup worked on Skylake, stopped on Coffeelake with no software or peripheral changes.

Setup details:

==========================================================
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 (Mobile) [8086:3e9b] (rev 02) (prog-if 00 [VGA controller])
        DeviceName:  Onboard IGD
        Subsystem: Dell Device [1028:0906]
<snip>
        Kernel driver in use: i915
        Kernel modules: i915

==========================================================
[    0.000000] Command line: BOOT_IMAGE=(hd1,gpt2)/vmlinuz-5.1.18-300.fc30.x86_64 root=/dev/mapper/fedora-root ro resume=/dev/mapper/fedora-swap rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rootflags=discard rhgb i915.enable_dc=2 i915.disable_power_well=0 i915.enable_fbc=1 i915.enable_guc=3 i915.enable_dpcd_backlight=1 l1tf=flush rd.driver.blacklist=nouveau
[    0.431540] Kernel command line: BOOT_IMAGE=(hd1,gpt2)/vmlinuz-5.1.18-300.fc30.x86_64 root=/dev/mapper/fedora-root ro resume=/dev/mapper/fedora-swap rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rootflags=discard rhgb i915.enable_dc=2 i915.disable_power_well=0 i915.enable_fbc=1 i915.enable_guc=3 i915.enable_dpcd_backlight=1 l1tf=flush rd.driver.blacklist=nouveau
[    2.945556] fb0: switching to inteldrmfb from EFI VGA
[    2.946312] i915 0000:00:02.0: vgaarb: deactivate vga console
[    2.948378] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    2.948379] [drm] Driver supports precise vblank timestamp query.
[    2.949112] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    2.949389] [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[    3.247818] [drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0)
[    3.258731] [drm] GuC: Loaded firmware i915/kbl_guc_ver9_39.bin (version 9.39)
[    3.269950] i915 0000:00:02.0: GuC firmware version 9.39
[    3.269956] i915 0000:00:02.0: GuC submission enabled
[    3.269960] i915 0000:00:02.0: HuC enabled
[    3.272526] [drm] Initialized i915 1.6.0 20190207 for 0000:00:02.0 on minor 0
[    3.297157] fbcon: inteldrmfb (fb0) is primary device
[    4.476651] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[   12.641726] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])


==========================================================

$ less /var/log/Xorg.0.log | grep -i 'intel\|version'
X Protocol Version 11, Revision 0
[    19.277] Current version of pixman: 0.38.0
        to make sure that you have the latest version.
[    19.280] (II) Module ABI versions:
[    19.290]    compiled for 1.20.5, module version = 1.0.0
[    19.290]    ABI class: X.Org Server Extension, version 10.0
[    19.290] (II) Applying OutputClass "intel" to /dev/dri/card0
[    19.290]    loading driver: intel
[    19.290] (II) Applying OutputClass "intel" to /dev/dri/card0
[    19.290]    loading driver: intel
[    19.290] (==) Matched intel as autoconfigured driver 0
[    19.290] (II) LoadModule: "intel"
[    19.290] (II) Loading /usr/lib64/xorg/modules/drivers/intel_drv.so
[    19.292] (II) Module intel: vendor="X.Org Foundation"
[    19.292]    compiled for 1.20.4, module version = 2.99.917
[    19.292]    ABI class: X.Org Video Driver, version 24.0
[    19.292]    compiled for 1.20.5, module version = 1.20.5
[    19.292]    ABI class: X.Org Video Driver, version 24.0
[    19.293]    compiled for 1.20.3, module version = 0.5.0
[    19.293]    ABI class: X.Org Video Driver, version 24.0
[    19.293]    compiled for 1.20.4, module version = 2.4.0
[    19.293]    ABI class: X.Org Video Driver, version 24.0
[    19.293] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets:
[    19.293] (II) intel: Driver for Intel(R) HD Graphics
[    19.293] (II) intel: Driver for Intel(R) Iris(TM) Graphics
[    19.293] (II) intel: Driver for Intel(R) Iris(TM) Pro Graphics
[    19.294] (II) intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20190207
[    19.307]    compiled for 1.20.5, module version = 0.0.2
[    19.307]    ABI class: X.Org Video Driver, version 24.0
[    19.308] (--) intel(0): Integrated Graphics Chipset: Intel(R) HD Graphics
[    19.308] (--) intel(0): CPU: x86-64, sse2, sse3, ssse3, sse4.1, sse4.2, avx, avx2; using a maximum of 8 threads
[    19.308] (II) intel(0): Creating default Display subsection in Screen section
[    19.308] (==) intel(0): Depth 24, (--) framebuffer bpp 32
[    19.308] (==) intel(0): RGB weight 888
[    19.308] (==) intel(0): Default visual is TrueColor
[    19.308] (II) Applying OutputClass "intel" options to /dev/dri/card0
[    19.308] (II) Applying OutputClass "intel" options to /dev/dri/card0
[    19.308] (**) intel(0): Option "AccelMethod" "sna"
[    19.308] (**) intel(0): Option "DRI" "3"
[    19.308] (**) intel(0): Option "TearFree" "true"
[    19.309] (II) intel(0): Output eDP1 has no monitor section
[    19.309] (**) intel(0): Found backlight control interface intel_backlight (type 'raw') for output eDP1
[    19.309] (II) intel(0): Enabled output eDP1
[    19.309] (II) intel(0): Output DP1 has no monitor section
[    19.309] (II) intel(0): Enabled output DP1
[    19.309] (II) intel(0): Output DP2 has no monitor section
[    19.309] (II) intel(0): Enabled output DP2
[    19.309] (II) intel(0): Output DP3 has no monitor section
[    19.309] (II) intel(0): Enabled output DP3
[    19.309] (II) intel(0): Output DP1-1 has no monitor section
[    19.309] (II) intel(0): Enabled output DP1-1
[    19.309] (II) intel(0): Output DP1-2 has no monitor section
[    19.309] (II) intel(0): Enabled output DP1-2
[    19.309] (II) intel(0): Output DP1-3 has no monitor section
[    19.309] (II) intel(0): Enabled output DP1-3
[    19.309] (--) intel(0): Using a maximum size of 256x256 for hardware cursors
[    19.309] (II) intel(0): Output VIRTUAL1 has no monitor section
[    19.309] (II) intel(0): Enabled output VIRTUAL1
[    19.309] (--) intel(0): Output eDP1 using initial mode 1920x1080 on pipe 0
[    19.309] (--) intel(0): Output DP1-1 using initial mode 3840x2160 on pipe 1
[    19.309] (--) intel(0): Output DP1-2 using initial mode 1920x1080 on pipe 2
[    19.310] (**) intel(0): TearFree enabled
[    19.310] (==) intel(0): Using gamma correction (1.0, 1.0, 1.0)
[    19.310] (==) intel(0): DPI set to (96, 96)
[    19.313] (II) intel(0): SNA initialized with Coffeelake (gen9) backend
[    19.313] (==) intel(0): Backing store enabled
[    19.313] (==) intel(0): Silken mouse enabled
[    19.313] (II) intel(0): HW Cursor enabled
[    19.314] (==) intel(0): DPMS enabled
[    19.314] (==) intel(0): Display hotplug detection enabled
[    19.314] (II) intel(0): [DRI2] Setup complete
[    19.314] (II) intel(0): [DRI2]   DRI driver: i965
[    19.314] (II) intel(0): [DRI2]   VDPAU driver: va_gl
[    19.314] (II) intel(0): direct rendering: DRI2 DRI3 enabled
[    19.314] (II) intel(0): hardware support for Present enabled
[    19.337] (II) intel(0): switch to mode 1920x1080@60.0 on eDP1 using pipe 0, position (0, 0), rotation normal, reflection none
[    19.359] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-1 using pipe 1, position (0, 0), rotation normal, reflection none
[    19.367] (II) intel(0): switch to mode 1920x1080@60.0 on DP1-2 using pipe 2, position (0, 0), rotation normal, reflection none
[    19.370] (II) intel(0): Setting screen physical size to 1016 x 571
[    19.407]    compiled for 1.20.3, module version = 0.28.2
[    19.407]    ABI class: X.Org XInput driver, version 24.1
[    19.827] (II) config/udev: Adding input device HDA Intel PCH Headphone Mic (/dev/input/event16)
[    19.827] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=3 (/dev/input/event17)
[    19.828] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=7 (/dev/input/event18)
[    19.828] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=8 (/dev/input/event19)
[    19.829] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=9 (/dev/input/event20)
[    19.829] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=10 (/dev/input/event21)
[    19.830] (II) config/udev: Adding input device Intel HID events (/dev/input/event13)
[    19.830] (**) Intel HID events: Applying InputClass "evdev keyboard catchall"
[    19.830] (**) Intel HID events: Applying InputClass "libinput keyboard catchall"
[    19.830] (**) Intel HID events: Applying InputClass "system-keyboard"
[    19.830] (II) Using input driver 'libinput' for 'Intel HID events'
[    19.830] (**) Intel HID events: always reports core events
[    19.831] (II) event13 - Intel HID events: is tagged by udev as: Keyboard
[    19.831] (II) event13 - Intel HID events: device is a keyboard
[    19.831] (II) event13 - Intel HID events: device removed
[    19.841] (II) XINPUT: Adding extended input device "Intel HID events" (type: KEYBOARD, id 18)
[    19.842] (II) event13 - Intel HID events: is tagged by udev as: Keyboard
[    19.842] (II) event13 - Intel HID events: device is a keyboard
[    19.843] (II) config/udev: Adding input device Intel HID 5 button array (/dev/input/event14)
[    19.843] (**) Intel HID 5 button array: Applying InputClass "evdev keyboard catchall"
[    19.843] (**) Intel HID 5 button array: Applying InputClass "libinput keyboard catchall"
[    19.843] (**) Intel HID 5 button array: Applying InputClass "system-keyboard"
[    19.843] (II) Using input driver 'libinput' for 'Intel HID 5 button array'
[    19.843] (**) Intel HID 5 button array: always reports core events
[    19.844] (II) event14 - Intel HID 5 button array: is tagged by udev as: Keyboard
[    19.844] (II) event14 - Intel HID 5 button array: device is a keyboard
[    19.844] (II) event14 - Intel HID 5 button array: device removed
[    19.853] (II) XINPUT: Adding extended input device "Intel HID 5 button array" (type: KEYBOARD, id 19)
[    19.854] (II) event14 - Intel HID 5 button array: is tagged by udev as: Keyboard
[    19.854] (II) event14 - Intel HID 5 button array: device is a keyboard
[    21.311] (II) intel(0): EDID vendor "SHP", prod id 5306
[    21.311] (II) intel(0): Printing DDC gathered Modelines:
[    21.311] (II) intel(0): Modeline "1920x1080"x0.0  142.52  1920 1968 2000 2080  1080 1083 1088 1142 -hsync -vsync (68.5 kHz eP)
[    33.547] (II) intel(0): resizing framebuffer to 4080x3840
[    33.615] (II) intel(0): switch to mode 1920x1080@60.0 on eDP1 using pipe 0, position (2160, 2760), rotation normal, reflection none
[    33.636] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-1 using pipe 1, position (0, 0), rotation right, reflection none
[   137.796] (II) intel(0): resizing framebuffer to 6000x3840
[   140.293] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-2 using pipe 2, position (2160, 600), rotation normal, reflection none
[   140.294] (EE) intel(0): failed to set mode: No space left on device [28]
[   188.910] (II) intel(0): switch to mode 1920x1080@60.0 on eDP1 using pipe 0, position (1920, 2760), rotation normal, reflection none
[   188.946] (II) intel(0): switch to mode 3840x2160@30.0 on DP1-1 using pipe 1, position (0, 0), rotation right, reflection none
[   191.380] (II) intel(0): switch to mode 3840x2160@30.0 on DP1-2 using pipe 2, position (2160, 600), rotation normal, reflection none
[   287.291] (II) intel(0): switch to mode 1920x1080@60.0 on eDP1 using pipe 0, position (2160, 2760), rotation normal, reflection none
[   287.336] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-1 using pipe 1, position (0, 0), rotation right, reflection none
[   287.424] (EE) intel(0): failed to set mode: No space left on device [28]
[   287.778] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-2 using pipe 2, position (2160, 600), rotation normal, reflection none
[   289.051] (EE) intel(0): Page flipping failed, disabling TearFree
[   336.531] (II) intel(0): switch to mode 3840x2160@30.0 on DP1-2 using pipe 2, position (2160, 600), rotation normal, reflection none
[   376.201] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-1 using pipe 1, position (0, 0), rotation right, reflection none
[   376.202] (EE) intel(0): failed to set mode: No space left on device [28]
[   376.272] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-2 using pipe 2, position (2160, 600), rotation normal, reflection none
[   409.962] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-1 using pipe 1, position (0, 0), rotation right, reflection none
[   411.210] (II) intel(0): resizing framebuffer to 4080x3840
Comment 1 Arcadiy Ivanov 2019-07-20 22:19:42 UTC
BIOS Information
        Vendor: Dell Inc.
        Version: 1.1.1
        Release Date: 05/31/2019

System Information
        Manufacturer: Dell Inc.
        Product Name: Precision 5540
        SKU Number: 0906
        Family: Precision

Base Board Information
        Manufacturer: Dell Inc.
        Product Name: 0V030K
        Version: A00
Comment 2 Arcadiy Ivanov 2019-07-20 22:21:47 UTC
Fedora KDE 30
Kernel 5.1.18-300.fc30.x86_64
i915 KMS Driver 5.1.18-300.fc30.x86_64
Comment 3 Arcadiy Ivanov 2019-07-20 22:24:59 UTC
i915 KMS Driver version 1.6.0 20190207
Comment 4 Lakshmi 2019-07-22 13:36:23 UTC
Reporter, can you please attach the coffeelake dmesg from boot with kernel parameters drm.debug=0x1e log_buf_len=4M?
Have you verified the issue with drm-tip (https://cgit.freedesktop.org/drm-tip)?
Comment 5 Arcadiy Ivanov 2019-07-22 14:11:15 UTC
I will post the debug log and no, I haven't tried with drm-tip.
Comment 6 Arcadiy Ivanov 2019-07-22 15:00:09 UTC
Created attachment 144841 [details]
5.1.18 debug log

Please let me know if this is not enough and you actually need me to try drm-tip.
Comment 7 Lakshmi 2019-07-23 06:41:39 UTC
(In reply to Arcadiy Ivanov from comment #5)
> I will post the debug log and no, I haven't tried with drm-tip.

Can you verify with drmtip and give the feedback? This will be helpful during investigation.
Comment 8 Arcadiy Ivanov 2019-07-23 16:52:23 UTC
Created attachment 144857 [details]
debug dmesg of drm-tip 2019y-07m-23d-12h-27m-47s UTC

drm-tip fails in exactly the same way

[  4647.409] (II) intel(0): resizing framebuffer to 6000x3840
[  4649.997] (II) intel(0): switch to mode 3840x2160@60.0 on DP1-2 using pipe 2, position (2160, 600), rotation normal, reflection none
[  4650.008] (EE) intel(0): failed to set mode: No space left on device [28]
Comment 9 Arcadiy Ivanov 2019-07-23 16:55:33 UTC
Please let me know if you need anything else.
Comment 10 Ville Syrjala 2019-08-27 15:16:30 UTC
I think the main issues is that your 4x5.4Gbps DP link doesn't have enough bandwidth to support two 4k@60 displays:
[   81.717461] [drm:drm_dp_mst_atomic_check [drm_kms_helper]] [MST PORT:000000006465ad61] requires 47 vcpi slots
[   81.717472] [drm:drm_dp_mst_atomic_check [drm_kms_helper]] [MST PORT:00000000fb13674f] requires 47 vcpi slots
[   81.717483] [drm:drm_dp_mst_atomic_check [drm_kms_helper]] [MST PORT:00000000fb13674f] not enough VCPI slots in mst state 000000006830e28e (avail=16)
[   81.717516] [drm:drm_atomic_check_only [drm]] atomic driver check for 000000004efe656f failed: -28

There is just no way to make that work. The only explanation I have why the SKL might have worked is that its TB implementation uses multiple DP links for the TB dock whereas the CFL uses just one link for whatever reason. The TB hardware supposedly is different between the two platforms.

Our TB guru suggested that you should perhaps try to upgrade the TB firmware on the machine and see if that helps.
Comment 11 Arcadiy Ivanov 2019-08-27 16:51:38 UTC
Thanks for looking at this.

Both Dell Precision 7510 (SKL) and Dell Precision 5540 (CFL) have the same TB capabilities, TB3 ***HBR2***. It's true, with HBR2 they don't support 2x4k@60Hz(**), but the point of filing this bug was somewhat different - there was a change in behavior in monitor detection and resolution/refresh rate setting.

SKL was supporting 2x4k with auto-detection, which, given hardware limitations, means that it was settling on 2x4k@30Hz mode all by itself. When an upgrade was made to CFL, this auto-detection stopped working properly - as you can see it tried to configure 2x4K@60Hz and failed, without fallback to 2x4K@30Hz.

The change in behavior cannot be blamed on changes in Xorg, xrandr etc - the entire SSD was moved. Dock is similarly blameless - it was the same dock. The only change was laptop hardware. Given that monitors could be detected and EDID was read the expected fallback should've been onto the 2x4K@30Hz on CFL same as on SKL. It wasn't.

All firmware is up-to-date.

=====
** there is a way with WD19TB for 2x4k@60Hz with DP pass-through, but this wasn't the setup for this bug
Comment 12 Ville Syrjala 2019-09-03 15:08:29 UTC
(In reply to Arcadiy Ivanov from comment #11)
> Thanks for looking at this.
> 
> Both Dell Precision 7510 (SKL) and Dell Precision 5540 (CFL) have the same
> TB capabilities, TB3 ***HBR2***. It's true, with HBR2 they don't support
> 2x4k@60Hz(**), but the point of filing this bug was somewhat different -
> there was a change in behavior in monitor detection and resolution/refresh
> rate setting.
> 
> SKL was supporting 2x4k with auto-detection, which, given hardware
> limitations, means that it was settling on 2x4k@30Hz mode all by itself.
> When an upgrade was made to CFL, this auto-detection stopped working
> properly - as you can see it tried to configure 2x4K@60Hz and failed,
> without fallback to 2x4K@30Hz.

Are you sure SKL used 30Hz? If it did then that was being done by some userspace component. The kernel driver never does stuff like that (it just more or less blindly tries to do what userspace asks).
Comment 13 Martin Peres 2019-11-29 19:19:26 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/drm/intel/issues/341.

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.