QEMU 10.1 具有增强的安全性、迁移能力和扩展的支持。

  • 机密客户支持:VFIO 中的 TDX/SEV-SNP、IGVM 和 guest_memfd
  • 更快的迁移:multifd + postcopy 和 IPv6 上的 RDMA
  • 最新的架构:新的 ARM 特性和 RISC-V 扩展
  • 实际改进:ARM“virt”上通过 ACPI 实现 GUI/Audio、NBD、QMP 和 PCI 热插拔

QEMU 10.1

QEMU 10.1 现已推出,并带来了一些对开发人员和大规模虚拟机部署者都很重要的变化。 其中最值得注意的功能包括安全性、实时迁移、架构支持和设备改进方面的新功能。,建议大家冷静看待。

在深入探讨细节之前,为了避免混淆,需要注意的是:QEMU 使用基于时间的编号。这意味着最高发行版本号本身并不代表变更的程度。 项目政策允许在弃用期后进行不兼容的更改,并在至少两个先前版本中发出警告。,所以不要以为主要版本的飞跃就等同于革命。

QEMU 10.1 可用性、上下文和理念

萨尔瓦多PROYECTO Anunció 10.1.0 年 26 月 2025 日发布 2700,有 226 位作者签名的 XNUMX 多次提交。 您可以从官方网站下载 tarball 并查看完整的更新日志以了解所有详细信息。与往常一样,非常感谢那些贡献代码、测试、CI、文档和错误报告的人。

按照 QEMU 的理念,其中多次提到了删除的功能和弃用的选项。 如果您依赖较旧的版本,请检查系统仿真用户指南中的“已删除的功能”部分和“已弃用的功能”章节,其中也建议替换。

亮点一览

为了帮助您入门,10.1 的简​​要概述涵盖了安全性、性能和高级管理。 初始 VFIO 支持机密访客、强大的迁移改进以及新的访客代理功能。.

  • VFIO 和保密性:初始支持使用 guest_memfd 时访问/映射敏感客户内存,从而实现 SEV-SNP/TDX 上的直通。
  • 实时迁移:multifd 加速了 IPv6 上的后复制、预复制优化和 RDMA 支持。
  • 宾客代理:: 新的“guest-get-load”命令用于查询 Windows 上的负载。
  • 架构:新的 ARM 功能(FEAT_SME2、SME2p1、SVE2p1 等)、扩展的 RISC-V 支持以及 x86 上 TDX 的 KVM 集成。

架构和机器:究竟发生了什么变化

QEMU 10.1 完善并扩展了跨多个 CPU 系列的仿真和虚拟化。 从 ARM 到 RISC-V 和 x86,通过 LoongArch、HPPA 或 Microblaze,都有了具体的进步 应该将其分解。

ARM

在 ARM 上,QEMU 10.1 增加了一系列 CPU 架构功能: FEAT_SME2、​​FEAT_SME2p1、FEAT_SME_B16B16、FEAT_SME_F16F16、FEAT_SVE_B16B16 和 FEAT_SVE2p1,加强对向量和矩阵处理的支持。

至于机器,有几个相关的新功能。 集成了“max78000fthr”开发板(Analog Devices max78000 Cortex-M4)新的多 SoC“AST2700FC”即将推出,同时还将推出“Catalina-BMC”(Meta)和“GB200-BMC”(NVIDIA)机器;并且正在为 AST2700 EVB 添加固件支持。

流行的“virt”板也在不断增长: 现在支持 CXL、通过 ACPI 的 PCI 热插拔,并且在最近的主机内核下,通过启用“virtualization=on”支持使用 KVM 进行嵌套虚拟化注意: 'highbank' 和 'midway' 模型已弃用,并且已宣布弃用 'ast2700a0-evb'。

RISC-V

RISC-V 生态系统收到了有关 ISA、机器和修复的大量详细信息。 支持原子提取扩展(Ziccif),添加“Svrsw60t59b”,并对矢量指令的边缘情况进行微调.

  • ISA 和扩展:用于排队调用的“tail”伪指令、删除大写字母“Z”的 CPU 属性、来自主机的 max_satp_mode、设置和扩展 PMP 区域数(最多 64 个)、将“vill”设置为 vsetvli 保留使用的选项。
  • :ACPI“virt”中的 RIMT 支持、Microchip PolarFire SoC 上的定制改进以及 全新昆明湖CPU及平台;更新 ACPI 表中的 FADT 和 MADT 版本。
  • 更正及其他:不允许 PMP RLB 跳过权限、KVM 中的 CSR 修复、sstc、zama16b 顺序、配置文件处理、异常/屏蔽修复(IALIGN 的 MEPC/SEPC)、PMP 0 范围的环绕修复、大端无限翻译循环修复,以及当 AIA 设置为 aplic-imsic 时迁移失败修复。

另外, 添加了缺失的命名功能,修复了 PPN 翻译响应日志,并避免了异步传输中的无限延迟。,提高了极端情况下的稳定性。

x86(KVM 和 TCG)

在 x86 上,有两个优点值得管理员重视。 当客户 CPU 供应商未定义时,特定于供应商的 CPUID 位将被忽略。,避免混淆和人为的概况。

在 KVM 方面, 增加了对 TDX 的支持(需要 Linux 6.16 或更高版本),并允许从 IGVM 文件启动 TDX 或 SEV-SNP 机器,这是安全配置流程的重要一步。

在TCG翻译器中, 支持TSS陷阱位,在没有硬件加速的情况下提高某些执行路径的保真度。

龙拱

LoongArch 在以下支持下继续前进 内核中的irqchip,使用 MCFG 表修复大端,修复 KVM 下‘smp cpu’<‘smp maxcpus’时启动失败的问题,并完善 VLDI 等指令细节。 KVM 客户机也会收到通知,并添加对“fcond”的检查。.

微火

与 Microblaze 合作的人拥有更多控制权: “petalogix_s3adsp1800”机器允许您通过“endianness”属性切换字节顺序。ml605 和 xlnx-zynqmp-pmu 的大端版本即将被弃用,这些型号将在 qemu-system-microblaze 中转换为小端版本。此外,“qemu-system-microblazeel”二进制文件也即将被弃用,并将在未来被移除。

MIPS

有一个非常具体但非常值得赞赏的更正: 修复了在 Magnum 机器上启动 Windows NT MIPS 时出现的 BSOD(问题 #2464),对于研究或维护历史软件的人很有用。

高压聚丙烯酰胺

它一直 改进的浮点异常(FPE)仿真 无论是在用户模式还是系统模式下,都增强了这一资深架构的精确性。

其他架构

除了上述章节外,还有关于 68k、Alpha、AVR、Hexagon、OpenRISC、PowerPC、Renesas RX/SH、s390x、SPARC、Tricore 和 Xtensa 的章节。 虽然 10.1 中没有列出所有重大更新,但维护和调整仍在继续。,特别提到最近版本中的 s390x,因为它具有新的 CPU 定义和 virtio-mem 改进。

设备、I/O 和子系统

QEMU 10.1 带来了 VFIO、网络、图形、音频和 I/O 方面的重要材料。 这些变化直接影响性能、兼容性和日常操作。.

VFIO

介绍 机密 (CoCo) 客户端中对 guest-memfd 内存后端的初步支持,更新了 IGD 直通文档,并修复了 p 系列机器上的 L2 崩溃。

它也启用 自动将 OpRegion 用于 IGD 直通,其检测得到了改进,QEMU 现在可以报告 vfio-ap 配置变化。

除此之外,他们还达到了 vfio-用户客户端,支持 实时更新(CPR), 在 aarch64 上使用 multifd 进行 VFIO 迁移,以及 强制设备的 PCI 类代码. 最后, TDX 和 SNP VM 上的 VFIO 支持.

网络和存储

有一个新的网络设备后端: ‘过去’专为集成和沙盒场景而设计。此外,在 Unix 套接字上使用 NBD 时, QEMU 尝试协商更大的缓冲区 大幅提高性能。

PCI/PCIe 和 virtio

ARM“virt”板增加了 通过 ACPI 和 PCI 设备的 acpi-index 实现 PCI 热插拔 通过启用全局选项“-global acpi-ged.acpi-pci-hotplug-with-bridge-support=on”。

在虚拟化图形中, virtio-gpu 允许注入 EDID 名称,对于兼容性和自动化测试很有用。

9pfs 和其他后端

对于 9pfs, 文件描述符恢复算法 当你接近系统极限时,会出现几种情况 解除链接后使用 (删除文件后的操作)可能会导致细微的错误。

音频

音频子系统调整默认值和兼容性: 在 ALSA 中,‘try-poll’现在默认为 false 并为浮点样本添加了字节顺序转换器。

图形界面和代理

GUI 中有很多内容需要讨论: spice/dbus 支持多平面 dmabuf并且 gl=on 也可以通过远程/非本地客户端启用。

vdagent 代理添加 迁移支持,GTK 改进了比例处理并添加了“保持纵横比”和“比例”选项。

在 VNC 中它们被纠正 更新编码问题 当客户端和服务器在非紧密编码和 8/16 bpp 方面存在字节序差异时,它也能解决问题 迁移后屏幕暂停.

I/O 和调试

在 I/O 层, 许多 TCP 后端现在允许您配置 TCP keepalive 参数,在具有严格防火墙或 NAT 的环境中非常有用。

GDBStub 添加 支持 qGDBServerVersion 供非 GDB 客户端使用,提高互操作性。

TCG 插件获得大力支持:'ips' 插件支持 每个量子可配置的缩放和指令;此外还有新功能 写日志,写入 虚拟地址 (谨慎)和 读/写硬件地址. 包含一个测试插件“patcher”,并且 sparc64 和 alpha 向插件公开日志详细信息.

实时迁移和阻止任务

10.1 加强了虚拟机移动性。 RDMA 迁移现在支持 IPv6 并且后复制针对顺序访问进行了优化(典型情况如流视频)。

好消息: 现在可以同时启用 Multifd 和 postcopy。 (现在预复制期间启用了 multifd)。此外,还修复了启用 TCP 零拷贝时使用 multifd 进行 VFIO 迁移的问题,并减少了 预拷贝中的停机时间窗口 避免不必要的 LOG_CLEAR。

在 QMP 中, blockdev-镜像 首次使用布尔标志“target-is-zero”来优化 镜子 到已经读为零的目的地;此外,即使没有该标志,对读为零的源块所做的工作也较少。 blockdev-备份 添加“on-cbw-error”选项来决定如何处理写入前复制期间的 I/O 错误。

在砌块作业中, 块提交未激活 它经过优化以保持稀疏性;镜像/备份继承了以前对零块和新选项的改进。

宾客代理

QEMU Guest Agent 在 Windows 上增长: 'guest-get-load' 已实现 查询客户系统负载。

此外在 Windows 中还添加了 注销 VSS 提供程序时重试 并将安装错误从 VSS 提供程序传播到 MSI 安装程序,使诊断更容易。

用户模式和TCG

在用户模式仿真中 少量文档更新 澄清限制;涵盖信号、运行时和 binfmt_misc 领域,以及 alpha、arm/aarch64、HPPA、LongArch、PowerPC、s390 和 x86 目标。

TCG 的工作仍在继续 LoongArch 和 RISC-V 以及的支持 录制/回放,尽管除了前面提到的 TSS 欺骗位之外,标题没有任何变化。

编译、依赖项和平台

在构建过程中,文档会更新 b4 示例 现在所有 edk2 子模块都 包含在固件压缩包中.

关于 Rust, 最低支持版本增加至 1.77在 Debian 上,除 mips64el 版本外,bookworm 均可在 rustc-web 软件包中使用(为此,需要 Debian trixie 或更高版本)。在 Ubuntu 22.04 和 24.04 上,通过将 RUSTC/RUSTDOC 变量设置为 /usr/bin/rustc-1.77 和 /usr/bin/rustdoc-1.77 来使用 rust-1.77 软件包。

Rust 支持继续 实验性的且不稳定,不建议用于开发以外的任何用途。 启用 Rust 后,QEMU 需要 Meson 1.8.1包含一个脚本(“scripts/get-wraps-from-cargo-registry.py”),用于从本地注册表(例如,/usr/share/cargo/registry)填充“subprojects/”。

在主机平台上, Debian Bullseye 不再受支持,并且 Ninja 1.9 成为必需(它已经存在于所有支持 QEMU 10.0 的系统上)。它还 使用 Emscripten 编译为 WASM 的实验性支持.

除了客座代理已经提到的内容外,本期没有关于 Windows 的具体标题。 10.1 路线图位于规划/10.1 页面 如果您想了解详细信息。

如果您一直在等待升级,那么对机密客户机的支持(带有 IGVM 和 guest_memfd 的 TDX/SEV-SNP)、更快的迁移(multifd + postcopy、RDMA IPv6)以及跨架构和子系统的改进使 QEMU 10.1 成为一个非常全面的版本。 凭借更实用的性能、更好的管理工具以及不断现代化的技术基础,这一飞跃是值得的。.

QEMU 10.0
相关文章:
QEMU 10.0 针对不同架构进行了改进并支持 Apple。