mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
LoongArch: KVM: Implement handle fpu exception
Implement handle fpu exception, using kvm_own_fpu() to enable fpu for guest. Reviewed-by: Bibo Mao <maobibo@loongson.cn> Tested-by: Huacai Chen <chenhuacai@loongson.cn> Signed-off-by: Tianrui Zhao <zhaotianrui@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
This commit is contained in:
parent
d5b65882d5
commit
37cdfc6dbf
|
|
@ -631,3 +631,30 @@ static int kvm_handle_write_fault(struct kvm_vcpu *vcpu)
|
|||
{
|
||||
return kvm_handle_rdwr_fault(vcpu, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_handle_fpu_disabled() - Guest used fpu however it is disabled at host
|
||||
* @vcpu: Virtual CPU context.
|
||||
*
|
||||
* Handle when the guest attempts to use fpu which hasn't been allowed
|
||||
* by the root context.
|
||||
*/
|
||||
static int kvm_handle_fpu_disabled(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct kvm_run *run = vcpu->run;
|
||||
|
||||
/*
|
||||
* If guest FPU not present, the FPU operation should have been
|
||||
* treated as a reserved instruction!
|
||||
* If FPU already in use, we shouldn't get this at all.
|
||||
*/
|
||||
if (WARN_ON(vcpu->arch.aux_inuse & KVM_LARCH_FPU)) {
|
||||
kvm_err("%s internal error\n", __func__);
|
||||
run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
|
||||
return RESUME_HOST;
|
||||
}
|
||||
|
||||
kvm_own_fpu(vcpu);
|
||||
|
||||
return RESUME_GUEST;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user