I have my Lenovo ThinkPad X220 connected to an Acer VG0 27" 1440p screen via DisplayPort. Periodically, the screen flicks off for several seconds. Usually it comes back, but occasionally it will switch off until I unplug the screen and reconnect it.
I added a port replicator, which allows me to connect a second screen and use the laptop closed. The second screen is an LG 23" 1080p connected via DisplayPort->HDMI. This screen doesn't flicker, so it's something to do with either the higher resolution of the Acer or the native DisplayPort connection (or both).
I've found a lot of conflicting information on the error message that appears in dmesg
after a flicker:
[ 2779.680083] [drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe B FIFO underrun
[ 2779.680147] [drm:intel_set_pch_fifo_underrun_reporting [i915]] *ERROR* uncleared pch fifo underrun on pch transcoder B
[ 2779.680176] [drm:intel_pch_fifo_underrun_irq_handler [i915]] *ERROR* PCH transcoder B FIFO underrun
Sometimes it's pipe/transcoder A
. Either way, it's the same block of messages. Extensive searching has turned up that this is a simple diagnostic message, with no particular impact on use, to the same symptoms I'm experiencing with display flickering, and no clear resolution. Some posts state that this was fixed in older kernels than I'm running - 5.4.0-37
.
The flicker happens very randomly and is difficult to induce, but often happens while scrolling in Firefox, dropping down my Guake terminal or participating in a Zoom meeting.
I've tried many different kernel flags from the various posts, which seem to point to either 1) the IOMMU in this Sandy Bridge i7 or 2) C-States and power management. Nothing has reliably fixed the problem. Some of the options I've tried: "i915.enable_rc6=0 i915.semaphores=1 pcie_aspm=force i915.enable_psr=0 i915.edp_vswing=2 intel_iommu=on,igfx_off processor.max_cstate=1 intel_idle.max_cstate=1"
. I'm currently running with "i915.enable_rc6=1 i915.enable_fbc=1 i915.powersave=1 i915.modeset=1 i915.lvds_downclock=1"
and it still flickers. One example: Flickering screen + CPU pipe B FIFO underrun when I use the termnal
I replaced the motherboard in my X220 and there's damage to the NIC, so it's not impossible there is a hardware fault on this board, but since it does work for a reasonable amount of time and the second screen is stable, I'm confident it's not this board. I haven't tried the Acer screen on the original board, but connecting the original board to 1080p screens via DP->HDMI had no issues. I don't have another DP screen to test with. I have tried a different DP cable without success. It also flickers if it's connected to the laptop's DP output.
The screen is not the problem as it works on another laptop via DP. I've also tried connecting the screen to the X220 via HDMI, which is stable but it seems to max out at 1080p resolution, and I specifically want the extra pixels.
Hardware is:
- Core i7 2620m with 16GB DDR3
- integrated Intel HD Graphics 3000
- Acer VG270UPbmiipx via DP
- LG IPS236v via DP->HDMI
- Lenovo Mini Dock Series 3 Plus USB3.0
Software is:
- Ubuntu 20.04 x64
- 5.4.0-37 kernel
- Cinnamon GUI on Xorg
Kernel modules:
Module Size Used by
ppp_mppe 16384 2
ppp_async 20480 1
nf_conntrack_pptp 24576 0
nf_conntrack 139264 1 nf_conntrack_pptp
nf_defrag_ipv6 24576 1 nf_conntrack
nf_defrag_ipv4 16384 1 nf_conntrack
binfmt_misc 24576 1
nls_iso8859_1 16384 1
dm_multipath 32768 0
scsi_dh_rdac 16384 0
scsi_dh_emc 16384 0
scsi_dh_alua 20480 0
intel_rapl_msr 20480 0
mei_hdcp 24576 0
intel_rapl_common 24576 1 intel_rapl_msr
x86_pkg_temp_thermal 20480 0
coretemp 20480 0
kvm_intel 282624 0
kvm 663552 1 kvm_intel
intel_cstate 20480 0
intel_rapl_perf 20480 0
uvcvideo 98304 0
videobuf2_vmalloc 20480 1 uvcvideo
videobuf2_memops 20480 1 videobuf2_vmalloc
snd_usb_audio 262144 1
videobuf2_v4l2 24576 1 uvcvideo
videobuf2_common 49152 2 videobuf2_v4l2,uvcvideo
cdc_mbim 20480 0
joydev 24576 0
snd_usbmidi_lib 36864 1 snd_usb_audio
snd_rawmidi 36864 1 snd_usbmidi_lib
snd_seq_device 16384 1 snd_rawmidi
iwldvm 237568 0
videodev 225280 3 videobuf2_v4l2,uvcvideo,videobuf2_common
cdc_ncm 36864 1 cdc_mbim
mac80211 843776 1 iwldvm
usbnet 45056 2 cdc_mbim,cdc_ncm
wmi_bmof 16384 0
mii 20480 1 usbnet
libarc4 16384 2 ppp_mppe,mac80211
mc 53248 5 videodev,snd_usb_audio,videobuf2_v4l2,uvcvideo,videobuf2_common
input_leds 16384 0
cdc_acm 40960 0
cdc_wdm 24576 1 cdc_mbim
serio_raw 20480 0
iwlwifi 331776 1 iwldvm
snd_hda_codec_hdmi 61440 1
snd_hda_codec_conexant 28672 1
snd_hda_codec_generic 81920 1 snd_hda_codec_conexant
cfg80211 704512 3 iwldvm,iwlwifi,mac80211
snd_hda_intel 53248 5
snd_intel_dspcfg 24576 1 snd_hda_intel
snd_hda_codec 131072 4 snd_hda_codec_generic,snd_hda_codec_conexant,snd_hda_codec_hdmi,snd_hda_intel
snd_hda_core 90112 5 snd_hda_codec_generic,snd_hda_codec_conexant,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
thinkpad_acpi 110592 0
snd_hwdep 20480 2 snd_usb_audio,snd_hda_codec
mei_me 40960 1
snd_pcm 106496 6 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
mei 106496 3 mei_hdcp,mei_me
nvram 16384 1 thinkpad_acpi
ledtrig_audio 16384 3 snd_hda_codec_generic,snd_hda_codec_conexant,thinkpad_acpi
snd_timer 36864 1 snd_pcm
snd 90112 24 snd_hda_codec_generic,snd_hda_codec_conexant,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_timer,thinkpad_acpi,snd_pcm,snd_rawmidi
soundcore 16384 1 snd
mac_hid 16384 0
sch_fq_codel 20480 3
parport_pc 40960 0
ppdev 24576 0
lp 20480 0
parport 53248 3 parport_pc,lp,ppdev
ip_tables 32768 0
x_tables 40960 1 ip_tables
autofs4 45056 2
btrfs 1253376 0
zstd_compress 167936 1 btrfs
dm_crypt 40960 1
raid10 57344 0
raid456 155648 0
async_raid6_recov 24576 1 raid456
async_memcpy 20480 2 raid456,async_raid6_recov
async_pq 24576 2 raid456,async_raid6_recov
async_xor 20480 3 async_pq,raid456,async_raid6_recov
async_tx 20480 5 async_pq,async_memcpy,async_xor,raid456,async_raid6_recov
xor 24576 2 async_xor,btrfs
raid6_pq 114688 4 async_pq,btrfs,raid456,async_raid6_recov
libcrc32c 16384 3 nf_conntrack,btrfs,raid456
raid1 45056 0
raid0 24576 0
multipath 20480 0
linear 20480 0
hid_logitech_hidpp 40960 0
hid_logitech_dj 24576 0
hid_generic 16384 0
usbhid 57344 1 hid_logitech_dj
hid 131072 4 usbhid,hid_generic,hid_logitech_dj,hid_logitech_hidpp
crct10dif_pclmul 16384 1
crc32_pclmul 16384 0
ghash_clmulni_intel 16384 0
i915 1986560 22
sdhci_pci 53248 0
cqhci 28672 1 sdhci_pci
ahci 40960 3
aesni_intel 372736 2
psmouse 155648 0
libahci 32768 1 ahci
i2c_algo_bit 16384 1 i915
i2c_i801 32768 0
lpc_ich 24576 0
sdhci 65536 1 sdhci_pci
drm_kms_helper 184320 1 i915
syscopyarea 16384 1 drm_kms_helper
crypto_simd 16384 1 aesni_intel
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
fb_sys_fops 16384 1 drm_kms_helper
cryptd 24576 3 crypto_simd,ghash_clmulni_intel
glue_helper 16384 1 aesni_intel
drm 491520 8 drm_kms_helper,i915
e1000e 258048 0
wmi 32768 1 wmi_bmof
video 49152 2 thinkpad_acpi,i915