最近,已经做了大量的工作来清理Linux上的Intel/AMD x86 CPU微码加载(也被x86_64 CPU使用),这些微码加载现在已经合并为
Linux 6.7
。
由于在引导时加载CPU微代码仍然非常重要,这有助于缓解持续不断的新CPU安全漏洞,并有时解决功能问题,Thomas Gleixner最近开始清理x86 CPU微代码加载功能,并在这一过程中进行了各种改进。
Linux 6.7中的一些x86微码加载改进包括在启用分页之前不在32位上加载微码以避免各种问题,重新设计CPU微码的延迟加载,延迟加载微码现在是CPU热插拔安全的,以及确定何时认为延迟微码加载是安全的最小微码修订的概念。
x86/微码亮点总结如下:
-重新构造所需的代码,并在32位上添加临时initrd映射,以便加载程序可以访问微码Blob。这本身就是为下一个重大改进做准备:
-在启用分页之前,不要在32位上加载微码。在过去,处理这一问题已经引起了无尽的头痛、问题、丑陋的代码和不必要的黑客攻击。一开始确实没有任何合理的理由这么做。因此,在启用分页后切换32位加载,并再次将加载程序代码转为“real-purty”
-删除在英特尔上加载的混合微码步进-在那里,在整个系统上加载一个补丁就足够了
-返工延迟加载以跟踪哪些CPU成功更新了微码,哪些没有,并采取相应行动
-在NMI上下文中移动英特尔上的后期微码加载,以保证所有线程上的并发加载
-使后期加载的CPU热插拔安全,并为了更新而唤醒脱机线程
-添加对最低修订版的支持,该修订版可确定在计算机上后期加载微代码是否安全,并且微代码不会更改计算机无论如何都无法使用的软件可见功能,因为已经进行了功能检测。粗略地说,最小修订是系统上当前必须加载的最小修订号,以便允许延迟更新
-到处都是其他不错的清理、修复等
这些改进是
合并
for Linux 6.7.