Merge pull request #1445 from danielboulby-arm/db/DynamicAuthentication

Set FVP DYN_DISABLE_AUTH authentication default to 0
diff --git a/include/plat/arm/css/common/css_pm.h b/include/plat/arm/css/common/css_pm.h
index 0f92e60..e834fff 100644
--- a/include/plat/arm/css/common/css_pm.h
+++ b/include/plat/arm/css/common/css_pm.h
@@ -17,9 +17,15 @@
 /* Macros to read the CSS power domain state */
 #define CSS_CORE_PWR_STATE(state)	(state)->pwr_domain_state[ARM_PWR_LVL0]
 #define CSS_CLUSTER_PWR_STATE(state)	(state)->pwr_domain_state[ARM_PWR_LVL1]
-#define CSS_SYSTEM_PWR_STATE(state)	\
-			((PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL) ?\
-			(state)->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL] : 0)
+
+static inline unsigned int css_system_pwr_state(const psci_power_state_t *state)
+{
+#if (PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL)
+	return state->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL];
+#else
+	return 0;
+#endif
+}
 
 int css_pwr_domain_on(u_register_t mpidr);
 void css_pwr_domain_on_finish(const psci_power_state_t *target_state);
diff --git a/plat/arm/css/common/css_pm.c b/plat/arm/css/common/css_pm.c
index 3df5b78..4735a9d 100644
--- a/plat/arm/css/common/css_pm.c
+++ b/plat/arm/css/common/css_pm.c
@@ -96,7 +96,7 @@
 void css_pwr_domain_on_finish(const psci_power_state_t *target_state)
 {
 	/* Assert that the system power domain need not be initialized */
-	assert(CSS_SYSTEM_PWR_STATE(target_state) == ARM_LOCAL_STATE_RUN);
+	assert(css_system_pwr_state(target_state) == ARM_LOCAL_STATE_RUN);
 
 	/* Program the gic per-cpu distributor or re-distributor interface */
 	plat_arm_gic_pcpu_init();
@@ -149,7 +149,7 @@
 	css_power_down_common(target_state);
 
 	/* Perform system domain state saving if issuing system suspend */
-	if (CSS_SYSTEM_PWR_STATE(target_state) == ARM_LOCAL_STATE_OFF) {
+	if (css_system_pwr_state(target_state) == ARM_LOCAL_STATE_OFF) {
 		arm_system_pwr_domain_save();
 
 		/* Power off the Redistributor after having saved its context */
@@ -174,7 +174,7 @@
 		return;
 
 	/* Perform system domain restore if woken up from system suspend */
-	if (CSS_SYSTEM_PWR_STATE(target_state) == ARM_LOCAL_STATE_OFF)
+	if (css_system_pwr_state(target_state) == ARM_LOCAL_STATE_OFF)
 		/*
 		 * At this point, the Distributor must be powered on to be ready
 		 * to have its state restored. The Redistributor will be powered
@@ -264,11 +264,23 @@
 	rc = arm_validate_power_state(power_state, req_state);
 
 	/*
+	 * Ensure that we don't overrun the pwr_domain_state array in the case
+	 * where the platform supported max power level is less than the system
+	 * power level
+	 */
+
+#if (PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL)
+
+	/*
 	 * Ensure that the system power domain level is never suspended
 	 * via PSCI CPU SUSPEND API. Currently system suspend is only
 	 * supported via PSCI SYSTEM SUSPEND API.
 	 */
-	req_state->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL] = ARM_LOCAL_STATE_RUN;
+
+	req_state->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL] =
+							ARM_LOCAL_STATE_RUN;
+#endif
+
 	return rc;
 }
 
diff --git a/plat/arm/css/drivers/scp/css_pm_scmi.c b/plat/arm/css/drivers/scp/css_pm_scmi.c
index 3a25509..91ea63a 100644
--- a/plat/arm/css/drivers/scp/css_pm_scmi.c
+++ b/plat/arm/css/drivers/scp/css_pm_scmi.c
@@ -87,7 +87,7 @@
 						ARM_LOCAL_STATE_OFF);
 
 	/* Check if power down at system power domain level is requested */
-	if (CSS_SYSTEM_PWR_STATE(target_state) == ARM_LOCAL_STATE_OFF) {
+	if (css_system_pwr_state(target_state) == ARM_LOCAL_STATE_OFF) {
 		/* Issue SCMI command for SYSTEM_SUSPEND */
 		ret = scmi_sys_pwr_state_set(scmi_handle,
 				SCMI_SYS_PWR_FORCEFUL_REQ,
diff --git a/plat/arm/css/drivers/scp/css_pm_scpi.c b/plat/arm/css/drivers/scp/css_pm_scpi.c
index 23fd80e..18e71f6 100644
--- a/plat/arm/css/drivers/scp/css_pm_scpi.c
+++ b/plat/arm/css/drivers/scp/css_pm_scpi.c
@@ -25,7 +25,7 @@
 	uint32_t system_state = scpi_power_on;
 
 	/* Check if power down at system power domain level is requested */
-	if (CSS_SYSTEM_PWR_STATE(target_state) == ARM_LOCAL_STATE_OFF)
+	if (css_system_pwr_state(target_state) == ARM_LOCAL_STATE_OFF)
 		system_state = scpi_power_retention;
 
 	/* Cluster is to be turned off, so disable coherency */