diff options
Diffstat (limited to 'arch/x86/kernel/kvm.c')
| -rw-r--r-- | arch/x86/kernel/kvm.c | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 32ef1ee733b7..d817f255aed8 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -245,17 +245,13 @@ NOKPROBE_SYMBOL(kvm_read_and_reset_pf_reason);  dotraplinkage void  do_async_page_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address)  { -	enum ctx_state prev_state; -  	switch (kvm_read_and_reset_pf_reason()) {  	default:  		do_page_fault(regs, error_code, address);  		break;  	case KVM_PV_REASON_PAGE_NOT_PRESENT:  		/* page is swapped out by the host. */ -		prev_state = exception_enter();  		kvm_async_pf_task_wait((u32)address, !user_mode(regs)); -		exception_exit(prev_state);  		break;  	case KVM_PV_REASON_PAGE_READY:  		rcu_irq_enter(); @@ -740,6 +736,9 @@ static __init int kvm_setup_pv_tlb_flush(void)  {  	int cpu; +	if (!kvm_para_available() || nopv) +		return 0; +  	if (kvm_para_has_feature(KVM_FEATURE_PV_TLB_FLUSH) &&  	    !kvm_para_has_hint(KVM_HINTS_REALTIME) &&  	    kvm_para_has_feature(KVM_FEATURE_STEAL_TIME)) {  |