On Mon, May 02, 2016 at 11:46:31AM -0700, Ngie Cooper (yaneurabeya) wrote: > > > On May 2, 2016, at 09:15, Roger Pau Monné <roy...@freebsd.org> wrote: > > > > Author: royger > > Date: Mon May 2 16:15:28 2016 > > New Revision: 298929 > > URL: https://svnweb.freebsd.org/changeset/base/298929 > > > > Log: > > xen/time: allow Dom0 to set the host time > > > > Dom0 should be able to set the host time. This is implemented by first > > writing to the RTC (as would be done on bare metal), and then using the > > XENPF_settime64 hypercall in order to force Xen to update the wallclock > > shared page of all domains. > > > > Sponsored by: Citrix Systems R&D > > > > Modified: > > head/sys/dev/xen/timer/timer.c > > > > Modified: head/sys/dev/xen/timer/timer.c > > ============================================================================== > > --- head/sys/dev/xen/timer/timer.c Mon May 2 16:14:55 2016 > > (r298928) > > +++ head/sys/dev/xen/timer/timer.c Mon May 2 16:15:28 2016 > > (r298929) > > @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); > > #include <xen/hypervisor.h> > > #include <xen/interface/io/xenbus.h> > > #include <xen/interface/vcpu.h> > > +#include <xen/error.h> > > > > #include <machine/cpu.h> > > #include <machine/cpufunc.h> > > @@ -63,6 +64,8 @@ __FBSDID("$FreeBSD$"); > > > > #include <dev/xen/timer/timer.h> > > > > +#include <isa/rtc.h> > > + > > #include "clock_if.h" > > > > static devclass_t xentimer_devclass; > > @@ -211,11 +214,32 @@ xen_fetch_uptime(struct timespec *ts) > > static int > > xentimer_settime(device_t dev __unused, struct timespec *ts) > > { > > + struct xen_platform_op settime; > > + int ret; > > + > > /* > > * Don't return EINVAL here; just silently fail if the domain isn't > > * privileged enough to set the TOD. > > */ > > - return (0); > > + if (!xen_initial_domain()) > > + return (0); > > + > > + /* Set the native RTC. */ > > + atrtc_set(ts); > > + > > + settime.cmd = XENPF_settime64; > > + settime.u.settime64.mbz = 0; > > + settime.u.settime64.secs = ts->tv_sec; > > + settime.u.settime64.nsecs = ts->tv_nsec; > > + settime.u.settime64.system_time = > > + xen_fetch_vcpu_time(DPCPU_GET(vcpu_info)); > > + > > + ret = HYPERVISOR_platform_op(&settime); > > + ret = ret != 0 ? xen_translate_error(ret) : 0; > > + if (ret != 0 && bootverbose) > > + device_printf(dev, "failed to set Xen PV clock: %d\n", ret); > > + > > + return (ret); > > } > > This broke the build on i386 with clang: > https://jenkins.freebsd.org/job/FreeBSD_HEAD_i386/3028/
Should be fixed in 298971. Roger. _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"