linux-sg2042/arch/x86/xen
Jeremy Fitzhardinge e57778a1e3 xen: implement ptep_modify_prot_start/commit
Xen has a pte update function which will update a pte while preserving
its accessed and dirty bits.  This means that ptep_modify_prot_start() can be
implemented as a simple read of the pte value.  The hardware may
update the pte in the meantime, but ptep_modify_prot_commit() updates it while
preserving any changes that may have happened in the meantime.

The updates in ptep_modify_prot_commit() are batched if we're currently in lazy
mmu mode.

The mmu_update hypercall can take a batch of updates to perform, but
this code doesn't make particular use of that feature, in favour of
using generic multicall batching to get them all into the hypervisor.

The net effect of this is that each mprotect pte update turns from two
expensive trap-and-emulate faults into they hypervisor into a single
hypercall whose cost is amortized in a batched multicall.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Acked-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-06-25 15:17:23 +02:00
..
Kconfig Merge commit 'v2.6.26-rc8' into x86/xen 2008-06-25 12:16:51 +02:00
Makefile xen: implement save/restore 2008-05-27 10:11:38 +02:00
enlighten.c xen: implement ptep_modify_prot_start/commit 2008-06-25 15:17:23 +02:00
grant-table.c xen: make grant table arch portable 2008-04-24 23:57:32 +02:00
mmu.c xen: implement ptep_modify_prot_start/commit 2008-06-25 15:17:23 +02:00
mmu.h xen: implement ptep_modify_prot_start/commit 2008-06-25 15:17:23 +02:00
multicalls.c x86: coding style fixes to arch/x86/xen/multicalls.c 2008-04-17 17:40:50 +02:00
multicalls.h xen: add batch completion callbacks 2007-10-16 11:51:30 -07:00
setup.c xen: add configurable max domain size 2008-05-27 10:11:37 +02:00
smp.c xen: implement save/restore 2008-05-27 10:11:38 +02:00
suspend.c xen: resume timers on all vcpus 2008-06-02 13:25:44 +02:00
time.c Merge commit 'v2.6.26-rc8' into x86/xen 2008-06-25 12:16:51 +02:00
vdso.h i386: move xen 2007-10-11 11:16:51 +02:00
xen-asm.S xen: fold xen_sysexit into xen_iret 2008-04-24 23:57:33 +02:00
xen-head.S xen: remove support for non-PAE 32-bit 2008-06-24 17:00:55 +02:00
xen-ops.h xen: resume timers on all vcpus 2008-06-02 13:25:44 +02:00