aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm/interrupt.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kvm/interrupt.c')
-rw-r--r--arch/s390/kvm/interrupt.c5
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: