linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Stultz <johnstul@us.ibm.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: Russell King <linux@arm.linux.org.uk>,
	Olof Johansson <olof@lixom.net>, Arnd Bergmann <arnd@arndb.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	Stephen Warren <swarren@nvidia.com>,
	Mike Frysinger <vapier@gentoo.org>,
	Mikael Starvik <starvik@axis.com>,
	Jesper Nilsson <jesper.nilsson@axis.com>,
	Hirokazu Takata <takata@linux-m32r.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>
Subject: Re: [PATCH 02/11] time: convert arch_gettimeoffset to a pointer
Date: Fri, 09 Nov 2012 15:02:53 -0800	[thread overview]
Message-ID: <509D8B9D.40608@us.ibm.com> (raw)
In-Reply-To: <1352408516-21988-4-git-send-email-swarren@wwwdotorg.org>

On 11/08/2012 01:01 PM, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
>
> Currently, whenever CONFIG_ARCH_USES_GETTIMEOFFSET is enabled, each
> arch core provides a single implementation of arch_gettimeoffset(). In
> many cases, different sub-architectures, different machines, or
> different timer providers exist, and so the arch ends up implementing
> arch_gettimeoffset() as a call-through-pointer anyway. Examples are
> ARM, Cris, M68K, and it's arguable that the remaining architectures,
> M32R and Blackfin, should be doing this anyway.
>
> Modify arch_gettimeoffset so that it itself is a function pointer, which
> the arch initializes. This will allow later changes to move the
> initialization of this function into individual machine support or timer
> drivers. This is particularly useful for code in drivers/clocksource
> which should rely on an arch-independant mechanism to register their
> implementation of arch_gettimeoffset().
>
> This patch also converts the Cris architecture to set arch_gettimeoffset
> directly to the final implementation in time_init(), because Cris already
> had separate time_init() functions per sub-architecture. M68K and ARM
> are converted to set arch_gettimeoffset the final implementation in later
> patches, because they already have function pointers in place for this
> purpose.
[snip]
> diff --git a/include/linux/time.h b/include/linux/time.h
> index 4d358e9..05e32a7 100644
> --- a/include/linux/time.h
> +++ b/include/linux/time.h
> @@ -142,9 +142,7 @@ void timekeeping_inject_sleeptime(struct timespec *delta);
>    * finer then tick granular time.
>    */
>   #ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
> -extern u32 arch_gettimeoffset(void);
> -#else
> -static inline u32 arch_gettimeoffset(void) { return 0; }
> +extern u32 (*arch_gettimeoffset)(void);
>   #endif
>
>   extern void do_gettimeofday(struct timeval *tv);
> diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
> index e424970..9d00ace 100644
> --- a/kernel/time/timekeeping.c
> +++ b/kernel/time/timekeeping.c
> @@ -140,6 +140,20 @@ static void tk_setup_internals(struct timekeeper *tk, struct clocksource *clock)
>   }
>
>   /* Timekeeper helper functions. */
> +
> +#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
> +u32 (*arch_gettimeoffset)(void);
> +
> +u32 gettimeoffset(void)
> +{
> +	if (likely(arch_gettimeoffset))
> +		return arch_gettimeoffset();
> +	return 0;
> +}
> +#else
> +static inline u32 gettimeoffset(void) { return 0; }
> +#endif

Minor nit-pick here, but get_arch_timeoffset() or get_arch_tickoffset() 
might be clearer, as gettimeoffset() sounds a little generic, and could 
be confused with the higher-level timekeeping_inject_offset() call.

Otherwise this looks ok to me (disclaimer: I'm back from a 4 week leave, 
so I may not have my brain plugged in all the way yet).

thanks
-john


  reply	other threads:[~2012-11-09 23:14 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-08 21:01 [RFC PATCH 00/11] arch_gettimeoffset and ARM timer rework Stephen Warren
2012-11-08 21:01 ` [PATCH] ARM: delete struct sys_timer Stephen Warren
2012-11-08 21:04   ` Stephen Warren
2012-11-08 21:01 ` [PATCH 01/11] cris: move usec/nsec conversion to do_slow_gettimeoffset Stephen Warren
2012-11-12 10:44   ` Jesper Nilsson
2012-11-08 21:01 ` [PATCH 02/11] time: convert arch_gettimeoffset to a pointer Stephen Warren
2012-11-09 23:02   ` John Stultz [this message]
2012-11-11  9:45   ` Geert Uytterhoeven
2012-11-12 10:46   ` Jesper Nilsson
2012-11-08 21:01 ` [PATCH 03/11] m68k: set arch_gettimeoffset directly Stephen Warren
2012-11-11  9:50   ` Geert Uytterhoeven
2012-11-11 11:47   ` Phil Blundell
2012-11-08 21:01 ` [PATCH 04/11] ARM: " Stephen Warren
2012-11-08 23:06   ` Ryan Mallon
2012-11-09 21:07     ` Stephen Warren
2012-11-10  3:39       ` Ryan Mallon
2012-11-08 21:01 ` [PATCH 05/11] ARM: at91: convert timer suspend/resume to clock_event_device Stephen Warren
2012-11-12 14:49   ` Jean-Christophe PLAGNIOL-VILLARD
2012-11-08 21:01 ` [PATCH 06/11] ARM: pxa: " Stephen Warren
2012-11-09  2:05   ` Eric Miao
2012-11-08 21:01 ` [PATCH 07/11] ARM: sa1100: " Stephen Warren
2012-11-08 21:01 ` [PATCH 08/11] ARM: ux500: " Stephen Warren
2012-11-08 21:01 ` [PATCH 09/11] ARM: samsung: register syscore_ops for timer resume directly Stephen Warren
2012-11-08 21:01 ` [PATCH 10/11] ARM: remove struct sys_timer suspend and resume fields Stephen Warren
2012-11-08 21:01 ` [RFC PATCH 11/11] ARM: delete struct sys_timer Stephen Warren
2012-11-09 20:55 ` [PATCH V2 " Stephen Warren
2012-11-12 14:17 ` [RFC PATCH 00/11] arch_gettimeoffset and ARM timer rework Arnd Bergmann

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=509D8B9D.40608@us.ibm.com \
    --to=johnstul@us.ibm.com \
    --cc=arnd@arndb.de \
    --cc=geert@linux-m68k.org \
    --cc=jesper.nilsson@axis.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=olof@lixom.net \
    --cc=starvik@axis.com \
    --cc=swarren@nvidia.com \
    --cc=swarren@wwwdotorg.org \
    --cc=takata@linux-m32r.org \
    --cc=tglx@linutronix.de \
    --cc=vapier@gentoo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).