All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Stultz <johnstul@us.ibm.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: linux-arch@vger.kernel.org,
	Jesper Nilsson <jesper.nilsson@axis.com>,
	Russell King <linux@arm.linux.org.uk>,
	Arnd Bergmann <arnd@arndb.de>,
	Hirokazu Takata <takata@linux-m32r.org>,
	linux-kernel@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Mikael Starvik <starvik@axis.com>,
	Mike Frysinger <vapier@gentoo.org>,
	Olof Johansson <olof@lixom.net>,
	Stephen Warren <swarren@nvidia.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-arm-kernel@lists.infradead.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

WARNING: multiple messages have this Message-ID (diff)
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)
Message-ID: <20121109230253.5pobtfh97njJAUnYIBxDyxpwQWBf2q7iDj_IVa4f1zc@z> (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


WARNING: multiple messages have this Message-ID (diff)
From: johnstul@us.ibm.com (John Stultz)
To: linux-arm-kernel@lists.infradead.org
Subject: [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:02 UTC|newest]

Thread overview: 65+ 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 ` Stephen Warren
2012-11-08 21:01 ` Stephen Warren
2012-11-08 21:01 ` [PATCH] ARM: delete struct sys_timer Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:04   ` 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-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-12 10:44   ` Jesper Nilsson
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-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-09 23:02   ` John Stultz [this message]
2012-11-09 23:02     ` John Stultz
2012-11-09 23:02     ` John Stultz
2012-11-11  9:45   ` Geert Uytterhoeven
2012-11-11  9:45     ` Geert Uytterhoeven
2012-11-12 10:46   ` Jesper Nilsson
2012-11-12 10:46     ` Jesper Nilsson
2012-11-08 21:01 ` [PATCH 03/11] m68k: set arch_gettimeoffset directly Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-11  9:50   ` Geert Uytterhoeven
2012-11-11  9:50     ` Geert Uytterhoeven
2012-11-11 11:47   ` Phil Blundell
2012-11-11 11:47     ` Phil Blundell
2012-11-08 21:01 ` [PATCH 04/11] ARM: " Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 23:06   ` Ryan Mallon
2012-11-08 23:06     ` Ryan Mallon
2012-11-09 21:07     ` Stephen Warren
2012-11-09 21:07       ` Stephen Warren
2012-11-10  3:39       ` Ryan Mallon
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-08 21:01   ` Stephen Warren
2012-11-12 14:49   ` Jean-Christophe PLAGNIOL-VILLARD
2012-11-12 14:49     ` Jean-Christophe PLAGNIOL-VILLARD
2012-11-12 14:49     ` Jean-Christophe PLAGNIOL-VILLARD
2012-11-08 21:01 ` [PATCH 06/11] ARM: pxa: " Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-09  2:05   ` Eric Miao
2012-11-09  2:05     ` Eric Miao
2012-11-08 21:01 ` [PATCH 07/11] ARM: sa1100: " Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-08 21:01 ` [PATCH 08/11] ARM: ux500: " Stephen Warren
2012-11-08 21:01   ` 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   ` 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   ` Stephen Warren
2012-11-08 21:01 ` [RFC PATCH 11/11] ARM: delete struct sys_timer Stephen Warren
2012-11-08 21:01   ` Stephen Warren
2012-11-09 20:55 ` [PATCH V2 " Stephen Warren
2012-11-09 20:55   ` Stephen Warren
2012-11-12 14:17 ` [RFC PATCH 00/11] arch_gettimeoffset and ARM timer rework Arnd Bergmann
2012-11-12 14:17   ` 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 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.