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';