Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Chapter 13: 系统错误报告

本章描述了 GIC 对系统错误报告的支持。包含以下部分:

  • 关于系统错误报告

13.1 关于系统错误报告

CPU interface 中本地生成的系统错误支持现已弃用。Arm 建议新设计不要实现此功能。

CPU interface 是否支持与物理中断关联的本地生成系统错误中断,可从 ICC_CTLR_EL1.SEIS 或 ICC_CTLR_EL3.SEIS 发现。GIC 使用 Armv8 SError 异常报告这些错误。ITS 也可以生成系统错误,请参阅 GITS_TYPER.SEIS 位的描述。

GIC 是否支持与虚拟中断关联的本地生成系统错误中断,可从 ICH_VTR_EL2.SEIS 发现。GIC 使用 SError 异常或虚拟 SError 异常报告这些错误。来自 Non-secure EL1 的本地生成系统错误中断报告为:

  • 当 HCR_EL2.AMO == 0 时,使用 SError 异常。

  • 当 HCR_EL2.AMO == 1 时,使用虚拟 SError 异常。在支持的情况下,虚拟 SError 异常通常发送到 Non-secure EL1。

Hypervisor 可以使用 ICH_HCR_EL2.TSEI 拦截本地生成的系统错误中断。

13.1.1 伪代码

以下伪代码指示是否生成本地系统错误。

// GenerateLocalSError()
// =====================

boolean GenerateLocalSError()
   if HaveEL(EL3) then
        return ICC_CTLR_EL3.SEIS == '1';
   else
        return ICC_CTLR_EL1.SEIS == '1';