IT之家 12 月 21 日消息,随着 Linux 内核和编译器生态对英特尔 Advanced Performance Extensions(APX,先进性能扩展)的支持逐步完善,虚拟化环境中的相关适配工作也在加速推进。
英特尔工程师现已开始推动 KVM 虚拟机(Guest VM)对 APX 的正式支持,这将为未来基于新一代至强处理器的云计算和虚拟化场景奠定基础。
自 Linux 6.16 起,Linux 内核基础设施层面已具备 APX 支持条件,同时 GCC 与 LLVM / Clang 等主流编译器工具链也已完成相应适配。在此基础上,当前尚缺的关键一环是让运行在 KVM 上的来宾虚拟机能够实际使用 APX 指令与寄存器扩展。
英特尔工程师 Chang S. Bae 今日向内核社区提交了一组共 16 个补丁,主题为“为 KVM x86 来宾虚拟机启用 APX”。这是在此前 RFC(征求意见稿)基础上形成的正式补丁系列,已吸收 KVM 维护者 Paolo Bonzini 等人的反馈,并基于 Linux 6.19-rc1 开发。

与 Intel AMX 等扩展类似,APX 在虚拟化场景下需要特殊处理。此次补丁主要涉及以下几个方面的改动:
首先,英特尔对通用寄存器(GPR)访问代码进行了重构。补丁将内部寄存器访问接口重命名为 kvm_gpr_read_raw () 和 kvm_gpr_write (),并在开启 CONFIG_KVM_APX 配置时,新增对扩展通用寄存器(EGPR)索引的支持,而 AMD 架构及 32 位构建则保持现有实现不变。
其次,该补丁完善了 VMX 对扩展寄存器索引的支持。与此前基于 XCR0.APX 状态判断不同,新方案仅依赖 APX 的 CPUID 枚举即可确认 VMCS 中扩展字段的可用性。相关逻辑同时覆盖了普通 VMX 与嵌套虚拟化(nested VMX)场景。
第三部分是改动幅度最大的内容,即为 APX 新增的 REX2 前缀提供指令仿真支持。该补丁对原有模拟器代码进行了大幅简化,包括移除实际意义有限的 JMPABS 仿真、复用现有操作码表结构,以及通过统一的辅助函数解析 REX 与 REX2 位,从而降低复杂度并与架构规范保持一致。
最后,该补丁还涉及 APX 功能的对外暴露与自测。该部分未改动 CPUID 暴露逻辑和自测框架,仅对 XCR0.APX 的处理进行了调整,以明确避免与 MPX 功能产生冲突。同时,随着前述 VMX 逻辑调整,相关的旧代码路径也被移除。
需要指出的是,Advanced Performance Extensions 将随英特尔 Nova Lake 和 Diamond Rapids 处理器首次引入。尤其是 Diamond Rapids,被视为面向数据中心和云计算的重要一代 Xeon 平台,因此 KVM 来宾虚拟机对 APX 的支持,对未来云实例性能具有直接意义。
从内核版本节奏来看,社区正在评估该系列补丁能否赶上 Linux 6.20 或 7.0 合并窗口。由于 Ubuntu 26.04 LTS 预计将采用这一阶段的内核版本,相关支持一旦合入,将对虚拟化和云计算用户产生较大影响。
]article_adlist–>
<!-- 非定向300*250按钮 17/09 wenjing begin -->
<!-- 非定向300*250按钮 end -->
</div>