Oh GuC:除非您还升级固件,否则 Linux 5.19 上的 Intel ADL-P 图形将中断
admin
2023-07-31 18:09:24
0

作为对于那些已经购买 Alder Lake P 笔记本电脑或正在考虑购买一台笔记本电脑的人的公共服务公告,通过内核升级,您现在需要谨慎/意识到由于围绕 GuC 微控制器的版本化固件要求而破坏了加速图形支持。虽然我很惊讶 Linus Torvalds 允许这样做,或者想知道他是否甚至知道他是否知道,因为他过去关于 Linux 内核更新不会破坏用户空间的声明,英特尔 GuC 固件处理版本化并且不支持向后兼容性可能会给您的升级带来麻烦体验即将推出的 Linux 5.19 内核。

在完成我最近的Intel Core i7 1280P“Alder Lake P”Linux 基准测试之后这是使用 Linux 5.18 stable 完成的,我继续测试 Linux 5.19 内核,看看新内核的性能如何……毕竟,在某些系统上,v5.19 Git超过 5.18 和之前的版本有非常好的收益.

当使用方便的 Ubuntu Mainline Kernel PPA 日常构建跳到最新的 Linux 5.19 Git 时,我惊讶地发现加速图形无法正常工作。闪亮的全新英特尔 Evo Alder Lake P 笔记本电脑重新开始使用 LLVMpipe……认为这是一些随机硬件问题或现在处于 5.19-rc6 状态的未捕获错误,很快证明并非如此,而是英特尔有意做出的改变。查看dmesg输出时,由于缺少固件,Alder Lake P 图形无法初始化。

image.php_-12image.php_-12
在这台英特尔 ADL-P 笔记本电脑上升级到 Linux 5.19 导致 Xe 显卡无法工作,因为现在需要更新固件。

对于 Alder Lake P,GuC 微控制器的固件及其使用现在是强制性的。由于前几代英特尔显卡多年来一直使用 Skylake 的 Gen9 显卡,GuC 的使用一直是可选的。这种“图形微控制器”用于从驱动程序中卸载一些任务,并可用于低级图形上下文调度、HEVC/H.264 (HuC) 微控制器的身份验证,以及最近的电源管理。对于以前的硬件,默认情况下没有使用 GuC,但需要为 i915 驱动程序设置 GuC 模块参数(i915.enable_guc=1)。

现在有了 Alder Lake P 和所有未来的英特尔平台(包括 DG2/Alchemist 独立显卡),GuC 固件及其使用现在是强制性的,因为电源管理已卸载到这个微控制器。但这不是简单地确保存在 GuC 固件的问题,而是确保给定内核存在正确版本的 GuC 固件。

在 Linux 5.19 中,当升级这台 Core i7 1280P 笔记本电脑的内核时,这一点变得很明显,该笔记本电脑一直在愉快地运行 Linux 5.18,却发现 i915 初始化现在失败了。GuC 固件 69 已存在于系统上并正在使用中,但现在在 Linux 5.19 中,驱动程序希望存在 GuC 固件 70,并且不支持与加载先前固件的向后兼容性。GuC 固件/驱动程序接口似乎不稳定,现在升级到版本 70。

image.php_-11image.php_-11

Linux 5.19 的破坏来自此提交,删除了 GuC 69 固件并升级为 70。该提交消息还重申了 GuC 的持续搅动,更新需要更改驱动程序:

最新的 GuC 固件删除了上下文描述符池,转而在 create H2G 中传递所有创建数据。它还极大地简化了工作队列,并移除了用于多 LRC 提交的进程描述符。因此,删除所有提及 LRC 和进程描述符并相应地更新注册代码。

不幸的是,新的 API 还取消了在上下文注册时为调度策略设置默认值的能力。相反,必须发送后续 H2G。单个调度策略更新 H2G 命令也被删除,取而代之的是基于单个 KLV 的 H2G。因此,相应地更改更新包装器并在上下文注册期间调用它……

这不是他们第一次需要新的 GuC 固件,但至少在英特尔图形微控制器固件处理方面的先前工作是针对未发布点的硬件或对于 GuC 不是强制性的前几代硬件用法。现在使用 Linux 5.19,已发布笔记本电脑中的 Alder Lake P 图形如果不同时切换到新版本的固件,可能会损坏。至少尽管 GuC 版本不会破坏每个内核周期。

image.php_-13image.php_-11
下载最新的“GuC 70”固件二进制文件后,ADL-P Xe 图形工作正常。

由于 GuC 现在对于未来的硬件也是强制性的,因此英特尔用户在升级到新版本的内核时要牢记这一点。英特尔确实在 4 月份将 GuC 70 固件二进制文件添加到 linux-firmware.git 树中,但至少对于 Ubuntu 22.04 LTS 之类的产品,他们没有发布该固件,因为他们的旧 Linux 5.15 内核针对的是 GuC 69。旧的 GuC 固件用于linux-firmware.git 树中继续承载着各代 Intel。幸运的是,主要的 GuC 版本似乎并没有经常被引入,但它仍然是一个最终破坏用户空间的变化。

几年前,我认为 Linus Torvalds 反对类似的行为(如果我没记错的话,使用 WiFi 芯片组)新内核在破坏向后兼容性的同时不能强制要求更新固件,但我找不到我似乎记得的确切信息。但考虑到他总体上认为内核不应该破坏用户空间二进制兼容性并试图保持一致的用户体验的意见,英特尔 GuC 固件版本控制似乎与这一理想背道而驰。至少,现在您知道在 GuC 固件版本更改时在 Alder Lake P 和更新的平台上升级内核时可能需要处理的问题。

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
Hive OS 部署 PXE ... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
如何在Instagram上扫描... 如何在Instagram上扫描名称标签/ QR? 总而言之,您可以通过大约四种不同的方法来扫描这些I...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
farols1.1.501.0... faro ls 1.1.501.0(64bit)可以卸载,是一款无需连接外部PC机或笔记本计算机即可...
Hive OS 新建飞行表的方... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...