1. 简介

system events是一个高优先级事件,必须由操作系统或hypervisor程序立即来完成,即使操作系统在其自己的临界区中执行(中断被屏蔽),系统事件可用于:

  • Platform error handling (RAS) 系统错误处理

    在任何时候,PE、内存或系统总线都可能产生错误。这些错误中的一部分可以在软件中纠正,并且可能需要不同的执行权限。固件优先处理Firmware first是一种常见的错误处理方法,其中更高的异常级别EL3提供初始错误处理,之后错误被委托给较低的异常级别EL2/EL1。

  • Software watchdog timer 软件看门狗定时器

    高优先级事件可用于实现软件看门狗定时器。

  • Sample based profiling 采样分析

    基于样本的分析对于那些屏蔽中断的临界区可能存在盲点。高优先级的基于事件的分析器可以消除这种盲点。

  • Kernel debugger 内核调试

    调试系统软件通常涉及检查执行路径、寄存器、和内存。软件调试经常受到中断屏蔽的影响,因为它可能会阻止调试器中断PE。带优先级的事件,即使系统处于临界区,也可以检查系统的状态。

The Software Delegated Exception (SDE)是一个可以抢占其它异常和独占机制,用来把特殊系统事件system events传递给操作系统(或hypervisor)的机制。Firmware收到system events后,使用SDEI通知Non-secure world,并执行注册好的handler

当一个异常需要不受中断屏蔽和临界区延迟的传递时,应使用 SDEI 而不是普通中断,就像上面的几个例子一样。

SDEI 提供了高优先级的事件传递机制,其优先级高于目标操作系统和hypervisor的中断。SDEI可以支持OS或/和hypervisor进行如下操作:

  1. 订阅并处理系统事件。
  2. 屏蔽系统事件。
  3. 将系统事件的处理迁移到不同的 PE。
  4. 添加或删除参与事件处理的 PE。
  5. 将现有中断转换为 SDEI 事件源。
  6. 生成软件事件。

注意:SDEI只使用system event管理,不适用设备中断处理。

2. SDEI 相关术语

  • RAS:Reliability, Availability, and Serviceability
  • SDEI: Software Delegated Exception Interface 软件委托异常接口
  • SDEI dispatcher:处理来自client的请求并向其委托事件
  • SDEI client:使用dispatcher提供的接口注册处理程序,接收事件通知并处理事件

3. SDEI 事件调度

SDEI事件调度有两种方式:

  1. 中断触发事件,由绑定到SDEI事件的中断触发
  2. 显式分配事件,由SDEI dispatcher调用sdei_dispatch_event() API将事件分配到SDEI client处理

中断触发事件调度

中断触发事件调度序列

初始化阶段,SDEI客户端绑定一个非安全中断,SDEI调度程序返回一个平台动态事件编号。然后客户端为该事件注册一个处理程序并启用该事件,取消屏蔽当前PE上的所有事件。

当绑定的中断发生时,它会被trapped到EL3中,中断被移交给SDEI调度程序,然后分配执行客户端注册好的处理程序,执行完成后,客户端调用SDEI_EVENT_COMPLETE接口结束事件处理,恢复到事件发生前的程序继续执行。

显式分配事件调度

显式分配事件调度序列

初始化阶段,SDEI 客户端为平台事件注册一个处理程序,启用事件,并取消屏蔽当前PE的所有事件。

与中断触发事件SDEI调度不同的是,这里不涉及中断绑定,因为绑定的或动态事件不能被显式调度,显式调度的事件应该是系统预先定义好的。

当关键事件发生(比如在接收到SError或同步外部中止时(SError or Synchronous External Abort))时会被trapped到EL3, EL3 执行事件的第一级分类并分配给RAS 组件承担进一步处理,RAS处理后需要非安全世界参与进一步处理,因此决定显式分派一个事件(客户端已经注册了该事件),于是调用sdei_dispatch_event API由SDEI调度程序分配执行客户端注册好的处理程序,将请求的事件分派给客户端处理,当处理程序完成时,恢复被抢占的执行程序。

4. 参考

TF-A SDEI: Software Delegated Exception Interface
ARM_DEN0054A_Software_Delegated_Exception_Interface

Logo

鸿蒙生态一站式服务平台。

更多推荐