linux/arch/powerpc
Takuya Yoshikawa 84504ef386 KVM: MMU: Make kvm_handle_hva() handle range of addresses
When guest's memory is backed by THP pages, MMU notifier needs to call
kvm_unmap_hva(), which in turn leads to kvm_handle_hva(), in a loop to
invalidate a range of pages which constitute one huge page:

  for each page
    for each memslot
      if page is in memslot
        unmap using rmap

This means although every page in that range is expected to be found in
the same memslot, we are forced to check unrelated memslots many times.
If the guest has more memslots, the situation will become worse.

Furthermore, if the range does not include any pages in the guest's
memory, the loop over the pages will just consume extra time.

This patch, together with the following patches, solves this problem by
introducing kvm_handle_hva_range() which makes the loop look like this:

  for each memslot
    for each page in memslot
      unmap using rmap

In this new processing, the actual work is converted to a loop over rmap
which is much more cache friendly than before.

Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Cc: Alexander Graf <agraf@suse.de>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
2012-07-18 16:55:04 -03:00
..
boot arm-soc: driver specific updates 2012-05-26 12:22:27 -07:00
configs Sound updates for 3.5-rc1 2012-05-23 13:05:43 -07:00
include/asm booke/bookehv: Add host crit-watchdog exception support 2012-07-11 17:39:36 +02:00
kernel Merge branch 'for-upstream' of git://github.com/agraf/linux-2.6 into next 2012-06-06 15:31:34 +03:00
kvm KVM: MMU: Make kvm_handle_hva() handle range of addresses 2012-07-18 16:55:04 -03:00
lib powerpc: Use the new generic strncpy_from_user() and strnlen_user() 2012-05-27 21:00:07 -07:00
math-emu
mm powerpc: use clear_tasks_mm_cpumask() 2012-05-31 17:49:29 -07:00
net bpf jit: Let the powerpc jit handle negative offsets 2012-04-30 13:40:50 -04:00
oprofile Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
perf perf: Pass last sampling period to perf_sample_data_init() 2012-05-09 15:23:12 +02:00
platforms Merge branch 'for-upstream' of git://github.com/agraf/linux-2.6 into next 2012-06-06 15:31:34 +03:00
sysdev Merge remote-tracking branch 'jwb/next' into next 2012-05-10 12:58:24 +10:00
xmon Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
Kconfig powerpc: Use the new generic strncpy_from_user() and strnlen_user() 2012-05-27 21:00:07 -07:00
Kconfig.debug irqdomain: Remove powerpc dependency from debugfs file 2012-03-29 14:31:02 -06:00
Makefile powerpc/crypto: Build files for the nx device driver 2012-05-16 15:05:45 +10:00
relocs_check.pl powerpc: Process dynamic relocations for kernel 2011-12-20 10:21:08 -05:00