Any error event can be mapped to the low priority error interrupt. A low priority error interrupt is generated when an event is enabled to cause an interrupt (via the Error Group N Interrupt Enable Set Register) and mapped to the low priority error interrupt (via Error Group N Interrupt Priority Register) and the raw status is set (via the Error Group N Event Raw Status/Set Register).
When a Low Priority Error Interrupt is received, the acting processor is recommended
to follow the outlined steps:
- Read the Low Priority
Prioritized Register
- If both [31-16] PLS
(low_pulse_prio) or [15-0] LVL (low_level_prio) bit fields are equal
to 0xFFFF, then Interrupt is no longer asserted/pending.
- If either [31-16] PLS
(low_pulse_prio) or [15-0] LVL (low_level_prio) bit fields are not
equal to 0xFFFF, software has two options for determining what event
to service:
- First Option:
Record the value in low_pulse_prio and/or low_level_prio.
Determine which is higher priority. This is the Global Event
Number of the highest priority in Low Priority Error
Event.
- Second
Option:
- Read
the Low Priority Interrupt Status Register to
determine which Event Groups have pending Low
Priority Interrupts.
- Read
the desired Error Group N Interrupt Enabled
Status/Clear Register.
- Identify which Low Priority Interrupt to
service.
- Based on the global event map
for the device find the error event source.
- Service the error event based
on the individual peripheral specification:
- The system takes
several actions including (but not limited to):
- Fixing the
error
- Resetting the
errored peripheral
- Resetting the
device
- Communicating
outside the device via the error pin for outside
intervention
Rest of the steps assume the error
handling is complete and system wants to clear the error event. Clearing of error
event is as described below :
Pulse Events
When a low priority error pulse event has to be cleared, the acting processor must
perform the following steps in order:
- Write 0x1 to the appropriate bit in the Error Group N Interrupt
Enabled Status/Clear Register. This step clears the raw status and deassert
the level interrupt.
- Write the end of interrupt vector to the EOI Interrupt Register. In case
there are enabled error events pending then a new pulse is generated and
level interrupt remains asserted else no new pulse is generated.
- Clear the Error Event at the source. The source generates a new pulse which
shows up as a new error event at the ESM.
- Write a CLEAR(0x5) to the
Error Pin Control Register. This step is optional if the event is not
enabled to influence the error pin (via the Error Pin Influence Set
Register), but recommended to be done regardless as an extra CLEAR is not
harmful.