各位老师和同学好:
hypervisor组例会时间定为本周五9:30—11:30,请各位有兴趣参与者,尽量线下参加
会议地点:北京市海淀区科学院南路6号 中科院计算所 446会议室 线上接入方式:#腾讯会议:619-943-020 会议主题:hypervisor技术讨论会3 会议时间:2023/3/10 9:30-11:30 (GMT+08:00) 中国标准时间 - 北京 会议议程:
1. 郑元昊,RVM1.5系统代码结构讲解 2. 陈星宇,Jailhouse中断虚拟化代码段讲解
请大家关注。
祝好 李栋
lidong@ict.ac.cn
# hypervisor技术讨论会 会议纪要
## 时间 2023.03.10 9:30~11:30
## 人员 advisor: cdg,ck,ld student:cxy,dsf,lky,wwt,zyh,jr....
## 内容 1.郑元昊:RVM1.5系统代码分析。 RVM1.5支持的架构为x86_64(Intel VMX, AMD SVM),使用libvmm和uart_16550两个crate。 RVM-Tutorial回顾:VMCS字段作用与配置、vcpu上下文切换过程、常见VM exit原因与处理过程、扩展页表ept、I/O虚拟化、中断虚拟化等。 下一步准备将RVM1.5移植到arm平台,下周侧重讲与x86_64平台无关部分的代码。
2.陈星宇:jailhouse中断虚拟化 x86处理器存在两种中断触发机制,一种通过LAPIC(Local Advanced Programmable Interrupt Controller)控制,包括IPI(Inter-Processor Interrupt),另一种通过IO APIC生成(通过引脚触发)。jailhouse只虚拟化了通过LAPIC触发的中断,对通过IO APIC触发的中断只是简单的把他映射到linux cell中(这并不安全,因为恶意guest(或 Linux 内核模块)可以对其重新编程以篡改其他guest的工作)。 对于xAPIC,所有信息都存储在内存中,所以在 vmcs_setup() 中,启用 APIC 虚拟化并将apic_access_page 物理地址存储为 APIC 访问地址。 这样,每guest尝试访问虚拟 APIC MMIO 区域时,都会触发 vmexit 。 没有数据真正从 apic_access_page 读取或写入,CPU 可以共享此页面。 对于 x2APIC,信息则存储在MSR(Model-Specific Register)中,而每个cpu有着自己的MSR,所以可以直接正常使用 MSR 。 默认情况下,Jailhouse 会捕获对所有 APIC 寄存器的访问。 但是,如果 apic_init() 检测到主机 APIC 处于 x2APIC 模式,则会更改bitmap,以便仅捕获 ICR(中断控制寄存器)访问。ICR寄存器控制着IPI,需要保证不向不在cell中的cpu发送IPI PIN_BASED_VM_EXEC_CONTROL 配置 hypervisor 对 guest 异步事件的拦截 bit0:1->拦截