mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-07-06 03:56:18 +00:00
add lock for vcpu state access
keep the global variables access exclusive in vcpu pause & resume. Signed-]off-by: Minggui Cao <minggui.cao@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
9f1faa69fd
commit
66d283d0c4
@ -280,10 +280,10 @@ void pause_vcpu(struct vcpu *vcpu, enum vcpu_state new_state)
|
|||||||
pr_dbg("vcpu%d paused, new state: %d",
|
pr_dbg("vcpu%d paused, new state: %d",
|
||||||
vcpu->vcpu_id, new_state);
|
vcpu->vcpu_id, new_state);
|
||||||
|
|
||||||
|
get_schedule_lock(vcpu->pcpu_id);
|
||||||
vcpu->prev_state = vcpu->state;
|
vcpu->prev_state = vcpu->state;
|
||||||
vcpu->state = new_state;
|
vcpu->state = new_state;
|
||||||
|
|
||||||
get_schedule_lock(vcpu->pcpu_id);
|
|
||||||
if (atomic_load(&vcpu->running) == 1) {
|
if (atomic_load(&vcpu->running) == 1) {
|
||||||
remove_vcpu_from_runqueue(vcpu);
|
remove_vcpu_from_runqueue(vcpu);
|
||||||
make_reschedule_request(vcpu);
|
make_reschedule_request(vcpu);
|
||||||
@ -303,9 +303,9 @@ void resume_vcpu(struct vcpu *vcpu)
|
|||||||
{
|
{
|
||||||
pr_dbg("vcpu%d resumed", vcpu->vcpu_id);
|
pr_dbg("vcpu%d resumed", vcpu->vcpu_id);
|
||||||
|
|
||||||
|
get_schedule_lock(vcpu->pcpu_id);
|
||||||
vcpu->state = vcpu->prev_state;
|
vcpu->state = vcpu->prev_state;
|
||||||
|
|
||||||
get_schedule_lock(vcpu->pcpu_id);
|
|
||||||
if (vcpu->state == VCPU_RUNNING) {
|
if (vcpu->state == VCPU_RUNNING) {
|
||||||
add_vcpu_to_runqueue(vcpu);
|
add_vcpu_to_runqueue(vcpu);
|
||||||
make_reschedule_request(vcpu);
|
make_reschedule_request(vcpu);
|
||||||
|
Loading…
Reference in New Issue
Block a user