summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/loongarch/include/asm/kvm_host.h1
-rw-r--r--arch/loongarch/kvm/exit.c9
-rw-r--r--arch/loongarch/kvm/vcpu.c19
3 files changed, 7 insertions, 22 deletions
diff --git a/arch/loongarch/include/asm/kvm_host.h b/arch/loongarch/include/asm/kvm_host.h
index e76a49d4233b..bad16c5f963c 100644
--- a/arch/loongarch/include/asm/kvm_host.h
+++ b/arch/loongarch/include/asm/kvm_host.h
@@ -204,7 +204,6 @@ struct kvm_vcpu_arch {
/* Which auxiliary state is loaded (KVM_LARCH_*) */
unsigned int aux_inuse;
- unsigned int aux_ldtype;
/* FPU state */
struct loongarch_fpu fpu FPU_ALIGN;
diff --git a/arch/loongarch/kvm/exit.c b/arch/loongarch/kvm/exit.c
index b839c989d3dc..c8492670f169 100644
--- a/arch/loongarch/kvm/exit.c
+++ b/arch/loongarch/kvm/exit.c
@@ -755,7 +755,6 @@ static int kvm_handle_fpu_disabled(struct kvm_vcpu *vcpu, int ecode)
return RESUME_HOST;
}
- vcpu->arch.aux_ldtype = KVM_LARCH_FPU;
kvm_make_request(KVM_REQ_FPU_LOAD, vcpu);
return RESUME_GUEST;
@@ -796,10 +795,8 @@ static int kvm_handle_lsx_disabled(struct kvm_vcpu *vcpu, int ecode)
{
if (!kvm_guest_has_lsx(&vcpu->arch))
kvm_queue_exception(vcpu, EXCCODE_INE, 0);
- else {
- vcpu->arch.aux_ldtype = KVM_LARCH_LSX;
+ else
kvm_make_request(KVM_REQ_FPU_LOAD, vcpu);
- }
return RESUME_GUEST;
}
@@ -816,10 +813,8 @@ static int kvm_handle_lasx_disabled(struct kvm_vcpu *vcpu, int ecode)
{
if (!kvm_guest_has_lasx(&vcpu->arch))
kvm_queue_exception(vcpu, EXCCODE_INE, 0);
- else {
- vcpu->arch.aux_ldtype = KVM_LARCH_LASX;
+ else
kvm_make_request(KVM_REQ_FPU_LOAD, vcpu);
- }
return RESUME_GUEST;
}
diff --git a/arch/loongarch/kvm/vcpu.c b/arch/loongarch/kvm/vcpu.c
index c28aa37f37a9..c65518b4e18e 100644
--- a/arch/loongarch/kvm/vcpu.c
+++ b/arch/loongarch/kvm/vcpu.c
@@ -240,21 +240,12 @@ static void kvm_late_check_requests(struct kvm_vcpu *vcpu)
}
if (kvm_check_request(KVM_REQ_FPU_LOAD, vcpu)) {
- switch (vcpu->arch.aux_ldtype) {
- case KVM_LARCH_FPU:
- kvm_own_fpu(vcpu);
- break;
- case KVM_LARCH_LSX:
- kvm_own_lsx(vcpu);
- break;
- case KVM_LARCH_LASX:
+ if (kvm_guest_has_lasx(&vcpu->arch))
kvm_own_lasx(vcpu);
- break;
- default:
- break;
- }
-
- vcpu->arch.aux_ldtype = 0;
+ else if (kvm_guest_has_lsx(&vcpu->arch))
+ kvm_own_lsx(vcpu);
+ else if (kvm_guest_has_fpu(&vcpu->arch))
+ kvm_own_fpu(vcpu);
}
if (kvm_check_request(KVM_REQ_LBT_LOAD, vcpu))