Thinkpad T14s (AMD) external monitors on docking station no longer detected

Bug #1899336 reported by Andre Plötze
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Ubuntu Budgie
Fix Released
Undecided
Unassigned
linux (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

I run Ubuntu Budgie 20.04 on my Lenovo ThinkPad T14s with Ryzen 4750U processor together with the "Lenovo ThinkPad USB-C Dock (Gen 2)" (40AS0090EU).

The docking station is connected via USB-C to the system, supplies it with power via USB Power Delivery and provides USB 3.1 Gen 2 (10 Gbit/s) connectivity (including an Ethernet controller and audio codec running over the USB data path), as well as support for two monitors via "DisplayPort alternate mode" of USB-C, so technically it will configure the four high-speed lanes of USB-C as one lane for SuperSpeed+ RX, one lane for SuperSpeed+ TX, and two lanes for DisplayPort 1.4, the latter of which the docking station will then demultiplex onto two full-size DisplayPort connectors like an MST hub.

So far, external monitors have worked fine most of the time. However, for a couple of days now, I cannot get the system to detect the external monitors connected to my docking station anymore.

The "BIOS" (EFI) boot screen (with the Lenovo logo) still shows up on the external monitors. However, both the LUKS/dm-crypt pre-boot-authentication screen (since I use full-disk-encryption) and also the desktop after login show up on the internal display, even with the laptop connected to the docking station, so it appears like the kernel no longer detects the monitors connecting via "DisplayPort alternate mode". Yesterday, I could get the monitors to show up by disconnecting the laptop from the docking station and reconnecting it again. Today, not even this appears to work. Sometimes the external monitors are detected (and shown as "enabled") in the display settings of Budgie, sometimes they do not even show up. Even when they show up and are enabled, nothing is displayed on them. The monitors say they do not receive a signal and I should check the connection. Unplugging and replugging the cables from the docking station to the monitors does not change anything.

Audio, Ethernet and USB runs fine over the docking station, just DisplayPort does not. This is obviously very bad, since I now have to work on the internal display even with the laptop docked.

I have the "amdgpu.exp_hw_support=1" in my kernel arguments (*) and the Ryzen 4000 GPU appears to be recognized.

$ lspci -k
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev d1)
 Subsystem: Lenovo Renoir
 Kernel driver in use: amdgpu
 Kernel modules: amdgpu
$

(*) When I installed Ubuntu Budgie 20.04, I needed to add this in order to extend my desktop over the two external monitors. Without this argument, the system only showed a single display in the settings, the same content was displayed on all connected monitors (mirrored) and there was no way to change that.

I have attached parts of "dmesg" output which I deem relevant.

$ uname -a
Linux thinkpad-t14s 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$
---
ProblemType: Bug
ApportVersion: 2.20.11-0ubuntu27.9
Architecture: amd64
CasperMD5CheckResult: skip
CurrentDesktop: Budgie:GNOME
DistroRelease: Ubuntu 20.04
InstallationDate: Installed on 2020-07-27 (75 days ago)
InstallationMedia: Ubuntu-Budgie 20.04 LTS "Focal Fossa" - Release amd64 (20200423)
MachineType: LENOVO 20UH001AGE
Package: linux (not installed)
ProcFB: 0 amdgpudrmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-5.4.0-48-generic root=UUID=5b605ccb-8a29-46ee-b571-e0d61a323457 ro quiet splash amdgpu.exp_hw_support=1 vt.handoff=7
ProcVersionSignature: Ubuntu 5.4.0-48.52-generic 5.4.60
RelatedPackageVersions:
 linux-restricted-modules-5.4.0-48-generic N/A
 linux-backports-modules-5.4.0-48-generic N/A
 linux-firmware 1.187.3
Tags: focal
Uname: Linux 5.4.0-48-generic x86_64
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm audio cdrom dip lpadmin lxd plugdev sambashare sudo
_MarkForUpload: True
dmi.bios.date: 06/11/2020
dmi.bios.vendor: LENOVO
dmi.bios.version: R1CET36W(1.05 )
dmi.board.asset.tag: Not Available
dmi.board.name: 20UH001AGE
dmi.board.vendor: LENOVO
dmi.board.version: Not Defined
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: None
dmi.modalias: dmi:bvnLENOVO:bvrR1CET36W(1.05):bd06/11/2020:svnLENOVO:pn20UH001AGE:pvrThinkPadT14sGen1:rvnLENOVO:rn20UH001AGE:rvrNotDefined:cvnLENOVO:ct10:cvrNone:
dmi.product.family: ThinkPad T14s Gen 1
dmi.product.name: 20UH001AGE
dmi.product.sku: LENOVO_MT_20UH_BU_Think_FM_ThinkPad T14s Gen 1
dmi.product.version: ThinkPad T14s Gen 1
dmi.sys.vendor: LENOVO

Revision history for this message
Andre Plötze (andrepxx) wrote :
Andre Plötze (andrepxx)
description: updated
Andre Plötze (andrepxx)
description: updated
Revision history for this message
fossfreedom (fossfreedom) wrote : Re: [Bug 1899336] Re: Thinkpad T14s (AMD) external monitors on docking station no longer detected
Download full text (7.0 KiB)

That kernel was released on the 21st Sept. So it could be a kernel issue.

Suggest boot with an earlier kernel to see if things begin to work again.

Press shift and hold immediately on boot to display grub. Choose the
advances options and select an earlier kernel to boot with.

On Sun, 11 Oct 2020, 12:30 Andre Plötze, <email address hidden> wrote:

> ** Description changed:
>
> I run Ubuntu Budgie 20.04 on my Lenovo ThinkPad T14s with Ryzen 4750U
> processor together with the "Lenovo ThinkPad USB-C Dock (Gen 2)"
> (40AS0090EU).
>
> The docking station is connected via USB-C to the system, supplies it
> with power via USB Power Delivery and provides USB 3.1 Gen 2 (10 Gbit/s)
> connectivity (including an Ethernet controller and audio codec running
> over the USB data path), as well as support for two monitors via
> "DisplayPort alternate mode" of USB-C, so technically it will configure
> the four high-speed lanes of USB-C as one lane for SuperSpeed+ RX, one
> lane for SuperSpeed+ TX, and two lanes for DisplayPort 1.4, the latter
> of which the docking station will then demultiplex onto two full-size
> DisplayPort connectors like an MST hub.
>
> So far, external monitors have worked fine most of the time. However,
> - since a few days, I cannot get the system to detect the external
> + for a couple of days now, I cannot get the system to detect the external
> monitors connected to my docking station anymore.
>
> The "BIOS" (EFI) boot screen (with the Lenovo logo) still shows up on
> the external monitors. However, both the LUKS/dm-crypt pre-boot-
> authentication screen (since I use full-disk-encryption) and also the
> desktop after login show up on the internal display, even with the
> laptop connected to the docking station, so it appears like the kernel
> no longer detects the monitors connecting via "DisplayPort alternate
> mode". Yesterday, I could get the monitors to show up by disconnecting
> the laptop from the docking station and reconnecting it again. Today,
> not even this appears to work. Sometimes the external monitors are
> detected (and shown as "enabled") in the display settings of Budgie,
> sometimes they do not even show up. Even when they show up and are
> enabled, nothing is displyed on them. The monitors say they do not
> receive a signal and I should check the connection. Unplugging and
> replugging the cables from the docking station to the monitors does not
> change anything.
>
> Audio, Ethernet and USB runs fine over the docking station, just
> DisplayPort does not. This is obviously very bad, since I now have to
> work on the internal display even with the laptop docked.
>
> I have the "amdgpu.exp_hw_support=1" in my kernel arguments (*) and the
> Ryzen 4000 GPU appears to be recognized.
>
> $ lspci -k
> 06:00.0 VGA compatible controller: Advanced Micro Devices, Inc.
> [AMD/ATI] Renoir (rev d1)
> Subsystem: Lenovo Renoir
> Kernel driver in use: amdgpu
> Kernel modules: amdgpu
> $
>
> (*) When I installed Ubuntu Budgie 20.04, I needed to add this in order
> to extend my desktop over the two external monitors. Without this
> ar...

Read more...

Revision history for this message
Andre Plötze (andrepxx) wrote :
Download full text (3.4 KiB)

Okay, I just did some analysis work.

I had kernels 5.4.0-47 and 5.4.0-48 on my system and with both at first external monitors didn't appear to work.

Then I installed 5.4.0-45 and 5.4.0-42 as well, so I got four kernel versions on my system. Then I tried booting with each kernel version both with laptop lid closed and opened several times. These are the results.

--- SNIP ---

Kernel 5.4.0-42, lid open:
- LUKS authentication: displayed on internal and external screens
- login screen: displayed on internal and external screens
- Budgie desktop: only displayed on internal screen, external screens do not show up under display settings

Kernel 5.4.0-42, lid closed:
- crashes during LUKS pre-boot authentication

Kernel 5.4.0-45, lid open:
- LUKS authentication: displayed on internal and external screens
- login screen: displayed on internal and external screens
- Budgie desktop: only displayed on internal screen, external screens do not show up under display settings

Kernel 5.4.0-45, lid closed:
- LUKS authentication: shows up on external screens most of the time, sometimes crashes during pre-boot authentication
- Login screen: most of the time shows up on external screens, sometimes does not show up on external screens, but then shows up on internal screen after lid is opened
- Budgie desktop: most of the time only displayed on internal screen, external screens do not show up under display settings, rarely shows up on external screens, switching to internal screen after lid is opened

Kernel 5.4.0-47, lid open:
- LUKS authentication: only displayed on internal screen
- Login screen: displayed on internal and external screen
- Budgie desktop: only displayed on internal screen, no external screen recognized

Kernel 5.4.0-47, lid closed:
- LUKS authentication: shows up on external screens
- Login screen: shows up on external screens
- Budgie desktop: either does not show up on external screens and does not show on internal screen after laptop lid is opened, or shows up on external screens and switches to internal screen after laptop lid is opened

Kernel 5.4.0-48, lid open:
- LUKS authentication: only displayed on internal screen
- Login screen: displayed on internal and external screen
- Budgie desktop: only displayed on internal screen, no external screen recognized

Kernel 5.4.0-48, lid closed:
- LUKS authentication: shows up on external screens
- Login screen: shows up on external screens
- Budgie desktop: either does not show up on external screens and does not show on internal screen after laptop lid is opened, or shows up on external screens and switches to internal screen after laptop lid is opened

--- SNIP ---

Man, that's horrible. I somehow guess I could do this another hundred times and still get different results. It somehow appears like there's a race condition during device enumeration or something like that, which would be a kernel issue then, and will probably be horrible to trace down.

However, assuming that this is a problem with device enumeration, some behaviour appears odd. First, reconnecting the dock does not appear to help alleviate the issue, which is kinda weird if it's a problem with device enumeration, since I would...

Read more...

Andre Plötze (andrepxx)
description: updated
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Missing required logs.

This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:

apport-collect 1899336

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
tags: added: focal
Revision history for this message
Andre Plötze (andrepxx) wrote : AlsaInfo.txt

apport information

tags: added: apport-collected
description: updated
Revision history for this message
Andre Plötze (andrepxx) wrote : AudioDevicesInUse.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : CRDA.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : CurrentDmesg.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : IwConfig.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : Lspci.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : Lspci-vt.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : Lsusb.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : Lsusb-t.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : Lsusb-v.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : ProcCpuinfo.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : ProcCpuinfoMinimal.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : ProcEnviron.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : ProcInterrupts.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : ProcModules.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : PulseList.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : RfKill.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : UdevDb.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : WifiSyslog.txt

apport information

Revision history for this message
Andre Plötze (andrepxx) wrote : acpidump.txt

apport information

Changed in linux (Ubuntu):
status: Incomplete → New
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Status changed to Confirmed

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Revision history for this message
Andre Plötze (andrepxx) wrote :

Seems automatic collection of ACPI dumps did not work, so I ran the script under "/usr/share/apport/dump_acpi_tables.py" manually (as root).

This is the output.

Revision history for this message
AaronMa (mapengyu) wrote :
Revision history for this message
Andre Plötze (andrepxx) wrote :

Okay, I now tried several times.

With kernel 5.9.0:

- Boot 1: Boots up completely, system functional.
- Boot 2: Boots to login screen, crashes after login.
- Boot 3: Crashes before LUKS unlock.
- Boot 4: Boots to login screen, crashes after login.
- Boot 5: Boots to login screen, crashes after login.
- Boot 6: Boots to login screen, crashes after login.
- Boot 7: Crashes before LUKS unlock.
- Boot 8: Boots to login screen, crashes after login.
- Boot 9: Boots to login screen, crashes after login.
- Boot 10: Boots to login screen, crashes after login.
- Boot 11: Crashes before LUKS unlock.
- Boot 12: Boots to login screen, crashes after login.
- Boot 13: Boots to login screen, crashes after login.
- Boot 14: Boots to login screen, crashes after login.
- Boot 15: Boots to login screen, crashes after login.

Completely unusable.

Then I tried removing the "amdgpu.exp_hw_support=1" kernel argument. On kernel 5.9.0, this changed nothing. The system kept crashing during boot.

On kernel 5.4.0-51, it appears that I get a functional system (albeit without multi-monitor support) when I remove this argument. (I'm now posting with this argument removed and booted into 5.4.0-51 kernel.)

So it appears that the "amdgpu" module is the culprit here and that on kernel 5.9.0, it is on by default and no longer requires that argument? (Well, that should really be changed before 5.9.0 becomes "productive", since it will probably render "Renoir"-based systems unusable.)

Unfortunately, I cannot really tell what happens when the system crashes, because I cannot do a "dmesg" on a locked-up system.

Another thing I found recently is that, after boot, Budgie Panel often does not display. I then have to do a "budgie-panel --replace --reset & disown budgie-panel" in the Terminal. But the two issues are probably not related, other than popping up at a similar point in time. Budgie Panel is also not there when "amdgpu" is not in "experimental mode".

Revision history for this message
Andre Plötze (andrepxx) wrote :

I just had the issue appear LIVE, while the system was already running for more than 20 minutes (with "amdgpu" drivers and multi-monitor support).

Connection to external monitors "dropped" and fortunately the system switched to internal display (which does not always happen, sometimes everything goes blank / crashes), so I could capture a "dmesg".

Revision history for this message
Andre Plötze (andrepxx) wrote :

I finally managed to boot kernel 5.9 after several dozen tries.

"dmesg" output is attached, in case it is of interest.

Revision history for this message
Andre Plötze (andrepxx) wrote :

Since I just had the system "drop monitors" while in the UEFI with no OS booted, this might not be an OS issue at all.

It can't be a docking / USB-C issue either, since the system sometimes can't even switch to internal display and it also crashes with an external monitor attached directly via HDMI.

I therefore suspect that either the iGPU in the Ryzen 4000 or the system memory is defective. I will get in contact with Lenovo about the issue and suspect that it will require motherboard replacement.

Just wanted to report back that this was likely observed on defective hardware and the issue might not show up on a "healthy" system.

Revision history for this message
Andre Plötze (andrepxx) wrote :
Download full text (5.7 KiB)

With kernel version 5.6.0-1048-oem, the stack trace looks different, but the problem is still present.

[ 4881.023648] ------------[ cut here ]------------
[ 4881.023782] WARNING: CPU: 1 PID: 1113 at drivers/gpu/drm/amd/amdgpu/../display/dc/dcn20/dcn20_hwseq.c:1555 dcn20_program_front_end_for_ctx+0x574/0x580 [amdgpu]
[ 4881.023783] Modules linked in: bnep snd_hda_codec_realtek snd_hda_codec_generic snd_hda_codec_hdmi nls_iso8859_1 snd_hda_intel snd_intel_dspcfg soundwire_intel soundwire_generic_allocation soundwire_cadence snd_hda_codec snd_soc_dmic snd_acp3x_rn snd_hda_core snd_acp3x_pdm_dma soundwire_bus tps6598x snd_soc_core snd_compress ac97_bus iwlmvm snd_pcm_dmaengine btusb edac_mce_amd snd_usb_audio btrtl btbcm snd_seq_midi snd_usbmidi_lib btintel kvm_amd mac80211 snd_seq_midi_event joydev snd_hwdep kvm serio_raw input_leds bluetooth libarc4 snd_rawmidi cdc_ether uvcvideo usbnet snd_pcm snd_seq wmi_bmof ecdh_generic videobuf2_vmalloc r8152 videobuf2_memops ecc videobuf2_v4l2 mii videobuf2_common videodev mc thinkpad_acpi ccp iwlwifi snd_seq_device nvram snd_timer snd_rn_pci_acp3x ledtrig_audio snd_pci_acp3x cfg80211 snd ipmi_devintf ipmi_msghandler ucsi_acpi soundcore typec_ucsi i2c_multi_instantiate typec mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 hid_generic
[ 4881.023814] usbhid hid dm_crypt amdgpu rtsx_pci_sdmmc amd_iommu_v2 crct10dif_pclmul gpu_sched i2c_algo_bit crc32_pclmul ghash_clmulni_intel ttm aesni_intel drm_kms_helper crypto_simd cryptd syscopyarea glue_helper sysfillrect sysimgblt fb_sys_fops cec psmouse rc_core i2c_piix4 drm nvme r8169 rtsx_pci nvme_core realtek wmi video i2c_scmi
[ 4881.023834] CPU: 1 PID: 1113 Comm: Xorg Tainted: G W 5.6.0-1048-oem #52-Ubuntu
[ 4881.023835] Hardware name: LENOVO 20UH001AGE/20UH001AGE, BIOS R1CET61W(1.30 ) 12/21/2020
[ 4881.023951] RIP: 0010:dcn20_program_front_end_for_ctx+0x574/0x580 [amdgpu]
[ 4881.023953] Code: c0 74 cb 4c 89 e2 48 89 df e8 f8 36 dd fa eb be 49 8b 45 00 8b 90 e4 01 00 00 85 d2 75 d5 8b 86 4c 04 00 00 85 c0 75 cb eb a4 <0f> 0b e9 14 fb ff ff 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41
[ 4881.023954] RSP: 0018:ffffc087019c7810 EFLAGS: 00010202
[ 4881.023956] RAX: ffffa07c6bec5c00 RBX: ffffa07c6bf50000 RCX: 0000000000000008
[ 4881.023957] RDX: 0000000000000001 RSI: ffffa07bd83e0000 RDI: ffffa07c6bf50000
[ 4881.023958] RBP: ffffc087019c7848 R08: 0000000000000001 R09: 0000000000000000
[ 4881.023959] R10: 0000000000000001 R11: 0000000000000004 R12: ffffa07bd83e0000
[ 4881.023960] R13: ffffa07bd83e01b8 R14: ffffa07bd83e01b8 R15: 0000000000000000
[ 4881.023962] FS: 00007f5369b0ca40(0000) GS:ffffa07c7f840000(0000) knlGS:0000000000000000
[ 4881.023963] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 4881.023964] CR2: 000055bf4e2329c8 CR3: 00000003f6eb2000 CR4: 0000000000340ee0
[ 4881.023965] Call Trace:
[ 4881.024076] dc_commit_state_no_check+0x2cd/0x8a0 [amdgpu]
[ 4881.024177] dc_commit_state+0x96/0xb0 [amdgpu]
[ 4881.024287] amdgpu_dm_atomic_commit_tail+0x344/0x11d0 [amdgpu]
[ 4881.024387] ? amdgpu_cgs_read_register+0x14/0x20 [amdgpu]
[ 4881.024484] ? dm_read_reg_func+0x40/0xc0 [amdgpu]
[ 4881.024576] ? generic_reg...

Read more...

Revision history for this message
Andre Plötze (andrepxx) wrote :

The issue appears to be fixed (at least for me) with the latest firmware.

- UEFI Version 1.14 (R1CUJ72W), issued on 2022-07-29.
- USB-Docking (Gen 2) Firmware Version 1.1.18, issued on 2022-09-14.

(I'm on Ubuntu 22.04 LTS now though, no longer 20.04 LTS.)

The system now sporadically "drops" the Realtek Ethernet controller instead. (It disconnects from the bus and keeps getting reset.) This can be brought up again reliably though by shortly power-cycling the docking station. (It's best to shortly interrupt power to the dock, so that it comes back up before the notebook goes into suspend.)

Sometimes the "dropping Ethernet controller" will "only" cause a network interruption, while sometimes, it will freeze kworkers and therefore the system. Power-cycling the dock will bring Ethernet connectivity back and unfreeze the system.

I might create another bug report for this issue. Just wanted to report back on the display issue that it appears to be fixed with most recent firmware, but there appear to be other regressions.

Revision history for this message
fossfreedom (fossfreedom) wrote :

Thx for the update.

interesting to see it was indeed a kernel/firmware issue.

I'll close this for now.

Please do raise further issues that are potentially a kernel issue via

    ubuntu-bug linux

Changed in linux (Ubuntu):
status: Confirmed → Fix Released
Changed in ubuntubudgie:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.