kernel_optimize_test/arch
Jeremy Fitzhardinge f4f97b3ea9 xen: Complete pagetable pinning
Xen requires all active pagetables to be marked read-only.  When the
base of the pagetable is loaded into %cr3, the hypervisor validates
the entire pagetable and only allows the load to proceed if it all
checks out.

This is pretty slow, so to mitigate this cost Xen has a notion of
pinned pagetables.  Pinned pagetables are pagetables which are
considered to be active even if no processor's cr3 is pointing to is.
This means that it must remain read-only and all updates are validated
by the hypervisor.  This makes context switches much cheaper, because
the hypervisor doesn't need to revalidate the pagetable each time.

This also adds a new paravirt hook which is called during setup once
the zones and memory allocator have been initialized.  When the
init_mm pagetable is first built, the struct page array does not yet
exist, and so there's nowhere to put he init_mm pagetable's PG_pinned
flags.  Once the zones are initialized and the struct page array
exists, we can set the PG_pinned flags for those pages.

This patch also adds the Xen support for pte pages allocated out of
highmem (highpte) by implementing xen_kmap_atomic_pte.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Cc: Zach Amsden <zach@vmware.com>
2007-07-18 08:47:43 -07:00
..
alpha missing exports of csum_... 2007-07-17 11:01:07 -07:00
arm csb337 supports "new style" rtc-ds1307 2007-07-17 10:23:09 -07:00
arm26 PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
avr32 PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
blackfin Blackfin arch: add missing CONFIG_LARGE_ALLOCS when upstream merging 2007-07-12 14:55:05 +08:00
cris PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
frv serial: add early_serial_setup() back to header file 2007-07-18 08:38:22 -07:00
h8300 PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
i386 xen: Complete pagetable pinning 2007-07-18 08:47:43 -07:00
ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-07-17 11:31:57 -07:00
m32r PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
m68k missing exports of csum_... 2007-07-17 11:01:07 -07:00
m68knommu PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
mips serial: add early_serial_setup() back to header file 2007-07-18 08:38:22 -07:00
parisc kallsyms: make KSYM_NAME_LEN include space for trailing '\0' 2007-07-17 10:23:03 -07:00
powerpc Cell: Draw SPE helper penguin logos 2007-07-17 10:23:13 -07:00
ppc serial: add early_serial_setup() back to header file 2007-07-18 08:38:22 -07:00
s390 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2007-07-17 15:29:33 -07:00
sh PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
sh64 missing exports of csum_... 2007-07-17 11:01:07 -07:00
sparc sparc32 has working dma-mapping only with CONFIG_PCI 2007-07-17 11:01:07 -07:00
sparc64 [SPARC64]: Kill bogus set_fs(KERNEL_DS) in do_rt_sigreturn(). 2007-07-17 14:37:54 -07:00
um um_kmalloc() remnants 2007-07-17 11:01:07 -07:00
v850 PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00
x86_64 usermodehelper: Tidy up waiting 2007-07-18 08:47:40 -07:00
xtensa PTRACE_POKEDATA consolidation 2007-07-17 10:23:03 -07:00