On 24.02.20 20:08, David Hildenbrand wrote: > On 24.02.20 12:41, Christian Borntraeger wrote: >> From: Janosch Frank <frankja@xxxxxxxxxxxxx> >> >> Code 5 for the set cpu state UV call tells the UV to load a PSW from >> the SE header (first IPL) or from guest location 0x0 (diag 308 subcode >> 0/1). Also it sets the cpu into operating state afterwards, so we can >> start it. >> >> Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> >> Reviewed-by: Thomas Huth <thuth@xxxxxxxxxx> >> Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx> >> [borntraeger@xxxxxxxxxx: patch merging, splitting, fixing] >> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> >> --- >> arch/s390/include/asm/uv.h | 1 + >> arch/s390/kvm/kvm-s390.c | 6 ++++++ >> 2 files changed, 7 insertions(+) >> >> diff --git a/arch/s390/include/asm/uv.h b/arch/s390/include/asm/uv.h >> index 99e1a14ef909..4945e44e1528 100644 >> --- a/arch/s390/include/asm/uv.h >> +++ b/arch/s390/include/asm/uv.h >> @@ -169,6 +169,7 @@ struct uv_cb_unp { >> #define PV_CPU_STATE_OPR 1 >> #define PV_CPU_STATE_STP 2 >> #define PV_CPU_STATE_CHKSTP 3 >> +#define PV_CPU_STATE_OPR_LOAD 5 >> >> struct uv_cb_cpu_set_state { >> struct uv_cb_header header; >> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c >> index f10cce6fc5e0..9c0ab66128fd 100644 >> --- a/arch/s390/kvm/kvm-s390.c >> +++ b/arch/s390/kvm/kvm-s390.c >> @@ -3728,6 +3728,12 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, >> rc = kvm_s390_vcpu_start(vcpu); >> break; >> case KVM_MP_STATE_LOAD: >> + if (!kvm_s390_pv_cpu_is_protected(vcpu)) { >> + rc = -ENXIO; >> + break; >> + } >> + rc = kvm_s390_pv_set_cpu_state(vcpu, PV_CPU_STATE_OPR_LOAD); >> + break; >> case KVM_MP_STATE_CHECK_STOP: >> /* fall through - CHECK_STOP and LOAD are not supported yet */ >> default: >> > > Fits in nicely :) > > Reviewed-by: David Hildenbrand <david@xxxxxxxxxx> Thanks. FWIW, I will drop Thomas and Conny RB as this was for the older version. >