All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Paul Mundt <lethal@linux-sh.org>
Cc: Daniel Walker <dwalker@fifo99.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Linus Walleij <linus.ml.walleij@gmail.com>,
	Ingo Molnar <mingo@elte.hu>, Andrew Victor <linux@maxim.org.za>,
	Haavard Skinnemoen <hskinnemoen@atmel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-arm-kernel@lists.arm.linux.org.uk,
	John Stultz <johnstul@linux.vnet.ibm.com>
Subject: Re: [PATCH] sched: Support current clocksource handling in
Date: Thu, 28 May 2009 09:34:41 +0000	[thread overview]
Message-ID: <1243503281.23657.80.camel@twins> (raw)
In-Reply-To: <20090528091936.GA27545@linux-sh.org>

On Thu, 2009-05-28 at 18:19 +0900, Paul Mundt wrote:

> Ok, there were some ordering problems with the early platform code, but
> I've played with this a bit more and got it to the point where this now
> also works. I can live with this over the v3 version if people prefer
> this approach instead.
> 
> --

> @@ -38,8 +39,7 @@
>   */
>  unsigned long long __attribute__((weak)) sched_clock(void)
>  {
> -	return (unsigned long long)(jiffies - INITIAL_JIFFIES)
> -					* (NSEC_PER_SEC / HZ);
> +	return cyc2ns(sched_clocksource, clocksource_read(sched_clocksource));
>  }
>  
>  static __read_mostly int sched_clock_running;

> @@ -362,6 +363,9 @@ static struct clocksource *select_clocksource(void)
>  	if (next = curr_clocksource)
>  		return NULL;
>  
> +	if (next->flags & CLOCK_SOURCE_USE_FOR_SCHED_CLOCK)
> +		sched_clocksource = next;
> +
>  	return next;
>  }
>  

That's a single assignment, vs two reads on use. Should we be worried
about the SMP race where we observe two different sched_clocksource
pointers on read?


I would suggest we write it as:

u64 __weak sched_clock(void)
{
	struct clocksource *clock = ACCESS_ONCE(sched_clocksource);

	return cyc2ns(clock, clocksource_read(clock));
}

WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: Paul Mundt <lethal@linux-sh.org>
Cc: Daniel Walker <dwalker@fifo99.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Linus Walleij <linus.ml.walleij@gmail.com>,
	Ingo Molnar <mingo@elte.hu>, Andrew Victor <linux@maxim.org.za>,
	Haavard Skinnemoen <hskinnemoen@atmel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-arm-kernel@lists.arm.linux.org.uk,
	John Stultz <johnstul@linux.vnet.ibm.com>
Subject: Re: [PATCH] sched: Support current clocksource handling in fallback sched_clock().
Date: Thu, 28 May 2009 11:34:41 +0200	[thread overview]
Message-ID: <1243503281.23657.80.camel@twins> (raw)
In-Reply-To: <20090528091936.GA27545@linux-sh.org>

On Thu, 2009-05-28 at 18:19 +0900, Paul Mundt wrote:

> Ok, there were some ordering problems with the early platform code, but
> I've played with this a bit more and got it to the point where this now
> also works. I can live with this over the v3 version if people prefer
> this approach instead.
> 
> --

> @@ -38,8 +39,7 @@
>   */
>  unsigned long long __attribute__((weak)) sched_clock(void)
>  {
> -	return (unsigned long long)(jiffies - INITIAL_JIFFIES)
> -					* (NSEC_PER_SEC / HZ);
> +	return cyc2ns(sched_clocksource, clocksource_read(sched_clocksource));
>  }
>  
>  static __read_mostly int sched_clock_running;

> @@ -362,6 +363,9 @@ static struct clocksource *select_clocksource(void)
>  	if (next == curr_clocksource)
>  		return NULL;
>  
> +	if (next->flags & CLOCK_SOURCE_USE_FOR_SCHED_CLOCK)
> +		sched_clocksource = next;
> +
>  	return next;
>  }
>  

That's a single assignment, vs two reads on use. Should we be worried
about the SMP race where we observe two different sched_clocksource
pointers on read?


I would suggest we write it as:

u64 __weak sched_clock(void)
{
	struct clocksource *clock = ACCESS_ONCE(sched_clocksource);

	return cyc2ns(clock, clocksource_read(clock));
}

  reply	other threads:[~2009-05-28  9:34 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-26  6:15 [PATCH] sched: Support current clocksource handling in fallback sched_clock() Paul Mundt
2009-05-26  6:15 ` Paul Mundt
2009-05-26 14:31 ` [PATCH] sched: Support current clocksource handling in fallback Linus Walleij
2009-05-26 14:31   ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Linus Walleij
2009-05-26 14:38   ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 14:38     ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 20:17     ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 20:17       ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 23:08       ` Paul Mundt
2009-05-26 23:08         ` Paul Mundt
2009-05-26 23:13         ` Paul Mundt
2009-05-26 23:13           ` Paul Mundt
2009-05-26 23:25         ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 23:25           ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 23:44           ` Paul Mundt
2009-05-26 23:44             ` Paul Mundt
2009-05-27  0:18             ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-27  0:18               ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-27  0:22             ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-27  0:22               ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-27  0:26               ` Paul Mundt
2009-05-27  0:26                 ` Paul Mundt
2009-05-27  1:09                 ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-27  1:09                   ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-27  0:27               ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-27  0:27                 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 23:49         ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 23:49           ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-27  0:15           ` Paul Mundt
2009-05-27  0:15             ` Paul Mundt
2009-05-27 16:25             ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-27 16:25               ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28  8:44               ` Paul Mundt
2009-05-28  8:44                 ` Paul Mundt
2009-05-28  9:19               ` Paul Mundt
2009-05-28  9:19                 ` Paul Mundt
2009-05-28  9:34                 ` Peter Zijlstra [this message]
2009-05-28  9:34                   ` Peter Zijlstra
2009-05-28 11:09                   ` Paul Mundt
2009-05-28 11:09                     ` Paul Mundt
2009-05-28 12:22                     ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 12:22                       ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 12:40                       ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 12:40                         ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-28 12:42                       ` Paul Mundt
2009-05-28 12:42                         ` Paul Mundt
2009-05-28 12:53                         ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 12:53                           ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 12:59                         ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 12:59                           ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-28 13:20                           ` Paul Mundt
2009-05-28 13:20                             ` Paul Mundt
2009-05-28 16:13                           ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 16:13                             ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 16:32                             ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 16:32                               ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-28 16:40                               ` Paul Mundt
2009-05-28 16:40                                 ` Paul Mundt
2009-05-28 16:52                                 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 16:52                                   ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 16:58                                   ` Paul Mundt
2009-05-28 16:58                                     ` Paul Mundt
2009-05-28 17:38                                     ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 17:38                                       ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 17:46                                       ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 17:46                                         ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 17:53                                       ` Paul Mundt
2009-05-28 17:53                                         ` Paul Mundt
2009-05-28 18:10                                         ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 18:10                                           ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 18:27                                           ` Paul Mundt
2009-05-28 18:27                                             ` Paul Mundt
2009-05-28 19:04                                             ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 19:04                                               ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 19:34                                               ` Paul Mundt
2009-05-28 19:34                                                 ` Paul Mundt
2009-05-28 19:41                                                 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 19:41                                                   ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 23:37                                                   ` Paul Mundt
2009-05-28 23:37                                                     ` Paul Mundt
2009-05-28 18:44                                           ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 18:44                                             ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 17:00                                   ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 17:00                                     ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 17:07                                 ` [PATCH] sched: Support current clocksource handling in John Stultz
2009-05-28 17:07                                   ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() John Stultz
2009-05-26 20:23     ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 20:23       ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 20:30       ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 20:30         ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 20:40         ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 20:40           ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 20:55           ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 20:55             ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 23:00             ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 23:00               ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 23:24               ` [PATCH] sched: Support current clocksource handling in fallback Mangalampalli, JayantX
2009-05-26 23:24                 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Mangalampalli, JayantX
2009-05-27  0:04                 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-27  0:04                   ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 23:39               ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 23:39                 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-27  6:58               ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-27  6:58                 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 20:39       ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 20:39         ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 14:43   ` Paul Mundt
2009-05-26 14:43     ` Paul Mundt
2009-05-26 14:50     ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 14:50       ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 14:53       ` Paul Mundt
2009-05-26 14:53         ` Paul Mundt
2009-05-26 15:02   ` [PATCH] sched: Support current clocksource handling in fallback Matthieu CASTET
2009-05-26 15:02     ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Matthieu CASTET

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=1243503281.23657.80.camel@twins \
    --to=peterz@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=dwalker@fifo99.com \
    --cc=hskinnemoen@atmel.com \
    --cc=johnstul@linux.vnet.ibm.com \
    --cc=lethal@linux-sh.org \
    --cc=linus.ml.walleij@gmail.com \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux@maxim.org.za \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /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.