diff options
author | Dimitris Papastamos <dimitris.papastamos@arm.com> | 2018-06-25 13:38:29 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-25 13:38:29 +0100 |
commit | a455173969be53f11dea5d0ab39a9ece63cffdac (patch) | |
tree | 41ad3d1c990fc48edafc1c394b43d0fb16abbc25 /plat | |
parent | 562e0e8ae871f14c2c0b00be8631b8e1d10bb0ab (diff) | |
parent | 8e26307db63b1da1029713ba5d22b3428a2dab4b (diff) | |
download | platform_external_arm-trusted-firmware-a455173969be53f11dea5d0ab39a9ece63cffdac.tar.gz platform_external_arm-trusted-firmware-a455173969be53f11dea5d0ab39a9ece63cffdac.tar.bz2 platform_external_arm-trusted-firmware-a455173969be53f11dea5d0ab39a9ece63cffdac.zip |
Merge pull request #1448 from npoushin/npoushin/sgi575-coverity-fixes
npoushin/sgi575 coverity fixes
Diffstat (limited to 'plat')
-rw-r--r-- | plat/arm/css/common/css_pm.c | 20 | ||||
-rw-r--r-- | plat/arm/css/drivers/scp/css_pm_scmi.c | 2 | ||||
-rw-r--r-- | plat/arm/css/drivers/scp/css_pm_scpi.c | 2 |
3 files changed, 18 insertions, 6 deletions
diff --git a/plat/arm/css/common/css_pm.c b/plat/arm/css/common/css_pm.c index 3df5b7813..4735a9dcc 100644 --- a/plat/arm/css/common/css_pm.c +++ b/plat/arm/css/common/css_pm.c @@ -96,7 +96,7 @@ static void css_pwr_domain_on_finisher_common( 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 @@ void css_pwr_domain_suspend(const psci_power_state_t *target_state) 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 @@ void css_pwr_domain_suspend_finish( 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 @@ static int css_validate_power_state(unsigned int power_state, 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 3a255096e..91ea63a44 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 @@ void css_scp_suspend(const struct psci_power_state *target_state) 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 23fd80ee9..18e71f6e3 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 @@ void css_scp_suspend(const struct psci_power_state *target_state) 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 */ |