diff --git a/plat/arm/css/common/css_pm.c b/plat/arm/css/common/css_pm.c
index 986cb0846e64f5e38c665a2312ad610ae1753068..4735a9dccab5361fa5c04abed3c2e4682f7c61c9 100644
--- a/plat/arm/css/common/css_pm.c
+++ b/plat/arm/css/common/css_pm.c
@@ -263,12 +263,24 @@ static int css_validate_power_state(unsigned int power_state,
 	int rc;
 	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;
 }