With max VM supported FPU type enabled, if VM supports LASX, there is
FPU none --> LASX, no middle FPU state such as FPU --> LASX or
LSX --> LASX. Here remove the middle FPU states in function
kvm_own_lsx() and kvm_own_lasx(). And it becomes simpler than before.
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
---
arch/loongarch/kvm/vcpu.c | 34 +++-------------------------------
1 file changed, 3 insertions(+), 31 deletions(-)
diff --git a/arch/loongarch/kvm/vcpu.c b/arch/loongarch/kvm/vcpu.c
index 553881e326eb..8c3d6e1a5ed2 100644
--- a/arch/loongarch/kvm/vcpu.c
+++ b/arch/loongarch/kvm/vcpu.c
@@ -1390,21 +1390,7 @@ int kvm_own_lsx(struct kvm_vcpu *vcpu)
/* Enable LSX for guest */
kvm_check_fcsr(vcpu, vcpu->arch.fpu.fcsr);
set_csr_euen(CSR_EUEN_LSXEN | CSR_EUEN_FPEN);
- switch (vcpu->arch.aux_inuse & KVM_LARCH_FPU) {
- case KVM_LARCH_FPU:
- /*
- * Guest FPU state already loaded,
- * only restore upper LSX state
- */
- _restore_lsx_upper(&vcpu->arch.fpu);
- break;
- default:
- /* Neither FP or LSX already active,
- * restore full LSX state
- */
- kvm_restore_lsx(&vcpu->arch.fpu);
- break;
- }
+ kvm_restore_lsx(&vcpu->arch.fpu);
trace_kvm_aux(vcpu, KVM_TRACE_AUX_RESTORE, KVM_TRACE_AUX_LSX);
vcpu->arch.aux_inuse |= KVM_LARCH_LSX | KVM_LARCH_FPU;
@@ -1419,22 +1405,8 @@ int kvm_own_lasx(struct kvm_vcpu *vcpu)
{
kvm_check_fcsr(vcpu, vcpu->arch.fpu.fcsr);
set_csr_euen(CSR_EUEN_FPEN | CSR_EUEN_LSXEN | CSR_EUEN_LASXEN);
- switch (vcpu->arch.aux_inuse & (KVM_LARCH_FPU | KVM_LARCH_LSX)) {
- case KVM_LARCH_LSX:
- case KVM_LARCH_LSX | KVM_LARCH_FPU:
- /* Guest LSX state already loaded, only restore upper LASX state */
- _restore_lasx_upper(&vcpu->arch.fpu);
- break;
- case KVM_LARCH_FPU:
- /* Guest FP state already loaded, only restore upper LSX & LASX state */
- _restore_lsx_upper(&vcpu->arch.fpu);
- _restore_lasx_upper(&vcpu->arch.fpu);
- break;
- default:
- /* Neither FP or LSX already active, restore full LASX state */
- kvm_restore_lasx(&vcpu->arch.fpu);
- break;
- }
+ /* Neither FP or LSX already active, restore full LASX state */
+ kvm_restore_lasx(&vcpu->arch.fpu);
trace_kvm_aux(vcpu, KVM_TRACE_AUX_RESTORE, KVM_TRACE_AUX_LASX);
vcpu->arch.aux_inuse |= KVM_LARCH_LASX | KVM_LARCH_LSX | KVM_LARCH_FPU;
--
2.39.3