1
linux/mm
Zachary Amsden 6606c3e0da [PATCH] paravirt: lazy mmu mode hooks.patch
Implement lazy MMU update hooks which are SMP safe for both direct and shadow
page tables.  The idea is that PTE updates and page invalidations while in
lazy mode can be batched into a single hypercall.  We use this in VMI for
shadow page table synchronization, and it is a win.  It also can be used by
PPC and for direct page tables on Xen.

For SMP, the enter / leave must happen under protection of the page table
locks for page tables which are being modified.  This is because otherwise,
you end up with stale state in the batched hypercall, which other CPUs can
race ahead of.  Doing this under the protection of the locks guarantees the
synchronization is correct, and also means that spurious faults which are
generated during this window by remote CPUs are properly handled, as the page
fault handler must re-check the PTE under protection of the same lock.

Signed-off-by: Zachary Amsden <zach@vmware.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-01 00:39:33 -07:00
..
allocpercpu.c
bootmem.c
bounce.c [PATCH] BLOCK: Separate the bounce buffering code from the highmem code [try #6] 2006-09-30 20:32:11 +02:00
fadvise.c
filemap_xip.c
filemap.c [PATCH] Streamline generic_file_* interfaces and filemap cleanups 2006-10-01 00:39:28 -07:00
filemap.h
fremap.c [PATCH] paravirt: pte clear not present 2006-10-01 00:39:33 -07:00
highmem.c [PATCH] BLOCK: Separate the bounce buffering code from the highmem code [try #6] 2006-09-30 20:32:11 +02:00
hugetlb.c
internal.h
Kconfig [PATCH] hot-add-mem x86_64: Kconfig changes 2006-10-01 00:39:18 -07:00
madvise.c
Makefile [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
memory_hotplug.c [PATCH] hot-add-mem x86_64: use CONFIG_MEMORY_HOTPLUG_RESERVE 2006-10-01 00:39:18 -07:00
memory.c [PATCH] paravirt: lazy mmu mode hooks.patch 2006-10-01 00:39:33 -07:00
mempolicy.c [PATCH] kmemdup: some users 2006-10-01 00:39:19 -07:00
mempool.c
migrate.c [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
mincore.c
mlock.c
mmap.c
mmzone.c
mprotect.c [PATCH] paravirt: lazy mmu mode hooks.patch 2006-10-01 00:39:33 -07:00
mremap.c [PATCH] paravirt: lazy mmu mode hooks.patch 2006-10-01 00:39:33 -07:00
msync.c
nommu.c [PATCH] NOMMU: don't try and give NULL to fput() 2006-10-01 00:39:17 -07:00
oom_kill.c [PATCH] oom: don't kill current when another OOM in progress 2006-09-29 09:18:21 -07:00
page_alloc.c [PATCH] mm/page_alloc: use NULL instead of 0 for ptr 2006-09-27 08:26:13 -07:00
page_io.c
page-writeback.c [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
pdflush.c
prio_tree.c
readahead.c
rmap.c
shmem_acl.c [PATCH] Access Control Lists for tmpfs 2006-09-29 09:18:24 -07:00
shmem.c [PATCH] r/o bind mount prepwork: inc_nlink() helper 2006-10-01 00:39:30 -07:00
slab.c [PATCH] single bit flip detector 2006-09-29 09:18:10 -07:00
slob.c
sparse.c
swap_state.c
swap.c
swapfile.c [PATCH] valid_swaphandles() fix 2006-09-29 09:18:23 -07:00
thrash.c
tiny-shmem.c
truncate.c [PATCH] invalidate_inode_pages2(): ignore page refcounts 2006-10-01 00:39:33 -07:00
util.c [PATCH] kmemdup: introduce 2006-10-01 00:39:19 -07:00
vmalloc.c [PATCH] Mark __remove_vm_area() static 2006-09-27 08:26:13 -07:00
vmscan.c [PATCH] page invalidation cleanup 2006-09-27 08:26:12 -07:00
vmstat.c [PATCH] zone_statistics: Use hot node instead of cold zone_pgdat 2006-09-27 08:26:13 -07:00