From 3bbe6b739ca29e14959b9b97ca31f8ac8ac49e02 Mon Sep 17 00:00:00 2001 From: Chaohong guo Date: Mon, 21 Jan 2019 15:42:13 +0800 Subject: [PATCH] HV: fix per-cpu stack relocation in trampoline.c In write_trampoline_stack_sym(), when do relocation for pcpu's stack, it wrongly adds an offset. As a result, during booting, when non-BSP CPU (APs) tries to run trampoline code once they are waken up by BSP via SIPI, system hangs. Tracked-On: #2035 Signed-off-by: Chaohong guo --- hypervisor/arch/x86/trampoline.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hypervisor/arch/x86/trampoline.c b/hypervisor/arch/x86/trampoline.c index c827e73d2..1ea853153 100644 --- a/hypervisor/arch/x86/trampoline.c +++ b/hypervisor/arch/x86/trampoline.c @@ -45,7 +45,7 @@ void write_trampoline_stack_sym(uint16_t pcpu_id) hva = (uint64_t *)(hpa2hva(trampoline_start16_paddr) + trampoline_relo_addr(secondary_cpu_stack)); stack_sym_addr = (uint64_t)&per_cpu(stack, pcpu_id)[CONFIG_STACK_SIZE - 1]; - *hva = stack_sym_addr + get_hv_image_delta(); + *hva = stack_sym_addr; clflush(hva); }