On Sun, Oct 06, 2024 at 08:17:58AM +0100, David Woodhouse wrote: > From: David Woodhouse <dwmw@xxxxxxxxxxxx> > > The vmclock device addresses the problem of live migration with > precision clocks. The tolerances of a hardware counter (e.g. TSC) are > typically around ±50PPM. A guest will use NTP/PTP/PPS to discipline that > counter against an external source of 'real' time, and track the precise > frequency of the counter as it changes with environmental conditions. > > When a guest is live migrated, anything it knows about the frequency of > the underlying counter becomes invalid. It may move from a host where > the counter running at -50PPM of its nominal frequency, to a host where > it runs at +50PPM. There will also be a step change in the value of the > counter, as the correctness of its absolute value at migration is > limited by the accuracy of the source and destination host's time > synchronization. > > In its simplest form, the device merely advertises a 'disruption_marker' > which indicates that the guest should throw away any NTP synchronization > it thinks it has, and start again. > > Because the shared memory region can be exposed all the way to userspace > through the /dev/vmclock0 node, applications can still use time from a > fast vDSO 'system call', and check the disruption marker to be sure that > their timestamp is indeed truthful. > > The structure also allows for the precise time, as known by the host, to > be exposed directly to guests so that they don't have to wait for NTP to > resync from scratch. The PTP driver consumes this information if present. > Like the KVM PTP clock, this PTP driver can convert TSC-based cross > timestamps into KVM clock values. Unlike the KVM PTP clock, it does so > only when such is actually helpful. > > The values and fields are based on the nascent virtio-rtc specification, > and the intent is that a version (hopefully precisely this version) of > this structure will be included as an optional part of that spec. In the > meantime, this driver supports the simple ACPI form of the device which > is being shipped in certain commercial hypervisors (and submitted for > inclusion in QEMU). > > Signed-off-by: David Woodhouse <dwmw@xxxxxxxxxxxx> Acked-by: Richard Cochran <richardcochran@xxxxxxxxx>