到目前为止,我们在示例中忽略了非安全状态中可能存在的虚拟化程序。当存在虚拟化程序时,虚拟机与安全状态之间的许多通信将通过虚拟化程序进行。
例如,在虚拟化环境中,SMC用于访问固件功能和可信服务。固件功能包括诸如电源管理之类的内容,虚拟化程序通常不希望允许虚拟机直接访问这些功能。
虚拟化程序可以截获来自EL1的SMC,这使得虚拟化程序可以检查请求是用于固件服务还是用于可信服务。如果请求是用于固件服务,虚拟化程序可以模拟接口而不是转发调用。虚拟化程序可以将可信服务请求转发到EL3。您可以在以下图表中看到这一点: