Commit bb0978d9 authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: x86/xen: Add an #ifdef'd helper to detect writes to Xen MSR



Add a helper to detect writes to the Xen hypercall page MSR, and provide a
stub for CONFIG_KVM_XEN=n to optimize out the check for kernels built
without Xen support.

Reviewed-by: default avatarPaul Durrant <paul@xen.org>
Reviewed-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
Link: https://lore.kernel.org/r/20250215011437.1203084-3-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent 5c178481
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3738,7 +3738,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
	 * page setup; it could incur locking paths which are not expected
	 * if userspace sets the MSR in an unusual location.
	 */
	if (msr && msr == vcpu->kvm->arch.xen_hvm_config.msr &&
	if (kvm_xen_is_hypercall_page_msr(vcpu->kvm, msr) &&
	    !msr_info->host_initiated)
		return kvm_xen_write_hypercall_page(vcpu, data);

+10 −0
Original line number Diff line number Diff line
@@ -56,6 +56,11 @@ static inline bool kvm_xen_msr_enabled(struct kvm *kvm)
		kvm->arch.xen_hvm_config.msr;
}

static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr)
{
	return msr && msr == kvm->arch.xen_hvm_config.msr;
}

static inline bool kvm_xen_hypercall_enabled(struct kvm *kvm)
{
	return static_branch_unlikely(&kvm_xen_enabled.key) &&
@@ -124,6 +129,11 @@ static inline bool kvm_xen_msr_enabled(struct kvm *kvm)
	return false;
}

static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr)
{
	return false;
}

static inline bool kvm_xen_hypercall_enabled(struct kvm *kvm)
{
	return false;