在Armv7-A首次引入虚拟化时,它仅在非安全状态中添加。在Armv8.3之前,Armv8也是如此,如下图所示:
如前所述在切换安全状态时,EL3用于托管固件和安全监视器。安全EL0/1托管受信任的执行环境(TEE),由受信任的服务和内核组成。
在安全状态下,没有对多个虚拟机的需求。这意味着不需要支持虚拟化。随着TrustZone应用的增加,出现了一些要求:
- 一些受信任的服务与特定的受信任内核绑定。为了设备支持多个服务,可能需要运行多个受信任内核。
- 遵循以最小权限运行的原则,需要将一些固件功能移出EL3。
解决方案是在安全状态引入对EL2的支持,这是在Armv8.4-A中引入的,如下图所示:
与完整的Hypervisor不同,S.EL2通常托管一个安全分区管理器(SPM)。SPM允许创建与其他分区的资源无法看到的隔离分区。系统可以包含多个包含受信任内核及其受信任服务的分区。
还可以创建一个分区来存储平台固件,从而无需在EL3运行该代码。
-
启用Secure EL2
当支持S.EL2时,可以启用或禁用它。是否启用S.EL2由SCR_EL3.EEL2位控制: