From: Jagadeesh Ujja Date: Tue, 5 Jan 2021 16:31:24 +0000 (+0530) Subject: plat/arm: css: Turn ON/OFF redistributor in sync with GIC CPU interface ON/OFF X-Git-Tag: baikal/aarch64/sdk5.9~1016^2 X-Git-Url: https://git.baikalelectronics.ru/sdk/?a=commitdiff_plain;h=4d8c18196378824e388cf31ef991ba8fbbb09cbf;p=arm-tf.git 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 Change-Id: Ifd04fdcfd47b45e00f874f15b098471883d023f0 --- diff --git a/plat/arm/css/common/css_pm.c b/plat/arm/css/common/css_pm.c index 8e7452634..926b8ec7c 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();