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

Reply via email to