OpenCloudOS-Kernel/arch/x86/kvm
Andy Lutomirski 1e02ce4ccc x86: Store a per-cpu shadow copy of CR4
Context switches and TLB flushes can change individual bits of CR4.
CR4 reads take several cycles, so store a shadow copy of CR4 in a
per-cpu variable.

To avoid wasting a cache line, I added the CR4 shadow to
cpu_tlbstate, which is already touched in switch_mm.  The heaviest
users of the cr4 shadow will be switch_mm and __switch_to_xtra, and
__switch_to_xtra is called shortly after switch_mm during context
switch, so the cacheline is likely to be hot.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Vince Weaver <vince@deater.net>
Cc: "hillf.zj" <hillf.zj@alibaba-inc.com>
Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/3a54dd3353fffbf84804398e00dfdc5b7c1afd7d.1414190806.git.luto@amacapital.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-02-04 12:10:42 +01:00
..
Kconfig KVM: Give IRQFD its own separate enabling Kconfig option 2014-08-05 14:26:28 +02:00
Makefile kvm: x86: move assigned-dev.c and iommu.c to arch/x86/ 2014-11-23 18:33:36 +01:00
assigned-dev.c KVM: x86: move device assignment out of kvm_host.h 2014-11-24 16:53:50 +01:00
assigned-dev.h KVM: x86: move device assignment out of kvm_host.h 2014-11-24 16:53:50 +01:00
cpuid.c KVM: cpuid: recompute CPUID 0xD.0:EBX,ECX 2014-12-05 13:57:49 +01:00
cpuid.h KVM: x86: Warn if guest virtual address space is not 48-bits 2014-09-24 14:07:48 +02:00
emulate.c KVM: x86: SYSENTER emulation is broken 2015-01-23 13:57:15 +01:00
i8254.c KVM: x86: Improve thread safety in pit 2014-10-24 13:21:14 +02:00
i8254.h KVM: fold kvm_pit_timer into kvm_kpit_state 2012-08-01 00:21:07 -03:00
i8259.c KVM: inject ExtINT interrupt before APIC interrupts 2012-12-13 23:05:21 -02:00
ioapic.c kvm: remove CONFIG_X86 #ifdefs from files formerly shared with ia64 2014-11-21 18:07:26 +01:00
ioapic.h KVM: move APIC types to arch/x86/ 2014-12-18 09:39:51 +01:00
iommu.c KVM: x86: move device assignment out of kvm_host.h 2014-11-24 16:53:50 +01:00
irq.c KVM: nVMX: fix "acknowledge interrupt on exit" when APICv is in use 2014-08-05 15:00:24 +02:00
irq.h KVM: switch to symbolic name for irq_states size 2012-07-20 16:12:16 -03:00
irq_comm.c kvm: remove CONFIG_X86 #ifdefs from files formerly shared with ia64 2014-11-21 18:07:26 +01:00
kvm_cache_regs.h KVM: MMU: Do not unconditionally read PDPTE from guest memory 2011-09-25 19:18:01 +03:00
lapic.c KVM: x86: check LAPIC presence when building apic_map 2015-01-30 12:28:31 +01:00
lapic.h KVM: x86: allow 256 logical x2APICs again 2014-12-04 15:29:08 +01:00
mmu.c kvm: x86: drop severity of "generation wraparound" message 2014-12-27 21:52:28 +01:00
mmu.h KVM: mmio: cleanup kvm_set_mmio_spte_mask 2014-09-03 10:04:10 +02:00
mmu_audit.c arch/x86: replace strict_strto calls 2014-08-08 15:57:28 -07:00
mmutrace.h x86/kvm/tracing: Use helper function trace_seq_buffer_ptr() 2014-11-19 15:25:36 -05:00
paging_tmpl.h KVM: x86: Wrong assertion on paging_tmpl.h 2014-10-24 13:30:37 +02:00
pmu.c KVM: x86: Clarify PMU related features bit manipulation 2014-08-20 13:01:25 +02:00
svm.c x86: Store a per-cpu shadow copy of CR4 2015-02-04 12:10:42 +01:00
trace.h kvm: x86: add trace event for pvclock updates 2014-11-08 08:20:55 +01:00
tss.h
vmx.c x86: Store a per-cpu shadow copy of CR4 2015-02-04 12:10:42 +01:00
x86.c KVM: x86: support XSAVES usage in the host 2014-12-05 13:57:05 +01:00
x86.h KVM: x86: Enable Intel AVX-512 for guest 2014-11-03 12:07:30 +01:00