Bug 90609 - [hsw dp mst] Kernel crash when using DisplayPort MST on W740SU with Dell U2414H
Summary: [hsw dp mst] Kernel crash when using DisplayPort MST on W740SU with Dell U2414H
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: DRI git
Hardware: Other All
: medium normal
Assignee: Intel GFX Bugs mailing list
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-05-24 02:56 UTC by Ricardo Salveti de Araujo
Modified: 2017-07-24 22:46 UTC (History)
3 users (show)

See Also:
i915 platform: HSW
i915 features: display/DP MST


Attachments
Complete dmesg with drm.debug=0x06 (222.68 KB, text/plain)
2015-05-24 02:56 UTC, Ricardo Salveti de Araujo
no flags Details
Null pointer dereference that causes the kernel crash (871.31 KB, text/plain)
2015-05-24 03:01 UTC, Ricardo Salveti de Araujo
no flags Details
Null pointer dereference that causes the kernel crash (871.31 KB, image/jpeg)
2015-05-24 03:02 UTC, Ricardo Salveti de Araujo
no flags Details

Description Ricardo Salveti de Araujo 2015-05-24 02:56:31 UTC
Created attachment 115999 [details]
Complete dmesg with drm.debug=0x06

Whenever I plug my Dell U2414H monitor (DisplayPort MST enabled) at my Galago Ultrapro/W740SU (Intel Iris Pro Graphics 5200), I get a display hang and then a kernel crash, causing a reboot.

Using latest drm-intel-nightly (4.1-rc4+).

My system:
Architecture: amd64
DistroRelease: Ubuntu 15.04
MachineType: System76, Inc. Galago UltraPro
PackageArchitecture: amd64
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.1.0-994-generic root=UUID=c87bf02e-1fdc-48ca-9392-be946b4de06e ro quiet splash drm.debug=0x06 vt.handoff=7
Uname: Linux evasys 4.1.0-994-generic #201505230305 SMP Sat May 23 02:06:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Enabled drm.debug=0x06, and after a reboot this is what I got in my syslog:

[   61.338854] WARNING: CPU: 0 PID: 103 at /home/kernel/COD/linux/drivers/gpu/drm/i915/intel_display.c:12262 check_encoder_state+0x165/0x380 [i915]()
[   61.338854] active encoder's pipe doesn't match(expected 1, found 0)
[   61.338872] Modules linked in: ctr ccm xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack xt_tcpudp bridge stp llc iptable_filter ip_tables x_tables ec_sys binfmt_misc rfcomm bnep dm_crypt uvcvideo videobuf2_vmalloc hid_logitech_hidpp videobuf2_memops videobuf2_core v4l2_common btusb videodev btbcm btintel media snd_usb_audio arc4 bluetooth snd_usbmidi_lib iwldvm mac80211 x86_pkg_temp_thermal intel_powerclamp coretemp snd_hda_codec_hdmi kvm_intel kvm snd_hda_codec_via snd_hda_codec_generic dm_multipath scsi_dh crct10dif_pclmul snd_hda_intel snd_hda_codec crc32_pclmul iwlwifi ghash_clmulni_intel snd_hda_core aesni_intel snd_hwdep snd_pcm aes_x86_64 lrw gf128mul snd_seq_midi glue_helper snd_seq_midi_event ablk_helper
[   61.338885]  cryptd snd_rawmidi cfg80211 joydev rtsx_pci_ms snd_seq memstick serio_raw mei_me snd_seq_device mei snd_timer lpc_ich shpchp snd hid_logitech_dj soundcore tpm_infineon mac_hid parport_pc ppdev lp parport autofs4 btrfs xor raid6_pq hid_generic usbhid hid i915 rtsx_pci_sdmmc i2c_algo_bit drm_kms_helper e1000e psmouse drm ahci ptp libahci rtsx_pci pps_core wmi video
[   61.338887] CPU: 0 PID: 103 Comm: kworker/0:2 Not tainted 4.1.0-994-generic #201505230305
[   61.338887] Hardware name: Notebook                         W740SU                          /W740SU                          , BIOS 4.6.5 09/11/2014
[   61.338894] Workqueue: events_long drm_dp_mst_link_probe_work [drm_kms_helper]
[   61.338896]  0000000000002fe6 ffff8804082f7a88 ffffffff817ff6ab 0000000000005698
[   61.338896]  ffff8804082f7ad8 ffff8804082f7ac8 ffffffff8107d0e7 ffff8804082f7ae8
[   61.338897]  ffff880407d16200 ffff88040830bb30 0000000000000001 ffff88040830b800
[   61.338898] Call Trace:
[   61.338902]  [<ffffffff817ff6ab>] dump_stack+0x45/0x57
[   61.338904]  [<ffffffff8107d0e7>] warn_slowpath_common+0x97/0xe0
[   61.338905]  [<ffffffff8107d1e6>] warn_slowpath_fmt+0x46/0x50
[   61.338919]  [<ffffffffc0279805>] check_encoder_state+0x165/0x380 [i915]
[   61.338932]  [<ffffffffc0292f65>] intel_modeset_check_state+0x65/0xc0 [i915]
[   61.338944]  [<ffffffffc0293118>] intel_crtc_set_config+0x158/0x290 [i915]
[   61.338955]  [<ffffffffc00730d6>] drm_mode_set_config_internal+0x66/0x110 [drm]
[   61.338961]  [<ffffffffc01bdef8>] restore_fbdev_mode+0xc8/0xf0 [drm_kms_helper]
[   61.338967]  [<ffffffffc01bfa30>] drm_fb_helper_restore_fbdev_mode_unlocked+0x30/0x80 [drm_kms_helper]
[   61.338971]  [<ffffffffc01bfaa2>] drm_fb_helper_set_par+0x22/0x50 [drm_kms_helper]
[   61.338976]  [<ffffffffc01bf9ac>] drm_fb_helper_hotplug_event+0xcc/0x120 [drm_kms_helper]
[   61.338989]  [<ffffffffc02a1ade>] intel_fbdev_output_poll_changed+0x1e/0x20 [i915]
[   61.338994]  [<ffffffffc01b36ab>] drm_kms_helper_hotplug_event+0x2b/0x40 [drm_kms_helper]
[   61.339007]  [<ffffffffc02b5ee5>] intel_dp_mst_hotplug+0x15/0x20 [i915]
[   61.339012]  [<ffffffffc01b9592>] drm_dp_send_link_address+0xf2/0x210 [drm_kms_helper]
[   61.339017]  [<ffffffffc01b973d>] drm_dp_check_and_send_link_address+0x8d/0xa0 [drm_kms_helper]
[   61.339021]  [<ffffffffc01b976c>] drm_dp_mst_link_probe_work+0x1c/0x20 [drm_kms_helper]
[   61.339028]  [<ffffffff81096414>] process_one_work+0x144/0x490
[   61.339029]  [<ffffffff81096e7e>] worker_thread+0x11e/0x460
[   61.339031]  [<ffffffff81096d60>] ? create_worker+0x1f0/0x1f0
[   61.339032]  [<ffffffff8109ce59>] kthread+0xc9/0xe0
[   61.339034]  [<ffffffff8109cd90>] ? flush_kthread_worker+0x90/0x90
[   61.339036]  [<ffffffff8180c7e2>] ret_from_fork+0x42/0x70
[   61.339038]  [<ffffffff8109cd90>] ? flush_kthread_worker+0x90/0x90
[   61.339039] ---[ end trace 4ae192082cf55348 ]---
[   61.339040] [drm:check_encoder_state] [ENCODER:43:DP MST-43]
[   61.339041] [drm:check_encoder_state] [ENCODER:44:DP MST-44]
[   61.339042] [drm:check_encoder_state] [ENCODER:47:TMDS-47]
[   61.339043] [drm:check_crtc_state] [CRTC:20]
[   61.339047] [drm:check_crtc_state] [CRTC:24]
[   61.339051] [drm:check_crtc_state] [CRTC:28]
[   61.339052] [drm:check_shared_dpll_state] WRPLL 1
[   61.339053] [drm:check_shared_dpll_state] WRPLL 2
[   61.339054] [drm:intel_crtc_set_config] [CRTC:28] [NOFB]
[   61.339062] [drm:intel_connector_check_state] [CONNECTOR:33:eDP-1]
[   61.339064] [drm:check_encoder_state] [ENCODER:31:DAC-31]
[   61.339065] [drm:check_encoder_state] [ENCODER:32:TMDS-32]
[   61.339066] [drm:check_encoder_state] [ENCODER:40:TMDS-40]
[   61.339067] [drm:check_encoder_state] [ENCODER:42:DP MST-42]

Complete log attached.
Comment 1 Ricardo Salveti de Araujo 2015-05-24 03:01:07 UTC
Created attachment 116000 [details]
Null pointer dereference that causes the kernel crash
Comment 2 Ricardo Salveti de Araujo 2015-05-24 03:02:08 UTC
Created attachment 116001 [details]
Null pointer dereference that causes the kernel crash
Comment 3 Ricardo Salveti de Araujo 2015-05-24 03:21:29 UTC
Might be similar to bug 90430
Comment 4 Ricardo Salveti de Araujo 2015-05-24 05:25:35 UTC
Kernel crashes while iterating the crtc_list (when setting the crtc_config).

(gdb) list *(drm_crtc_index+0x5)
0xfa5 is in drm_crtc_index (/home/rsalveti/projects/kernel/linux-2.6/drivers/gpu/drm/drm_crtc.c:738).
733	unsigned int drm_crtc_index(struct drm_crtc *crtc)
734	{
735		unsigned int index = 0;
736		struct drm_crtc *tmp;
737	
738		list_for_each_entry(tmp, &crtc->dev->mode_config.crtc_list, head) {
739			if (tmp == crtc)
740				return index;
741	
742			index++;

One weird thing that I noticed is that the list of modes when using MST is different, when using the same monitor.

With MST:
[   57.305582] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:49:DP-2] probed modes :
[   57.305585] [drm:drm_mode_debug_printmodeline] Modeline 60:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
[   57.305588] [drm:drm_mode_debug_printmodeline] Modeline 58:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5
[   57.305590] [drm:drm_mode_debug_printmodeline] Modeline 57:"800x600" 56 36000 800 824 896 1024 600 601 603 625 0x40 0x5
[   57.305592] [drm:drm_mode_debug_printmodeline] Modeline 59:"848x480" 60 33750 848 864 976 1088 480 486 494 517 0x40 0x5
[   57.305594] [drm:drm_mode_debug_printmodeline] Modeline 52:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa

Without MST (displayport 1.2 disabled):
[   45.793283] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:41:DP-1] probed modes :
[   45.793285] [drm:drm_mode_debug_printmodeline] Modeline 51:"1920x1080" 60 148500 1920 2008 2052 2200 1080 1084 1089 1125 0x48 0x5
[   45.793287] [drm:drm_mode_debug_printmodeline] Modeline 80:"1920x1080" 60 148352 1920 2008 2052 2200 1080 1084 1089 1125 0x40 0x5
[   45.793288] [drm:drm_mode_debug_printmodeline] Modeline 53:"1920x1080i" 60 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15
[   45.793290] [drm:drm_mode_debug_printmodeline] Modeline 82:"1920x1080i" 60 74176 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15
[   45.793291] [drm:drm_mode_debug_printmodeline] Modeline 77:"1920x1080" 50 148500 1920 2448 2492 2640 1080 1084 1089 1125 0x40 0x5
[   45.793292] [drm:drm_mode_debug_printmodeline] Modeline 76:"1920x1080i" 50 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15
[   45.793294] [drm:drm_mode_debug_printmodeline] Modeline 98:"1600x1200" 60 162000 1600 1664 1856 2160 1200 1201 1204 1250 0x40 0x5
[   45.793296] [drm:drm_mode_debug_printmodeline] Modeline 58:"1600x900" 60 108000 1600 1624 1704 1800 900 901 904 1000 0x40 0x5 
[   45.793297] [drm:drm_mode_debug_printmodeline] Modeline 64:"1280x1024" 75 135000 1280 1296 1440 1688 1024 1025 1028 1066 0x40 0x5
[   45.793299] [drm:drm_mode_debug_printmodeline] Modeline 57:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5
[   45.793300] [drm:drm_mode_debug_printmodeline] Modeline 56:"1152x864" 75 108000 1152 1216 1344 1600 864 865 868 900 0x40 0x5
[   45.793302] [drm:drm_mode_debug_printmodeline] Modeline 54:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5
[   45.793303] [drm:drm_mode_debug_printmodeline] Modeline 83:"1280x720" 60 74176 1280 1390 1430 1650 720 725 730 750 0x40 0x5
[   45.793305] [drm:drm_mode_debug_printmodeline] Modeline 79:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5
[   45.793306] [drm:drm_mode_debug_printmodeline] Modeline 65:"1024x768" 75 78800 1024 1040 1136 1312 768 769 772 800 0x40 0x5
[   45.793308] [drm:drm_mode_debug_printmodeline] Modeline 66:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
[   45.793309] [drm:drm_mode_debug_printmodeline] Modeline 67:"800x600" 75 49500 800 816 896 1056 600 601 604 625 0x40 0x5
[   45.793311] [drm:drm_mode_debug_printmodeline] Modeline 60:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5
[   45.793312] [drm:drm_mode_debug_printmodeline] Modeline 78:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa
[   45.793313] [drm:drm_mode_debug_printmodeline] Modeline 84:"720x480" 60 27027 720 736 798 858 480 489 495 525 0x40 0xa
[   45.793315] [drm:drm_mode_debug_printmodeline] Modeline 55:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa
[   45.793316] [drm:drm_mode_debug_printmodeline] Modeline 61:"640x480" 75 31500 640 656 720 840 480 481 484 500 0x40 0xa
[   45.793318] [drm:drm_mode_debug_printmodeline] Modeline 62:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa
[   45.793319] [drm:drm_mode_debug_printmodeline] Modeline 75:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa
[   45.793320] [drm:drm_mode_debug_printmodeline] Modeline 63:"720x400" 70 28320 720 738 846 900 400 412 414 449 0x40 0x6

Monitor works fine when MST is enabled at the bios/boot loader screen (using 1920x1080). It only gets broken after linux boots.
Comment 5 Ricardo Salveti de Araujo 2015-05-24 05:27:36 UTC
Also, sometimes I can get the monitor to work at 1024x768 for a few seconds, before the crash happens.
Comment 6 Jani Nikula 2015-05-25 09:19:54 UTC
I can reproduce this with W740SU + Dell P2415Q. Unfortunately I don't have much time for debugging right now.

http://mid.gmane.org/87bnhfl61a.fsf@intel.com
Comment 7 Jani Nikula 2015-05-25 09:22:10 UTC
(In reply to Ricardo Salveti de Araujo from comment #2)
> Created attachment 116001 [details]
> Null pointer dereference that causes the kernel crash

I think this oops is probably a different bug, to do with atomic modesetting.
Comment 8 Jani Nikula 2016-04-21 12:36:02 UTC
(In reply to Jani Nikula from comment #6)
> I can reproduce this with W740SU + Dell P2415Q. Unfortunately I don't have
> much time for debugging right now.
> 
> http://mid.gmane.org/87bnhfl61a.fsf@intel.com

No longer happens with latest kernels, closing.


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.