From: Paul Mundt <lethal@linux-sh.org>
To: Daniel Walker <dwalker@fifo99.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
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 08:44:44 +0000 [thread overview]
Message-ID: <20090528084444.GA26955@linux-sh.org> (raw)
In-Reply-To: <1243441525.28705.19.camel@desktop>
On Wed, May 27, 2009 at 09:25:25AM -0700, Daniel Walker wrote:
> On Wed, 2009-05-27 at 09:15 +0900, Paul Mundt wrote:
>
> > unsigned long long __attribute__((weak)) sched_clock(void)
> > {
> > + /*
> > + * Use the current clocksource when it becomes available later in
> > + * the boot process, and ensure that it is usable for sched_clock().
> > + */
> > + if (clock && (clock->flags & CLOCK_SOURCE_USE_FOR_SCHED_CLOCK))
> > + return cyc2ns(clock, clocksource_read(clock));
> > +
> > + /* Otherwise just fall back on jiffies */
> > return (unsigned long long)(jiffies - INITIAL_JIFFIES)
>
> Do we really need all this complexity in a fast path? the jiffies
> clocksource is static and always ready. Could we instead remove the
> usage of "clock" and create a new pointer called "sched_clocksource" and
> initialize it to the jiffies clock, and allow the clocksource management
> code to update that new pointer based on the
> CLOCK_SOURCE_USE_FOR_SCHED_CLOCK flag when new clocksources are
> registered/removed/marked unstable etc..
>
> that would eliminate all the code in sched_clock except one line,
>
> unsigned long long __attribute__((weak)) sched_clock(void)
> {
> return cyc2ns(sched_clocksource, clocksource_read(sched_clocksource));
> }
>
It would, but then what would that do to the sched_clock() value? It will
reset once a CLOCK_SOURCE_USE_FOR_SCHED_CLOCK clocksource comes along,
which basically means that sched_clock() then rolls back, which is worse
than simply being delayed a bit. So even if we were to use a special
sched_clocksource, it still could not be used until it was set up at
registration time.
Now we could of course add a sched_clocksource assignment in
select_clocksource(), but that's really no different than just testing
'clock' as we do today. All it does is move the flag test in to a
different path.
So, I think the current v3 is still the best solution.
WARNING: multiple messages have this Message-ID (diff)
From: Paul Mundt <lethal@linux-sh.org>
To: Daniel Walker <dwalker@fifo99.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
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 17:44:44 +0900 [thread overview]
Message-ID: <20090528084444.GA26955@linux-sh.org> (raw)
In-Reply-To: <1243441525.28705.19.camel@desktop>
On Wed, May 27, 2009 at 09:25:25AM -0700, Daniel Walker wrote:
> On Wed, 2009-05-27 at 09:15 +0900, Paul Mundt wrote:
>
> > unsigned long long __attribute__((weak)) sched_clock(void)
> > {
> > + /*
> > + * Use the current clocksource when it becomes available later in
> > + * the boot process, and ensure that it is usable for sched_clock().
> > + */
> > + if (clock && (clock->flags & CLOCK_SOURCE_USE_FOR_SCHED_CLOCK))
> > + return cyc2ns(clock, clocksource_read(clock));
> > +
> > + /* Otherwise just fall back on jiffies */
> > return (unsigned long long)(jiffies - INITIAL_JIFFIES)
>
> Do we really need all this complexity in a fast path? the jiffies
> clocksource is static and always ready. Could we instead remove the
> usage of "clock" and create a new pointer called "sched_clocksource" and
> initialize it to the jiffies clock, and allow the clocksource management
> code to update that new pointer based on the
> CLOCK_SOURCE_USE_FOR_SCHED_CLOCK flag when new clocksources are
> registered/removed/marked unstable etc..
>
> that would eliminate all the code in sched_clock except one line,
>
> unsigned long long __attribute__((weak)) sched_clock(void)
> {
> return cyc2ns(sched_clocksource, clocksource_read(sched_clocksource));
> }
>
It would, but then what would that do to the sched_clock() value? It will
reset once a CLOCK_SOURCE_USE_FOR_SCHED_CLOCK clocksource comes along,
which basically means that sched_clock() then rolls back, which is worse
than simply being delayed a bit. So even if we were to use a special
sched_clocksource, it still could not be used until it was set up at
registration time.
Now we could of course add a sched_clocksource assignment in
select_clocksource(), but that's really no different than just testing
'clock' as we do today. All it does is move the flag test in to a
different path.
So, I think the current v3 is still the best solution.
next prev parent reply other threads:[~2009-05-28 8:44 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 [this message]
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 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 9:34 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() 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=20090528084444.GA26955@linux-sh.org \
--to=lethal@linux-sh.org \
--cc=akpm@linux-foundation.org \
--cc=dwalker@fifo99.com \
--cc=hskinnemoen@atmel.com \
--cc=johnstul@linux.vnet.ibm.com \
--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=peterz@infradead.org \
--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.