Arm
®
CoreLink™ GIC-600AE Generic Interrupt Controller
Technical Reference Manual
Document ID: 101206_0003_04_en
Issue: 04
Functional Safety
FMU_PINGCTLR controls the value of ping_timeout_value, which defines the ping timeout in FMU
clock cycles.
ping_interval defines the interval at which the FMU pings the next remote
block. As Figure 6-3: Ping mechanism parameters on page 203 shows,
ping_interval == ping_timeout_value + ping_interval_diff.
To enable or disable the background ping mechanism, write to FMU_PINGCTLR.enable. When
background ping is enabled, the FMU_PINGCTLR[31:1] bits must not change. Software must
disable background ping, before it changes the values in FMU_PINGCTLR. It is acceptable to
program FMU_PINGCTLR and enable background ping at the same time.
When programming the ping_timeout_value in the FMU_PINGCTLR register, you must account for
the following:
•
Round-trip ping latency
•
Concurrent GICD request traffic. Any concurrent GICD requests can delay transmission of the
ping.
•
Clock domain ratios. For example, if the FMU/GICD domain clock is running faster than a
remote domain clock, you must increase ping_timeout_value.
If the FMU indicates a PING_ACK timeout error, it is helpful to know which remote GIC block
caused the error. To determine its block ID, read the FMU_ERR<n>STATUS register.
Arm expects that background ping using FMU_PINGCTLR and directed ping using
FMU_PINGNOW are used mutually exclusively. Therefore:
•
When background pings are enabled, do not set FMU_PINGNOW.enable = 1. When initiating
background ping, you must ensure that a previously initiated software ping (PINGNOW) is
complete, by polling for FMU_PINGNOW.ping_ack_received==1.
•
Before generating directed pings using the FMU_PINGNOW register, turn off background ping
by setting FMU_PINGCTLR.enable = 0 and wait for the last PING_ACK to return.
When the FMU indicates a PING_TIMEOUT error, you can obtain the remote GIC block ID by the
reading the FMU_ERR<n>STATUS register.
To conserve operational power of the GICD, the GICD accepts the Q-Channel handshake to enter
low powerdown state, if requested by the clock controller. When the GICD is in the low-power
clock gated state, it does not send background ping messages to the remote GIC block and does
not report PING_ACK violations. When the GICD exits the low-power clock gated state, the FMU
resumes background pings.
Directed ping
The software can also send a directed ping message to a specific block using the FMU_PINGNOW
register. Using this method can be helpful to debug PING_ACK violations that background pings
cause.
The procedure to initiate a directed software ping is as follows:
Copyright © 2018–2020, 2022 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 204 of 268