diff options
Diffstat (limited to 'arch/s390/kvm/interrupt.c')
-rw-r--r-- | arch/s390/kvm/interrupt.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 35c21bf910c..d4bd4c73faa 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -128,6 +128,10 @@ static void __do_deliver_interrupt(struct kvm_vcpu *vcpu, | |||
128 | if (rc == -EFAULT) | 128 | if (rc == -EFAULT) |
129 | exception = 1; | 129 | exception = 1; |
130 | 130 | ||
131 | rc = put_guest_u16(vcpu, __LC_CPU_ADDRESS, inti->emerg.code); | ||
132 | if (rc == -EFAULT) | ||
133 | exception = 1; | ||
134 | |||
131 | rc = copy_to_guest(vcpu, __LC_EXT_OLD_PSW, | 135 | rc = copy_to_guest(vcpu, __LC_EXT_OLD_PSW, |
132 | &vcpu->arch.sie_block->gpsw, sizeof(psw_t)); | 136 | &vcpu->arch.sie_block->gpsw, sizeof(psw_t)); |
133 | if (rc == -EFAULT) | 137 | if (rc == -EFAULT) |
@@ -220,6 +224,7 @@ static void __do_deliver_interrupt(struct kvm_vcpu *vcpu, | |||
220 | offsetof(struct _lowcore, restart_psw), sizeof(psw_t)); | 224 | offsetof(struct _lowcore, restart_psw), sizeof(psw_t)); |
221 | if (rc == -EFAULT) | 225 | if (rc == -EFAULT) |
222 | exception = 1; | 226 | exception = 1; |
227 | atomic_clear_mask(CPUSTAT_STOPPED, &vcpu->arch.sie_block->cpuflags); | ||
223 | break; | 228 | break; |
224 | 229 | ||
225 | case KVM_S390_PROGRAM_INT: | 230 | case KVM_S390_PROGRAM_INT: |