[PATCH v2 5/6] LoongArch: KVM: Use vm_guest_has_fpu API in kvm_lose_fpu()

Bibo Mao posted 6 patches 3 days, 1 hour ago
[PATCH v2 5/6] LoongArch: KVM: Use vm_guest_has_fpu API in kvm_lose_fpu()
Posted by Bibo Mao 3 days, 1 hour ago
In kvm_lose_fpu() FPU state will save in vcpu::arch::fpu, its FPU
state comes from vcpu->arch.aux_inuse. Instead existing API
vm_guest_has_xxx() can be used also, and bit KVM_LARCH_LASX and
KVM_LARCH_LSX in arch.aux_inuse can be removed.

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
---
 arch/loongarch/kvm/vcpu.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/loongarch/kvm/vcpu.c b/arch/loongarch/kvm/vcpu.c
index 8c3d6e1a5ed2..920f3101ed3d 100644
--- a/arch/loongarch/kvm/vcpu.c
+++ b/arch/loongarch/kvm/vcpu.c
@@ -1418,24 +1418,27 @@ int kvm_own_lasx(struct kvm_vcpu *vcpu)
 /* Save context and disable FPU */
 void kvm_lose_fpu(struct kvm_vcpu *vcpu)
 {
+	if (!(vcpu->arch.aux_inuse & KVM_LARCH_FPU))
+		return;
+
 	preempt_disable();
 
 	kvm_check_fcsr_alive(vcpu);
-	if (vcpu->arch.aux_inuse & KVM_LARCH_LASX) {
+	if (kvm_guest_has_lasx(&vcpu->arch)) {
 		kvm_save_lasx(&vcpu->arch.fpu);
 		vcpu->arch.aux_inuse &= ~(KVM_LARCH_LSX | KVM_LARCH_FPU | KVM_LARCH_LASX);
 		trace_kvm_aux(vcpu, KVM_TRACE_AUX_SAVE, KVM_TRACE_AUX_LASX);
 
 		/* Disable LASX & LSX & FPU */
 		clear_csr_euen(CSR_EUEN_FPEN | CSR_EUEN_LSXEN | CSR_EUEN_LASXEN);
-	} else if (vcpu->arch.aux_inuse & KVM_LARCH_LSX) {
+	} else if (kvm_guest_has_lsx(&vcpu->arch)) {
 		kvm_save_lsx(&vcpu->arch.fpu);
 		vcpu->arch.aux_inuse &= ~(KVM_LARCH_LSX | KVM_LARCH_FPU);
 		trace_kvm_aux(vcpu, KVM_TRACE_AUX_SAVE, KVM_TRACE_AUX_LSX);
 
 		/* Disable LSX & FPU */
 		clear_csr_euen(CSR_EUEN_FPEN | CSR_EUEN_LSXEN);
-	} else if (vcpu->arch.aux_inuse & KVM_LARCH_FPU) {
+	} else {
 		kvm_save_fpu(&vcpu->arch.fpu);
 		vcpu->arch.aux_inuse &= ~KVM_LARCH_FPU;
 		trace_kvm_aux(vcpu, KVM_TRACE_AUX_SAVE, KVM_TRACE_AUX_FPU);
-- 
2.39.3