From: Marcelo Tosatti <mtosatti@redhat.com>
To: Andy Lutomirski <luto@kernel.org>
Cc: Wanpeng Li <kernellwp@gmail.com>,
Florian Weimer <fweimer@redhat.com>,
Juergen Gross <jgross@suse.com>, Arnd Bergmann <arnd@arndb.de>,
Radim Krcmar <rkrcmar@redhat.com>,
Peter Zijlstra <peterz@infradead.org>, X86 ML <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Linux Virtualization <virtualization@lists.linux-foundation.org>,
Stephen Boyd <sboyd@kernel.org>,
John Stultz <john.stultz@linaro.org>,
devel@linuxdriverproject.org, Paolo Bonzini <pbonzini@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Matt Rickard <matt@softrans.com.au>
Subject: Re: [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support\
Date: Wed, 3 Oct 2018 16:05:04 -0300 [thread overview]
Message-ID: <20181003190500.GA23638@amt.cnet> (raw)
In-Reply-To: <20181003190026.GB21381@amt.cnet>
On Wed, Oct 03, 2018 at 04:00:29PM -0300, Marcelo Tosatti wrote:
> On Tue, Oct 02, 2018 at 10:15:49PM -0700, Andy Lutomirski wrote:
> > Hi Vitaly, Paolo, Radim, etc.,
> >
> > On Fri, Sep 14, 2018 at 5:52 AM Thomas Gleixner <tglx@linutronix.de> wrote:
> > >
> > > 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.
> > >
> >
> > I was trying to understand more of the implications of this patch
> > series, and I was again reminded that there is an entire extra copy of
> > the vclock reading code in arch/x86/kvm/x86.c. And the purpose of
> > that code is very, very opaque.
> >
> > Can one of you explain what the code is even doing? From a couple of
> > attempts to read through it, it's a whole bunch of
> > probably-extremely-buggy code that,
>
> Yes, probably.
>
> > drumroll please, tries to atomically read the TSC value and the time. And decide whether the
> > result is "based on the TSC".
>
> I think "based on the TSC" refers to whether TSC clocksource is being
> used.
>
> > And then synthesizes a TSC-to-ns
> > multiplier and shift, based on *something other than the actual
> > multiply and shift used*.
> >
> > IOW, unless I'm totally misunderstanding it, the code digs into the
> > private arch clocksource data intended for the vDSO, uses a poorly
> > maintained copy of the vDSO code to read the time (instead of doing
> > the sane thing and using the kernel interfaces for this), and
> > propagates a totally made up copy to the guest.
>
> I posted kernel interfaces for this, and it was suggested to
> instead write a "in-kernel user of pvclock data".
>
> If you can get kernel interfaces to replace that, go for it. I prefer
> kernel interfaces as well.
And cleanup patches, to make that code look nicer, are also very
welcome!
WARNING: multiple messages have this Message-ID (diff)
From: Marcelo Tosatti <mtosatti@redhat.com>
To: Andy Lutomirski <luto@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Paolo Bonzini <pbonzini@redhat.com>,
Radim Krcmar <rkrcmar@redhat.com>,
Wanpeng Li <kernellwp@gmail.com>,
LKML <linux-kernel@vger.kernel.org>, X86 ML <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>,
KY Srinivasan <kys@microsoft.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
devel@linuxdriverproject.org,
Linux Virtualization <virtualization@lists.linux-foundation.org>,
Arnd Bergmann <arnd@arndb.de>, Juergen Gross <jgross@suse.com>
Subject: Re: [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support\
Date: Wed, 3 Oct 2018 16:05:04 -0300 [thread overview]
Message-ID: <20181003190500.GA23638@amt.cnet> (raw)
In-Reply-To: <20181003190026.GB21381@amt.cnet>
On Wed, Oct 03, 2018 at 04:00:29PM -0300, Marcelo Tosatti wrote:
> On Tue, Oct 02, 2018 at 10:15:49PM -0700, Andy Lutomirski wrote:
> > Hi Vitaly, Paolo, Radim, etc.,
> >
> > On Fri, Sep 14, 2018 at 5:52 AM Thomas Gleixner <tglx@linutronix.de> wrote:
> > >
> > > 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.
> > >
> >
> > I was trying to understand more of the implications of this patch
> > series, and I was again reminded that there is an entire extra copy of
> > the vclock reading code in arch/x86/kvm/x86.c. And the purpose of
> > that code is very, very opaque.
> >
> > Can one of you explain what the code is even doing? From a couple of
> > attempts to read through it, it's a whole bunch of
> > probably-extremely-buggy code that,
>
> Yes, probably.
>
> > drumroll please, tries to atomically read the TSC value and the time. And decide whether the
> > result is "based on the TSC".
>
> I think "based on the TSC" refers to whether TSC clocksource is being
> used.
>
> > And then synthesizes a TSC-to-ns
> > multiplier and shift, based on *something other than the actual
> > multiply and shift used*.
> >
> > IOW, unless I'm totally misunderstanding it, the code digs into the
> > private arch clocksource data intended for the vDSO, uses a poorly
> > maintained copy of the vDSO code to read the time (instead of doing
> > the sane thing and using the kernel interfaces for this), and
> > propagates a totally made up copy to the guest.
>
> I posted kernel interfaces for this, and it was suggested to
> instead write a "in-kernel user of pvclock data".
>
> If you can get kernel interfaces to replace that, go for it. I prefer
> kernel interfaces as well.
And cleanup patches, to make that code look nicer, are also very
welcome!
next prev parent reply other threads:[~2018-10-03 19:05 UTC|newest]
Thread overview: 157+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-14 12:50 [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support Thomas Gleixner
2018-09-14 12:50 ` [patch 01/11] clocksource: Provide clocksource_arch_init() Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 02/11] x86/time: Implement clocksource_arch_init() Thomas Gleixner
2018-09-14 15:45 ` Vitaly Kuznetsov
2018-09-14 15:45 ` Vitaly Kuznetsov
2018-09-15 6:05 ` Thomas Gleixner
2018-09-15 6:05 ` Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 03/11] x86/vdso: Enforce 64bit clocksource Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 04/11] x86/vdso: Use unsigned int consistently for vsyscall_gtod_data::seq Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 05/11] x86/vdso: Introduce and use vgtod_ts Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 06/11] x86/vdso: Collapse high resolution functions Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 07/11] x86/vdso: Collapse coarse functions Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 08/11] x86/vdso: Replace the clockid switch case Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 09/11] x86/vdso: Simplify the invalid vclock case Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-17 19:25 ` Andy Lutomirski
2018-09-17 19:25 ` Andy Lutomirski
2018-09-17 20:12 ` John Stultz
2018-09-18 7:52 ` Thomas Gleixner
2018-09-18 8:30 ` Peter Zijlstra
2018-09-18 8:30 ` Peter Zijlstra
2018-09-18 8:52 ` Thomas Gleixner
2018-09-18 10:06 ` Thomas Gleixner
2018-09-18 10:06 ` Thomas Gleixner
2018-09-18 10:41 ` Thomas Gleixner
2018-09-18 10:41 ` Thomas Gleixner
2018-09-18 12:48 ` Peter Zijlstra
2018-09-18 12:48 ` Peter Zijlstra
2018-09-18 13:23 ` Thomas Gleixner
2018-09-18 13:23 ` Thomas Gleixner
2018-09-18 13:38 ` Peter Zijlstra
2018-09-18 13:38 ` Peter Zijlstra
2018-09-18 15:52 ` Thomas Gleixner
2018-09-18 15:52 ` Thomas Gleixner
2018-09-27 14:41 ` Thomas Gleixner
2018-09-27 14:41 ` Thomas Gleixner
2018-09-18 8:52 ` Thomas Gleixner
2018-09-18 14:01 ` Andy Lutomirski
2018-09-18 22:46 ` Thomas Gleixner
2018-09-18 22:46 ` Thomas Gleixner
2018-09-18 23:03 ` Andy Lutomirski
2018-09-18 23:16 ` Thomas Gleixner
2018-09-27 14:36 ` Thomas Gleixner
2018-09-27 14:36 ` Thomas Gleixner
2018-09-27 14:39 ` Andy Lutomirski
2018-09-27 14:39 ` Andy Lutomirski
2018-09-18 23:16 ` Thomas Gleixner
2018-09-18 23:03 ` Andy Lutomirski
2018-09-19 9:08 ` Rasmus Villemoes
2018-09-19 13:29 ` Thomas Gleixner
2018-09-19 13:29 ` Thomas Gleixner
2018-09-18 14:01 ` Andy Lutomirski
2018-09-18 7:52 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 10/11] x86/vdso: Move cycle_last handling into the caller Thomas Gleixner
2018-09-14 15:26 ` Vitaly Kuznetsov
2018-09-14 15:26 ` Vitaly Kuznetsov
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 12:50 ` [patch 11/11] x66/vdso: Add CLOCK_TAI support Thomas Gleixner
2018-09-14 12:50 ` Thomas Gleixner
2018-09-14 14:04 ` Andy Lutomirski
2018-09-14 14:04 ` Andy Lutomirski
2018-09-14 14:27 ` Thomas Gleixner
2018-09-14 14:27 ` Thomas Gleixner
2018-09-14 14:59 ` Andy Lutomirski
2018-09-16 9:39 ` Thomas Gleixner
2018-09-16 9:39 ` Thomas Gleixner
2018-09-14 14:59 ` Andy Lutomirski
2018-09-14 12:56 ` [patch 00/11] x86/vdso: Cleanups, simmplifications and " Florian Weimer
2018-09-14 13:05 ` Thomas Gleixner
2018-09-14 13:06 ` Florian Weimer
2018-09-14 13:19 ` Thomas Gleixner
2018-09-14 13:19 ` Thomas Gleixner
2018-09-14 13:05 ` Thomas Gleixner
2018-09-14 13:09 ` Peter Zijlstra
2018-09-14 13:09 ` Peter Zijlstra
2018-09-14 14:22 ` Arnd Bergmann
2018-09-17 13:00 ` Thomas Gleixner
2018-09-17 13:00 ` Thomas Gleixner
2018-09-24 21:08 ` Arnd Bergmann
2018-09-24 21:08 ` Arnd Bergmann
2018-09-14 14:22 ` Arnd Bergmann
2018-10-03 5:15 ` Andy Lutomirski
2018-10-03 5:15 ` Andy Lutomirski
2018-10-03 9:22 ` Vitaly Kuznetsov
2018-10-03 9:22 ` Vitaly Kuznetsov
2018-10-03 10:20 ` Andy Lutomirski
2018-10-03 10:20 ` Andy Lutomirski
2018-10-03 12:01 ` Vitaly Kuznetsov
2018-10-03 14:20 ` Andy Lutomirski
2018-10-03 14:20 ` Andy Lutomirski
2018-10-03 15:10 ` Thomas Gleixner
2018-10-03 16:18 ` Andy Lutomirski
2018-10-03 16:18 ` Andy Lutomirski
2018-10-03 15:10 ` Thomas Gleixner
2018-10-03 12:01 ` Vitaly Kuznetsov
2018-10-03 19:06 ` Marcelo Tosatti
2018-10-04 7:54 ` Vitaly Kuznetsov
2018-10-04 8:11 ` Peter Zijlstra
2018-10-04 8:11 ` Peter Zijlstra
2018-10-04 14:00 ` Andy Lutomirski
2018-10-04 14:00 ` Andy Lutomirski
2018-10-04 19:31 ` Peter Zijlstra
2018-10-04 19:31 ` Peter Zijlstra
2018-10-04 20:05 ` Andy Lutomirski
2018-10-04 20:05 ` Andy Lutomirski
2018-10-04 22:15 ` Andy Lutomirski
2018-10-04 22:15 ` Andy Lutomirski
2018-10-06 20:27 ` Marcelo Tosatti
2018-10-06 20:27 ` Marcelo Tosatti
2018-10-06 22:28 ` Andy Lutomirski
2018-10-06 22:28 ` Andy Lutomirski
2018-10-08 15:26 ` Marcelo Tosatti
2018-10-08 17:38 ` Andy Lutomirski
2018-10-08 19:36 ` Marcelo Tosatti
2018-10-08 19:36 ` Marcelo Tosatti
2018-10-09 20:09 ` Andy Lutomirski
2018-10-11 22:27 ` Marcelo Tosatti
2018-10-11 22:27 ` Marcelo Tosatti
2018-10-11 23:00 ` Andy Lutomirski
2018-10-11 23:00 ` Andy Lutomirski
2018-10-15 13:39 ` Marcelo Tosatti
2018-10-15 13:39 ` Marcelo Tosatti
2018-10-09 20:09 ` Andy Lutomirski
2018-10-08 17:38 ` Andy Lutomirski
2018-10-08 15:26 ` Marcelo Tosatti
2018-10-06 20:49 ` Marcelo Tosatti
2018-10-06 20:49 ` Marcelo Tosatti
2018-10-04 12:00 ` Paolo Bonzini
2018-10-04 12:00 ` Paolo Bonzini
2018-10-04 14:04 ` Andy Lutomirski
2018-10-04 14:04 ` Andy Lutomirski
2018-10-05 21:18 ` Marcelo Tosatti
2018-10-05 21:18 ` Marcelo Tosatti
2018-10-04 7:54 ` Vitaly Kuznetsov
2018-10-03 19:06 ` Marcelo Tosatti
2018-10-03 19:00 ` Marcelo Tosatti
2018-10-03 19:05 ` Marcelo Tosatti [this message]
2018-10-03 19:05 ` [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support\ Marcelo Tosatti
2018-10-03 22:32 ` [patch 00/11] x86/vdso: Cleanups, simmplifications and CLOCK_TAI support Andy Lutomirski
2018-10-03 22:32 ` Andy Lutomirski
2018-10-04 16:37 ` Marcelo Tosatti
2018-10-04 17:08 ` Andy Lutomirski
2018-10-04 17:08 ` Andy Lutomirski
2018-10-04 17:28 ` Vitaly Kuznetsov
2018-10-04 17:28 ` Vitaly Kuznetsov
2018-10-04 16:37 ` Marcelo Tosatti
2018-10-03 19:00 ` Marcelo Tosatti
2018-10-04 20:32 ` Andy Lutomirski
2018-10-04 20:32 ` Andy Lutomirski
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=20181003190500.GA23638@amt.cnet \
--to=mtosatti@redhat.com \
--cc=arnd@arndb.de \
--cc=devel@linuxdriverproject.org \
--cc=fweimer@redhat.com \
--cc=jgross@suse.com \
--cc=john.stultz@linaro.org \
--cc=kernellwp@gmail.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=rkrcmar@redhat.com \
--cc=sboyd@kernel.org \
--cc=tglx@linutronix.de \
--cc=virtualization@lists.linux-foundation.org \
--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.