aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/kvm/interrupt.c2
-rw-r--r--arch/s390/kvm/kvm-s390.c5
2 files changed, 2 insertions, 5 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 1d0f9d532c0b..79d2e4fa9f9c 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -114,14 +114,12 @@ static int __interrupt_is_deliverable(struct kvm_vcpu *vcpu,
114 114
115static void __set_cpu_idle(struct kvm_vcpu *vcpu) 115static void __set_cpu_idle(struct kvm_vcpu *vcpu)
116{ 116{
117 BUG_ON(vcpu->vcpu_id > KVM_MAX_VCPUS - 1);
118 atomic_set_mask(CPUSTAT_WAIT, &vcpu->arch.sie_block->cpuflags); 117 atomic_set_mask(CPUSTAT_WAIT, &vcpu->arch.sie_block->cpuflags);
119 set_bit(vcpu->vcpu_id, vcpu->arch.local_int.float_int->idle_mask); 118 set_bit(vcpu->vcpu_id, vcpu->arch.local_int.float_int->idle_mask);
120} 119}
121 120
122static void __unset_cpu_idle(struct kvm_vcpu *vcpu) 121static void __unset_cpu_idle(struct kvm_vcpu *vcpu)
123{ 122{
124 BUG_ON(vcpu->vcpu_id > KVM_MAX_VCPUS - 1);
125 atomic_clear_mask(CPUSTAT_WAIT, &vcpu->arch.sie_block->cpuflags); 123 atomic_clear_mask(CPUSTAT_WAIT, &vcpu->arch.sie_block->cpuflags);
126 clear_bit(vcpu->vcpu_id, vcpu->arch.local_int.float_int->idle_mask); 124 clear_bit(vcpu->vcpu_id, vcpu->arch.local_int.float_int->idle_mask);
127} 125}
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 9136f8d40850..7337c577e949 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -896,7 +896,8 @@ static int vcpu_post_run(struct kvm_vcpu *vcpu, int exit_reason)
896 896
897 if (rc == 0) { 897 if (rc == 0) {
898 if (kvm_is_ucontrol(vcpu->kvm)) 898 if (kvm_is_ucontrol(vcpu->kvm))
899 rc = -EOPNOTSUPP; 899 /* Don't exit for host interrupts. */
900 rc = vcpu->arch.sie_block->icptcode ? -EOPNOTSUPP : 0;
900 else 901 else
901 rc = kvm_handle_sie_intercept(vcpu); 902 rc = kvm_handle_sie_intercept(vcpu);
902 } 903 }
@@ -949,8 +950,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
949 950
950 atomic_clear_mask(CPUSTAT_STOPPED, &vcpu->arch.sie_block->cpuflags); 951 atomic_clear_mask(CPUSTAT_STOPPED, &vcpu->arch.sie_block->cpuflags);
951 952
952 BUG_ON(kvm_get_vcpu(vcpu->kvm, vcpu->vcpu_id) == NULL);
953
954 switch (kvm_run->exit_reason) { 953 switch (kvm_run->exit_reason) {
955 case KVM_EXIT_S390_SIEIC: 954 case KVM_EXIT_S390_SIEIC:
956 case KVM_EXIT_UNKNOWN: 955 case KVM_EXIT_UNKNOWN: