[PATCH v3 18/23] KVM: s390: arm64: Use QAAF init save area

From: Steffen Eiden

Date: Fri Nov 06 2026 - 11:12:11 EST


Use the (cached) result of QAAF fc2 (Generate Initial
System-Registers-Save Area) to initialize the Save Area.

Co-developed-by: Andreas Grapentin <gra@xxxxxxxxxxxxx>
Signed-off-by: Andreas Grapentin <gra@xxxxxxxxxxxxx>
Signed-off-by: Steffen Eiden <seiden@xxxxxxxxxxxxx>
---
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 <linux/kvm_host.h>
#include <linux/fpu.h>

+#include <asm/aef.h>
+
#include <arm64/kvm_emulate.h>
#include <arm64/kvm_nested.h>
#include <arm64/sys_regs.h>
@@ -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