diff options
Diffstat (limited to 'arch/x86/kvm/svm/svm.c')
| -rw-r--r-- | arch/x86/kvm/svm/svm.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 8ccfa4197d9c..5bbf76189afa 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -1090,7 +1090,7 @@ static void init_vmcb(struct vcpu_svm *svm)  	svm->nested.vmcb = 0;  	svm->vcpu.arch.hflags = 0; -	if (pause_filter_count) { +	if (!kvm_pause_in_guest(svm->vcpu.kvm)) {  		control->pause_filter_count = pause_filter_count;  		if (pause_filter_thresh)  			control->pause_filter_thresh = pause_filter_thresh; @@ -2693,7 +2693,7 @@ static int pause_interception(struct vcpu_svm *svm)  	struct kvm_vcpu *vcpu = &svm->vcpu;  	bool in_kernel = (svm_get_cpl(vcpu) == 0); -	if (pause_filter_thresh) +	if (!kvm_pause_in_guest(vcpu->kvm))  		grow_ple_window(vcpu);  	kvm_vcpu_on_spin(vcpu, in_kernel); @@ -3344,7 +3344,7 @@ static fastpath_t svm_exit_handlers_fastpath(struct kvm_vcpu *vcpu)  void __svm_vcpu_run(unsigned long vmcb_pa, unsigned long *regs); -static fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) +static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)  {  	fastpath_t exit_fastpath;  	struct vcpu_svm *svm = to_svm(vcpu); @@ -3780,7 +3780,7 @@ static void svm_handle_exit_irqoff(struct kvm_vcpu *vcpu)  static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu)  { -	if (pause_filter_thresh) +	if (!kvm_pause_in_guest(vcpu->kvm))  		shrink_ple_window(vcpu);  } @@ -3958,6 +3958,9 @@ static void svm_vm_destroy(struct kvm *kvm)  static int svm_vm_init(struct kvm *kvm)  { +	if (!pause_filter_count || !pause_filter_thresh) +		kvm->arch.pause_in_guest = true; +  	if (avic) {  		int ret = avic_vm_init(kvm);  		if (ret)  | 
