diff mbox

[RFC,12/14] arm64: kernel: add cpu_{suspend}/{resume} build infrastructure

Message ID 1377689766-17642-13-git-send-email-lorenzo.pieralisi@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lorenzo Pieralisi Aug. 28, 2013, 11:36 a.m. UTC
To enable the suspend infrastructure for the ARM64 kernel the
corresponding Kconfig and Makefile entries must be updated.

This patch adds a menu entry for power management options and
entries to enable newly added suspend/resume implementation.

Makefile changes add appropriate entries to include corresponding
files in the kernel image.

Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
---
 arch/arm64/Kconfig         | 12 ++++++++++++
 arch/arm64/kernel/Makefile |  1 +
 2 files changed, 13 insertions(+)

Comments

Catalin Marinas Aug. 30, 2013, 5:32 p.m. UTC | #1
On Wed, Aug 28, 2013 at 12:36:04PM +0100, Lorenzo Pieralisi wrote:
> To enable the suspend infrastructure for the ARM64 kernel the
> corresponding Kconfig and Makefile entries must be updated.
> 
> This patch adds a menu entry for power management options and
> entries to enable newly added suspend/resume implementation.
> 
> Makefile changes add appropriate entries to include corresponding
> files in the kernel image.
> 
> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> ---
>  arch/arm64/Kconfig         | 12 ++++++++++++
>  arch/arm64/kernel/Makefile |  1 +
>  2 files changed, 13 insertions(+)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 5855519..827d95e 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -272,6 +272,18 @@ config SYSVIPC_COMPAT
>  
>  endmenu
>  
> +menu "Power management options"
> +
> +source "kernel/power/Kconfig"
> +
> +config ARCH_SUSPEND_POSSIBLE
> +	def_bool y
> +
> +config ARM_CPU_SUSPEND
> +	def_bool y

I think we should call this ARM64_CPU_SUSPEND. The cpuidle drivers need
to be modified anyway since things like set_cr(), scu_power_mode() etc.
no longer apply. If a driver supports both, that's great, it can select
both ARM and ARM64.

Longer term, I would like a generic cpuidle driver for PSCI with DT
bindings for describing the sleep states, target residency (not sure how
this would look like yet).
Lorenzo Pieralisi Sept. 2, 2013, 10:25 a.m. UTC | #2
On Fri, Aug 30, 2013 at 06:32:30PM +0100, Catalin Marinas wrote:
> On Wed, Aug 28, 2013 at 12:36:04PM +0100, Lorenzo Pieralisi wrote:
> > To enable the suspend infrastructure for the ARM64 kernel the
> > corresponding Kconfig and Makefile entries must be updated.
> > 
> > This patch adds a menu entry for power management options and
> > entries to enable newly added suspend/resume implementation.
> > 
> > Makefile changes add appropriate entries to include corresponding
> > files in the kernel image.
> > 
> > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> > ---
> >  arch/arm64/Kconfig         | 12 ++++++++++++
> >  arch/arm64/kernel/Makefile |  1 +
> >  2 files changed, 13 insertions(+)
> > 
> > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> > index 5855519..827d95e 100644
> > --- a/arch/arm64/Kconfig
> > +++ b/arch/arm64/Kconfig
> > @@ -272,6 +272,18 @@ config SYSVIPC_COMPAT
> >  
> >  endmenu
> >  
> > +menu "Power management options"
> > +
> > +source "kernel/power/Kconfig"
> > +
> > +config ARCH_SUSPEND_POSSIBLE
> > +	def_bool y
> > +
> > +config ARM_CPU_SUSPEND
> > +	def_bool y
> 
> I think we should call this ARM64_CPU_SUSPEND. The cpuidle drivers need
> to be modified anyway since things like set_cr(), scu_power_mode() etc.
> no longer apply. If a driver supports both, that's great, it can select
> both ARM and ARM64.

I think you are right, ARM and ARM64 implementations cannot simply cohexist,
given assembly dependency in the first place.

> Longer term, I would like a generic cpuidle driver for PSCI with DT
> bindings for describing the sleep states, target residency (not sure how
> this would look like yet).

Yes, that's planned but independent of this set, which is more related
to core functions on top of which idle and S2R drivers can be implemented.
True, we have to keep the code users (CPUidle and S2R) in mind while designing
the interface, to cater for all requirements (eg CPU idle C-state parameter
for PSCI).

Thanks a lot,
Lorenzo
diff mbox

Patch

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 5855519..827d95e 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -272,6 +272,18 @@  config SYSVIPC_COMPAT
 
 endmenu
 
+menu "Power management options"
+
+source "kernel/power/Kconfig"
+
+config ARCH_SUSPEND_POSSIBLE
+	def_bool y
+
+config ARM_CPU_SUSPEND
+	def_bool y
+
+endmenu
+
 source "net/Kconfig"
 
 source "drivers/Kconfig"
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 7b4b564..ad63448 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -18,6 +18,7 @@  arm64-obj-$(CONFIG_SMP)			+= smp.o smp_spin_table.o smp_psci.o
 arm64-obj-$(CONFIG_HW_PERF_EVENTS)	+= perf_event.o
 arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT)+= hw_breakpoint.o
 arm64-obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
+arm64-obj-$(CONFIG_ARM_CPU_SUSPEND)	+= sleep.o suspend.o
 
 obj-y					+= $(arm64-obj-y) vdso/
 obj-m					+= $(arm64-obj-m)