Message ID | 52FDFB4C.7010607@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 02/14/2014 04:47 PM, Preeti U Murthy wrote: > Hi Nicolas, > > You will have to include the below patch with yours. You > could squash the two I guess, I have added the changelog > just for clarity. And you also might want to change the subject to > cpuidle/powernv. It gives a better picture. > > Thanks > > Regards > Preeti U Murthy > > > cpuidle/powernv: Add ppc64_runlatch_off/on() to idle routines > > Following moving of cpuidle_idle_call() to the generic idle loop, we need to > add the runlatch functions to the idle routines on powernv which was earlier > taken care of by the arch specific idle routine. > > Signed-off-by: Preeti U Murthy <preeti@linux.vnet.ibm.com> Reviewed-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com> > --- > drivers/cpuidle/cpuidle-powernv.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c > index 78fd174..f48607c 100644 > --- a/drivers/cpuidle/cpuidle-powernv.c > +++ b/drivers/cpuidle/cpuidle-powernv.c > @@ -14,6 +14,7 @@ > > #include <asm/machdep.h> > #include <asm/firmware.h> > +#include <asm/runlatch.h> > > struct cpuidle_driver powernv_idle_driver = { > .name = "powernv_idle", > @@ -30,12 +31,14 @@ static int snooze_loop(struct cpuidle_device *dev, > local_irq_enable(); > set_thread_flag(TIF_POLLING_NRFLAG); > > + ppc64_runlatch_off(); > while (!need_resched()) { > HMT_low(); > HMT_very_low(); > } > > HMT_medium(); > + ppc64_runlatch_on(); > clear_thread_flag(TIF_POLLING_NRFLAG); > smp_mb(); > return index; > @@ -45,7 +48,9 @@ static int nap_loop(struct cpuidle_device *dev, > struct cpuidle_driver *drv, > int index) > { > + ppc64_runlatch_off(); > power7_idle(); > + ppc64_runlatch_on(); > return index; > } > > > On 02/06/2014 07:46 PM, Nicolas Pitre wrote: >> The core idle loop now takes care of it. >> >> Signed-off-by: Nicolas Pitre <nico@linaro.org> >> --- >> arch/powerpc/platforms/powernv/setup.c | 13 +------------ >> 1 file changed, 1 insertion(+), 12 deletions(-) >> >> diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c >> index 21166f65c9..a932feb290 100644 >> --- a/arch/powerpc/platforms/powernv/setup.c >> +++ b/arch/powerpc/platforms/powernv/setup.c >> @@ -26,7 +26,6 @@ >> #include <linux/of_fdt.h> >> #include <linux/interrupt.h> >> #include <linux/bug.h> >> -#include <linux/cpuidle.h> >> >> #include <asm/machdep.h> >> #include <asm/firmware.h> >> @@ -217,16 +216,6 @@ static int __init pnv_probe(void) >> return 1; >> } >> >> -void powernv_idle(void) >> -{ >> - /* Hook to cpuidle framework if available, else >> - * call on default platform idle code >> - */ >> - if (cpuidle_idle_call()) { >> - power7_idle(); >> - } >> -} >> - >> define_machine(powernv) { >> .name = "PowerNV", >> .probe = pnv_probe, >> @@ -236,7 +225,7 @@ define_machine(powernv) { >> .show_cpuinfo = pnv_show_cpuinfo, >> .progress = pnv_progress, >> .machine_shutdown = pnv_shutdown, >> - .power_save = powernv_idle, >> + .power_save = power7_idle, >> .calibrate_decr = generic_calibrate_decr, >> #ifdef CONFIG_KEXEC >> .kexec_cpu_down = pnv_kexec_cpu_down, >> > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev >
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index 78fd174..f48607c 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c @@ -14,6 +14,7 @@ #include <asm/machdep.h> #include <asm/firmware.h> +#include <asm/runlatch.h> struct cpuidle_driver powernv_idle_driver = { .name = "powernv_idle", @@ -30,12 +31,14 @@ static int snooze_loop(struct cpuidle_device *dev, local_irq_enable(); set_thread_flag(TIF_POLLING_NRFLAG); + ppc64_runlatch_off(); while (!need_resched()) { HMT_low(); HMT_very_low(); } HMT_medium(); + ppc64_runlatch_on(); clear_thread_flag(TIF_POLLING_NRFLAG); smp_mb(); return index; @@ -45,7 +48,9 @@ static int nap_loop(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { + ppc64_runlatch_off(); power7_idle(); + ppc64_runlatch_on(); return index; }