linux_dsm_epyc7002/arch/x86/kvm
Andy Lutomirski d6e41f1151 x86/mm, KVM: Teach KVM's VMX code that CR3 isn't a constant
When PCID is enabled, CR3's PCID bits can change during context
switches, so KVM won't be able to treat CR3 as a per-mm constant any
more.

I structured this like the existing CR4 handling.  Under ordinary
circumstances (PCID disabled or if the current PCID and the value
that's already in the VMCS match), then we won't do an extra VMCS
write, and we'll never do an extra direct CR3 read.  The overhead
should be minimal.

I disallowed using the new helper in non-atomic context because
PCID support will cause CR3 to stop being constant in non-atomic
process context.

(Frankly, it also scares me a bit that KVM ever treated CR3 as
constant, but it looks like it was okay before.)

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Borislav Petkov <bpetkov@suse.de>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Nadav Amit <nadav.amit@gmail.com>
Cc: Nadav Amit <namit@vmware.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: kvm@vger.kernel.org
Cc: linux-mm@kvack.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-06-05 09:59:45 +02:00
..
cpuid.c KVM: x86: virtualize cpuid faulting 2017-04-21 12:50:06 +02:00
cpuid.h KVM: x86: virtualize cpuid faulting 2017-04-21 12:50:06 +02:00
debugfs.c
emulate.c KVM: x86: prevent uninitialized variable warning in check_svme() 2017-05-19 19:59:28 +02:00
hyperv.c
hyperv.h
i8254.c
i8254.h
i8259.c KVM: x86: simplify pic_ioport_read() 2017-04-12 20:17:15 +02:00
ioapic.c KVM: x86: rename kvm_vcpu_request_scan_ioapic() 2017-04-12 20:17:14 +02:00
ioapic.h KVM: x86: convert kvm_(set|get)_ioapic() into void 2017-04-12 20:17:14 +02:00
irq_comm.c KVM: x86: don't hold kvm->lock in KVM_SET_GSI_ROUTING 2017-05-02 14:45:45 +02:00
irq.c KVM: x86: get rid of pic_irqchip() 2017-04-12 20:17:13 +02:00
irq.h KVM: x86: don't hold kvm->lock in KVM_SET_GSI_ROUTING 2017-05-02 14:45:45 +02:00
Kconfig KVM: x86: drop legacy device assignment 2017-04-07 16:49:00 +02:00
kvm_cache_regs.h
lapic.c KVM: x86: Fix virtual wire mode 2017-05-26 18:01:21 +02:00
lapic.h
Makefile KVM: x86: drop legacy device assignment 2017-04-07 16:49:00 +02:00
mmu_audit.c
mmu.c kvm: x86: Add a hook for arch specific dirty logging emulation 2017-05-09 11:54:16 +02:00
mmu.h kvm: x86: Add a hook for arch specific dirty logging emulation 2017-05-09 11:54:16 +02:00
mmutrace.h
mtrr.c
page_track.c mm: introduce kv[mz]alloc helpers 2017-05-08 17:15:12 -07:00
paging_tmpl.h KVM: nVMX: fix EPT permissions as reported in exit qualification 2017-05-15 18:22:40 +02:00
pmu_amd.c
pmu_intel.c KVM: x86/vPMU: fix undefined shift in intel_pmu_refresh() 2017-05-19 19:59:27 +02:00
pmu.c
pmu.h
svm.c KVM: SVM: do not zero out segment attributes if segment is unusable or not present 2017-06-01 11:21:17 +02:00
trace.h
tss.h
vmx.c x86/mm, KVM: Teach KVM's VMX code that CR3 isn't a constant 2017-06-05 09:59:45 +02:00
x86.c KVM: x86: Fix nmi injection failure when vcpu got blocked 2017-06-01 11:23:10 +02:00
x86.h kvm: better MWAIT emulation for guests 2017-04-21 12:50:28 +02:00