diff options
author | Will Deacon <will@kernel.org> | 2021-06-24 13:36:39 +0100 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2021-06-24 13:36:39 +0100 |
commit | eea3e2dec4c856677333fee7e8d56547cbd99121 (patch) | |
tree | bf69e7042e61efcfbed62a53ef8728c977785835 /drivers/firmware/psci/psci.c | |
parent | eda2171d854722ec85ad99daedc331bc00c9cdda (diff) | |
parent | 77345ef70445a8f16e0685dade0d68bdf41f19d7 (diff) |
Merge branch 'for-next/cpuidle' into for-next/core
Fix resume from idle when pNMI is being used.
* for-next/cpuidle:
arm64: suspend: Use cpuidle context helpers in cpu_suspend()
PSCI: Use cpuidle context helpers in psci_cpu_suspend_enter()
arm64: Convert cpu_do_idle() to using cpuidle context helpers
arm64: Add cpuidle context save/restore helpers
Diffstat (limited to 'drivers/firmware/psci/psci.c')
-rw-r--r-- | drivers/firmware/psci/psci.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index 3c1c5daf6df2..e3da38e15c5b 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -335,10 +335,15 @@ int psci_cpu_suspend_enter(u32 state) { int ret; - if (!psci_power_state_loses_context(state)) + if (!psci_power_state_loses_context(state)) { + struct arm_cpuidle_irq_context context; + + arm_cpuidle_save_irq_context(&context); ret = psci_ops.cpu_suspend(state, 0); - else + arm_cpuidle_restore_irq_context(&context); + } else { ret = cpu_suspend(state, psci_suspend_finisher); + } return ret; } |