Date: Sat, 21 Oct 2017 16:15:53 -0600 From: Ian Lepore <ian@freebsd.org> To: Michael Voorhis <mvoorhis@mcvau.net> Cc: Boris Samorodov <bsam@passap.ru>, freebsd-current@FreeBSD.org, freebsd-virtualization@FreeBSD.org Subject: Re: host, bhyve vm and ntpd Message-ID: <1508624153.1383.107.camel@freebsd.org> In-Reply-To: <23019.46875.929719.481108@atom.mcvau.net> References: <2931f1cc-6574-b58d-4b94-5f77fa5cdb85@passap.ru> <1508512327.1383.55.camel@freebsd.org> <39bf2426-2edf-d485-7c81-519e931154be@passap.ru> <bf8eae88-ee44-58d5-bb3a-565a0314fdfe@passap.ru> <1508517160.1383.63.camel@freebsd.org> <76ff7afb-3d3a-96f6-1275-89472ff5683d@passap.ru> <1508522667.1383.69.camel@freebsd.org> <30992c14-7b78-ab9f-5693-931e6ca41f1b@passap.ru> <1508523696.1383.75.camel@freebsd.org> <23019.46875.929719.481108@atom.mcvau.net>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On Sat, 2017-10-21 at 17:07 -0400, Michael Voorhis wrote:
> Ian Lepore writes:
> >
> > Beyond that, I'm not sure what else to try. It might be necessary to
> > get some bhyve developers involved (I know almost nothing about it).
> NTPD behaves more normally on uniprocessor VMs.
>
> A FreeBSD bhyve-guest running on a freebsd host will select a
> different timecounter depending on whether it is a multiprocessor or a
> uniprocessor. My uniprocessor bhyve-vm selected TSC-low as the best
> timecounter in a uniprocessor. NTP functions there as expected.
>
> kern.timecounter.choice: TSC-low(1000) ACPI-fast(900) HPET(950) i8254(0) dummy(-1000000)
> kern.timecounter.hardware: TSC-low
>
> The very same VM, when given two total CPUs, selected HPET (if I
> recall) and the timekeeping with NTPD was unreliable, with many
> step-resets to the clock.
>
Hmm, I just had glance at the code in sys/amd64/vmm/io/vhpet.c and it
looks right. I wonder if this is just a simple roundoff error in
converting between 10.0MHz and SBT units? If so, that could be wished
away easily by using a power-of-2 frequency for the virtual HPET. I
wonder if the attached patch is all that's needed?
-- Ian
[-- Attachment #2 --]
Index: sys/amd64/vmm/io/vhpet.c
===================================================================
--- sys/amd64/vmm/io/vhpet.c (revision 324176)
+++ sys/amd64/vmm/io/vhpet.c (working copy)
@@ -51,7 +51,7 @@ __FBSDID("$FreeBSD$");
static MALLOC_DEFINE(M_VHPET, "vhpet", "bhyve virtual hpet");
-#define HPET_FREQ 10000000 /* 10.0 Mhz */
+#define HPET_FREQ 16777216 /* 16.7 (2^24) Mhz */
#define FS_PER_S 1000000000000000ul
/* Timer N Configuration and Capabilities Register */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1508624153.1383.107.camel>
