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: System Error Reporting

This chapter describes GIC support for System Error reporting. It contains the following section:

  • About System Error reporting .

13.1 About System Error reporting

Support for locally generated system errors in the CPU interface is now deprecated. Arm recommends that new designs do not implement this feature.

Whether a CPU interface supports locally generated system error interrupts associated with physical interrupts is discoverable from either ICC_CTLR_EL1.SEIS or ICC_CTLR_EL3.SEIS. The GIC reports these using the Armv8 SError exception. The ITS can also generate system errors, see the description of the GITS_TYPER.SEIS bit.

Whether the GIC supports locally generated system error interrupts associated with virtual interrupts is discoverable from ICH_VTR_EL2.SEIS. The GIC reports these using either the SError exception or the virtual SError exception. Locally-generated System Error interrupts from Non-secure EL1 are reported:

  • Using the SError exception when HCR_EL2.AMO == 0.

  • Using the virtual SError exception, when HCR_EL2.AMO == 1. Where supported, a virtual SError exception is normally taken to Non-secure EL1.

The hypervisor can intercept locally generated system error interrupts using ICH_HCR_EL2.TSEI.

13.1.1 Pseudocode

The following pseudocode indicates whether a local system error is generated.

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

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