summaryrefslogtreecommitdiff
path: root/lib/psci/psci_main.c
diff options
context:
space:
mode:
authorSoby Mathew <soby.mathew@arm.com>2018-10-11 13:37:53 +0100
committerGitHub <noreply@github.com>2018-10-11 13:37:53 +0100
commit424f68dd1dedba416105d513cc7f99904fe4ceac (patch)
treeebdab9c3c3d33892237ec650c947a6cb4fda0ed6 /lib/psci/psci_main.c
parente22a4ae074aa3cef51b4bfcb1be530dc84aa109f (diff)
parenta4065abdfb28147bede85d1dac983f01ff6a0247 (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.c8
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(