aboutsummaryrefslogtreecommitdiff
path: root/plat
diff options
context:
space:
mode:
authorJagadeesh Ujja <jagadeesh.ujja@arm.com>2021-01-05 22:01:24 +0530
committerjagadeesh.ujja <jagadeesh.ujja@arm.com>2021-01-20 13:31:16 +0000
commit4d8c18196378824e388cf31ef991ba8fbbb09cbf (patch)
tree6052a9b879ee54e19e09e2f11be65484857d6c66 /plat
parentf03c4ea8e604bcf5d13af3012e0ba7ec56e3180f (diff)
downloadtrusted-firmware-a-4d8c18196378824e388cf31ef991ba8fbbb09cbf.tar.gz
plat/arm: css: Turn ON/OFF redistributor in sync with GIC CPU interface ON/OFF
Turn ON/OFF GIC redistributor in sync with GIC CPU interface ON/OFF. Issue : The Linux prompt hangs when all the cores in a cluster are turned OFF and we try to turn ON a core in that cluster. Previously when TF-A turns ON a core, TF-A first turns ON the redistributor followed by the core. This did not match the flow when turning OFF a core, as TF-A did not turn OFF redistributor when the corresponding core[s] are disabled. This hang is resolved by disabling redistributor as cores are disabled, keeping them in sync. Signed-off-by: Jagadeesh Ujja <jagadeesh.ujja@arm.com> Change-Id: Ifd04fdcfd47b45e00f874f15b098471883d023f0
Diffstat (limited to 'plat')
-rw-r--r--plat/arm/css/common/css_pm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/plat/arm/css/common/css_pm.c b/plat/arm/css/common/css_pm.c
index 8e74526346..926b8ec7cd 100644
--- a/plat/arm/css/common/css_pm.c
+++ b/plat/arm/css/common/css_pm.c
@@ -123,6 +123,9 @@ static void css_power_down_common(const psci_power_state_t *target_state)
/* Prevent interrupts from spuriously waking up this cpu */
plat_arm_gic_cpuif_disable();
+ /* Turn redistributor off */
+ plat_arm_gic_redistif_off();
+
/* Cluster is to be turned off, so disable coherency */
if (CSS_CLUSTER_PWR_STATE(target_state) == ARM_LOCAL_STATE_OFF) {
plat_arm_interconnect_exit_coherency();