|
@@ -1826,8 +1826,6 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
|
|
|
/* User space provided an invalid FPC, let's clear it */
|
|
|
current->thread.fpu.fpc = 0;
|
|
|
|
|
|
- save_access_regs(vcpu->arch.host_acrs);
|
|
|
- restore_access_regs(vcpu->run->s.regs.acrs);
|
|
|
gmap_enable(vcpu->arch.enabled_gmap);
|
|
|
atomic_or(CPUSTAT_RUNNING, &vcpu->arch.sie_block->cpuflags);
|
|
|
if (vcpu->arch.cputm_enabled && !is_vcpu_idle(vcpu))
|
|
@@ -1851,9 +1849,6 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
|
|
|
/* Restore host register state */
|
|
|
current->thread.fpu.fpc = vcpu->arch.host_fpregs.fpc;
|
|
|
current->thread.fpu.regs = vcpu->arch.host_fpregs.regs;
|
|
|
-
|
|
|
- save_access_regs(vcpu->run->s.regs.acrs);
|
|
|
- restore_access_regs(vcpu->arch.host_acrs);
|
|
|
}
|
|
|
|
|
|
static void kvm_s390_vcpu_initial_reset(struct kvm_vcpu *vcpu)
|
|
@@ -2243,7 +2238,6 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
|
|
|
{
|
|
|
memcpy(&vcpu->run->s.regs.acrs, &sregs->acrs, sizeof(sregs->acrs));
|
|
|
memcpy(&vcpu->arch.sie_block->gcr, &sregs->crs, sizeof(sregs->crs));
|
|
|
- restore_access_regs(vcpu->run->s.regs.acrs);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -2740,6 +2734,8 @@ static void sync_regs(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
|
|
if (riccb->valid)
|
|
|
vcpu->arch.sie_block->ecb3 |= 0x01;
|
|
|
}
|
|
|
+ save_access_regs(vcpu->arch.host_acrs);
|
|
|
+ restore_access_regs(vcpu->run->s.regs.acrs);
|
|
|
|
|
|
kvm_run->kvm_dirty_regs = 0;
|
|
|
}
|
|
@@ -2758,6 +2754,8 @@ static void store_regs(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
|
|
kvm_run->s.regs.pft = vcpu->arch.pfault_token;
|
|
|
kvm_run->s.regs.pfs = vcpu->arch.pfault_select;
|
|
|
kvm_run->s.regs.pfc = vcpu->arch.pfault_compare;
|
|
|
+ save_access_regs(vcpu->run->s.regs.acrs);
|
|
|
+ restore_access_regs(vcpu->arch.host_acrs);
|
|
|
}
|
|
|
|
|
|
int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
|
|
@@ -2874,7 +2872,7 @@ int kvm_s390_vcpu_store_status(struct kvm_vcpu *vcpu, unsigned long addr)
|
|
|
{
|
|
|
/*
|
|
|
* The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy
|
|
|
- * copying in vcpu load/put. Lets update our copies before we save
|
|
|
+ * switch in the run ioctl. Let's update our copies before we save
|
|
|
* it into the save area
|
|
|
*/
|
|
|
save_fpu_regs();
|