From: Hollis Blanchard <hollisb@us.ibm.com>
To: Jerone Young <jyoung5@us.ibm.com>
Cc: kvm-ppc-devel@lists.sourceforge.net, linuxppc-dev@ozlabs.org
Subject: Re: [kvm-ppc-devel] [PATCH] Add idle power save for ppc 4xx
Date: Mon, 31 Mar 2008 11:27:51 -0500 [thread overview]
Message-ID: <1206980871.5919.5.camel@basalt> (raw)
In-Reply-To: <10aea37177130bbe5de7.1206969157@thinkpadL>
On Mon, 2008-03-31 at 08:12 -0500, Jerone Young wrote:
> # HG changeset patch
> # User Jerone Young <jyoung5@us.ibm.com>
> # Date 1206969060 18000
> # Node ID 10aea37177130bbe5de7bee6ec06d9010bc5da1f
> # Parent 1506aa38ddabb0bf73fff3ac3f3db5f9ef6458cc
> Add idle power save for ppc 4xx
>
> This patch sets the wait state MSR when power_save is called in
> cpu_idle loop for ppc4xx. This is mainly to help out virtualization
> solutions such as KVM. This way the virtualization soultions are able
> to tell if the guest kernel is idle.
>
> I have tested this on hardware & KVM virtual guest.
>
> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
>
> diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
> --- a/arch/powerpc/kernel/Makefile
> +++ b/arch/powerpc/kernel/Makefile
> @@ -39,6 +39,7 @@ obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsy
> obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o
> obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
> obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o
> +obj-$(CONFIG_4xx) += idle_4xx.o
> obj-$(CONFIG_TAU) += tau_6xx.o
> obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o \
> swsusp_$(CONFIG_WORD_SIZE).o
> diff --git a/arch/powerpc/kernel/idle_4xx.c b/arch/powerpc/kernel/idle_4xx.c
> new file mode 100644
> --- /dev/null
> +++ b/arch/powerpc/kernel/idle_4xx.c
> @@ -0,0 +1,24 @@
> +/*
> + * This file contains the power_save function for 4xx CPUs
> + *
> + * added by Jerone Young <jyoung5@us.ibm.com>
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version
> + * 2 of the License, or (at your option) any later version.
> + */
> +
> +#include <asm/processor.h>
> +#include <asm/machdep.h>
> +
> +void ppc4xx_idle()
void ppc4xx_idle(void)
> +{
> + unsigned long msr_save;
> +
> + /* set wait state MSR */
> + local_irq_enable();
> + msr_save = mfmsr();
> + mtmsr(msr_save|MSR_WE);
Why don't you |MSR_WE|MSR_EE at the same time?
> + local_irq_disable();
> +}
None of the other power_save() implementations need this. In fact many
of them don't even seem to return; they just loop around mtmsr.
> diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c
> --- a/arch/powerpc/kernel/setup_32.c
> +++ b/arch/powerpc/kernel/setup_32.c
> @@ -132,6 +132,10 @@ void __init machine_init(unsigned long d
> if (cpu_has_feature(CPU_FTR_CAN_DOZE) ||
> cpu_has_feature(CPU_FTR_CAN_NAP))
> ppc_md.power_save = ppc6xx_idle;
> +#endif
> +
> +#ifdef CONFIG_4xx
> + ppc_md.power_save = ppc4xx_idle;
> #endif
>
> if (ppc_md.progress)
This belongs in the platform setup code.
--
Hollis Blanchard
IBM Linux Technology Center
next prev parent reply other threads:[~2008-03-31 16:28 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-31 13:12 [PATCH] Add idle power save for ppc 4xx Jerone Young
2008-03-31 16:27 ` Hollis Blanchard [this message]
2008-03-31 16:52 ` [kvm-ppc-devel] " Jerone Young
2008-03-31 17:48 ` Josh Boyer
2008-04-01 12:14 ` Arnd Bergmann
2008-03-31 17:07 ` Josh Boyer
2008-03-31 18:05 ` Josh Boyer
2008-03-31 18:19 ` Jerone Young
2008-04-01 1:04 ` Michael Ellerman
2008-04-01 3:15 ` Josh Boyer
2008-04-01 3:30 ` Michael Ellerman
2008-04-01 12:01 ` [kvm-ppc-devel] " Jimi Xenidis
2008-04-01 12:03 ` Josh Boyer
2008-03-31 19:24 ` Hollis Blanchard
2008-03-31 20:28 ` Josh Boyer
2008-03-31 20:34 ` Hollis Blanchard
2008-04-01 4:00 ` Paul Mackerras
2008-04-01 11:03 ` Josh Boyer
2008-03-31 18:23 ` Jerone Young
2008-03-31 19:11 ` Josh Boyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1206980871.5919.5.camel@basalt \
--to=hollisb@us.ibm.com \
--cc=jyoung5@us.ibm.com \
--cc=kvm-ppc-devel@lists.sourceforge.net \
--cc=linuxppc-dev@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).