linux/arch
Hollis Blanchard 7924bd4109 KVM: ppc: directly insert shadow mappings into the hardware TLB
Formerly, we used to maintain a per-vcpu shadow TLB and on every entry to the
guest would load this array into the hardware TLB. This consumed 1280 bytes of
memory (64 entries of 16 bytes plus a struct page pointer each), and also
required some assembly to loop over the array on every entry.

Instead of saving a copy in memory, we can just store shadow mappings directly
into the hardware TLB, accepting that the host kernel will clobber these as
part of the normal 440 TLB round robin. When we do that we need less than half
the memory, and we have decreased the exit handling time for all guest exits,
at the cost of increased number of TLB misses because the host overwrites some
guest entries.

These savings will be increased on processors with larger TLBs or which
implement intelligent flush instructions like tlbivax (which will avoid the
need to walk arrays in software).

In addition to that and to the code simplification, we have a greater chance of
leaving other host userspace mappings in the TLB, instead of forcing all
subsequent tasks to re-fault all their mappings.

Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2008-12-31 16:55:09 +02:00
..
alpha alpha: remove dead BIO_VMERGE_BOUNDARY 2008-12-29 08:29:51 +01:00
arm Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-12-30 17:36:49 -08:00
avr32 avr32: favr-32 build fix 2008-12-18 16:22:13 +01:00
blackfin kbuild: use KECHO convenience echo 2008-12-03 21:32:01 +01:00
cris [CRIS] Remove links from CRIS build 2008-10-31 23:37:57 +01:00
frv frv: fix mmap2 error handling 2008-12-01 19:55:24 -08:00
h8300 Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb 2008-10-23 08:20:34 -07:00
ia64 KVM: ia64: Clean up vmm_ivt.S using tab to indent every line 2008-12-31 16:54:59 +02:00
m32r Merge branch 'sched/urgent' into sched/core 2008-12-08 13:52:00 +01:00
m68k m68k: fix trigraph ignored warning in setox.S 2008-12-28 20:00:05 +01:00
m68knommu container freezer: implement freezer cgroup subsystem 2008-10-20 08:52:34 -07:00
mips Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-28 12:27:58 -08:00
mn10300 MN10300: Give correct size when reserving interrupt vector table 2008-12-10 13:34:33 -08:00
parisc Merge branch 'next' into for-linus 2008-12-25 11:40:09 +11:00
powerpc KVM: ppc: directly insert shadow mappings into the hardware TLB 2008-12-31 16:55:09 +02:00
s390 KVM: s390: Fix memory leak of vcpu->run 2008-12-31 16:55:03 +02:00
sh Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2008-12-28 12:33:21 -08:00
sparc Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-12-28 20:19:47 -08:00
um Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:10:19 -08:00
x86 KVM: VMX: fix sparse warning 2008-12-31 16:55:06 +02:00
xtensa xtensa: Kill directly reference of netdev->priv 2008-12-04 15:06:56 -08:00
.gitignore
Kconfig oprofile: select RING_BUFFER 2008-12-12 09:46:31 +01:00