【问题标题】:ARM modes when context switching a user process running on guest上下文切换在客户机上运行的用户进程时的 ARM 模式
【发布时间】:2017-06-08 19:05:50
【问题描述】:

据我了解(来自this article),在 ARM 上,hypervisor/VMM 以 HYP 模式运行,guest OS 以 SVC 模式运行,guest 上的用户进程以 USR 模式运行。

当来宾操作系统中存在上下文切换时,比如从一个用户进程切换到另一个用户进程,这是否会一直陷阱到 HYP 模式下的 VMM?如果是这样,从 USR 到 SVC 再到 HYP 模式的流程的每个阶段会发生什么?

【问题讨论】:

    标签: arm virtualization hypervisor


    【解决方案1】:

    简答:取决于管理程序,架构允许这两种方法。

    ARM 上的上下文切换将切换页表并使 TLB 无效。

    要切换页表,您需要修改通过“co-处理器”指令。

    要设置 TTBR0,请使用 CRn = 2 的指令“MRC”。

    这种协处理器访问可以被 HYP 捕获,但不一定。这取决于您是否要求他们被困。这是在“Hypervisor System Trap Register”(aarch64 上的 HSTR_EL2)中设置的。

    http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0488d/CIHJFIHA.html

    TLB 失效指令和缓存维护操作也在 ARMv7 上作为协处理器访问指令实现(技术上也在 ARMv8 上,但架构参考手册建议使用人类可读的助记符)。例如,“TLBIALL”是协处理器CRn8,所以需要设置HSTR_EL2中的位T8。

    http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0438i/CIHECHCD.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 2011-07-23
      • 1970-01-01
      • 2017-09-09
      • 2011-07-27
      • 1970-01-01
      相关资源
      最近更新 更多