Skip to content

Commit bb0978d

Browse files
committed
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: Paul Durrant <paul@xen.org> Reviewed-by: David Woodhouse <dwmw@amazon.co.uk> Link: https://lore.kernel.org/r/20250215011437.1203084-3-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent 5c17848 commit bb0978d

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

arch/x86/kvm/x86.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3738,7 +3738,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
37383738
* page setup; it could incur locking paths which are not expected
37393739
* if userspace sets the MSR in an unusual location.
37403740
*/
3741-
if (msr && msr == vcpu->kvm->arch.xen_hvm_config.msr &&
3741+
if (kvm_xen_is_hypercall_page_msr(vcpu->kvm, msr) &&
37423742
!msr_info->host_initiated)
37433743
return kvm_xen_write_hypercall_page(vcpu, data);
37443744

arch/x86/kvm/xen.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ static inline bool kvm_xen_msr_enabled(struct kvm *kvm)
5656
kvm->arch.xen_hvm_config.msr;
5757
}
5858

59+
static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr)
60+
{
61+
return msr && msr == kvm->arch.xen_hvm_config.msr;
62+
}
63+
5964
static inline bool kvm_xen_hypercall_enabled(struct kvm *kvm)
6065
{
6166
return static_branch_unlikely(&kvm_xen_enabled.key) &&
@@ -124,6 +129,11 @@ static inline bool kvm_xen_msr_enabled(struct kvm *kvm)
124129
return false;
125130
}
126131

132+
static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr)
133+
{
134+
return false;
135+
}
136+
127137
static inline bool kvm_xen_hypercall_enabled(struct kvm *kvm)
128138
{
129139
return false;

0 commit comments

Comments
 (0)