为此,armv8在虚拟化扩展中提供了敏感指令和异常的捕获功能,可以通过配置hypervisor控制寄存器hcr_el2实现,它将vm执行的敏感指令或异常路由到EL2中,hypervisor捕获到相关异常后可为其模拟相关功能。其中hcr_el2寄存器的定义如下: 其中EL2可以捕获的一些关键敏感操作如下: (1)FMO:配置该位会将fiq中断路由到EL2 (2)IM...
发生此类VM退出异常的事件由HCR_EL2寄存器位定义。因此,这些可以是系统寄存器访问,包括EL1权限级别可用的访问(例如,TTBR0_ EL1 / TTBR1_EL1,FAR_EL1),缓存和TLB刷新指令,常规异常(中断,包括来自定时器和不支持的操作代码的中断),以及中断和事件等待指令。两级地址转换启用也由该寄存器控制。此外,EL2级还有一...
在ARM architecture系统中,除了有IRQ、FIQ,还有VIRQ、VFIQ 那么怎样才能产生VFIQ、VIRQ呢? 方法一: 给寄存器HCR_EL2的下列的比特置1,就能产生一个虚拟中断到PSTATE Masking • VI = Setting this bit registers…
图2.地址转换分为两个阶段 通过HCR_EL2寄存器位定义发生此类VM退出异常的事件。因此,这些可以是系统寄存器访问,包括在EL1特权级别可用的访问(例如TTBR0_ EL1 / TTBR1_EL1,FAR_EL1),高速缓存和TLB刷新指令,常规异常(中断,包括来自计时器和不受支持的操作代码的中断),以及中断和事件等待指令。两级地址转换使能...
发生此类VM退出异常的事件由HCR_EL2寄存器定义。因此,这些可以是系统寄存器访问,包括EL1特权级可用的访问(例如,TTBR0_EL1/TTBR1_EL1、FAR_EL1)、高速缓存和TLB刷新指令、常规异常(中断、包括来自定时器和不支持的操作程序代码的中断),以及中断和事件等待指令,且两级地址转换的启能也由该寄存器控制。此外,EL2级...
发生此类VM退出异常的事件由HCR_EL2寄存器位定义。因此,这些可以是系统寄存器访问,包括EL1权限级别可用的访问(例如,TTBR0_ EL1 / TTBR1_EL1,FAR_EL1),缓存和TLB刷新指令,常规异常(中断,包括来自定时器和不支持的操作代码的中断),以及中断和事件等待指令。两级地址转换启用也由该寄存器控制。此外,EL2级还有一...
enable HCR_EL2.IMO中断会route到EL2。还由FMO,AMObit也有同样的作用。 HCR_EL2的E2H控制vhe的行为,如果打开则由TGE决定当前是VM还是host,1是host,表面host kernel在EL2,也就不需要virtual interrupt了。所以在VM中E2H=1, TGE=0, IMO=FMO=AMO=1,VM=1 ...
SCTLR_EL1:*系统控制寄存器,其中Mbit控制MMU 对EL0和EL1的stage 1的使能,一旦置位1,第一级虚拟内存转换就启动了。次要一点的EEbit用来控制大小端控制。 SCTLR_EL2: Mbit控制MMU对EL2的stage1使能。 HCR_EL2: VMbit控制MMU对EL0和EL1的stage2转换使能。
EL0/1虚拟地址空间也支持地址空间标识符(ASID),但是EL2不支持。这还是因为hypervisor通常不会托管应用程序。 为了允许EL2上有效执行Host OS,我们需要添加第二个区域和ASID的支持。使能HCR_EL2.E2H可以解决这个问题,如下图所示: 在EL0中,HCR_EL2.TGE控制使用哪个虚拟地址空间:EL1空间,还是EL2空间。具体使用哪个...
通过HCR_EL2寄存器位定义发生此类VM退出异常的事件。因此,这些可以是系统寄存器访问,包括在EL1特权级别可用的访问(例如TTBR0_ EL1 / TTBR1_EL1,FAR_EL1),高速缓存和TLB刷新指令,常规异常(中断,包括来自计时器和不受支持的操作代码的中断),以及中断和事件等待指令。两级地址转换使能也由该寄存器控制。此外,在E...