KVM: s390: protvirt: do not inject interrupts after start
authorChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 30 Jan 2020 16:18:28 +0000 (11:18 -0500)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 27 Feb 2020 18:47:12 +0000 (19:47 +0100)
As PSW restart is handled by the ultravisor (and we only get a start
notification) we must re-check the PSW after a start before injecting
interrupts.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
arch/s390/kvm/kvm-s390.c

index 66ba6ca..fed025e 100644 (file)
@@ -4516,6 +4516,13 @@ int kvm_s390_vcpu_start(struct kvm_vcpu *vcpu)
 
        kvm_s390_clear_cpuflags(vcpu, CPUSTAT_STOPPED);
        /*
+        * The real PSW might have changed due to a RESTART interpreted by the
+        * ultravisor. We block all interrupts and let the next sie exit
+        * refresh our view.
+        */
+       if (kvm_s390_pv_cpu_is_protected(vcpu))
+               vcpu->arch.sie_block->gpsw.mask &= ~PSW_INT_MASK;
+       /*
         * Another VCPU might have used IBS while we were offline.
         * Let's play safe and flush the VCPU at startup.
         */