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

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

由于在启动时加载 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/

相关推荐
IT 小阿姨(数据库)2 分钟前
PgSQL中pg_stat_user_tables 和 pg_stat_user_objects参数详解
linux·运维·数据库·sql·postgresql·oracle
❀͜͡傀儡师11 分钟前
Docker部署搜索引擎SearXNG
运维·docker·容器·searxng
MChine慕青17 分钟前
顺序表与单链表:核心原理与实战应用
linux·c语言·开发语言·数据结构·c++·算法·链表
虎头金猫28 分钟前
如何在Linux上使用Docker在本地部署开源PDF工具Stirling PDF:StirlingPDF+cpolar让专业操作像在线文档一样简单
linux·运维·ubuntu·docker·pdf·开源·centos
荣光波比1 小时前
Nginx 实战系列(七)—— Nginx一键安装脚本详解
运维·nginx·自动化·云计算
努力学习的小廉1 小时前
深入了解linux系统—— 线程同步
linux·服务器·数据库·算法
sinat_602035362 小时前
模块与包的导入
运维·服务器·开发语言·python
鲸屿1952 小时前
Ansible之playbook
服务器·网络·ansible
2301_810154552 小时前
VM中CentOS 7密码重置
linux·运维·centos
zhaqonianzhu2 小时前
Linux GPIO 使用 Pinctrl 及 Gpiolib 通俗详解
linux·安卓