One of the two monitors on a MST hub remains blank
Brief summary of the problem:
One of the two monitors on a MST hub remains blank.
The setup is perhaps a bit special. The graphics card is a ASRock Phantom Gaming Radeon RX550 2G. The DisplayPort is connected to a ATEN CS1922M. It has a built-in MST hub. The hub outputs are DP and HDMI. There are two identical monitors connected, Dell 24" U2412M.
At system startup both monitors show BIOS and then the grub menu. Then as soon as the Ubuntu login screen is shown one monitor goes blank. That monitor displays "There is no signal coming from your computer." The blank monitor is the one connected to the HDMI output of the MST hub.
Early at bootup there is this dmesg
[ 87.961930] [drm] Failed to updateMST allocation table forpipe idx:1
[ 87.961957] ------------[ cut here ]------------
[ 87.961958] WARNING: CPU: 9 PID: 158 at drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link.c:2976 dc_link_allocate_mst_payload+0x235/0x250
[amdgpu]
[ 87.962206] Modules linked in: vhost_vsock vmw_vsock_virtio_transport_common vhost vhost_iotlb vsock xt_conntrack nft_chain_nat xt_MASQUERADE
nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xfrm_user xfrm_algo nft_counter xt_addrtype nft_compat nf_tables nfnetlink
br_netfilter overlay binfmt_misc intel_rapl_msr snd_hda_codec_realtek intel_rapl_common snd_hda_codec_generic ledtrig_audio snd_hda_codec_hdmi s
nd_hda_intel snd_intel_dspcfg soundwire_intel soundwire_generic_allocation soundwire_cadence edac_mce_amd snd_hda_codec snd_hda_core kvm_amd soun
dwire_bus amdgpu nls_iso8859_1 snd_soc_core kvm snd_usb_audio snd_compress ac97_bus snd_pcm_dmaengine snd_usbmidi_lib snd_hwdep iommu_v2 uvcvideo
gpu_sched videobuf2_vmalloc drm_ttm_helper snd_seq_midi videobuf2_memops snd_seq_midi_event ttm videobuf2_v4l2 videobuf2_common drm_kms_helper c
rct10dif_pclmul snd_rawmidi snd_seq ghash_clmulni_intel aesni_intel cec videodev joydev snd_pcm input_leds mc crypto_simd rc_core
[ 87.962258] snd_seq_device snd_timer cryptd glue_helper i2c_algo_bit snd cdc_acm rapl fb_sys_fops syscopyarea sysfillrect efi_pstore wmi_bmof
ccp k10temp sysimgblt soundcore mac_hid bridge stp llc sch_fq_codel nfsd msr auth_rpcgss parport_pc nfs_acl lockd ppdev grace lp drm parport sun
rpc nfs_ssc ip_tables x_tables autofs4 btrfs blake2b_generic raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_
pq libcrc32c raid0 multipath linear raid1 uas usb_storage hid_generic usbhid hid crc32_pclmul r8169 ahci nvme gpio_amdpt xhci_pci i2c_piix4 nvme_
core realtek libahci xhci_pci_renesas wmi gpio_generic
[ 87.962310] CPU: 9 PID: 158 Comm: kworker/9:1H Not tainted 5.11.0-22-generic #23-Ubuntu
[ 87.962313] Hardware name: Gigabyte Technology Co., Ltd. B550M AORUS PRO-P/B550M AORUS PRO-P, BIOS F13h 03/25/2021
[ 87.962315] Workqueue: events_highpri dm_irq_work_func [amdgpu]
[ 87.962557] RIP: 0010:dc_link_allocate_mst_payload+0x235/0x250 [amdgpu]
[ 87.962788] Code: c3 89 d8 ba 85 eb 51 f8 48 f7 e2 48 c1 e8 20 48 89 c3 e9 5b ff ff ff 48 c7 c7 70 00 9d c1 e8 62 b8 ce fe b8 19 00 00 00 eb b
3 <0f> 0b e9 c9 fe ff ff e8 0f 02 bf e5 66 66 2e 0f 1f 84 00 00 00 00
[ 87.962791] RSP: 0018:ffffa85d4078fd10 EFLAGS: 00010246
[ 87.962793] RAX: 0000000000000000 RBX: ffff98f5832f0400 RCX: 0000000000000000
[ 87.962795] RDX: 0000000000000005 RSI: ffffffffc19cfc98 RDI: 0000000000000000
[ 87.962796] RBP: ffffa85d4078fd70 R08: 0000000000000005 R09: 0000000000000000
[ 87.962798] R10: ffffa85d4078fb00 R11: ffffffffa8553568 R12: ffff98f5aa9c7800
[ 87.962799] R13: ffff98f63a2606b8 R14: ffff98f5832f0688 R15: 0000000000000006
[ 87.962801] FS: 0000000000000000(0000) GS:ffff98fc9ec40000(0000) knlGS:0000000000000000
[ 87.962803] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 87.962805] CR2: 000055966a6e9ff8 CR3: 00000001346c6000 CR4: 0000000000350ee0
[ 87.962807] Call Trace:
[ 87.962811] core_link_enable_stream+0x4b6/0x4d0 [amdgpu]
[ 87.963035] ? core_link_enable_stream+0x4b6/0x4d0 [amdgpu]
[ 87.963254] dc_link_handle_hpd_rx_irq+0x3c0/0x3d0 [amdgpu]
[ 87.963475] handle_hpd_rx_irq+0xa8/0x1f0 [amdgpu]
[ 87.963706] dm_irq_work_func+0x19/0x20 [amdgpu]
[ 87.963931] process_one_work+0x220/0x3c0
[ 87.963935] worker_thread+0x50/0x370
[ 87.963938] kthread+0x12f/0x150
[ 87.963941] ? process_one_work+0x3c0/0x3c0
[ 87.963943] ? __kthread_bind_mask+0x70/0x70
[ 87.963946] ret_from_fork+0x22/0x30
[ 87.963951] ---[ end trace 125cea6745b5ff4f ]---
The ATEN is a KVM switch. The other PC (Ubuntu 20.04) is a Dell Optiplex 3080. With that PC selected both monitors show their expected image. In other words, the MST hub is working.
Hardware description:
- CPU: AMD Ryzen 5 3600
- GPU: Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X]
- System Memory: 32 GB
- Display(s): 2x Dell 24" U2412M
- Type of Display Connection: DP to MST hub, one DP from hub to monitor 1, one HDMI from hub to monitor 2
System information:
- Distro name and Version: Ubuntu 21.04
- Kernel version: 5.11.0
- Custom kernel: 5.11.0-22-generic
- AMD package version: -
How to reproduce the issue:
- switch system on
- BIOS shown on both monitors
- grub shown on both monitors
- login screen only on monitor 2