Use the (cached) result of QAAF fc2 (Generate Initial System-Registers-Save Area) to initialize the Save Area. Co-developed-by: Andreas Grapentin Signed-off-by: Andreas Grapentin Signed-off-by: Steffen Eiden --- arch/s390/kvm/arm64/arm.c | 1 - arch/s390/kvm/arm64/reset.c | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/s390/kvm/arm64/arm.c b/arch/s390/kvm/arm64/arm.c index 62fd71af8968..4de0f17052cb 100644 --- a/arch/s390/kvm/arm64/arm.c +++ b/arch/s390/kvm/arm64/arm.c @@ -371,7 +371,6 @@ static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu, int ret; sae_block->save_area = virt_to_phys(save_area); - save_area->sdo = virt_to_phys(sae_block); ret = kvm_vcpu_set_target(vcpu, init); if (ret) diff --git a/arch/s390/kvm/arm64/reset.c b/arch/s390/kvm/arm64/reset.c index 0339901f5fd0..dc00bf398b15 100644 --- a/arch/s390/kvm/arm64/reset.c +++ b/arch/s390/kvm/arm64/reset.c @@ -3,6 +3,8 @@ #include #include +#include + #include #include #include @@ -79,6 +81,9 @@ void kvm_reset_vcpu(struct kvm_vcpu *vcpu) if (loaded) vcpu_put(vcpu); + memcpy(&vcpu->arch.save_area, aef_gisrsa(), sizeof(vcpu->arch.save_area)); + vcpu->arch.save_area.sdo = virt_to_phys(&vcpu->arch.sae_block); + kvm_reset_vcpu_core(vcpu); kvm_reset_sys_regs(vcpu); -- 2.56.0