Linux 6.7全面改进x86 CPU微码加载方式

导读最近,社区在清理 Linux 上的 Intel/AMD x86 CPU 微代码加载方面做了大量的工作,这些工作现已合并到 Linux 6.7 中。

Linux 6.7全面改进x86 CPU微码加载方式Linux 6.7全面改进x86 CPU微码加载方式

由于在启动时加载 CPU 微代码对于减少不断出现的新 CPU 安全漏洞以及有时解决功能问题非常重要,Thomas Gleixner 最近开始清理 x86 CPU 微代码加载功能,并在此过程中进行了各种改进。

Linux 6.7 中对 x86 微代码加载的一些改进包括:在启用分页之前不在 32 位上加载微代码,以避免各种问题;重新修改 CPU 微代码的后期加载;后期加载的微代码现在对 CPU 热插拔操作更友好;以及确定后期微代码加载何时被认为是安全的最小微代码版本概念。

x86 处理器/微代码的亮点总结如下:

– 重组所需的代码,并在 32 位上添加临时 initrd 映射,以便加载器可以访问微码 Blob。这本身就是为下一个重大改进做准备:

– 在启用分页之前,不要在 32 位加载微代码。在过去,处理这个问题会带来无尽的麻烦、问题、难看的代码和不必要的破解。而且从一开始就没有任何合理的理由这样做。因此,将 32 位加载改为在启用分页后进行,并再次将加载器代码变得”真正纯净”。

– 在英特尔系统中放弃混合微码步进加载–在整个系统中加载一个补丁就足够了

– 重新设计后期加载,跟踪哪些 CPU 已成功更新微代码,哪些尚未更新,并采取相应行动

– 将英特尔上的后期微代码加载移至 NMI 上下文,以确保所有线程上的并发加载

– 使后期加载对 CPU 热插拔安全,并为更新目的唤醒脱机线程

– 增加对最小修订版的支持,以确定后期微代码加载在机器上是否安全,并且微代码不会更改机器无法使用的软件可见功能,因为功能检测已经发生。粗略地说,最小版本号是系统当前必须加载的最小版本号,以便允许后期更新。

– 其他一些很好的清理、修复等。

这些改进已合并到 Linux 6.7 中:

https://lore.kernel.org/lkml/20231103110600.GAZUTUGFjhoLm1KZzE@fat_crate.local/

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值