All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Ingo Molnar <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linaro-kernel@lists.linaro.org, linux-kernel@vger.kernel.org,
	Kevin Hilman <khilman@linaro.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Preeti U Murthy <preeti@linux.vnet.ibm.com>,
	Frederic Weisbecker <fweisbec@gmail.com>
Subject: Re: [PATCH 2/3] clockevents: Restart clockevent device before using it again
Date: Thu, 2 Apr 2015 15:34:03 +0200	[thread overview]
Message-ID: <20150402133403.GY23123@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <a8bce41503c36f6de6be94b0f8854ab646f6745d.1427475606.git.viresh.kumar@linaro.org>

On Fri, Mar 27, 2015 at 10:44:28PM +0530, Viresh Kumar wrote:
> Only hrtimer_reprogram() is responsible for programming the clockevent device
> for next event, if the clockevent device is stopped earlier. And updating that
> alone is sufficient here.

> +++ b/kernel/time/hrtimer.c
> @@ -566,6 +566,7 @@ static int hrtimer_reprogram(struct hrtimer *timer,
>  {
>  	struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases);
>  	ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
> +	struct clock_event_device *dev = __this_cpu_read(tick_cpu_device.evtdev);
>  	int res;
>  
>  	WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0);
> @@ -610,6 +611,10 @@ static int hrtimer_reprogram(struct hrtimer *timer,
>  	if (cpu_base->hang_detected)
>  		return 0;
>  
> +	/* Switchback to ONESHOT state */
> +	if (unlikely(dev->state == CLOCK_EVT_STATE_ONESHOT_STOPPED))
> +		clockevents_set_state(dev, CLOCK_EVT_STATE_ONESHOT);
> +
>  	/*
>  	 * Clockevents returns -ETIME, when the event was in the past.
>  	 */

Should we not do this in tick_program_event() instead? Note that there
are a few more places that call that, the two in the hrtimer_interrupt()
should be safe because if we're handling the interrupt its cannot be
stopped anyhow.

hrtimer_force_reprogram() seems to need the annotation regardless.

Furthermore, by putting it in tick_program_event() you also don't need
to fixup tick_nohz_restart().

Or am I completely missing something?

  parent reply	other threads:[~2015-04-02 13:34 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-27 17:14 [PATCH 0/3] clockevents: Introduce CLOCK_EVT_STATE_ONESHOT_STOPPED Viresh Kumar
2015-03-27 17:14 ` [PATCH 1/3] clockevents: Introduce CLOCK_EVT_STATE_ONESHOT_STOPPED state Viresh Kumar
2015-03-30  5:49   ` Preeti U Murthy
2015-04-06 21:26   ` Kevin Hilman
2015-03-27 17:14 ` [PATCH 2/3] clockevents: Restart clockevent device before using it again Viresh Kumar
2015-03-30  5:52   ` Preeti U Murthy
2015-04-02 13:34   ` Peter Zijlstra [this message]
2015-04-02 13:50     ` Viresh Kumar
2015-04-02 15:06       ` Peter Zijlstra
2015-04-02 16:04         ` Ingo Molnar
2015-03-27 17:14 ` [PATCH 3/3] clockevents: Switch state to ONESHOT_STOPPED for unused clockevent devices Viresh Kumar
2015-03-30  5:50   ` Preeti U Murthy
2015-04-02 13:37   ` Peter Zijlstra
2015-04-02 13:51     ` Viresh Kumar

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=20150402133403.GY23123@twins.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=fweisbec@gmail.com \
    --cc=khilman@linaro.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=preeti@linux.vnet.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=viresh.kumar@linaro.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.