linux/arch
Sean Christopherson eeeb4f67a6 KVM: x86: Introduce KVM_REQ_TLB_FLUSH_CURRENT to flush current ASID
Add KVM_REQ_TLB_FLUSH_CURRENT to allow optimized TLB flushing of VMX's
EPTP/VPID contexts[*] from the KVM MMU and/or in a deferred manner, e.g.
to flush L2's context during nested VM-Enter.

Convert KVM_REQ_TLB_FLUSH to KVM_REQ_TLB_FLUSH_CURRENT in flows where
the flush is directly associated with vCPU-scoped instruction emulation,
i.e. MOV CR3 and INVPCID.

Add a comment in vmx_vcpu_load_vmcs() above its KVM_REQ_TLB_FLUSH to
make it clear that it deliberately requests a flush of all contexts.

Service any pending flush request on nested VM-Exit as it's possible a
nested VM-Exit could occur after requesting a flush for L2.  Add the
same logic for nested VM-Enter even though it's _extremely_ unlikely
for flush to be pending on nested VM-Enter, but theoretically possible
(in the future) due to RSM (SMM) emulation.

[*] Intel also has an Address Space Identifier (ASID) concept, e.g.
    EPTP+VPID+PCID == ASID, it's just not documented in the SDM because
    the rules of invalidation are different based on which piece of the
    ASID is being changed, i.e. whether the EPTP, VPID, or PCID context
    must be invalidated.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Message-Id: <20200320212833.3507-25-sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-04-21 09:12:53 -04:00
..
alpha mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
arc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
arm ARM: 2020-04-02 15:13:15 -07:00
arm64 ARM: 2020-04-02 15:13:15 -07:00
c6x asm-generic: make more kernel-space headers mandatory 2020-04-02 09:35:25 -07:00
csky asm-generic: make more kernel-space headers mandatory 2020-04-02 09:35:25 -07:00
h8300 asm-generic: make more kernel-space headers mandatory 2020-04-02 09:35:25 -07:00
hexagon mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
ia64 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
m68k mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
microblaze mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
mips ARM: 2020-04-02 15:13:15 -07:00
nds32 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
nios2 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
openrisc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
parisc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
powerpc ARM: 2020-04-02 15:13:15 -07:00
riscv mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
s390 KVM: s390: Return last valid slot if approx index is out-of-bounds 2020-04-14 10:39:57 -04:00
sh Merge branch 'akpm' (patches from Andrew) 2020-04-02 13:55:34 -07:00
sparc mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
um Merge branch 'akpm' (patches from Andrew) 2020-04-02 13:55:34 -07:00
unicore32 mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
x86 KVM: x86: Introduce KVM_REQ_TLB_FLUSH_CURRENT to flush current ASID 2020-04-21 09:12:53 -04:00
xtensa mm: allow VM_FAULT_RETRY for multiple times 2020-04-02 09:35:30 -07:00
.gitignore
Kconfig NOHZ full updates: 2020-03-30 18:29:05 -07:00