acrn-hypervisor/hypervisor/arch/x86
Zide Chen a958fea7a4 hv: emulate IA32_TSC_ADJUST MSR
Intercept IA32_TSC_ADJUST MSR so that writing IA32_TSC_ADJUST from the
guests won't impact the TSC in root mode or potentially other vCPUs in
the same pCPU.

- MSR TSC_ADJUST needs to be isolated between normal and secure world,
  so it's included in NUM_WORLD_MSRS.
- Upon writing to either IA32_TSC_ADJUST or IA32_TSC from the guests,
  don't write to physical MSRS so it won't impact the host side, but
  update the TSC offset VM-execution control.
- don't need to intercept rdmsr for IA32_TIME_STAMP_COUNTER.
- add the missing statement in save_world_ctx() to save the tsc_offset
  during world switch.

Tracked-On: #1867
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Anthony Xu <anthony.xu@intel.com>
2018-12-14 09:11:37 +08:00
..
boot hv: enable NX in hypervisor 2018-12-12 12:53:18 +08:00
configs Makefile: separate PLATFORM into BOARD+FIRMWARE 2018-12-12 13:23:28 +08:00
guest hv: emulate IA32_TSC_ADJUST MSR 2018-12-14 09:11:37 +08:00
assign.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
cpu_state_tbl.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
cpu.c modularization: hypervisor initilization component 2018-12-14 08:56:15 +08:00
e820.c HV: rename e820_entries to e820_entries_count 2018-12-12 09:12:12 +08:00
ept.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
gdt.c fix "Procedure is not pure assembler" 2018-11-13 16:28:58 +08:00
idt.S move idt.S and idt.h out of boot component 2018-12-12 09:07:43 +08:00
init.c modularization: hypervisor initilization component 2018-12-14 08:56:15 +08:00
io.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
ioapic.c hv: change the param type of mmio_write** 2018-12-04 09:10:54 +08:00
irq.c move idt fixup out of cpu_primary.S 2018-12-12 09:07:43 +08:00
Kconfig HV: replace serial PCI MMIO base with BDF config 2018-12-03 13:20:35 +08:00
lapic.c hv: lapic: fix a theoretic infinite loop when clear lapic isr 2018-11-22 12:44:21 +08:00
mmu.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
mtrr.c hv: fix one MISRA-C violation in mtrr.c 2018-12-06 10:54:01 +08:00
notify.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
page.c hv: minimize the case of "identifier reuse" 2018-12-07 15:21:39 +08:00
pagetable.c hv: mmu: replace dynamic memory allocation in memory 2018-11-02 13:15:48 +08:00
pm.c hv: remove the theoretic infinite loop 2018-12-05 13:17:38 +08:00
retpoline-thunk.S
static_checks.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
timer.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
trampoline.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
trusty.c hv: emulate IA32_TSC_ADJUST MSR 2018-12-14 09:11:37 +08:00
virq.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
vmexit.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
vmx_asm.S hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
vmx.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
vtd.c hv: use int32_t replace int 2018-12-12 13:08:10 +08:00
wakeup.S hv: fix 'User name starts with underscore' 2018-09-30 14:45:37 +08:00