All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerone Young <jyoung5@us.ibm.com>
To: kvm-ppc@vger.kernel.org
Subject: Re: [kvm-ppc-devel] [PATCH 1 of 2] Add idle power save for ppc
Date: Wed, 02 Apr 2008 17:09:40 +0000	[thread overview]
Message-ID: <1207156180.9783.13.camel@thinkpadL> (raw)
In-Reply-To: <15675e59e019c4800a83.1206968273@thinkpadL>

On Wed, 2008-04-02 at 08:14 -0400, Jimi Xenidis wrote:
> On Apr 2, 2008, at 3:52 AM, Jerone Young wrote:
> 
> > # HG changeset patch
> > # User Jerone Young <jyoung5@us.ibm.com>
> > # Date 1207122427 18000
> > # Node ID 6e9ae9e1e5992339ca1f3efa93f8200cf24cbee5
> > # Parent  1506aa38ddabb0bf73fff3ac3f3db5f9ef6458cc
> > Add idle power save for ppc 4xx for 2.6.25
> >
> > 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.
> >
> > The issue though is this is a temporary patch. As the one that will  
> > be sent upstream is based on linux-next (2.6.26) and is not the  
> > same as the 2.6.25 patch.
> >
> > 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,22 @@
> > +/*
> > + * 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)
> > +{
> > +	unsigned long msr_save;
> > +
> > +	/* set wait state MSR */
> > +	msr_save = mfmsr();
> > +	mtmsr(msr_save|MSR_WE|MSR_EE|MSR_CE);
> 
> 1) I think you also want MSR_DE here, no?
> 2) Just to be safe, I'd also append an isync();
> 3) In case MSR_WE does nothing, or continues from here I'd append  
> "mstmsr(msr_save); isync();" as well

Looks like using local_irq_enable() just might have been a better idea
after all. 

So the MSR_DE is yet another case that could go here. If it was on
coming into power_save...I'm assuming it would get disabled by
local_irq_disable().

Looks like using isync after the mtmsr looks to be a good safety net.

> 
> -JX
> 
> 
> 
> > +}
> > 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)
> > diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/ 
> > machdep.h
> > --- a/include/asm-powerpc/machdep.h
> > +++ b/include/asm-powerpc/machdep.h
> > @@ -266,6 +266,7 @@ extern void power4_idle(void);
> >  extern void power4_idle(void);
> >  extern void power4_cpu_offline_powersave(void);
> >  extern void ppc6xx_idle(void);
> > +extern void ppc4xx_idle(void);
> >
> >  /*
> >   * ppc_md contains a copy of the machine description structure for  
> > the
> >
> > ---------------------------------------------------------------------- 
> > ---
> > Check out the new SourceForge.net Marketplace.
> > It's the best place to buy or sell services for
> > just about anything Open Source.
> > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/ 
> > marketplace
> > _______________________________________________
> > kvm-ppc-devel mailing list
> > kvm-ppc-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel
> 


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel

  parent reply	other threads:[~2008-04-02 17:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-31 12:57 [kvm-ppc-devel] [PATCH 1 of 2] Add idle power save for ppc 4xx Jerone Young
2008-04-02  7:52 ` [kvm-ppc-devel] [PATCH 1 of 2] Add idle power save for ppc 4xx for Jerone Young
2008-04-02 12:14 ` [kvm-ppc-devel] [PATCH 1 of 2] Add idle power save for ppc 4xx Jimi Xenidis
2008-04-02 17:09 ` Jerone Young [this message]
2008-04-02 18:07 ` [kvm-ppc-devel] [PATCH 1 of 2] Add idle power save for ppc 4xx for Jerone Young
2008-04-03  8:19 ` [kvm-ppc-devel] [PATCH 1 of 2] Add idle power save for ppc 4xx Christian Ehrhardt
2008-04-03 19:35 ` [kvm-ppc-devel] [PATCH 1 of 2] Add idle power save for ppc 4xx for Jerone Young

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=1207156180.9783.13.camel@thinkpadL \
    --to=jyoung5@us.ibm.com \
    --cc=kvm-ppc@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.