All of lore.kernel.org
 help / color / mirror / Atom feed
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 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support
Date: Mon, 17 Sep 2018 14:45:33 +0200	[thread overview]
Message-ID: <20180917124533.329334911@linutronix.de> (raw)

Matt attempted to add CLOCK_TAI support to the VDSO clock_gettime()
implementation, which extended the clockid switch case and added yet
another slightly different copy of the same code.

Especially the extended switch case is problematic as the compiler tends to
generate a jump table which then requires to use retpolines. If jump tables
are disabled it adds yet another conditional to the existing maze.

This series takes a different approach by consolidating the almost
identical functions into one implementation for high resolution clocks and
one for the coarse grained clock ids by storing the base data for each
clock id in an array which is indexed by the clock id.

This completely eliminates the switch case and allows further
simplifications of the code base, which at the end all together gain a few
cycles performance or at least stay on par with todays code. The resulting
performance depends heavily on the micro architecture and the compiler.

Changes vs. V1:

  - Fix the VCLOCK_MAX sanity check
  - Remove the magic clock masking and extend the storage array

Thanks,

        tglx

8<-------------------
 arch/x86/Kconfig                        |    1 
 arch/x86/entry/vdso/vclock_gettime.c    |  199 ++++++++------------------------
 arch/x86/entry/vsyscall/vsyscall_gtod.c |   55 ++++----
 arch/x86/include/asm/vgtod.h            |   42 +++---
 arch/x86/kernel/time.c                  |   22 +++
 include/linux/clocksource.h             |    5 
 kernel/time/Kconfig                     |    4 
 kernel/time/clocksource.c               |    2 
 8 files changed, 140 insertions(+), 190 deletions(-)




             reply	other threads:[~2018-09-17 13:09 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-17 12:45 Thomas Gleixner [this message]
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 01/11] " Thomas Gleixner
2018-09-17 12:45 ` [patch V2 02/11] x86/time: Implement clocksource_arch_init() Thomas Gleixner
2018-09-17 12:45 ` 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-09-17 12:45 ` 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 04/11] x86/vdso: Use unsigned int consistently for vsyscall_gtod_data::seq Thomas Gleixner
2018-09-17 12:45 ` [patch V2 05/11] x86/vdso: Introduce and use vgtod_ts Thomas Gleixner
2018-09-17 12:45 ` Thomas Gleixner
2018-10-04 21:06   ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 06/11] x86/vdso: Collapse high resolution functions Thomas Gleixner
2018-10-04 21:06   ` [tip:x86/vdso] " tip-bot for Thomas Gleixner
2018-09-17 12:45 ` [patch V2 06/11] " 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 07/11] " 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 08/11] " 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 09/11] " Thomas Gleixner
2018-09-17 12:45 ` [patch V2 10/11] x86/vdso: Move cycle_last handling into the caller Thomas Gleixner
2018-09-17 12:45 ` 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
2018-09-17 12:45 ` [patch V2 11/11] " Thomas Gleixner
2018-09-17 12:45 [patch V2 00/11] x86/vdso: Cleanups, simmplifications and " 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=20180917124533.329334911@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 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.