]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
PSCI: cpuidle: Refactor CPU suspend power_state parameter handling
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Fri, 9 Aug 2019 11:03:12 +0000 (12:03 +0100)
committerWill Deacon <will@kernel.org>
Fri, 9 Aug 2019 16:51:39 +0000 (17:51 +0100)
commit9ffeb6d08c3a4bbd7b1e33711b241f511e2ded79
treecd3d6211180de96c446af4cc90b62226f18bb576
parent788961462f3471617749edf10d0fcafad410d2bb
PSCI: cpuidle: Refactor CPU suspend power_state parameter handling

Current PSCI code handles idle state entry through the
psci_cpu_suspend_enter() API, that takes an idle state index as a
parameter and convert the index into a previously initialized
power_state parameter before calling the PSCI.CPU_SUSPEND() with it.

This is unwieldly, since it forces the PSCI firmware layer to keep track
of power_state parameter for every idle state so that the
index->power_state conversion can be made in the PSCI firmware layer
instead of the CPUidle driver implementations.

Move the power_state handling out of drivers/firmware/psci
into the respective ACPI/DT PSCI CPUidle backends and convert
the psci_cpu_suspend_enter() API to get the power_state
parameter as input, which makes it closer to its firmware
interface PSCI.CPU_SUSPEND() API.

A notable side effect is that the PSCI ACPI/DT CPUidle backends
now can directly handle (and if needed update) power_state
parameters before handing them over to the PSCI firmware
interface to trigger PSCI.CPU_SUSPEND() calls.

Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/cpuidle.c
drivers/cpuidle/cpuidle-psci.c
drivers/firmware/psci/psci.c
include/linux/cpuidle.h
include/linux/psci.h