RAS Error injection(DE/CE) and containment on Cortex-A

Hello,

I am using Pseudo-fault Generation Control Register(ERR0PFGCTL) of FEAT_RASv1p1 to inject SError exception for testing purposes on FVP platform.

I am able to inject an Uncorrected Error Type(UE) from EL1 and take the exception at EL2. But somehow for Corrected(CE) and Deferred(DE) errors, the SError exception does not trigger even though it seems to be correctly recorded in ERR0STATUS.CE/DE. any ideas why the exception is not taken for CE/DE errors?

What I really want is to inject a containable error that will be deferred at EL2 entry because of an ESB instruction so that I can read the differed error from DISR_EL1. Currently, whenever I inject a DE error + ESB, the DISR_EL1 reads zero.

Thanks in advance.

Parents
  • CE would never generate an error response, so would never generate an error exception at the PE. Whether DE does depends exactly on the implementation (and I'm not familiar with what FVP does). For some completers, an uncorrectable error might be deferred to the requester (the PE, in this case), meaning when the PE receives the deferred error, it generates an error exception. Other completers might not support generating this kind of response as a completer, only deferring an error on a write to a different component. Faults that are corrected or deferred are recorded in the STATUS register and might generate an interrupt (depending on the ERR<n>CTRL flags), but this isn't an SError interrupt.

    Generally, to test error containment of your software, inject an uncorrectable error. You can inject CE or DE to test the error interrupt handling (e.g., fault logging).

Reply
  • CE would never generate an error response, so would never generate an error exception at the PE. Whether DE does depends exactly on the implementation (and I'm not familiar with what FVP does). For some completers, an uncorrectable error might be deferred to the requester (the PE, in this case), meaning when the PE receives the deferred error, it generates an error exception. Other completers might not support generating this kind of response as a completer, only deferring an error on a write to a different component. Faults that are corrected or deferred are recorded in the STATUS register and might generate an interrupt (depending on the ERR<n>CTRL flags), but this isn't an SError interrupt.

    Generally, to test error containment of your software, inject an uncorrectable error. You can inject CE or DE to test the error interrupt handling (e.g., fault logging).

Children