linux/arch/x86
Sean Christopherson 389ab25216 KVM: nVMX: Pull KVM L0's desired controls directly from vmcs01
When preparing controls for vmcs02, grab KVM's desired controls from
vmcs01's shadow state instead of recalculating the controls from scratch,
or in the secondary execution controls, instead of using the dedicated
cache.  Calculating secondary exec controls is eye-poppingly expensive
due to the guest CPUID checks, hence the dedicated cache, but the other
calculations aren't exactly free either.

Explicitly clear several bits (x2APIC, DESC exiting, and load EFER on
exit) as appropriate as they may be set in vmcs01, whereas the previous
implementation relied on dynamic bits being cleared in the calculator.

Intentionally propagate VM_{ENTRY,EXIT}_LOAD_IA32_PERF_GLOBAL_CTRL from
vmcs01 to vmcs02.  Whether or not PERF_GLOBAL_CTRL is loaded depends on
whether or not perf itself is active, so unless perf stops between the
exit from L1 and entry to L2, vmcs01 will hold the desired value.  This
is purely an optimization as atomic_switch_perf_msrs() will set/clear
the control as needed at VM-Enter, i.e. it avoids two extra VMWRITEs in
the case where perf is active (versus starting with the bits clear in
vmcs02, which was the previous behavior).

Cc: Zeng Guang <guang.zeng@intel.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210810171952.2758100-3-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-08-13 03:35:15 -04:00
..
boot Modernize the genimage.sh script, add a 'hdimage' target and EFI support. 2021-06-28 13:05:09 -07:00
configs
crypto crypto: x86/curve25519 - fix cpu feature checking logic in mod_exit 2021-06-11 15:03:29 +08:00
entry arch, mm: wire up memfd_secret system call where relevant 2021-07-08 11:48:21 -07:00
events A fix and a hardware-enablement addition: 2021-07-11 11:10:48 -07:00
hyperv Drivers: hv: Move Hyper-V extended capability check to arch neutral code 2021-06-05 10:22:34 +00:00
ia32 binfmt: remove in-tree usage of MAP_EXECUTABLE 2021-06-29 10:53:50 -07:00
include KVM: X86: Remove unneeded KVM_DEBUGREG_RELOAD 2021-08-13 03:35:14 -04:00
kernel Merge tag 'kvm-s390-master-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD 2021-07-14 12:14:27 -04:00
kvm KVM: nVMX: Pull KVM L0's desired controls directly from vmcs01 2021-08-13 03:35:15 -04:00
lib - Differentiate the type of exception the #VC handler raises depending 2021-06-28 11:29:12 -07:00
math-emu x86/math-emu: Rename frstor() 2021-06-23 18:16:33 +02:00
mm mm: rename p4d_page_vaddr to p4d_pgtable and make it return pud_t * 2021-07-08 11:48:22 -07:00
net bpf: Track subprog poke descriptors correctly and fix use-after-free 2021-07-09 12:08:27 +02:00
pci pci-v5.14-changes 2021-07-08 12:06:20 -07:00
platform EFI changes: two driver API cleanups, and a log message tweak. 2021-06-28 11:34:16 -07:00
power - turn the stack canary into a normal __percpu variable on 32-bit which 2021-04-27 17:45:09 -07:00
purgatory kernel.h: split out panic and oops helpers 2021-07-01 11:06:04 -07:00
ras
realmode A single ELF format fix for a section flags mismatch bug that breaks 2021-06-28 11:35:55 -07:00
tools x86/tools/insn_sanity: Convert to insn_decode() 2021-03-15 12:21:11 +01:00
um x86/uml/syscalls: Remove array index from syscall initializers 2021-05-25 16:59:23 +02:00
video
xen kernel.h: split out panic and oops helpers 2021-07-01 11:06:04 -07:00
.gitignore
Kbuild
Kconfig Merge branch 'akpm' (patches from Andrew) 2021-07-02 12:08:10 -07:00
Kconfig.assembler
Kconfig.cpu
Kconfig.debug
Makefile Kbuild updates for v5.14 2021-07-10 11:01:38 -07:00
Makefile_32.cpu
Makefile.um um: allow not setting extra rpaths in the linux binary 2021-06-17 21:54:15 +02:00