本文适合对KVM构架和arm CPU构架有一定了解的读者。讲解non VHE KVM, VHE KVM和Protected KVM
查看原文:
https://mp.weixin.qq.com/s/UhZoNayBlc8tzBgqv9n1RA
KVMon arm64 – non VHE mode
在armv8/v9non VHE模式时,kvm部分运行在hostkernel@EL1,部分运行在EL2.
在hostkernel里面的KVM当成其kernel module, 主要负责给VM分配管理内存,创建VM的stage2 MMU页表,处理一些trap,虚拟GIC和timer,将不能处理的trap转交给userspace处理等
在EL2的KVM部分主要是设置EL2才有权限配置的trap,stage2 MMU, GIC/Timer寄存器,并负责host/VM/hypervisor的context switch
Hostkernel对包括VM内存在内的所有内存有管理和访问权限
GIC的虚拟化的实现和为device pass-through服务的IOMMU设置也是在host kernel里配置的
VM需要完全信任host kernel
non VHE模式因为有比较多的host EL1-- EL2 hypervisor– VM EL1/EL0的切换,一定程度上性能有所损耗
KVMon arm64 – VHE mode
为了减少nonVHE模式host EL1-- EL2 hypervisor–VM EL1/EL0的切换损耗,armv8.1引入VHE模式的支持,通过修改构架使host ker