From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Andy Lutomirski <luto@kernel.org>,
x86@kernel.org, Peter Zijlstra <peterz@infradead.org>,
Matt Rickard <matt@softrans.com.au>,
Stephen Boyd <sboyd@kernel.org>,
John Stultz <john.stultz@linaro.org>,
Florian Weimer <fweimer@redhat.com>,
"K. Y. Srinivasan" <kys@microsoft.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
devel@linuxdriverproject.org,
virtualization@lists.linux-foundation.org,
Paolo Bonzini <pbonzini@redhat.com>,
Arnd Bergmann <arnd@arndb.de>, Juergen Gross <jgross@suse.com>
Subject: [patch V2 06/11] x86/vdso: Collapse high resolution functions
Date: Mon, 17 Sep 2018 14:45:39 +0200 [thread overview]
Message-ID: <20180917130707.407955860@linutronix.de> (raw)
In-Reply-To: 20180917124533.329334911@linutronix.de
[-- Attachment #1: x86-vdso--Collapse-high-res-functions.patch --]
[-- Type: text/plain, Size: 2223 bytes --]
do_realtime() and do_monotonic() are now the same except for the storage
array index. Hand the index in as an argument and collapse the functions.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/entry/vdso/vclock_gettime.c | 35 +++++++----------------------------
1 file changed, 7 insertions(+), 28 deletions(-)
--- a/arch/x86/entry/vdso/vclock_gettime.c
+++ b/arch/x86/entry/vdso/vclock_gettime.c
@@ -203,35 +203,12 @@ notrace static inline u64 vgetsns(int *m
return v * gtod->mult;
}
-/* Code size doesn't matter (vdso is 4k anyway) and this is faster. */
-notrace static int __always_inline do_realtime(struct timespec *ts)
+notrace static int do_hres(clockid_t clk, struct timespec *ts)
{
- struct vgtod_ts *base = >od->basetime[CLOCK_REALTIME];
+ struct vgtod_ts *base = >od->basetime[clk];
unsigned int seq;
- u64 ns;
int mode;
-
- do {
- seq = gtod_read_begin(gtod);
- mode = gtod->vclock_mode;
- ts->tv_sec = base->sec;
- ns = base->nsec;
- ns += vgetsns(&mode);
- ns >>= gtod->shift;
- } while (unlikely(gtod_read_retry(gtod, seq)));
-
- ts->tv_sec += __iter_div_u64_rem(ns, NSEC_PER_SEC, &ns);
- ts->tv_nsec = ns;
-
- return mode;
-}
-
-notrace static int __always_inline do_monotonic(struct timespec *ts)
-{
- struct vgtod_ts *base = >od->basetime[CLOCK_MONOTONIC];
- unsigned int seq;
u64 ns;
- int mode;
do {
seq = gtod_read_begin(gtod);
@@ -276,11 +253,11 @@ notrace int __vdso_clock_gettime(clockid
{
switch (clock) {
case CLOCK_REALTIME:
- if (do_realtime(ts) == VCLOCK_NONE)
+ if (do_hres(CLOCK_REALTIME, ts) == VCLOCK_NONE)
goto fallback;
break;
case CLOCK_MONOTONIC:
- if (do_monotonic(ts) == VCLOCK_NONE)
+ if (do_hres(CLOCK_MONOTONIC, ts) == VCLOCK_NONE)
goto fallback;
break;
case CLOCK_REALTIME_COARSE:
@@ -303,7 +280,9 @@ int clock_gettime(clockid_t, struct time
notrace int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz)
{
if (likely(tv != NULL)) {
- if (unlikely(do_realtime((struct timespec *)tv) == VCLOCK_NONE))
+ struct timespec *ts = (struct timespec *) tv;
+
+ if (unlikely(do_hres(CLOCK_REALTIME, ts) == VCLOCK_NONE))
return vdso_fallback_gtod(tv, tz);
tv->tv_usec /= 1000;
}
next prev parent reply other threads:[~2018-09-17 13:09 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-17 12:45 [patch V2 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support Thomas Gleixner
2018-09-17 12:45 ` [patch V2 01/11] clocksource: Provide clocksource_arch_init() Thomas Gleixner
2018-09-17 20:05 ` John Stultz
2018-10-04 21:03 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 02/11] x86/time: Implement clocksource_arch_init() Thomas Gleixner
2018-10-04 21:04 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 03/11] x86/vdso: Enforce 64bit clocksource Thomas Gleixner
2018-10-04 21:05 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 04/11] x86/vdso: Use unsigned int consistently for vsyscall_gtod_data::seq Thomas Gleixner
2018-10-04 21:05 ` [tip:x86/vdso] x86/vdso: Use unsigned int consistently for vsyscall_gtod_data:: Seq tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 05/11] x86/vdso: Introduce and use vgtod_ts Thomas Gleixner
2018-10-04 21:06 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` Thomas Gleixner [this message]
2018-10-04 21:06 ` [tip:x86/vdso] x86/vdso: Collapse high resolution functions tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 07/11] x86/vdso: Collapse coarse functions Thomas Gleixner
2018-10-04 21:07 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 08/11] x86/vdso: Replace the clockid switch case Thomas Gleixner
2018-10-04 21:07 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 09/11] x86/vdso: Simplify the invalid vclock case Thomas Gleixner
2018-10-04 21:08 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 10/11] x86/vdso: Move cycle_last handling into the caller Thomas Gleixner
2018-10-04 21:09 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 11/11] x66/vdso: Add CLOCK_TAI support Thomas Gleixner
2018-09-30 2:56 ` Matthew Rickard
2018-10-04 21:09 ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
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=20180917130707.407955860@linutronix.de \
--to=tglx@linutronix.de \
--cc=arnd@arndb.de \
--cc=devel@linuxdriverproject.org \
--cc=fweimer@redhat.com \
--cc=jgross@suse.com \
--cc=john.stultz@linaro.org \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=matt@softrans.com.au \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=sboyd@kernel.org \
--cc=virtualization@lists.linux-foundation.org \
--cc=vkuznets@redhat.com \
--cc=x86@kernel.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).