kvm: vmx: Flush TLB when the APIC-access address changes
authorJim Mattson <jmattson@google.com>
Thu, 16 Mar 2017 20:53:59 +0000 (13:53 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 23 Mar 2017 18:02:06 +0000 (19:02 +0100)
commitfb6c8198431311027c3434d4e94ab8bc040f7aea
tree24158162ec309947b0452170b391aff74ff0a12d
parentc761159cf81b8641290f7559a8d8e30f6ab92669
kvm: vmx: Flush TLB when the APIC-access address changes

Quoting from the Intel SDM, volume 3, section 28.3.3.4: Guidelines for
Use of the INVEPT Instruction:

If EPT was in use on a logical processor at one time with EPTP X, it
is recommended that software use the INVEPT instruction with the
"single-context" INVEPT type and with EPTP X in the INVEPT descriptor
before a VM entry on the same logical processor that enables EPT with
EPTP X and either (a) the "virtualize APIC accesses" VM-execution
control was changed from 0 to 1; or (b) the value of the APIC-access
address was changed.

In the nested case, the burden falls on L1, unless L0 enables EPT in
vmcs02 when L1 doesn't enable EPT in vmcs12.

Signed-off-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
arch/x86/kvm/vmx.c