From c691c5bd3c596fe81a8be3590ca570e5d0372367 Mon Sep 17 00:00:00 2001 From: Mingqiang Chi Date: Fri, 6 Sep 2019 14:22:55 +0800 Subject: [PATCH] hv:add volatile keyword for some variables pcpu_active_bitmap was read continuously in wait_pcpus_offline(), acrn_vcpu->running was read continuously in pause_vcpu(), add volatile keyword to ensure that such accesses are not optimised away by the complier. Tracked-On: #1842 Signed-off-by: Mingqiang Chi --- hypervisor/arch/x86/cpu.c | 2 +- hypervisor/include/arch/x86/guest/vcpu.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hypervisor/arch/x86/cpu.c b/hypervisor/arch/x86/cpu.c index b040388b6..1fd09294f 100644 --- a/hypervisor/arch/x86/cpu.c +++ b/hypervisor/arch/x86/cpu.c @@ -37,7 +37,7 @@ static uint64_t pcpu_sync = 0UL; static uint64_t startup_paddr = 0UL; /* physical cpu active bitmap, support up to 64 cpus */ -static uint64_t pcpu_active_bitmap = 0UL; +static volatile uint64_t pcpu_active_bitmap = 0UL; static void pcpu_xsave_init(void); static void set_current_pcpu_id(uint16_t pcpu_id); diff --git a/hypervisor/include/arch/x86/guest/vcpu.h b/hypervisor/include/arch/x86/guest/vcpu.h index dc8d6afa8..5394de1a2 100644 --- a/hypervisor/include/arch/x86/guest/vcpu.h +++ b/hypervisor/include/arch/x86/guest/vcpu.h @@ -360,7 +360,7 @@ struct acrn_vcpu { struct sched_object sched_obj; bool launched; /* Whether the vcpu is launched on target pcpu */ - bool running; /* vcpu is picked up and run? */ + volatile bool running; /* vcpu is picked up and run? */ struct instr_emul_ctxt inst_ctxt; struct io_request req; /* used by io/ept emulation */