Error synchronization barrier
The Error Synchronization Barrier (
ESB) instruction synchronizes unrecoverable errors.
The RAS extension adds the
ESB instruction used to
synchronize unrecoverable errors. Unrecoverable errors are containable errors
consumed by the core and not silently propagated.
ESB instruction allows efficient
isolation of errors:
ESBinstruction does not wait for completion of accesses that cannot generate an asynchronous external abort. For example, if all external aborts are handled synchronously or it is known that no such accesses are outstanding.
ESBinstruction does not order accesses and does not guarantee a pipeline flush.
All unrecoverable errors must be synchronized by an
ESB instruction. The
guarantees the following:
- All unrecoverable errors that are generated before the
ESBinstruction have pended a System Error Interrupts (SEI) exception.
- If a physical SEI is pended by or was pending before the
ESBinstruction is executed:
- If the physical SEI is unmasked at the current Exception
level, then it is taken before completion of the
- If the physical SEI is masked at the current Exception
level, the pending SEI is cleared, the SEI syndrome is recorded in
DISR/DISR_EL1, and DISR/DISR_EL1.A is set to 1. This indicates that the
SEI was generated before the
ESBby instructions that occur in programme order.
- If the physical SEI is unmasked at the current Exception level, then it is taken before completion of the
ESB instruction also guarantees the
- SEIs generated before the
ESBinstruction are either taken before or at the
ESBinstruction, or are pended in DISR/DISR_EL1.
- SEIs generated after the ESB are not pended in DISR/DISR_EL1.
This includes unrecoverable errors that are generated by instructions, translation table walks, and instructions fetches on the same core.