专题
默认展示周报、月报中的精选内容,并补充最近 14 天日报中的新进展;原始候选仅作为内部索引,不直接堆叠到页面。
迁移链路、停机窗口、脏页收敛与跨主机兼容性
v4 为迁移增加 TLS-PSK 支持,通过 QEMU monitor 实例化 tls-creds-psk,避免依赖 X.509 证书体系。
源自 PUCK 讨论并以 Intel TDX 现有做法为例,提出厂商无关的 CoCo 迁移内核 API;CoCo guest 的内存与 vCPU 状态对用户空间和 KVM 不可见。
Peter Xu提出新命令行方式允许在QEMU早期启动阶段设置迁移参数,避免全局变量。
提出映射式内存快照加载优化,允许虚拟机在加载完关键页面后立即运行。
添加对持久化预留(PR)迁移的API和配置支持。
修正save_query_pending()锁问题、ram_save_target_page错误释放等。
v2 以布尔 VIR_MIGRATE_PARAM_ZERO_PAGE_DETECTION 封装 QEMU zero-page 检测,可关闭检测或让主线程/multifd 线程执行。
此前版本为 vfio-ap 中介设备补齐迁移所需读回调与 get_data_size 等 vfio_migration_ops 实现,使携带 AP 直通配置的 guest 支持热迁移;本期获部分 Reviewed-by;当前已迭代至 v10,最新变化以原始线程为准。
运行中软件更新、在线维护与服务连续性
通过 Kexec Handover 与 LUO 实现 VFIO 设备状态在内核升级间保持。
此前版本为 KHO/live update 增加 IOMMU 状态保存恢复,包括 Intel VT-d 与 vfio cdev/iommufd 附加状态;讨论关注 guest 暂停耗时;当前已迭代至 v5,最新变化以原始线程为准。
运行中增减 CPU、内存与设备的能力
此前版本补丁禁止在 SNP 活跃时进行 CPU 热插拔,以防固件状态不一致;当前已迭代至 v9,最新变化以原始线程为准。
由短同步等待改为通过事件机制处理vCPU拔出完成,避免超时。
模拟透明NVMe磁盘热交换,匹配物理NVMe插拔行为。
建议允许用户自定义设备拔出超时,应对重负载 guest 的慢速响应。
使用 sanlock 时,热拔租期后恢复暂停域偶尔报错“Failed to acquire lock: File exists”。
提出允许管理员指定vCPU热插拔实体的选择顺序。
时延、吞吐、资源开销与硬件加速优化
KVM nSVM TLB flush 优化 v3:为每个 vCPU 的 L2 维护独立 ASID,替代嵌套切换时全量 flush。
v7系列为基于NVIDIA Tegra241的虚拟机提供SMMUv3命令队列虚拟化硬件加速。
允许将多个加速 SMMUv3 实例与 pcie-expander-bus 上的 hostdev 关联,v11 修复 capabilities 门控。
为 Zen6+ 实现 Page Modification Logging,VMCB 新增 PML_ADDR/PML_INDEX,4KB 日志缓冲写满触发 VMEXIT;v8 已由 maintainer 接手 review。
通过文件描述符直接读取主机 IOMMU 事件并注入 guest,已获测试验证准备合入。
把直方图边界由 unsigned int 提升为 64 位,并以 5000000000ns 边界扩展 XML 与 monitor 测试。
fold_shift 对常量 rotl/rotr 折叠 s_mask 时,I32 下与 INT32_MIN 的 OR 会产生错误符号掩码并丢掉随后的符号扩展;补丁一参照逻辑右移的处理方式修复,并新增测试。
此前版本将 socket 查找与加锁处理分离,对同流数据包复用锁并批处理通知,减少 RX worker 的每包开销;当前已迭代至 v5,最新变化以原始线程为准。
启动、关机、重启、暂停恢复与生命周期可靠性
允许 SEV-ES/SNP/TDX 虚拟机执行 reboot 而无需终止 QEMU,当前版本迭代中。
修正缺少 #VC 处理及 CR-pinning 导致 FRED 过早启用的问题,v3 已发布。
调整辅助守护进程关闭顺序,并修复热插拔到暂停 VM 时的磁盘锁定。
把各板卡静态的 arm_boot_info 迁移到 MachineState 子类,明确归属;已应用至 target-arm.next。
增加VIR_DOMAIN_EVENT_ID_CHANNEL_LIFECYCLE事件,使管理程序能感知virtio-serial通道的连通和断开。
现布尔无法区分未 realize、realize 失败、已 unrealize 与进行中,设备仍可能重复或可重入进入 DeviceClass::realize()。
修复 bhyve arm64 无 ACPI 关闭时 SIGTERM 直接终止、域状态可能误报 running 的问题。
v2 在客户机访问未接受页且已关闭该场景 EPT Violation #VE 时返回 SHUTDOWN 而非 -EIO,并新增 helper、对错误信息限速,避免 VMM 误判并终止 VM。
明确 CVE 与具有强原始证据的安全缺陷;编号和类型仅依据原始内容
合入 virtio-gpu 对 pixman_image_create_bits() 返回值的检查,防止 BLOB scanout 传未对齐 stride 触发空指针解引用;附其他 UI 修复。
event timer 的 nexttimer 计数器可能溢出为负,破坏 keepalive 引用与停止逻辑;讨论改用空闲区间表。
daemonStreamHandleWriteData 的返回契约含糊导致错误回复被二次释放,触发 libvirtd abort 并 crash-loop。
通过添加qom-tests单元测试,实例化所有非抽象类型以发现并修复多处QOM对象生命周期问题。
10.0.12 与 11.0.3 stable 在 7/22 冻结;包含针对 CVE-2021-3611 的补全,堵住 intel-hda 其余 DMA 访问点的 DMA-to-self-MMIO 重入。
针对安全漏洞的补丁系列,但因缺失行而等待 v2。
独立研究者提交 CWE-787/125 组合漏洞,影响 QEMU NVMe Copy 命令的 DIF/PRACT 路径,附 guest exploit 与 PoC,CVSS 估计 8.8-9.8。
esxDomainGetInfo() 在 MiB 转 KiB 时使用 int64/int32 中间变量,补丁调整计算避免大内存 guest 溢出。