From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/3] xen/arm: set the system time in Xen via the XENPF_settime hypercall
Date: Mon, 09 Nov 2015 17:10:13 +0100 [thread overview]
Message-ID: <22638556.UuzKE0hp21@wuerfel> (raw)
In-Reply-To: <alpine.DEB.2.02.1511061510190.23825@kaball.uk.xensource.com>
On Monday 09 November 2015 14:10:22 Stefano Stabellini wrote:
> On Thu, 5 Nov 2015, Arnd Bergmann wrote:
> > On Thursday 05 November 2015 17:09:45 Stefano Stabellini wrote:
> > > + now = __current_kernel_time();
> >
> > We don't have __current_kernel_time64() yet, but it is trivial
> > to add, just follow the example of
> > current_kernel_time()/current_kernel_time64() and convert the
> > existing __current_kernel_time() function into a static
> > inline wrapper for the new __current_kernel_time64().
>
> All right. I guess something like:
>
> struct timespec64 __current_kernel_time64(void)
> {
> struct timekeeper *tk = &tk_core.timekeeper;
>
> return tk_xtime(tk);
> }
Yes, exactly.
Just to make sure that this is actually the correct interface
that you want to call:
__current_kernel_time{,64}() is the fastest interface we have
to get an approximation of the current time, while ignoring
all of the locking.
Is is possible that you instead want ktime_get_real_ts64(),
which gives you the time as precise as the kernel knows it,
but uses locking?
> > > + /*
> > > + * We only take the expensive HV call when the clock was set
> > > + * or when the 11 minutes RTC synchronization time elapsed.
> > > + */
> > > + if (!was_set && timespec_compare(&now, &next_sync) < 0)
> > > + return NOTIFY_OK;
> > > +
> > > + op.interface_version = XENPF_INTERFACE_VERSION;
> > > + op.cmd = XENPF_settime;
> > > + op.u.settime.secs = now.tv_sec;
> > > + op.u.settime.nsecs = now.tv_nsec;
> > > + op.u.settime.system_time = arch_timer_read_counter();
> > > + printk("GTOD: Setting to %ld.%ld at %lld\n",
> > > + (long)op.u.settime.secs,
> > > + (long)op.u.settime.nsecs,
> > > + (long long)op.u.settime.system_time);
> > > + (void)HYPERVISOR_dom0_op(&op);
> >
> > I guess we will also need a XENPF_settime64 interface, but at
> > least we can get away with implementing only that one on ARM,
> > while x86 will have to support both the 32-bit and 64-bit
> > based variant.
>
> We already have XENPF_settime64, I'll just use it instead.
Ok, great! Then we just need to find a volunteer who can
do the same thing on x86, with the fallback to XENPF_settime
that they need for older hosts.
Arnd
next prev parent reply other threads:[~2015-11-09 16:10 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-05 17:09 [PATCH 0/3] Xen wallclock on arm and arm64 Stefano Stabellini
2015-11-05 17:09 ` [PATCH 1/3] xen/arm: introduce xen_read_wallclock Stefano Stabellini
2015-11-05 18:53 ` Arnd Bergmann
2015-11-06 15:09 ` Stefano Stabellini
2015-11-06 15:56 ` Arnd Bergmann
2015-11-09 13:53 ` Stefano Stabellini
2015-11-09 16:16 ` Arnd Bergmann
2015-11-09 17:14 ` Stefano Stabellini
2015-11-09 20:42 ` Arnd Bergmann
2015-11-06 12:26 ` Mark Rutland
2015-11-06 14:34 ` Stefano Stabellini
2015-11-05 17:09 ` [PATCH 2/3] xen/arm: introduce HYPERVISOR_dom0_op on arm and arm64 Stefano Stabellini
2015-11-05 17:21 ` [Xen-devel] " Jan Beulich
2015-11-06 14:45 ` Stefano Stabellini
2015-11-05 17:09 ` [PATCH 3/3] xen/arm: set the system time in Xen via the XENPF_settime hypercall Stefano Stabellini
2015-11-05 17:45 ` [Xen-devel] " David Vrabel
2015-11-06 14:59 ` Stefano Stabellini
2015-11-05 18:58 ` Arnd Bergmann
2015-11-09 14:10 ` Stefano Stabellini
2015-11-09 16:10 ` Arnd Bergmann [this message]
2015-11-09 17:17 ` Stefano Stabellini
2015-11-09 17:42 ` Stefano Stabellini
2015-11-09 20:45 ` 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=22638556.UuzKE0hp21@wuerfel \
--to=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.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