KVM: X86: Provide a capability to disable MWAIT intercepts
Allowing a guest to execute MWAIT without interception enables a guest to put a (physical) CPU into a power saving state, where it takes longer to return from than what may be desired by the host. Don't give a guest that power over a host by default. (Especially, since nothing prevents a guest from using MWAIT even when it is not advertised via CPUID.) Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Radim Krčmář <rkrcmar@redhat.com> Cc: Jan H. Schönherr <jschoenh@amazon.de> Signed-off-by: Wanpeng Li <wanpengli@tencent.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
committed by
Paolo Bonzini
parent
4956aa3b8b
commit
4d5422cea3
@@ -2,8 +2,6 @@
|
||||
#ifndef ARCH_X86_KVM_X86_H
|
||||
#define ARCH_X86_KVM_X86_H
|
||||
|
||||
#include <asm/processor.h>
|
||||
#include <asm/mwait.h>
|
||||
#include <linux/kvm_host.h>
|
||||
#include <asm/pvclock.h>
|
||||
#include "kvm_cache_regs.h"
|
||||
@@ -266,10 +264,12 @@ static inline u64 nsec_to_cycles(struct kvm_vcpu *vcpu, u64 nsec)
|
||||
__rem; \
|
||||
})
|
||||
|
||||
static inline bool kvm_mwait_in_guest(void)
|
||||
#define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
|
||||
#define KVM_X86_DISABLE_VALID_EXITS (KVM_X86_DISABLE_EXITS_MWAIT)
|
||||
|
||||
static inline bool kvm_mwait_in_guest(struct kvm *kvm)
|
||||
{
|
||||
return boot_cpu_has(X86_FEATURE_MWAIT) &&
|
||||
!boot_cpu_has_bug(X86_BUG_MONITOR);
|
||||
return kvm->arch.mwait_in_guest;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user