2018-03-08 21:31+0100, Radim Krčmář: > 2018-03-01 17:49+0800, Wanpeng Li: > > @@ -264,10 +262,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; > > With this nice variable, the wrapper actually makes the code harder to > read. Please use kvm->arch.mwait_in_guest directly (and the same for > the other two future exits), I take that back. kvm->arch.mwait_in_guest looks ok, but it would be vmx->vcpu.kvm->arch.mwait_in_guest elsewhere and that is just too bad.