登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
我知道了
查看详情
登录
注册
Gitee 接口下线公告:检查是否已Star和列出指定Star仓库用户等4个接口将在7月3日下线
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
2
Star
1
Fork
35
src-anolis-os
/
qemu
代码
Issues
6
Pull Requests
8
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 帐号,请先登录后再操作。
立即登录
没有帐号,去注册