在启动时连接两个监视器会导致 Linux 内核在启用 KMS 时挂起

在启动时连接两个监视器会导致 Linux 内核在启用 KMS 时挂起

当启动时连接两个显示器时,Linux 内核会完全挂起fb0: switching to i915 from EFI VGA。屏幕保持打开状态并继续显示最后一条消息,但除此之外,一切都没有响应。Numlock/Capslock 灯不会切换。Alt-SysRq 通常不起作用,但我偶尔可以使用 Alt-SysRq+B 强制重新启动。Dmesg 和其他日志不会写入磁盘。当启动时连接两个显示器时,UEFI 启动图像会以较低的分辨率显示 - 所以我想知道问题是否是由 UEFI 向 Linux 提供的错误视频信息引起的。在 POST 后连接第二台显示器可以正常工作,Linux 甚至在切换到 DRM 帧缓冲区之前就开始使用显示器,并且没有挂起。nomodeseti915.modeset=0也可以工作,但这显然是不可取的。

硬件

  • 英特尔酷睿 i7-11700K(HD750 显卡 - gen12)
  • 华硕 ROG Strix B560-A 游戏 WiFi 带 UEFI v1203
  • 显示器 1:Dell P2419H,HDMI @ 1920x1080p60
  • 显示器 2:Dell P2419HC,DisplayPort 1.2 @ 1920x1080p60

软件

  • Pop_OS!21.10 x64(Ubuntu 21.10 也出现此问题)
  • Linux pop-os 5.15.5-76051505-通用#202111250933~1638201579~21.10~09f1aa7 SMP

该问题似乎与 Linux 上与 Intel Gen12+ 显卡相关的其他问题类似:

但是,这些问题应该会在 Linux 5.15 中得到修复,而且我已经尝试了他们的解决方法。

尝试修复

UEFI

  • 禁用 PCIe 低功耗模式
  • 更改 eGPU 专用 VRAM 数量
  • 禁用 eGPU 低功耗模式
  • 禁用 VT-d
  • 禁用 SR-IOV
  • 禁用芯片组/DMI 低功耗模式
  • 将启动画面徽标显示设置为“全屏”,而不是自动
  • 禁用快速启动

systemd-boot

  • 加载器.conf:
    • console-mode auto
    • console-mode max

内核命令行

  • 设置drm.edid_firmware为从每个监视器读取固件转储
  • 禁用一个显示器video=DP-1:d(显示器仍然打开吗?)
  • 强制监控模式video=DP-1:1920x1080@60 video=HDMI-1:1920x1080@60
  • 消除quiet loglevel=0 systemd.show_status=false splash
  • 设置vga=ask(无效)
  • i915.force_probe=4c8a
  • i915.fastboot=1i915.fastboot=0
  • i915.enable_guc=2
  • i915.enable_dc=0
  • i915.enable_fbc=1enable_fbc=0
  • 上述内容的多种组合

初始化文件系统

  • 添加i915到 initramfs

仍需尝试

  • 将引导加载程序更改为 GRUB2,因为它支持从 UEFI 覆盖分辨率。
  • 编译带有 USB 串行控制台支持的内核,查看显示驱动程序失败后是否打印消息。

有什么建议么?

相关内容