From: David Vrabel <david.vrabel@xxxxxxxxxx>
All the virtualized platforms (KVM, lguest and Xen) have persistent
wallclocks that have more than one second of precision.
read_persistent_wallclock() and update_persistent_wallclock() allow
for nanosecond precision but their implementation on x86 with
x86_platform.get/set_wallclock() only allows for one second precision.
This means guests may see a wallclock time that is off by up to 1
second.
Make set_wallclock() and get_wallclock() take a struct timespec
parameter (which allows for nanosecond precision) so KVM and Xen
guests may start with a more accurate wallclock time and a Xen dom0
can maintain a more accurate wallclock for guests.
Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
---
arch/x86/include/asm/mc146818rtc.h | 4 ++--
arch/x86/include/asm/x86_init.h | 6 ++++--
arch/x86/kernel/kvmclock.c | 9 +++------
arch/x86/kernel/rtc.c | 17 +++++++----------
arch/x86/lguest/boot.c | 4 ++--
arch/x86/platform/efi/efi.c | 10 ++++++----
arch/x86/xen/time.c | 19 ++++++-------------
include/linux/efi.h | 4 ++--