Thanks Daniel! Liviu,
I have been using on the linux-linaro branch in the linux-linaro-tracking repository here: https://git.linaro.org/gitweb?p=kernel/linux-linaro-tracking.git;a=shortlog;h=refs/heads/linux-linaro Sorry for missing that. Thanks! Sebastian On 15 May 2013 08:47, Daniel Lezcano <daniel.lezc...@linaro.org> wrote: > On 05/15/2013 05:24 PM, Liviu Dudau wrote: > > Hi Sebastian, > > > > On Mon, May 13, 2013 at 07:53:42PM +0100, Sebastian Capella wrote: > >> Pass residency information to the mcpm_cpu_suspend. The information > >> is taken from the target_residency of the intended C-state. > >> > >> When a platform uses multiple powerdown cstates, the residency > information > >> indicates which powerdown state is targeted. Multiple powerdown cstate > >> information can be maintained in the device tree and the vendor specific > >> handling will then have enough information to determine what power > state to > >> enter without needing additional changes to the big_little framework. > >> > >> Signed-off-by: Sebastian Capella <sebastian.cape...@linaro.org> > >> --- > >> drivers/cpuidle/arm_big_little.c | 6 ++++-- > >> 1 file changed, 4 insertions(+), 2 deletions(-) > >> > >> diff --git a/drivers/cpuidle/arm_big_little.c > b/drivers/cpuidle/arm_big_little.c > >> index a430800..8332b05 100644 > >> --- a/drivers/cpuidle/arm_big_little.c > >> +++ b/drivers/cpuidle/arm_big_little.c > > > > I could not find a branch that contains this file. Which git tree and > branch > > are you using? > > I believe it should apply to: > > > https://git.linaro.org/gitweb?p=landing-teams/working/arm/kernel.git;a=blob;f=drivers/cpuidle/arm_big_little.c;h=a430800d4a74c8c5b759cd34fb5e272d8cf8f8a3;hb=67b5adf6a402921655d337d52845d6d48c6ef2d2#l66 > > > > >> @@ -89,7 +89,7 @@ static int notrace bl_powerdown_finisher(unsigned > long arg) > >> unsigned int cpu = mpidr & 0xf; > >> > >> mcpm_set_entry_vector(cpu, cluster, cpu_resume); > >> - mcpm_cpu_suspend(0); /* 0 should be replaced with better value > here */ > >> + mcpm_cpu_suspend(arg); > >> return 1; > >> } > >> > >> @@ -107,6 +107,7 @@ static int bl_enter_powerdown(struct cpuidle_device > *dev, > >> { > >> struct timespec ts_preidle, ts_postidle, ts_idle; > >> int ret; > >> + struct cpuidle_state *state = &drv->states[idx]; > >> > >> /* Used to keep track of the total time in idle */ > >> getnstimeofday(&ts_preidle); > >> @@ -117,7 +118,8 @@ static int bl_enter_powerdown(struct cpuidle_device > *dev, > >> > >> clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu); > >> > >> - ret = cpu_suspend((unsigned long) dev, bl_powerdown_finisher); > >> + ret = cpu_suspend((unsigned long) state->target_residency, > >> + bl_powerdown_finisher); > > > > I don't think you should pass the target residency here but the intended > > C-state. Think about what will happen when you run this in a guest > kernel: is > > the target_residency the same if the guest has been migrated from a big > core > > that might have a faster execution of the down/up path to a little core > that > > is slower? The intended C-state should stay the same, regardless of the > actual > > time it takes to get there and out, which affects the actual time spent > inside > > the state. > > > > Best regards, > > Liviu > > > > > -- > <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs > > Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | > <http://twitter.com/#!/linaroorg> Twitter | > <http://www.linaro.org/linaro-blog/> Blog > >
_______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev