mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-01-06 16:15:00 +00:00
hv:add per-vm lock for vm & vcpu state change
-- replace global hypercall lock with per-vm lock -- add spinlock protection for vm & vcpu state change v1-->v2: change get_vm_lock/put_vm_lock parameter from vm_id to vm move lock obtain before vm state check move all lock from vmcall.c to hypercall.c Tracked-On: #4958 Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
@@ -35,7 +35,9 @@ void vcpu_thread(struct thread_object *obj)
|
||||
ret = acrn_handle_pending_request(vcpu);
|
||||
if (ret < 0) {
|
||||
pr_fatal("vcpu handling pending request fail");
|
||||
get_vm_lock(vcpu->vm);
|
||||
zombie_vcpu(vcpu, VCPU_ZOMBIE);
|
||||
put_vm_lock(vcpu->vm);
|
||||
/* Fatal error happened (triple fault). Stop the vcpu running. */
|
||||
continue;
|
||||
}
|
||||
@@ -47,7 +49,9 @@ void vcpu_thread(struct thread_object *obj)
|
||||
ret = run_vcpu(vcpu);
|
||||
if (ret != 0) {
|
||||
pr_fatal("vcpu resume failed");
|
||||
get_vm_lock(vcpu->vm);
|
||||
zombie_vcpu(vcpu, VCPU_ZOMBIE);
|
||||
put_vm_lock(vcpu->vm);
|
||||
/* Fatal error happened (resume vcpu failed). Stop the vcpu running. */
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user