Message ID | 20200214222658.12946-35-borntraeger@de.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: s390: Add support for protected VMs | expand |
On 14.02.20 23:26, Christian Borntraeger wrote: > 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> > --- > arch/s390/kvm/kvm-s390.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index 1b6963bbc96f..16af4d1a2c29 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -4436,6 +4436,13 @@ void kvm_s390_vcpu_start(struct kvm_vcpu *vcpu) > /* Let's tell the UV that we want to start again */ > kvm_s390_pv_set_cpu_state(vcpu, PV_CPU_STATE_OPR, &rc, &rrc); > 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_is_protected(vcpu->kvm)) > + vcpu->arch.sie_block->gpsw.mask &= ~PSW_INT_MASK; Same comment as to the previous patch.
On 18.02.20 10:53, David Hildenbrand wrote: > On 14.02.20 23:26, Christian Borntraeger wrote: >> 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> >> --- >> arch/s390/kvm/kvm-s390.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c >> index 1b6963bbc96f..16af4d1a2c29 100644 >> --- a/arch/s390/kvm/kvm-s390.c >> +++ b/arch/s390/kvm/kvm-s390.c >> @@ -4436,6 +4436,13 @@ void kvm_s390_vcpu_start(struct kvm_vcpu *vcpu) >> /* Let's tell the UV that we want to start again */ >> kvm_s390_pv_set_cpu_state(vcpu, PV_CPU_STATE_OPR, &rc, &rrc); >> 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_is_protected(vcpu->kvm)) >> + vcpu->arch.sie_block->gpsw.mask &= ~PSW_INT_MASK; > > Same comment as to the previous patch. As I understood how it works Reviewed-by: David Hildenbrand <david@redhat.com>
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 1b6963bbc96f..16af4d1a2c29 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -4436,6 +4436,13 @@ void kvm_s390_vcpu_start(struct kvm_vcpu *vcpu) /* Let's tell the UV that we want to start again */ kvm_s390_pv_set_cpu_state(vcpu, PV_CPU_STATE_OPR, &rc, &rrc); 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_is_protected(vcpu->kvm)) + 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.