mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
LoongArch: KVM: Implement handle idle exception
Implement kvm handle LoongArch vcpu idle exception, using kvm_vcpu_block to emulate it. 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
81efe043a3
commit
f41c8bdbbd
@ -194,3 +194,23 @@ int kvm_complete_iocsr_read(struct kvm_vcpu *vcpu, struct kvm_run *run)
|
||||
|
||||
return er;
|
||||
}
|
||||
|
||||
int kvm_emu_idle(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
++vcpu->stat.idle_exits;
|
||||
trace_kvm_exit_idle(vcpu, KVM_TRACE_EXIT_IDLE);
|
||||
|
||||
if (!kvm_arch_vcpu_runnable(vcpu)) {
|
||||
/*
|
||||
* Switch to the software timer before halt-polling/blocking as
|
||||
* the guest's timer may be a break event for the vCPU, and the
|
||||
* hypervisor timer runs only when the CPU is in guest mode.
|
||||
* Switch before halt-polling so that KVM recognizes an expired
|
||||
* timer before blocking.
|
||||
*/
|
||||
kvm_save_timer(vcpu);
|
||||
kvm_vcpu_block(vcpu);
|
||||
}
|
||||
|
||||
return EMULATE_DONE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user