mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-06-06 09:06:30 +00:00
hv: Do not reset vcpu thread's stack when reset_vcpu
vcpu thread's stack shouldn't follow reset_vcpu to reset. There is also a bug here: while vcpu B thread set vcpu->running to false, other vcpu A thread will treat the vcpu B is paused while it has not been switch out completely, then reset_vcpu will reset the vcpu B thread's stack and corrupt its running context. This patch will remove the vcpu thread's stack reset from reset_vcpu. With the change, we need do init_vmcs between vcpu startup address be settled and scheduled in. And switch_to_idle() is not needed anymore as S3 thread's stack will not be reset. Tracked-On: #3813 Signed-off-by: Fengwei Yin <fengwei.yin@intel.com> Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
This commit is contained in:
committed by
ACRN System Integration
parent
3072b6fc6d
commit
f85106d1ed
@@ -639,7 +639,6 @@ void reset_vcpu(struct acrn_vcpu *vcpu)
|
||||
vcpu->arch.exception_info.exception = VECTOR_INVALID;
|
||||
vcpu->arch.cur_context = NORMAL_WORLD;
|
||||
vcpu->arch.irq_window_enabled = false;
|
||||
vcpu->thread_obj.host_sp = build_stack_frame(vcpu);
|
||||
(void)memset((void *)vcpu->arch.vmcs, 0U, PAGE_SIZE);
|
||||
|
||||
for (i = 0; i < NR_WORLD; i++) {
|
||||
|
||||
Reference in New Issue
Block a user