acrn-hypervisor/hypervisor/arch/x86/guest
Shuo A Liu 9c1caad25a hv: nested: Keep privilege bits sync in shadow EPT entry
Guest may not use INVEPT instruction after enabling any of bits 2:0 from
0 to 1 of a present EPT entry, then the shadow EPT entry has no chance
to sync guest EPT entry. According to the SDM,
"""
Software may use the INVEPT instruction after modifying a present EPT
paging-structure entry (see Section 28.2.2) to change any of the
privilege bits 2:0 from 0 to 1.1 Failure to do so may cause an EPT
violation that would not otherwise occur. Because an EPT violation
invalidates any mappings that would be used by the access that caused
the EPT violation (see Section 28.3.3.1), an EPT violation will not
recur if the original access is performed again, even if the INVEPT
instruction is not executed.
"""

Sync the afterthought of privilege bits from guest EPT entry to shadow
EPT entry to cover above case.

Tracked-On: #5923
Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2021-07-02 09:24:12 +08:00
..
assign.c hv: validate input for dmar_free_irte function 2021-06-08 09:03:10 +08:00
ept.c hv: Use 64 bits definition for 64 bits MSR_IA32_VMX_EPT_VPID_CAP operation 2021-07-02 09:24:12 +08:00
guest_memory.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
hyperv.c hv/mod_timer: split tsc handling code from timer. 2021-05-18 16:43:28 +08:00
instr_emul.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
nested.c hv: Wrap same code as a static function 2021-06-09 10:07:05 +08:00
pm.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
splitlock.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
trusty.c hv/mod_timer: split tsc handling code from timer. 2021-05-18 16:43:28 +08:00
ucode.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
vcpu.c hv: nested: update run_vcpu() function for nested case 2021-06-03 15:23:25 +08:00
vcpuid.c hv: vcpuid: passthrough host CPUID leaf.0BH to guest VMs 2021-05-26 11:23:06 +08:00
ve820.c HV: add find_space_from_ve820() api 2021-06-11 10:06:02 +08:00
vept.c hv: nested: Keep privilege bits sync in shadow EPT entry 2021-07-02 09:24:12 +08:00
virq.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
virtual_cr.c hv: nested: enable nested virtualization 2021-05-13 16:16:30 +08:00
vlapic_priv.h hv: add ops to vlapic structure 2019-07-19 16:47:06 +08:00
vlapic.c hv: remove unnecessary ASSERT in vlapic_write 2021-06-08 09:03:10 +08:00
vm_reset.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
vm.c HV: avoid pre-launched VM modules being corrupted by SOS kernel load 2021-06-11 10:06:02 +08:00
vmcall.c hv: hypercalls: refactor permission-checking and dispatching logic 2021-05-12 13:43:41 +08:00
vmcs.c hv: VMPTRLD and VMCLEAR VMCS with the common APIs 2021-05-26 11:22:26 +08:00
vmexit.c hv: nested: implement nested VM exit handler 2021-06-03 15:23:25 +08:00
vmsr.c hv/mod_timer: split tsc handling code from timer. 2021-05-18 16:43:28 +08:00
vmtrr.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
vmx_asm.S hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
vmx_io.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00