Linus Torvalds:建议禁用 AMD“愚蠢”的 fTPM RNG


因为在 Ryzen 系统上对内核造成了困扰,Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM 硬件随机数生成器的不满,并提出了禁用该功能的建议。

据悉,AMD fTPM 的随机数生成器近期引起了一些卡顿问题,最初影响的是 Windows 用户,后续又波及到了 Linux 用户。虽然针对此问题的修复已经推出并回溯至早期内核,但一些与 AMD fTPM RNG 相关的棘手问题仍未解决,部分用户依然报告存在卡顿现象。

上周又有一份新的错误报告称,在某些 AMD 平台上使用 fTPM 可能会导致卡顿。此报告中其使用的 fTPM 固件版本是 0x3005700020005,这也是 Rembrand 平台首次出现此类情况现有的内核补丁并未起到帮助作用。

这不免引起了 Linus Torvalds 的愤怒,他在邮件列表中表示:

让我们禁用愚蠢的 fTPM hwrnd。

也许在启动时使用它来“从不同的源收集熵”,但显然它不应该在运行时使用。

为什么有人要使用这个破玩意儿,因为任何一台据说修复了这个问题的机器(事实显然并非如此),其 CPU rdrand 指令也不会出现问题?

如果你不信任 CPU rdrand 实现(它也有漏洞 - 参见 clear_rdrand_cpuid_bit() 和 x86_init_rdrand()),为什么要信任引起更多问题的 fTPM 版本?所以我看不到说“那个fTPM东西不起作用”的任何缺点。即使它最终能够工作,也有一些不比它差的替代品。

因此,我不认为直接说"that fTPM thing is not working"有什么不好。即使它将来能用,也有其他替代方案,不会比现在更糟。

并补充道:

因此,[使用 RDRAND 时出现问题]听起来不太可能,但谁知道呢...... Microcode 显然可以做任何事情,至少最初的 fTPM 问题似乎是因为 BIOS 做了一些真正疯狂的事情,如 SPI 闪存访问。

我可以很容易地想象到 BIOS fTPM 代码会使用一些绝对可怕的全局“EFI synchronization”锁或其他东西,从而导致一些完全无关的随机问题。

举例来说,如果不是 fTPM hwrnd 代码本身决定从 SPI 读取某个随机数,但它只是与 BIOS 涉及的其他内容进行序列化,我也不会感到惊讶。并非所有BIOS人员都以他们完全并行的可扩展代码而闻名......

如果 CPU microcode 能做任何类似的事情,我会非常惊讶。而这也并非不可能 - 惠普公司就曾用 SMI 将时间戳计数器搞得一团糟,我可以想象他们 - 或其他人 - 也会对 rdrand 做同样的事情。

但与“EFI BIOS uses a one big lock approach”相比,这听起来确实不太可能。

因此 rdrand (尤其是 rdseed)可能相当慢,但我认为我们讨论的是数百个 CPU 周期(也许是几千个)。与我们从 fTPM 看到的卡顿报告完全不同。

 希望在 Torvalds 的额外压力下,将会有一些额外的明确性和修复方案来解决 Linux 下的 AMD fTPM 问题。


相關推薦

2022-08-16

有在这个版本中出现……也许会在 Linux 6.1 中合并。Linus Torvalds 还注意到最近出现的一些 Linux 内核崩溃,这些崩溃似乎是因为 VirtIO 合并,并且已经在解决中。 有关该版本的详细改动,可在 Linux 6.0-rc1 公告中查看。 有意思的是

2023-06-29

Linus Torvalds最近在Linux 6.5合并窗口中对一个性能优化补丁进行了改进。 该补丁旨在为csum_partial函数提供大幅吞吐量提升和降低延迟,该函数在Linux内核中通常被用于校验和(Checksumming)。 csum_partial 函数用于从文件系统到网络的校

2023-03-07

Linux 6.3 的合并窗口现已结束,Linus Torvalds 发布了 Linux 6.3-rc1 版本。 Linux 6.3 将成为一个大内核,功能/优化方面包含更快的 EXT4 直接 I/O 优化、更多的 ASUS 主板的传感器监控,还有 Btrfs 性能优化、移除英特尔 ICC 编译器支持等。

2022-09-18

bers Conference 2022 大会上,外媒 ZDNet 的编辑对 Linus Torvalds 进行了一个专访。Linus 在采访中透露,大会开始前,他正在一个小岛上旅行潜水(共 6 天);如果可以选择的话,他“更愿意潜水而不愿参加会议”。 Linus 称,尽

2022-11-08

Linus Torvalds 已发布 Linux 6.1-rc4 ,作为 Linux 6.1内核的每周测试版本。   从 diffstat 来看,这个 rc 版本的 drm/amdkfd 的固件更新激增,另一件突出的事情是一些更严格的 xfs 引用计数检查和相关修复,还有一些新的 clx 测试。 此

2023-05-02

作为 x86/mm 的一部分发送到了 Linux 6.4 的合并窗口。Linus Torvalds 在周五进行了合并,拉取了英特尔工程师提交的 LAM 启用代码(尽管 Linus 个人仍然不喜欢该功能的名称)。 这次 Linus 没有对 LAM 的代码提出任何根本性的反对意见,

2022-10-12

启状态。在刚刚过去的周日,一名内核维护者向 Linus Torvalds 询问是否错过了一个合并请求。 对此,Linus 回应称该合并请求仍在它的合并队列中,但由于他的电脑出现内存问题,目前正在以非常慢的速度执行合并队列,他也

2024-08-23

tiveCon + Open Source Summit + AI_dev China 2024 在香港开幕。 Linus Torvalds 今天出席了大会,并与早期 Linux 内核贡献者 Dirk Hohndel(现任 Verizon 开源项目办公室负责人)进行了现场交谈。 Linus 表示这是他第一次来香港,虽然 Linux 基金会在

2022-02-21

“for-next” Git 分支。除非英特尔突然改变路线,或 Linus Torvalds 对该功能持反对意见,否则该 SDSi 功能将作为最新特性,在 Linux 5.18 合并窗口打开后第一时间合并进去。 SDSi 技术允许将加密密钥传递给 CPU ,以解锁一些尚未

2023-04-17

Linus Torvalds 的好友兼 Linux 发展的重要人物 Lars Wirzenius 发文详细讲述了他记忆中的 Linux 称,作为现在全球范围内都相当成功的一个项目,Linux 的开端其实并不起眼。 Linux 诞生之初的一些代码是由 Linus Torvalds 与 Lars Wirzenius 合写

2024-10-10

在日前宣布推出 Linux 6.12-rc2 的公告中,Linus Torvalds 对内核维护者 commit 信息的英文语法也提出了更多要求。 他希望,内核维护者在描述拉取请求中的变更时能够避免使用被动语态,更多的使用主动语态、命令式语气。 我

2023-07-03

时至今日,Linus Torvalds 实际上已经很少会亲自动手写内核代码;更多的是忙于监督上游的内核开发社区、审查代码、管理发布,并在邮件列表中进行讨论。不过近日,他就为 Linux 6.5 进行了将近 500 行的 code rework ,以改进用户模

2022-09-30

意接受用 Rust 开发 Linux 内核的驱动程序。 2020 年,Linus Torvalds 回应了针对 Linux 内核支持 Rust 的个人看法。他没有否定该提议,而是提倡在默认情况下开启该 feature,以确保该 feature 能被充分测试。当然该 feature 最好以自适应的

2023-07-11

Linus Torvalds 今天发布了 Linux 6.5 的首个 RC,意味着这个开发周期内引入新功能的工作已结束。 他在邮件中写道:“新版本没遇到什么特别的问题,但 VM 出现了小毛病,对此的修复甚至没有显示在 diffstat 中。” 主要新功能: