3.10.2 ITS commands and errors

Each ITS detects a wide range of command errors and translation errors, and reports them in ARMv8.2 RAS architecture-compliant error records.

The ITS record error syndromes comprise four groups that each have separate enables in the GITS_FCTLR register. The following table shows the ITS record error syndrome groups.

Table 3-3 ITS record error syndrome groups

Group Control
ACE-Lite slave Write translation errors. Only when the ITS has a separate ACE-Lite slave port. GITS_FCTLR.AEE (Access Error Enable)
Translation errors on incoming writes to GITS_TRANSLATER. GITS_FCTLR.UEE (Unmapped Error Enable)
Errors during commands. GITS_FCTLR.CEE (Command Error Enable)
Other errors, such as, memory system, or memory allocation errors. None

See ITS command and translation error records 13+ for information about all the detected syndromes.

ITS commands must be written by software before they are executed.

The ITS Command queue operates a stall mechanism on any error, irrespective of the GITS_FCTLR.CEE value. To execute commands, software writes to a Command queue in memory and then updates the GITS_CWRITER.Offset to indicate that there are commands to run. See 3.7 Getting started for more information. Normally, the GITS_CREADR.Offset increments until it matches the GITS_CWRITER.Offset, wrapping as necessary, to indicate that the Command queue has completed.

If an error occurs, GITS_CREADR.Stalled is set, which indicates that processing has stopped and software intervention is required. If GITS_FCTLR.CEE is set, at least one error is reported in the relevant error record to aid software debug. You can correct the command identified by GITS_CREADR and resume the Command queue by writing to GITS_CWRITER.Retry. If the command is no longer required, you must rewrite it as a SYNC command before you resume.

To determine when Command queue execution has completed, you can use either one of two methods:

  • Polling GITS_CREADR.Offset until it matches GITS_CWRITER.Offset.
  • Putting an INT command in the queue and waiting for that interrupt to arrive.

For the second method, Arm recommends that you enable GITS_FCTLR.CEE and that you configure the fault_handling, or error_recovery interrupt to be delivered to a core that can resolve Command queue issues. See 3.16 Reliability, Accessibility, and Serviceability for more information.

Non-ConfidentialPDF file icon PDF version100336_0104_00_en
Copyright © 2016–2018 Arm Limited or its affiliates. All rights reserved.