硬件:4060外卡直通,kvm关机后宿主菊花链缺屏

结论(一句话)

下次遇到缺屏,把屏1 那根线拔插一次就好。不是带宽、不是 KDE、不是显卡驱动的问题 —— 是显示器自动切换输入源之后,内核里没重新枚举 MST 菊花链拓扑,所以屏2 在 DRM 层压根不存在,KDE 显示设置里自然也没有它可点。

触发场景

KVM 起停会改变 4060 的归属(宿主 ↔ vfio-pci),屏1 是「一台显示器两根线」(Type-C → 780M / DP → 4060),显示器会跟着自动切输入源。切换的瞬间 DP 链路重建,但没有完整重新枚举 MST 分支 ⇒ 屏2 消失。

为什么不是别的(2026-10-18 实测证据)

判据实测
内核连接器只有一个外部连接器 card2-DP-7(EDID = LEN P27h-28),没有任何 MST 子连接器 ⇒ 屏2 在 DRM 层就不存在,与 X/KDE 无关
内核 MST 日志DM_MST: starting TM 17:04:49 → stopping TM 18:06:42;再 starting TM 19:48:37 → 20 秒后 stopping TM 19:48:57 ⇒ 拓扑管理器起来又掉,该口退化成 SST(单屏直连)
X 侧只有 DisplayPort-6(= card2-DP-7),且 enabled=disabled;KScreen 配置里也只有内屏 + 这一个输出
排除项链路当时是 DP12, 4-lane link detected(4 lane DP1.2),带宽不是瓶颈;两块屏当时都工作过,驱动支持没问题

怎么修

  1. 首选(用户裁定):拔插一次屏1 的 Type-C 线 —— 触发一次链路重训,MST 拓扑重新枚举,屏2 回来。
  2. 不动线的话:把那一路输出「上电」一次也等效 —— kscreen-doctor output.DisplayPort-6.enable(本次就是用这条验证的)。
  3. 切一次显示器输入源(OSD 或按键)同样是重训,效果一样。

修好后怎么确认(判据)

# 1) 内核里应看到 MST 子连接器(本次是 card2-DP-1 = 屏1、card2-DP-2 = 屏2)
for c in /sys/class/drm/card2-DP-*; do echo "$(basename $c) $(cat $c/status) enabled=$(cat $c/enabled)"; done

# 2) 内核日志应只剩「starting TM」,不再紧跟着「stopping TM」
journalctl -k -b | grep DM_MST | tail -5

# 3) X 侧应有三块屏(内屏 + 屏1 2560x1440 + 屏2 1440x2560 竖屏)
xrandr --listmonitors

本次修复后的实况:Monitors: 3 —— DisplayPort-0 2560×1440 @ 0,900;eDP 1440×900 @ 0,0;DisplayPort-1 1440×2560(左转)@ 2560,900。

两个容易踩的认知坑

  • 连接器编号不是常量:2026-10-07 是 card2-DP-11 + card2-DP-12(X 名 DisplayPort-10 / DisplayPort-11),2026-10-18 变成父口 card2-DP-7 → MST 子连接器 card2-DP-1 / card2-DP-2(X 名 DisplayPort-0 / DisplayPort-1)。认屏只能按 EDID / 序列号(屏1 = LEN P27h-28 sn=V90AKBGX),脚本别写死编号。
  • 手改 xrandr 会被 KScreen 在十几秒内撤销,改布局要用 kscreen-doctor。

已知遗留

  • DM_MST: stopping TM 这条日志不带原因,为什么会掉目前没有决定性证据(候选:切输入源瞬间 / 显示器省电 / 线材),只证实「重训即恢复」。
  • 自建服务 amdgpu-mst-bpc(把 MST 连接器色深压到 6bpc 换带宽)是开机竞态:只等开机后 15 秒找 MST 连接器,找不到就跳过(本次日志 WARN no MST connector after 15s -> 0x6 NOT applied)。2 屏 1440p 在 4-lane 下 8bpc 够用,所以本次没强制降色深;将来上 3 屏或高刷时,要改成「检测到 MST 连接器出现即应用」,而不是把 15 秒调大。

出处

  • 权威技术记录:/etc/nixos/modules/hardware/gpu-nvidia-4060-egpu-display.md §2(连接器表 + 编号非常量警告)、§14(本次全流程)
  • 项目台账索引行:hermes-nixos-workspace/docs/INDEX.md(2026-10-18 行)