external monitor not working since Linux-6.1 (amdgpu: update_mst_stream_alloc_table, regression from Linux-6.0))
Brief summary of the problem:
Moved from here: https://bugzilla.kernel.org/show_bug.cgi?id=216805
Since Linux-6.1 my external monitor isn't working anymore. It was working fine with Linux-6.0, incl. 6.0.12. (-> regression) For 6.1 there's a suspicious stacktrace in dmesg which wasn't there in 6.0. (see attachment and below)
I connect two monitors via a USB-C/DisplayPort docking station. Then I power on the notebook. The other monitor is working.
Hardware description:
Connections:
- Notebook
- USB-C/DisplayPort: docking station
- HDMI: external monitor (not working)
- DisplayPort: VGA-Adapter: external monitor (working)
- USB-C/DisplayPort: docking station
Notebook:
Model: HP EliteBook 845 G8 (notebook)
CPU+GPU: Ryzen 5650U incl. Radeon GPU
System information:
- Distro name and Version: openSUSE-15.4
- Kernel version: Linux-6.1
Log files (for system lockups / game freezes / crashes)
- Dmesg log (full log)
- I attached a dmesg from a broken 6.1 kernel and a dmesg from a working 6.0.12 kernel:
In the Linux-6.1 dmesg there's a suspicious stacktrace.
------------[ cut here ]------------
WARNING: CPU: 7 PID: 133 at /home/myuser/opt/linux-kernel/build.backup-exclude-m461c/build_bisect/worktree/drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link.c:3534 update_mst_stream_alloc_table+0x170/0x180 [amdgpu]
Modules linked in: hid_generic(E) usbhid(E) amdgpu(E+) crc32_pclmul(E) crc32c_intel(E) drm_ttm_helper(E) ttm(E) mfd_core(E) iommu_v2(E) gpu_sched(E) i2c_algo_bit(E) drm_buddy(E) ghash_clmulni_intel(E) drm_display_helper(E) drm_kms_helper(E) xhci_pci(E) syscopyarea(E) xhci_pci_renesas(E) sysfillrect(E) sysimgblt(E) aesni_intel(E) nvme(E) fb_sys_fops(E) crypto_simd(E) xhci_hcd(E) nvme_core(E) cryptd(E) drm(E) t10_pi(E) serio_raw(E) crc64_rocksoft_generic(E) cec(E) usbcore(E) ccp(E) sp5100_tco(E) rc_core(E) crc64_rocksoft(E) crc64(E) video(E) wmi(E) i2c_hid_acpi(E) i2c_hid(E) dm_mirror(E) dm_region_hash(E) dm_log(E) sg(E) dm_multipath(E) dm_mod(E) scsi_dh_rdac(E) scsi_dh_emc(E) scsi_dh_alua(E) scsi_mod(E) scsi_common(E) msr(E) efivarfs(E)
CPU: 7 PID: 133 Comm: kworker/7:1 Tainted: G E 6.1.0-v6.1-myhost #2
Hardware name: HP HP EliteBook 845 G8 Notebook PC/8895, BIOS T82 Ver. 01.10.00 07/13/2022
Workqueue: events_long drm_dp_mst_link_probe_work [drm_display_helper]
RIP: 0010:update_mst_stream_alloc_table+0x170/0x180 [amdgpu]
Code: 00 00 00 75 cd 48 8b 84 24 90 00 00 00 65 48 33 04 25 28 00 00 00 75 19 48 81 c4 98 00 00 00 5b 5d 41 5c 41 5d c3 cc cc cc cc <0f> 0b e9 da fe ff ff e8 b4 28 8c e4 0f 1f 40 00 0f 1f 44 00 00 55
RSP: 0018:ffffa52180643668 EFLAGS: 00010202
RAX: 0000000000000002 RBX: ffff8c348d5e8c00 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffff8c3510e5d420 RDI: 0000000000000000
RBP: ffffa52180643668 R08: 0000000000000001 R09: ffff8c348d5e8c00
R10: ffffa52180643730 R11: 0000000000000030 R12: ffff8c3560f00aa0
R13: 0000000000000002 R14: ffff8c3560f00aa0 R15: ffff8c34879bdb00
FS: 0000000000000000(0000) GS:ffff8c434e9c0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fb6d9270000 CR3: 000000010b610000 CR4: 0000000000750ee0
PKRU: 55555554
Call Trace:
<TASK>
dc_link_allocate_mst_payload+0x97/0x2a0 [amdgpu]
core_link_enable_stream+0x692/0xa00 [amdgpu]
? optc1_set_drr+0x139/0x1e0 [amdgpu]
dce110_apply_ctx_to_hw+0x64b/0x6d0 [amdgpu]
? dcn10_plane_atomic_power_down+0xcb/0x100 [amdgpu]
? __free_pages_ok+0x26d/0x440
? dcn10_wait_for_mpcc_disconnect+0x39/0x150 [amdgpu]
dc_commit_state_no_check+0x3c3/0xc10 [amdgpu]
dc_commit_state+0x104/0x120 [amdgpu]
amdgpu_dm_atomic_commit_tail+0x53c/0x2910 [amdgpu]
[...]
git bisect
I did a git bisect.
First bad commit: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4d07b0bc403403438d9cf88450506240c5faf92f
@lyudess Might you have a look at this?
git bisect log
git bisect start
# good: [4fe89d07dcc2804c8b562f6c7896a45643d34b2f] Linux 6.0
git bisect good 4fe89d07dcc2804c8b562f6c7896a45643d34b2f
# bad: [830b3c68c1fb1e9176028d02ef86f3cf76aa2476] Linux 6.1
git bisect bad 830b3c68c1fb1e9176028d02ef86f3cf76aa2476
# bad: [33e591dee915832c618cf68bb1058c8e7d296128] Merge tag 'phy-for-6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy
git bisect bad 33e591dee915832c618cf68bb1058c8e7d296128
# good: [a47e60729d9624e931f988709ab76e043e2ee8b9] Merge tag 'backlight-next-6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight
git bisect good a47e60729d9624e931f988709ab76e043e2ee8b9
# bad: [ff6862c23d2e83d12d1759bf4337d41248fb4dc8] Merge tag 'arm-drivers-6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
git bisect bad ff6862c23d2e83d12d1759bf4337d41248fb4dc8
# bad: [95d8c67187bcfaa519bafcdef9091cd906505454] Merge tag 'drm-msm-next-2022-09-22' of https://gitlab.freedesktop.org/drm/msm into drm-next
git bisect bad 95d8c67187bcfaa519bafcdef9091cd906505454
# bad: [6f3562b3bca078b40aa198db8fdc68439b7b0399] Merge drm/drm-next into drm-intel-next
git bisect bad 6f3562b3bca078b40aa198db8fdc68439b7b0399
# good: [dbaadb3cebaad49c37e3fec937e73e6e41054404] drm/amdgpu/dm/mst: Rename get_payload_table()
git bisect good dbaadb3cebaad49c37e3fec937e73e6e41054404
# good: [9aa320341e9a86c684ccf8c2e75ff07486d9bf46] drm/i915/display: Fix warning callstack for imbalance wakeref
git bisect good 9aa320341e9a86c684ccf8c2e75ff07486d9bf46
# bad: [857dbf2431ba8abcd6f0f1335ea637580ebe5507] drm/vc4: vec: Remove empty mode_fixup
git bisect bad 857dbf2431ba8abcd6f0f1335ea637580ebe5507
# bad: [e6545831a17beaa724f29e79d8a12050b45da243] MAINTAINERS: Add myself as a reviewer for panel-edp.c
git bisect bad e6545831a17beaa724f29e79d8a12050b45da243
# bad: [b3be4520d81e7dc820de5fdab0d7d697231cf517] drm/vc4: hvs: protect drm_print_regset32()
git bisect bad b3be4520d81e7dc820de5fdab0d7d697231cf517
# good: [11d2738940ebeb3fd3abc78d44684d5edb400a6e] drm/nouveau/kms: Cache DP encoders in nouveau_connector
git bisect good 11d2738940ebeb3fd3abc78d44684d5edb400a6e
# good: [01ad1d9c2888d51f2fb5b5ac88af8bd47d76937e] drm/radeon: Drop legacy MST support
git bisect good 01ad1d9c2888d51f2fb5b5ac88af8bd47d76937e
# bad: [227295df4e37de66b61bbb3d1f10436f0acd33cc] drm/vc4: hdmi: unlock mutex when device is unplugged
git bisect bad 227295df4e37de66b61bbb3d1f10436f0acd33cc
# bad: [4d07b0bc403403438d9cf88450506240c5faf92f] drm/display/dp_mst: Move all payload info into the atomic state
git bisect bad 4d07b0bc403403438d9cf88450506240c5faf92f
# first bad commit: [4d07b0bc403403438d9cf88450506240c5faf92f] drm/display/dp_mst: Move all payload info into the atomic state