linux/arch/x86/kvm
Wanpeng Li 3ea3b7fa9a kvm: mmu: lazy collapse small sptes into large sptes
Dirty logging tracks sptes in 4k granularity, meaning that large sptes
have to be split.  If live migration is successful, the guest in the
source machine will be destroyed and large sptes will be created in the
destination. However, the guest continues to run in the source machine
(for example if live migration fails), small sptes will remain around
and cause bad performance.

This patch introduce lazy collapsing of small sptes into large sptes.
The rmap will be scanned in ioctl context when dirty logging is stopped,
dropping those sptes which can be collapsed into a single large-page spte.
Later page faults will create the large-page sptes.

Reviewed-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
Message-Id: <1428046825-6905-1-git-send-email-wanpeng.li@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-04-08 10:47:04 +02: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: x86: cache maxphyaddr CPUID leaf in struct kvm_vcpu 2015-04-08 10:46:56 +02:00
cpuid.h KVM: x86: cache maxphyaddr CPUID leaf in struct kvm_vcpu 2015-04-08 10:46:56 +02:00
emulate.c kvm: x86: fix x86 eflags fixed bit 2015-04-08 10:46:52 +02:00
i8254.c KVM: Redesign kvm_io_bus_ API to pass VCPU structure to the callbacks. 2015-03-26 21:43:11 +00:00
i8254.h KVM: move iodev.h from virt/kvm/ to include/kvm 2015-03-26 21:43:12 +00:00
i8259.c KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
ioapic.c KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
ioapic.h KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
iommu.c kvm: iommu: Add cond_resched to legacy device assignment code 2015-01-27 21:31:12 +01:00
irq_comm.c kvm: remove CONFIG_X86 #ifdefs from files formerly shared with ia64 2014-11-21 18:07:26 +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: move iodev.h from virt/kvm/ to include/kvm 2015-03-26 21:43:12 +00:00
Kconfig Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08: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: BSP in MSR_IA32_APICBASE is writable 2015-04-08 10:47:02 +02:00
lapic.h KVM: x86: simplify kvm_apic_map 2015-04-08 10:47:01 +02:00
Makefile KVM: x86: remove now unneeded include directory from Makefile 2015-03-26 21:43:13 +00:00
mmu_audit.c arch/x86: replace strict_strto calls 2014-08-08 15:57:28 -07:00
mmu.c kvm: mmu: lazy collapse small sptes into large sptes 2015-04-08 10:47:04 +02:00
mmu.h KVM: x86: #PF error-code on R/W operations is wrong 2015-01-09 10:24:11 +01: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: For the symbols used locally only should be static type 2015-03-17 22:38:28 -03:00
svm.c KVM: x86: BSP in MSR_IA32_APICBASE is writable 2015-04-08 10:47:02 +02:00
trace.h KVM: VMX: Add PML support in VMX 2015-01-30 09:39:54 +01:00
tss.h
vmx.c KVM: x86: BSP in MSR_IA32_APICBASE is writable 2015-04-08 10:47:02 +02:00
x86.c kvm: mmu: lazy collapse small sptes into large sptes 2015-04-08 10:47:04 +02:00
x86.h kvm: x86: Remove kvm_make_request from lapic.c 2015-01-08 22:48:08 +01:00