From: john stultz <johnstul@us.ibm.com>
To: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
Thomas Gleixner <tglx@linutronix.de>,
Magnus Damm <magnus.damm@gmail.com>
Subject: Re: [RFC][patch 3/5] remove clocksource inline functions
Date: Tue, 21 Jul 2009 15:03:55 -0700 [thread overview]
Message-ID: <1248213835.3298.112.camel@localhost> (raw)
In-Reply-To: <20090721192059.454927873@de.ibm.com>
On Tue, 2009-07-21 at 21:17 +0200, Martin Schwidefsky wrote:
> plain text document attachment (clocksource-inline.diff)
> From: Martin Schwidefsky <schwidefsky@de.ibm.com>
>
> Remove clocksource_read, clocksource_enable and clocksource_disable
> inline functions. No functional change.
>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: john stultz <johnstul@us.ibm.com>
> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
> ---
> kernel/time/clocksource.c | 18 ++++++++++++------
> kernel/time/timekeeping.c | 13 ++++++-------
> 2 files changed, 18 insertions(+), 13 deletions(-)
There's a patch Magnus has that (should be) queued for 2.6.31 that makes
unbreaks the mult_orig manipulations enable/disable does. I suspect this
will cause this inline function removing to not be that much of a
benefit.
thanks
-john
> Index: linux-2.6/kernel/time/clocksource.c
> ===================================================================
> --- linux-2.6.orig/kernel/time/clocksource.c
> +++ linux-2.6/kernel/time/clocksource.c
> @@ -517,7 +517,7 @@ void clocksource_forward_now(void)
> cycle_t cycle_now, cycle_delta;
> s64 nsec;
>
> - cycle_now = clocksource_read(clock);
> + cycle_now = clock->read(clock);
> cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
> clock->cycle_last = cycle_now;
>
> @@ -567,16 +567,19 @@ void change_clocksource(void)
>
> clocksource_forward_now();
>
> - if (clocksource_enable(new))
> + if (new->enable && !new->enable(new))
> return;
>
> + /* save mult_orig after successful enable */
> + new->mult_orig = new->mult;
> +
> new->raw_time = clock->raw_time;
> old = clock;
> clock = new;
> - clocksource_disable(old);
> + if (old->disable)
> + old->disable(old);
mult_orig needs to be saved to mult at this point.
> - clock->cycle_last = 0;
> - clock->cycle_last = clocksource_read(clock);
> + clock->cycle_last = clock->read(clock);
> clock->error = 0;
> clock->xtime_nsec = 0;
> clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH);
> @@ -655,7 +658,10 @@ void clocksource_unregister(struct clock
> void __init clocksource_init(void)
> {
> clock = clocksource_get_next();
> - clocksource_enable(clock);
> + if (clock->enable)
> + clock->enable(clock);
> + /* save mult_orig on enable */
> + clock->mult_orig = clock->mult;
> clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH);
> clock->cycle_last = clock->read(clock);
> }
> Index: linux-2.6/kernel/time/timekeeping.c
> ===================================================================
> --- linux-2.6.orig/kernel/time/timekeeping.c
> +++ linux-2.6/kernel/time/timekeeping.c
> @@ -78,7 +78,7 @@ void getnstimeofday(struct timespec *ts)
> *ts = xtime;
>
> /* read clocksource: */
> - cycle_now = clocksource_read(clock);
> + cycle_now = clock->read(clock);
>
> /* calculate the delta since the last update_wall_time: */
> cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
> @@ -110,7 +110,7 @@ ktime_t ktime_get(void)
> nsecs = xtime.tv_nsec + wall_to_monotonic.tv_nsec;
>
> /* read clocksource: */
> - cycle_now = clocksource_read(clock);
> + cycle_now = clock->read(clock);
>
> /* calculate the delta since the last update_wall_time: */
> cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
> @@ -150,7 +150,7 @@ void ktime_get_ts(struct timespec *ts)
> tomono = wall_to_monotonic;
>
> /* read clocksource: */
> - cycle_now = clocksource_read(clock);
> + cycle_now = clock->read(clock);
>
> /* calculate the delta since the last update_wall_time: */
> cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
> @@ -296,7 +296,7 @@ void getrawmonotonic(struct timespec *ts
> seq = read_seqbegin(&xtime_lock);
>
> /* read clocksource: */
> - cycle_now = clocksource_read(clock);
> + cycle_now = clock->read(clock);
>
> /* calculate the delta since the last update_wall_time: */
> cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
> @@ -396,8 +396,7 @@ static int timekeeping_resume(struct sys
> }
> update_xtime_cache(0);
> /* re-base the last cycle value */
> - clock->cycle_last = 0;
> - clock->cycle_last = clocksource_read(clock);
> + clock->cycle_last = clock->read(clock);
> clock->error = 0;
> timekeeping_suspended = 0;
> write_sequnlock_irqrestore(&xtime_lock, flags);
> @@ -464,7 +463,7 @@ void update_wall_time(void)
> return;
>
> #ifdef CONFIG_GENERIC_TIME
> - offset = (clocksource_read(clock) - clock->cycle_last) & clock->mask;
> + offset = (clock->read(clock) - clock->cycle_last) & clock->mask;
> #else
> offset = clock->cycle_interval;
> #endif
>
> --
> blue skies,
> Martin.
>
> "Reality continues to ruin my life." - Calvin.
>
next prev parent reply other threads:[~2009-07-21 22:04 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-21 19:17 [RFC][patch 0/5] clocksource cleanup / improvement Martin Schwidefsky
2009-07-21 19:17 ` [RFC][patch 1/5] move clock source related code to clocksource.c Martin Schwidefsky
2009-07-21 19:50 ` Daniel Walker
2009-07-21 21:55 ` Martin Schwidefsky
2009-07-21 22:00 ` john stultz
2009-07-22 7:25 ` Martin Schwidefsky
2009-07-22 17:45 ` john stultz
2009-07-23 0:28 ` john stultz
2009-07-23 7:53 ` Martin Schwidefsky
2009-07-23 10:52 ` Martin Schwidefsky
2009-07-25 0:08 ` john stultz
2009-07-27 11:55 ` Martin Schwidefsky
2009-07-23 7:23 ` Martin Schwidefsky
2009-07-21 19:17 ` [RFC][patch 2/5] cleanup clocksource selection Martin Schwidefsky
2009-07-21 22:07 ` john stultz
2009-07-21 19:17 ` [RFC][patch 3/5] remove clocksource inline functions Martin Schwidefsky
2009-07-21 19:48 ` Daniel Walker
2009-07-21 22:03 ` john stultz [this message]
2009-07-22 7:33 ` Martin Schwidefsky
2009-07-21 19:17 ` [RFC][patch 4/5] clocksource_read/clocksource_read_raw " Martin Schwidefsky
2009-07-21 22:01 ` john stultz
2009-07-22 7:29 ` Martin Schwidefsky
2009-07-21 19:17 ` [RFC][patch 5/5] update clocksource with stop_machine Martin Schwidefsky
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=1248213835.3298.112.camel@localhost \
--to=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mingo@elte.hu \
--cc=schwidefsky@de.ibm.com \
--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.