You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arm架构非安全态向安全态发送SMC命令的流程正确性确认问询

Arm非安全侧SMC调用流程修正说明

原流程错误修正

  • 非安全态EL1跳转EL2仅能使用hvc指令,smc指令固定触发EL3级别的异常,无法跳转到EL2;若系统未部署非安全侧hypervisor,非安全EL1可直接调用smc进入EL3,无需经过EL2环节
  • EL3始终处于安全态,不存在"EL3非安全态"的说法:世界切换由SCR_EL3寄存器的NS位控制,EL3作为安全世界最高特权级,接收非安全世界的smc异常进入,返回非安全世界时将NS位置1后通过eret跳转即可,自身安全属性不会变化
  • 非安全EL1返回EL0的特权级切换需使用eret指令,普通ret仅用于同特权级的函数调用返回,无法完成特权级切换操作

空缺环节补全

原流程第4步(EL3安全态跳转安全EL1)使用eret指令:EL3先完成安全世界上下文配置,设置ELR_EL3为安全EL1的入口地址、SPSR_EL3配置为安全EL1的特权级状态、SCR_EL3.NS位设为0,随后执行eret完成跳转。

修正后完整流程(含非安全EL2部署场景)

  • 非安全EL0 → 非安全EL1:执行svc指令触发系统调用,陷入内核态
  • 非安全EL1 → 非安全EL2:执行hvc指令触发hypervisor调用,陷入EL2
  • 非安全EL2 → EL3(安全态):执行smc指令触发安全监视器调用,EL3接收异常进入
  • EL3(安全态)→ 安全EL1:配置安全EL1上下文后执行eret,跳转到TEE内核处理SMC请求
  • 安全EL1 → EL3(安全态):SMC处理完成后执行smc返回EL3,请求返回非安全世界
  • EL3(安全态)→ 非安全EL2:配置非安全EL2上下文,SCR_EL3.NS位置1,执行eret跳回非安全EL2
  • 非安全EL2 → 非安全EL1:执行eret返回非安全内核态
  • 非安全EL1 → 非安全EL0:执行eret返回用户态

内容的提问来源于stack exchange,提问作者sivandahan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 07:18:02