MMIO, RAM PageTable of Guest

本文探讨了在Guest系统中,KVM如何处理MMIO和RAM物理内存的访问。当Guest访问MMIO地址时,会触发VM_EXIT并通过EPT页表的reserved bits识别MMIO pagefault。QEMU/KVMTOOL不会为MMIO内存空间调用KVM_SET_USER_MEMORY_REGION进行注册,首次访问MMIO地址时,KVM会设置PFN为KVM_PFN_NOSLOT,标记为MMIO区域。EPT页表的110b标志表示MMIO,产生EPT_MISCONFIG异常,由KVM处理MMIO操作。此外,文章还介绍了EPT页表建立和地址翻译的过程。
摘要由CSDN通过智能技术生成

在 Guest系统中IO访问可能分三种:

1,guest 内部执行PMIO指令,guest 会触发VM_EXIT,退出状态是KVM_EXIT_IO;

2,guest内部执行对MMIO空间(如virtio设备的feature协商空间、NOTIFY、设备特有配置空间等,它可以是virtio-pci 的bar空间)的访问,guest 会触发VM_EXIT,退出状态将是KVM_EXIT_MMIO;

3,guest 内部对 “ram物理内存” 的访问,会通过EPT硬件(x86)转化为HPA,进而完成对物理内存的读写(但如果是第一次访问由于EPT页表不存在,会发生EPT_VIOLATION,触发VM_EXIT进而建立EPT表项);

MMIO是将设备I/O映射到 guest 地址空间内,它的实现需要利用EPT机制,guest物理内存(GPA)的虚拟化也是通过EPT机制来完成的。那么VM_EXIT后,KVM需要区分是对MMIO地址的访问还是对ram物理地址的访问,即KVM怎么识别MMIO的pagefault与ram 物理内存的pagefault?是通过EPT页表项的页表项的reserved bits区分

EPT pagefault:
static int (*kvm_vmx_exit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值