登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
我知道了
查看详情
登录
注册
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
2
Star
1
Fork
36
src-anolis-os
/
qemu
代码
Issues
6
Pull Requests
7
Wiki
统计
流水线
服务
Gitee Pages
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
23
[8.2]支持CSV,CSV2虚拟机迁移,支持CSV2虚拟机重启
已合并
hanliyang:a23
src-anolis-os:a23
hanliyang
创建于 2024-04-11 15:38
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
[Reference: https://gitee.com/src-anolis-os/qemu/pulls/8] 海光CSV固件提供了CSV/CSV2虚拟机迁移所需的API,包括SEND_START,SEND_UPDATE_DATA,SEND_UPDATE_VMSA,SEND_FINISH,RECEIVE_START,RECEIVE_UPDATE_DATA,RECEIVE_UPDATE_VMSA,RECEIVE_FINISH等等,QEMU通过kvm ioctl接口可以向CSV固件发起这些API的请求,并实现CSV/CSV2虚拟机的加密内存迁移。 海光CSV2虚拟机运行时需要通过per-vCPU的GHCB页实现主机-虚拟机之间的通信,因此per-vCPU的GHCB页也需要迁移,因此为了支持CSV2虚拟机迁移后正常运行,在补丁集中增加了对GHCB页迁移的支持。 海光CSV2虚拟机的vCPU寄存器状态在启动阶段即被加密,主机不能恶意篡改vCPU寄存器状态,为了支持CSV2虚拟机迁移,在QEMU中增加了kvm ioctl接口(这部分接口在anolis cloud-kernel(branch:devel-5.10)中已经支持),QEMU通过新增的kvm ioctl接口通知KVM重置CSV2虚拟机的vCPU状态。 > 补丁说明 1005-doc-update-AMD-SEV-to-include-Live-migration-flow.patch 说明:添加加密虚拟机迁移流程的说明 1006-migration.json-add-AMD-SEV-specific-migration-parame.patch 说明:添加加密虚拟机迁移的证书链设置功能 1007-confidential-guest-support-introduce-ConfidentialGue.patch 说明:添加加密虚拟机迁移所需的回调接口 1008-target-i386-sev-provide-callback-to-setup-outgoing-c.patch 说明:添加加密虚拟机迁移上下文的设置,主要是解析及确认证书链已就绪 1009-target-i386-sev-do-not-create-launch-context-for-an-.patch 说明:迁移接收端不应当直接调用LAUNCH_START启动虚拟机,而是应当等待发送端传递加密内存过来时,由接收端发起RECEIVE_START,并等待内存页迁移完成 1010-target-i386-sev-add-support-to-encrypt-the-outgoing-.patch 说明:添加调用SEND_START,SEND_UPDATE_DATA,SEND_FINISH API实现虚拟机加密内存的迁移功能 1011-target-i386-sev-add-support-to-load-incoming-encrypt.patch 说明:添加调用RECEIVE_START,RECEIVE_UPDATE_DATA,RECEIVE_FINISH API实现虚拟机加密内存的迁移接收 1012-kvm-Add-support-for-SEV-shared-regions-list-and-KVM_.patch 说明:使用shared_regions_list记录虚拟机内存加密页号区间 1013-migration-add-support-to-migrate-shared-regions-list.patch 说明:添加对shared_regions_list的迁移支持 1014-migration-ram-add-support-to-send-encrypted-pages.patch 说明:在迁移内存时根据shared_regions_list记录的加密页号区间确定是否利用1010中的接口迁移内存 1015-migration-ram-Force-encrypted-status-for-flash0-flas.patch 说明:OVMF_CODE是被加密的,需要通过1010中的接口迁移;OVMF_VARS不应被加密,不需要通过1010中的接口迁移 1016-kvm-Add-support-for-userspace-MSR-filtering-and-hand.patch 说明:支持用户态处理MSR_KVM_MIGRATION_CONTROL寄存器的读写,在虚拟机向MSR_KVM_MIGRATION_CONTROL寄存器写了KVM_MIGRATION_READY之后,QEMU才能开始迁移虚拟机,否则会提示未实现加密虚拟机迁移 1017-target-i386-sev-Return-0-if-sev_send_get_packet_len-.patch 说明:返回0防止size_t将返回的-1作为很大的正数进行算术比较,从而导致qemu分配内存时crash 1018-migration-ram-Force-encrypted-status-for-VGA-vram.patch 说明:VGA vram区域应当作为非加密内存被迁移 1019-target-i386-sev-Clear-shared_regions_list-when-reboo.patch 说明:在虚拟机重启时,重置shared_regions_list,因为重启之后,虚拟机重启之前的加密页号区间是无效的 1020-migration-ram-Fix-calculation-of-gfn-correpond-to-a-.patch 说明:1014补丁来自于AMDESE,那个代码在获取gfn号时,存在逻辑错误 1021-target-i386-Introduce-header-file-csv.h.patch 说明:引入头文件,包含hygon vendor的判断 1022-target-i386-csv-Read-cert-chain-from-file-when-prepa.patch 说明:1006和1008补丁对于证书链的获取是假设迁移发送端通过qmp命令将证书链的base64编码传入,但是base64编码字符串太长,很麻烦;所以,对于CSV虚拟机,我们是假设迁移发送端通过qmp命令获得base64编码后的证书链文件的绝对路径,然后读取证书链文件并base64解码 1023-target-i386-csv-add-support-to-queue-the-outgoing-pa.patch 说明:添加批量迁移加密内存页的功能,这里将要发送的加密内存页先缓存起来 1024-target-i386-csv-add-support-to-encrypt-the-outgoing-.patch 说明:添加批量迁移加密内存页的功能,这里将缓存的加密内存页批量发给CSV固件处理 1025-target-i386-csv-add-support-to-queue-the-incoming-pa.patch 说明:添加批量迁移加密内存页的功能,这里将已经接收的加密内存页先缓存起来 1026-target-i386-csv-add-support-to-load-incoming-encrypt.patch 说明:添加批量迁移加密内存页的功能,这里将缓存的加密内存页批量发给CSV固件处理,由固件来恢复内存 1027-migration-ram-Accelerate-the-transmission-of-CSV-gue.patch 说明:在内存迁移代码里增加对补丁1023和1024接口的调用,实现虚拟机加密内存迁移加速 1028-migration-ram-Accelerate-the-loading-of-CSV-guest-s-.patch 说明:接收端利用1025和1026接口实现接收端的内存恢复加速 1029-target-i386-csv-Add-support-for-migrate-VMSA-for-CSV.patch 说明:添加CSV2虚拟机迁移VMSA的支持 1030-target-i386-get-set-migrate-GHCB-state.patch 说明:添加CSV2虚拟机获取GHCB,设置GHCB,迁移GHCB的功能 1031-target-i386-kvm-Fix-the-resettable-info-when-emulate.patch 说明:对于CSV2虚拟机,返回可以重启。注意对于CSV2虚拟机迁移接收端,我们禁止重启功能 1032-kvm-Add-support-for-CSV2-reboot.patch 说明:添加kvm ioctl接口,通过ioctl接口通知KVM使CSV2虚拟机寄存器回到reset状态 实验记录: 参考https://gitee.com/src-anolis-os/qemu/pulls/8
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
gaochang
已审查通过
happy_orange
已审查通过
已完成
(2/1人)
测试
gaochang
已测试通过
小龙
已测试通过
已完成
(2/1人)
怎样手动合并此 Pull Request
git checkout a23
git pull https://gitee.com/hanliyang/src-anolis-os.qemu.git a23
git push origin a23
评论
13
提交
1
文件
29
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
happy_orange
happy_orange
Meredith
yueeranna
gaochang
gcdota930915
未设置
最少人数
1
测试
happy_orange
happy_orange
Meredith
yueeranna
gaochang
gcdota930915
小龙
anolis-bot-ci
未设置
最少人数
1
优先级
不指定
严重
主要
次要
不重要
标签
anolis_cla_pass
anolis_test_fail
关联 Issue
未关联
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
参与者
(4)
Cherry-pick 提交
Cherry-pick 可以将
特定提交(Commit)
从某个分支挑选并应用到另一个分支,实现快速集成特定更改,而无需合并整个分支。
请选择应用 Cherry-pick 提交 (Commit) 的目标分支
新建分支
当前账号不存在 Fork 仓库,建议 cherry-pick 到 Fork 仓库。
Fork 仓库
提交列表
Commit SHA
Commit Message
基于 Cherry-pick 后的分支发起 Pull Request
取消
Cherry-pick
1
https://gitee.com/src-anolis-os/qemu.git
git@gitee.com:src-anolis-os/qemu.git
src-anolis-os
qemu
qemu
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册