All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	nicolas.pitre@linaro.org
Subject: Re: [PATCH 2/3] cpuidle: Add some comments in the cpuidle_enter function
Date: Wed, 15 Apr 2015 15:46:36 +0200	[thread overview]
Message-ID: <CAJZ5v0jazzbqqVSXUyWsGs_eJK1Di6btPP4HN=348VGAn_f-rg@mail.gmail.com> (raw)
In-Reply-To: <1429092024-20498-2-git-send-email-daniel.lezcano@linaro.org>

On Wed, Apr 15, 2015 at 12:00 PM, Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
> The code is a bit poor in comments. Fix that by adding some comments in the
> cpuidle enter function.
>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>  drivers/cpuidle/cpuidle.c | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index 1220dac..5e6c6be 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -162,19 +162,50 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
>
>         trace_cpu_idle_rcuidle(index, dev->cpu);
>
> +       /*
> +        * Store the idle start time for this cpu, this information
> +        * will be used by cpuidle to measure how long the cpu has
> +        * been idle and by the scheduler to prevent to wake it up too
> +        * early
> +        */
>         target_state->idle_stamp = ktime_to_us(ktime_get());
>
> +       /*
> +        * The enter to the low level idle routine. This call will block
> +        * until an interrupt occurs meaning it is the end of the idle
> +        * period
> +        */
>         entered_state = target_state->enter(dev, drv, index);
>
> +       /*
> +        * Measure as soon as possible the duration of the idle
> +        * period. It MUST be done before re-enabling the interrupt in
> +        * order to prevent to add in the idle time measurement the
> +        * interrupt handling duration

That's unless ->enter() itself re-enables interrupts which it may do, right?

Which is why we made governors use next_timer_us as the "measured"
value if the measured value itself is greater.

I'd just say "Compute the idle duration here to avoid adding interrupt
handling time to the idle time in case an interrupt occurs as soon as
re-enabled".

> +        */
>         diff = ktime_to_us(ktime_sub_us(ktime_get(), target_state->idle_stamp));
>
> +       /*
> +        * Reset the idle time stamp as the scheduler may think the cpu is idle
> +        * while it is in the process of waking up
> +        */
>         target_state->idle_stamp = 0;
>
>         trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
>
> +       /*
> +        * The cpuidle_enter_coupled uses the cpuidle_enter function.
> +        * Don't re-enable the interrupts and let the enter_coupled

"let the enter_coupled function wait" (without the "to").

> +        * function to wait for all cpus to sync and to enable the
> +        * interrupts again from there
> +        */

And I would just say "In the coupled case interrupts will be enabled
by cpuidle_enter_coupled()".

>         if (!cpuidle_state_is_coupled(dev, drv, entered_state))
>                 local_irq_enable();
>
> +       /*
> +        * The idle duration will be casted to an integer, prevent to

"will be cast" (like "Cast Away").

> +        * overflow by setting a boundary to INT_MAX
> +        */
>         if (diff > INT_MAX)
>                 diff = INT_MAX;

But anyway, instead of adding that comment, why not to change the code
like this:

dev->last_residency = diff < INT_MAX ? diff : INT_MAX;

and it now should be clear what happens without the comment.

Rafael

  reply	other threads:[~2015-04-15 13:47 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-15 10:00 [PATCH 1/3] cpuidle: Store the idle start time stamp Daniel Lezcano
2015-04-15 10:00 ` [PATCH 2/3] cpuidle: Add some comments in the cpuidle_enter function Daniel Lezcano
2015-04-15 13:46   ` Rafael J. Wysocki [this message]
2015-04-15 16:07     ` Daniel Lezcano
2015-04-15 10:00 ` [PATCH 3/3] sched: fair: Fix wrong idle timestamp usage Daniel Lezcano
2015-04-15 12:18   ` Peter Zijlstra
2015-04-15 15:43     ` Daniel Lezcano
2015-04-15 16:02       ` Peter Zijlstra
2015-05-07 15:31         ` Daniel Lezcano
2015-04-15 17:10       ` Morten Rasmussen
2015-04-16  8:46         ` Daniel Lezcano
2015-04-15 10:20 ` [PATCH 1/3] cpuidle: Store the idle start time stamp Peter Zijlstra
2015-04-15 12:29   ` Daniel Lezcano
2015-04-15 12:42     ` Peter Zijlstra
2015-04-15 12:50       ` Daniel Lezcano
2015-04-15 13:11         ` Peter Zijlstra
2015-04-15 10:25 ` Peter Zijlstra

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='CAJZ5v0jazzbqqVSXUyWsGs_eJK1Di6btPP4HN=348VGAn_f-rg@mail.gmail.com' \
    --to=rafael@kernel.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nicolas.pitre@linaro.org \
    --cc=peterz@infradead.org \
    --cc=rjw@rjwysocki.net \
    /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.