mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-01-13 11:33:58 +00:00
hv:cleanup vcpu state
-- remove VCPU_PAUSED and resume_vcpu -- remove vcpu->prev_state in vcpu structure -- rename pause_vcpu to zombie_vcpu Tracked-On: #4320 Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com>
This commit is contained in:
@@ -719,17 +719,18 @@ void reset_vcpu(struct acrn_vcpu *vcpu, enum reset_mode mode)
|
||||
vcpu_set_state(vcpu, VCPU_INIT);
|
||||
}
|
||||
|
||||
void pause_vcpu(struct acrn_vcpu *vcpu, enum vcpu_state new_state)
|
||||
void zombie_vcpu(struct acrn_vcpu *vcpu, enum vcpu_state new_state)
|
||||
{
|
||||
enum vcpu_state prev_state;
|
||||
uint16_t pcpu_id = pcpuid_from_vcpu(vcpu);
|
||||
|
||||
pr_dbg("vcpu%hu paused, new state: %d", vcpu->vcpu_id, new_state);
|
||||
|
||||
if (((vcpu->state == VCPU_RUNNING) || (vcpu->state == VCPU_INIT)) && (new_state == VCPU_ZOMBIE)) {
|
||||
vcpu->prev_state = vcpu->state;
|
||||
prev_state = vcpu->state;
|
||||
vcpu_set_state(vcpu, new_state);
|
||||
|
||||
if (vcpu->prev_state == VCPU_RUNNING) {
|
||||
if (prev_state == VCPU_RUNNING) {
|
||||
sleep_thread(&vcpu->thread_obj);
|
||||
}
|
||||
if (pcpu_id != get_pcpu_id()) {
|
||||
@@ -740,22 +741,6 @@ void pause_vcpu(struct acrn_vcpu *vcpu, enum vcpu_state new_state)
|
||||
}
|
||||
}
|
||||
|
||||
int32_t resume_vcpu(struct acrn_vcpu *vcpu)
|
||||
{
|
||||
int32_t ret = -1;
|
||||
|
||||
pr_dbg("vcpu%hu resumed", vcpu->vcpu_id);
|
||||
|
||||
if (vcpu->state == VCPU_PAUSED) {
|
||||
vcpu_set_state(vcpu, vcpu->prev_state);
|
||||
if (vcpu->state == VCPU_RUNNING) {
|
||||
wake_thread(&vcpu->thread_obj);
|
||||
}
|
||||
ret = 0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void save_xsave_area(struct ext_context *ectx)
|
||||
{
|
||||
ectx->xcr0 = read_xcr(0);
|
||||
|
||||
@@ -1110,7 +1110,7 @@ vlapic_process_init_sipi(struct acrn_vcpu* target_vcpu, uint32_t mode, uint32_t
|
||||
|
||||
if (target_vcpu->state != VCPU_INIT) {
|
||||
/* put target vcpu to INIT state and wait for SIPI */
|
||||
pause_vcpu(target_vcpu, VCPU_ZOMBIE);
|
||||
zombie_vcpu(target_vcpu, VCPU_ZOMBIE);
|
||||
reset_vcpu(target_vcpu, INIT_RESET);
|
||||
}
|
||||
/* new cpu model only need one SIPI to kick AP run,
|
||||
|
||||
@@ -698,7 +698,7 @@ void pause_vm(struct acrn_vm *vm)
|
||||
((is_rt_vm(vm)) && (vm->state == VM_READY_TO_POWEROFF)) ||
|
||||
(vm->state == VM_CREATED)) {
|
||||
foreach_vcpu(i, vm, vcpu) {
|
||||
pause_vcpu(vcpu, VCPU_ZOMBIE);
|
||||
zombie_vcpu(vcpu, VCPU_ZOMBIE);
|
||||
}
|
||||
vm->state = VM_PAUSED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user