diff options
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 9bdc9f927e82..bfb2b990da9b 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -936,6 +936,8 @@ static int kvm_arch_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu, | |||
936 | case KVM_REG_S390_PFTOKEN: | 936 | case KVM_REG_S390_PFTOKEN: |
937 | r = get_user(vcpu->arch.pfault_token, | 937 | r = get_user(vcpu->arch.pfault_token, |
938 | (u64 __user *)reg->addr); | 938 | (u64 __user *)reg->addr); |
939 | if (vcpu->arch.pfault_token == KVM_S390_PFAULT_TOKEN_INVALID) | ||
940 | kvm_clear_async_pf_completion_queue(vcpu); | ||
939 | break; | 941 | break; |
940 | case KVM_REG_S390_PFCOMPARE: | 942 | case KVM_REG_S390_PFCOMPARE: |
941 | r = get_user(vcpu->arch.pfault_compare, | 943 | r = get_user(vcpu->arch.pfault_compare, |
@@ -1408,6 +1410,8 @@ static void sync_regs(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
1408 | vcpu->arch.pfault_token = kvm_run->s.regs.pft; | 1410 | vcpu->arch.pfault_token = kvm_run->s.regs.pft; |
1409 | vcpu->arch.pfault_select = kvm_run->s.regs.pfs; | 1411 | vcpu->arch.pfault_select = kvm_run->s.regs.pfs; |
1410 | vcpu->arch.pfault_compare = kvm_run->s.regs.pfc; | 1412 | vcpu->arch.pfault_compare = kvm_run->s.regs.pfc; |
1413 | if (vcpu->arch.pfault_token == KVM_S390_PFAULT_TOKEN_INVALID) | ||
1414 | kvm_clear_async_pf_completion_queue(vcpu); | ||
1411 | } | 1415 | } |
1412 | kvm_run->kvm_dirty_regs = 0; | 1416 | kvm_run->kvm_dirty_regs = 0; |
1413 | } | 1417 | } |