diff options
author | Soby Mathew <soby.mathew@arm.com> | 2018-10-11 13:37:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-11 13:37:53 +0100 |
commit | 424f68dd1dedba416105d513cc7f99904fe4ceac (patch) | |
tree | ebdab9c3c3d33892237ec650c947a6cb4fda0ed6 /lib/psci/psci_main.c | |
parent | e22a4ae074aa3cef51b4bfcb1be530dc84aa109f (diff) | |
parent | a4065abdfb28147bede85d1dac983f01ff6a0247 (diff) |
Merge pull request #1625 from ldts/psci
psci: platform control of SYSTEM_SUSPEND entry
Diffstat (limited to 'lib/psci/psci_main.c')
-rw-r--r-- | lib/psci/psci_main.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/psci/psci_main.c b/lib/psci/psci_main.c index fd822bcf..b4a25fb0 100644 --- a/lib/psci/psci_main.c +++ b/lib/psci/psci_main.c @@ -167,8 +167,14 @@ int psci_system_suspend(uintptr_t entrypoint, u_register_t context_id) /* Query the psci_power_state for system suspend */ psci_query_sys_suspend_pwrstate(&state_info); + /* + * Check if platform allows suspend to Highest power level + * (System level) + */ + if (psci_find_target_suspend_lvl(&state_info) < PLAT_MAX_PWR_LVL) + return PSCI_E_DENIED; + /* Ensure that the psci_power_state makes sense */ - assert(psci_find_target_suspend_lvl(&state_info) == PLAT_MAX_PWR_LVL); assert(psci_validate_suspend_req(&state_info, PSTATE_TYPE_POWERDOWN) == PSCI_E_SUCCESS); assert(is_local_state_off( |