diff options
-rw-r--r-- | arch/s390/kvm/interrupt.c | 2 | ||||
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 5 |
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 | ||
115 | static void __set_cpu_idle(struct kvm_vcpu *vcpu) | 115 | static 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 | ||
122 | static void __unset_cpu_idle(struct kvm_vcpu *vcpu) | 121 | static 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: |