快速连接
👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈
引流关键词: Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表…
optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表…
AES, ECB,CBC,XTS,CTR,OFB,CFB,RSA,RSA1024,RSA2048,RSA3072,ECC,ECDSA,加密,解密,加解密,国密,SM2,SM3,SM4,openssl,mbedtls
M,ATF,TrustedFirmware,trustzone,TEE,optee,trusty,tlk,lk,armv8,armv9,arm,secureboot,BL31,BL32,BL1,BL2,hypervisor,终端安全,secureboot,security,virtulization
1、术语
Reliability, Availability, and Serviceability (RAS)
EHF : Exception Handling Framework
IMF : Interrupt Management Framework
SDEI: Software Delegated Exception Interface
2、简介:透过事务看本质
SDEI是干啥的呢?
其实就是在EL1(或EL2)能够注册SDEI中断,其实就是切换到EL3中将该中断注册成group0中断,然后当事件到来时,中断将直接target到EL3,在EL3的处理程序中会dispatcher到EL1(EL2)中再处理。
有两种中断转发的场景:
(1)、和sdei无关的。也就是optee fiq 转发到Linux kernel处理的,就如我博客里示例;
(2)、sdei中断,这个是group0中断,直接target到EL3的fiq_offset的,这种中断也是要转发到linux kernel。
对于场景(1),转发到linux kernel后,会再次触发irq。对于场景(2),转发到linux kernel后,不会再触发irq,那是因为sedi在转发中断的时候,将EL1(或EL2)的所有异常都MASK了。
那么SDEI的作用是什么? 解决了什么问题?
其实就是想让RAS、watchdog中断能够快速响应,而且不被EL1(或EL2)屏蔽。也相当于达到了NMI的效果。
3、代码导读
- sdei_smc_handler ---EL1/EL2 request sedi中断以及配置时smc会调用到此处
- sdei_dispatch_event -- 中断产生时会路由到此处,这里再dispatch到EL1/EL2
- sdei_set_elr_spsr---这里是在dispatch到EL1/EL2之前,先设置SPSR屏蔽中断。
4、参考
Reliability, Availability, and Serviceability (RAS)
SDEI: Software Delegated Exception Interface
关注"Arm精选"公众号,备注进ARM交流讨论区。