linux_dsm_epyc7002/arch
Takuya Yoshikawa 982b3394dd KVM: x86: Optimize mmio spte zapping when creating/moving memslot
When we create or move a memory slot, we need to zap mmio sptes.
Currently, zap_all() is used for this and this is causing two problems:
 - extra page faults after zapping mmu pages
 - long mmu_lock hold time during zapping mmu pages

For the latter, Marcelo reported a disastrous mmu_lock hold time during
hot-plug, which made the guest unresponsive for a long time.

This patch takes a simple way to fix these problems: do not zap mmu
pages unless they are marked mmio cached.  On our test box, this took
only 50us for the 4GB guest and we did not see ms of mmu_lock hold time
any more.

Note that we still need to do zap_all() for other cases.  So another
work is also needed: Xiao's work may be the one.

Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
2013-03-14 10:21:21 +02:00
..
alpha arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
arc ARC: split elf.h into uapi and export it for userspace 2013-02-27 20:00:26 +05:30
arm KVM: ARM: Remove kvm_arch_set_memory_region() 2013-03-04 20:21:08 -03:00
arm64 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-03-02 08:34:06 -08:00
avr32 arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
blackfin Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
c6x Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
cris Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
frv arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
h8300 arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
hexagon Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
ia64 KVM: set_memory_region: Refactor commit_memory_region() 2013-03-04 20:21:08 -03:00
m32r Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
m68k Merge branch 'timer/cleanup' into late/mvebu2 2013-02-28 18:54:15 +01:00
metag ImgTec Meta architecture changes for v3.9-rc1 2013-03-03 12:06:09 -08:00
microblaze arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
mips Merge git://www.linux-watchdog.org/linux-watchdog 2013-03-03 10:23:29 -08:00
mn10300 arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
openrisc arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
parisc Merge branch 'fixes-for-3.9-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux 2013-03-03 12:57:38 -08:00
powerpc KVM: set_memory_region: Refactor commit_memory_region() 2013-03-04 20:21:08 -03:00
s390 s390/kvm,gaccess: add address space annotations 2013-03-07 16:21:22 -03:00
score arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
sh hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
sparc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-03-02 08:34:06 -08:00
tile arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
um Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-02-23 18:50:11 -08:00
unicore32 arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
x86 KVM: x86: Optimize mmio spte zapping when creating/moving memslot 2013-03-14 10:21:21 +02:00
xtensa arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS 2013-02-27 19:10:23 -08:00
.gitignore
Kconfig ImgTec Meta architecture changes for v3.9-rc1 2013-03-03 12:06:09 -08:00