KVM: x86/xen: Allow XEN_RUNSTATE_UPDATE flag behaviour to be configured
authorDavid Woodhouse <dwmw@amazon.co.uk>
Sun, 27 Nov 2022 12:22:10 +0000 (12:22 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 30 Nov 2022 15:59:37 +0000 (10:59 -0500)
commitd8ba8ba4c801b794f47852a6f1821ea48f83b5d1
treecf8743dc182b1ca2b49a8c619e834b4748b2639e
parent5ec3289b31ab9bb209be59cee360aac4b03f320a
KVM: x86/xen: Allow XEN_RUNSTATE_UPDATE flag behaviour to be configured

Closer inspection of the Xen code shows that we aren't supposed to be
using the XEN_RUNSTATE_UPDATE flag unconditionally. It should be
explicitly enabled by guests through the HYPERVISOR_vm_assist hypercall.
If we randomly set the top bit of ->state_entry_time for a guest that
hasn't asked for it and doesn't expect it, that could make the runtimes
fail to add up and confuse the guest. Without the flag it's perfectly
safe for a vCPU to read its own vcpu_runstate_info; just not for one
vCPU to read *another's*.

I briefly pondered adding a word for the whole set of VMASST_TYPE_*
flags but the only one we care about for HVM guests is this, so it
seemed a bit pointless.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Message-Id: <20221127122210.248427-3-dwmw2@infradead.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Documentation/virt/kvm/api.rst
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/x86.c
arch/x86/kvm/xen.c
include/uapi/linux/kvm.h
tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c