diff options
author | Samuel Holland <samuel@sholland.org> | 2021-04-28 17:52:02 -0500 |
---|---|---|
committer | Manish Pandey <manish.pandey2@arm.com> | 2021-10-15 14:13:54 +0200 |
commit | a1d5ac6a5aa5d9d18a481de20d272f64a71391f7 (patch) | |
tree | e59f1b6d0834f6e25d800a5736f3e31da28c2de2 | |
parent | 02d36a92fc193869547b9d9af00f623974879fdd (diff) | |
download | trusted-firmware-a-a1d5ac6a5aa5d9d18a481de20d272f64a71391f7.tar.gz |
feat(psci): require validate_power_state to expose CPU_SUSPEND
psci_cpu_suspend unconditionally calls psci_validate_power_state, which
asserts that the platform implements ops->validate_power_state. To avoid
a failure at runtime, do not expose CPU_SUSPEND unless that callback is
implemented. This also allows a platform to provide SYSTEM_SUSPEND
without providing CPU_SUSPEND.
Signed-off-by: Samuel Holland <samuel@sholland.org>
Change-Id: I5dafb7845f482ab3af03a9de562def41dd70189e
-rw-r--r-- | lib/psci/psci_setup.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/psci/psci_setup.c b/lib/psci/psci_setup.c index 9c37d63f2a..3cb4f7e43e 100644 --- a/lib/psci/psci_setup.c +++ b/lib/psci/psci_setup.c @@ -250,7 +250,8 @@ int __init psci_setup(const psci_lib_args_t *lib_args) psci_caps |= define_psci_cap(PSCI_CPU_ON_AARCH64); if ((psci_plat_pm_ops->pwr_domain_suspend != NULL) && (psci_plat_pm_ops->pwr_domain_suspend_finish != NULL)) { - psci_caps |= define_psci_cap(PSCI_CPU_SUSPEND_AARCH64); + if (psci_plat_pm_ops->validate_power_state != NULL) + psci_caps |= define_psci_cap(PSCI_CPU_SUSPEND_AARCH64); if (psci_plat_pm_ops->get_sys_suspend_power_state != NULL) psci_caps |= define_psci_cap(PSCI_SYSTEM_SUSPEND_AARCH64); } |