ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Armv8-A虚拟化手册(5)

2022-01-24 23:02:42  阅读:385  来源: 互联网

标签:虚拟化 hypervisor 手册 host 寄存器 EL2 Armv8 EL1 OS


8. VHE

        下图呈现了一个简化的软件栈和异常级别:

        你可以看到一个独立的hypervisor是如何映射到ARM异常级别。hypervisor运行在EL2而虚拟机运行在EL0/1。这种情况在托管hypervisor上存在问题,如下图所示:

        通常,内核运行在EL1,但虚拟控制在EL2。这意味着大多数host OS运行在EL1,通过EL2的stub代码来访问虚拟化控制。这种安排效率低下,因为它可能涉及增加的上下文切换。

        内核需要处理运行在EL1和EL2的不同,但这被严格要求在一些子系统上,比如早期的启动。

NOTE: Cortex-A75/Cortex-A76支持VHE。

8.1 在EL2上运行host OS

        HCR_EL2的两位控制VHE。这些位总结如下:

  1. E2H:控制是否VHE使能;
  2. TGE:当VHE使能时,控制是否EL0是guest还是host;

        下面表总结了典型设置:

        从虚拟机退出到hypervisor的异常,TGE初始化为0。软件在运行host内核之前设置该位。

        你可以看到这些典型设置如下图所示:

 8.2 虚拟地址空间

        下图显示了在VHE引入前EL0/EL1的虚拟地址空间的布局:

        如在内存管理中所讨论,EL0/1有两个区域。上面区域是内核空间,下面区域是用户空间。但是,EL2仅有一个位于下面区域。通常不同点为hypervisor不会host应用。这意味着hypervisor不需要在内核空间和用户空间切分。

NOTE: 内核空间的分配在上面区域,而用户空间在下面区域。它并不是ARM架构强制要求的。

        EL0/1虚拟地址空间也支持ASID,但EL2不支持。这是因为hypervisor通常不host应用。

        为了允许host OS可有效的执行在EL2上,我们需要增加第二区域和ASID支持。设置HCR_EL2.E2H可以解决这些问题,如下图所示:

        在EL0中,HCR_EL2.TGE控制使用哪个地址空间:或EL1空间或EL2空间。哪个空间被使用依赖于应用运行在host OS(TGE=1)还是guest OS(TGE=0)。

 8.3 重定向寄存器访问

        我们在虚拟化通用定时器章节使用VHE改变EL2虚拟地址空间的布局。但是,我们仍对配置MMU存在问题。这是因为内核将尝试访问EL1寄存器,像TTBR0_EL1而不是EL2寄存器像TTBR0_EL2。

        为了在EL2上执行相同的二进制,我们需要重定向从EL1寄存器到EL2。设置E2H将做该操作,因此访问EL1系统寄存器将被重定向到EL2。重定向如下图所示:

但是,该重定向给我们留下新的问题。hypervisor仍需要访问真实的EL1寄存器,因此它实现上下文切换。为解决此问题,新的一组寄存器EL12和EL02被引入。当在EL2使用E2H=1时这访问EL1寄存器来上下文切换。你可以看如下图:

8.4 异常

        通常HCR_EL2.IMO/FMO/AMO位控制是否物理异常被路由到EL1或EL2。当执行在EL0且TGE=1时,所有物理异常都路由到EL2,若它们没有被SCR_EL3路由到EL3。这是这种情况无论HCR_EL2路由位的实际值。这是因为应用作为host OS的子任务,而不是guest OS。因此任何异常应该被路由到运行到EL2的host OS。

 

 

标签:虚拟化,hypervisor,手册,host,寄存器,EL2,Armv8,EL1,OS
来源: https://blog.csdn.net/flyingnosky/article/details/122676592

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有