diff options
Diffstat (limited to 'arch/s390/kvm/kvm-s390.c')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 5b01f0953900..4377d1886631 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -770,6 +770,14 @@ int kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu, unsigned long addr) | |||
770 | } else | 770 | } else |
771 | prefix = 0; | 771 | prefix = 0; |
772 | 772 | ||
773 | /* | ||
774 | * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy | ||
775 | * copying in vcpu load/put. Lets update our copies before we save | ||
776 | * it into the save area | ||
777 | */ | ||
778 | save_fp_regs(&vcpu->arch.guest_fpregs); | ||
779 | save_access_regs(vcpu->run->s.regs.acrs); | ||
780 | |||
773 | if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), | 781 | if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), |
774 | vcpu->arch.guest_fpregs.fprs, 128, prefix)) | 782 | vcpu->arch.guest_fpregs.fprs, 128, prefix)) |
775 | return -EFAULT; | 783 | return -EFAULT; |