您的位置:首页 > 其它

EPT学习总结及KVM的处理

2012-07-11 10:52 405 查看
EPT为了提升虚拟化内存映射的效率而提供的一项技术。

打开EPT后,GuestOS运行时,通过页表转化出来的地址不再是真实的物理地址,而是被称作为guest-physical addresses,经过EPT的转化后才成为真实的物理地址。

可以使用 $cat /proc/cpuinfo | grep ept检查硬件是否支持ept机制。如果支持那么kvm会自动的利用EPT。



如果CR0.PG=0,GuestOS分页机制没有打开,直接使用线性地址作为guest-physical addresses,

如果CR0.PG=1,使用分页机制转化后的地址作为guest-physical addresses。



EPT的表和页表基本类似,具体可以参见Intel的编程手册。



EPT的建立:

EPT misconfigurations and EPT violations.

EPT misconfigurations 出现在对应的表项不合法,EPT violations出现在表项不允许访问或者不存在。



对于EPT violations引起的vm exit:

gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS);

kvm_mmu_page_fault(vcpu, gpa & PAGE_MASK, 0);



tdp_page_fault处理如下,gpa 根据计算出来pfn,然后调用__direct_map函数,填充对应的表项。



KVM对EPT misconfigurations的处理:

EPT misconfigurations 出现在对应的表项不合法,正常情况下不应该出现,KVM对其进行记录,不进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: