Re: Graphics on thinkpad x270 after dock/undock works only for the first time (CPU pipe B FIFO underrun)

From: Jiri Kosina
Date: Sat Dec 30 2017 - 04:44:56 EST


On Fri, 29 Dec 2017, Jiri Kosina wrote:

> When I dock my thinkpad x270 [1] and run xrandr --auto, image correctly
> appears on external display.
>
> After undocking and docking again, the image on external display doesn't
> appear any more, and this pops up in dmesg
>
> [drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe B FIFO underrun
>
> After restarting X (no need to reboot), I am able to dock again and get
> image on external display.
>
> I don't think this is a regression, I tried a few older kernels up to
> something around 4.11, and nothing worked.
>
> In case any more information is needed to debug this, please let me know,
> I'll happily provide it.

Seems like disabling RC6 on the kernel command line works this around, and
I can dock / undock several times in a row with the image always coming
up properly on the external display.

On the first undock, the WARN_ONCE() below triggers, so I believe each
undock leaks memory.

[ 38.755084] Failed to release pages: bind_count=1, pages_pin_count=1, pin_global=0
[ 38.755138] WARNING: CPU: 3 PID: 96 at ../drivers/gpu/drm/i915/i915_gem_userptr.c:89 cancel_userptr+0xe5/0xf0 [i915]
[ 38.755140] Modules linked in: ccm fuse af_packet tun ip6table_mangle nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables iptable_mangle xt_DSCP xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack libcrc32c bnep iptable_filter ip_tables x_tables msr dm_crypt algif_skcipher af_alg uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_core videodev btusb btrtl btbcm btintel bluetooth ecdh_generic snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_soc_skl snd_soc_skl_ipc snd_hda_ext_core snd_soc_sst_dsp snd_soc_sst_ipc snd_soc_acpi snd_soc_core snd_compress snd_pcm_dmaengine arc4 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel pcbc nls_iso8859_1 nls_cp437
[ 38.755167] vfat fat iwlmvm iTCO_wdt iTCO_vendor_support wmi_bmof intel_wmi_thunderbolt mac80211 snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_timer aesni_intel aes_x86_64 crypto_simd glue_helper cryptd thinkpad_acpi iwlwifi snd e1000e rtsx_pci_ms cfg80211 ptp memstick joydev mei_me soundcore i2c_i801 tpm_crb pps_core shpchp pcspkr intel_pch_thermal wmi thermal rfkill mei battery ac tpm_tis tpm_tis_core tpm acpi_pad rtsx_pci_sdmmc mmc_core xhci_pci serio_raw xhci_hcd i915 video i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops rtsx_pci usbcore button drm sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua efivarfs
[ 38.755198] CPU: 3 PID: 96 Comm: kworker/u8:1 Tainted: G U 4.15.0-rc5-1.g9fcc9f1-default #1
[ 38.755199] Hardware name: LENOVO 20K5S22R00/20K5S22R00, BIOS R0IET38W (1.16 ) 05/31/2017
[ 38.755228] Workqueue: i915-userptr-release cancel_userptr [i915]
[ 38.755245] RIP: 0010:cancel_userptr+0xe5/0xf0 [i915]
[ 38.755246] RSP: 0018:ffffb92e41073e80 EFLAGS: 00010282
[ 38.755248] RAX: 0000000000000046 RBX: ffff9d0d742a4600 RCX: 0000000000000006
[ 38.755249] RDX: 0000000000000007 RSI: 0000000000000086 RDI: ffff9d0daf58f190
[ 38.755250] RBP: ffff9d0d742a47a8 R08: 0000000000000000 R09: 0000000000000334
[ 38.755251] R10: 0000000000000000 R11: ffffffff992d6aed R12: 0000000000000000
[ 38.755252] R13: 0000000000000000 R14: 0ffff9d0d07c1c70 R15: ffff9d0da3d58540
[ 38.755254] FS: 0000000000000000(0000) GS:ffff9d0daf580000(0000) knlGS:0000000000000000
[ 38.755255] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 38.755256] CR2: 00007ff861a41c38 CR3: 000000017cc09004 CR4: 00000000003606e0
[ 38.755257] Call Trace:
[ 38.755264] process_one_work+0x1de/0x410
[ 38.755267] worker_thread+0x2b/0x3d0
[ 38.755269] ? process_one_work+0x410/0x410
[ 38.755270] kthread+0x111/0x130
[ 38.755272] ? kthread_create_worker_on_cpu+0x50/0x50
[ 38.755275] ret_from_fork+0x24/0x30
[ 38.755277] Code: 92 4f ff ff eb c4 8b 93 c8 01 00 00 8b 8b a4 01 00 00 48 c7 c7 70 25 5e c0 8b b3 9c 01 00 00 c6 05 84 d5 14 00 01 e8 6b f9 b6 d7 <0f> ff eb b7 0f 1f 80 00 00 00 00 0f 1f 44 00 00 41 57 41 56 ba

--
Jiri Kosina
SUSE Labs