How do I save the ITS collection table when powering down the GIC-500?
Article ID: 202637519
Published date: 06 Jun 2018
Last updated: -
Applies to: GIC-500 Generic Interrupt Controller
How do I save the Interrupt Translation Service (ITS) collection table when powering down the GIC-500?
When powering down the CoreLink GIC-500 Generic Interrupt Controller, with the exception of the Locality-specific Peripheral Interrupt (LPI) pending bits, software must preserve the state of the GIC-500. The state must be copied after the GIC-500 core power-down sequence is completed to ensure that the preserved pending information is up-to-date.
The process to power down the GIC-500 involves the following steps:
Completing the processor power-down sequence for all cores.
Setting the GICR_WAKER.Sleep bit to 1.
Polling the GICR_WAKER register until the GICR_WAKER.Quiescent bit is set.
Consider the scenario where the system supports ITS. However, software cannot save the collection table of the GIC-500.
In GICv3, the ITS considers all physical LPIs that it generates to be members of collections. The data that is associated with a collection can be held in the ITS, in external memory, or in both. The following figure shows how these tables are used in the translation process:
The GIC-500 uses only hardware collections, so they are not backed up in memory. Collection mappings are discarded when the ITS is quiesced by using the GITS_CTLR register.
Software cannot save the ITS collection table of the GIC-500. Software must map the collection table when powering up the GIC-500. Re-issuing the MAPC command has no effect on other mapping or LPI pending states. The LPI is dropped between re-enabling the ITS and rerunning the MAPC command.