KVM x86/xen: add an override for PVCLOCK_TSC_STABLE_BIT
authorPaul Durrant <pdurrant@amazon.com>
Thu, 2 Nov 2023 16:21:28 +0000 (16:21 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 7 Dec 2023 23:52:57 +0000 (15:52 -0800)
commit6d72283526090850274d065cd5d60af732cc5fc8
tree68e4d46d6466c59e8b528cf468691d0b734da30b
parente9e60c82fe391d04db55a91c733df4a017c28b2f
KVM x86/xen: add an override for PVCLOCK_TSC_STABLE_BIT

Unless explicitly told to do so (by passing 'clocksource=tsc' and
'tsc=stable:socket', and then jumping through some hoops concerning
potential CPU hotplug) Xen will never use TSC as its clocksource.
Hence, by default, a Xen guest will not see PVCLOCK_TSC_STABLE_BIT set
in either the primary or secondary pvclock memory areas. This has
led to bugs in some guest kernels which only become evident if
PVCLOCK_TSC_STABLE_BIT *is* set in the pvclocks. Hence, to support
such guests, give the VMM a new Xen HVM config flag to tell KVM to
forcibly clear the bit in the Xen pvclocks.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
Link: https://lore.kernel.org/r/20231102162128.2353459-1-paul@xen.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Documentation/virt/kvm/api.rst
arch/x86/kvm/x86.c
arch/x86/kvm/xen.c
include/uapi/linux/kvm.h