[PATCH] i386: PARAVIRT: add kmap_atomic_pte for mapping highpte pages
authorJeremy Fitzhardinge <jeremy@goop.org>
Wed, 2 May 2007 17:27:15 +0000 (19:27 +0200)
committerAndi Kleen <andi@basil.nowhere.org>
Wed, 2 May 2007 17:27:15 +0000 (19:27 +0200)
commitce6234b5298902aaec831a67d5f8d9bd2ef5a488
tree939c22684e11a4f5f17abb89c4898f016e878e21
parenta27fe809b82c5e18932fcceded28d0d1481ce7bb
[PATCH] i386: PARAVIRT: add kmap_atomic_pte for mapping highpte pages

Xen and VMI both have special requirements when mapping a highmem pte
page into the kernel address space.  These can be dealt with by adding
a new kmap_atomic_pte() function for mapping highptes, and hooking it
into the paravirt_ops infrastructure.

Xen specifically wants to map the pte page RO, so this patch exposes a
helper function, kmap_atomic_prot, which maps the page with the
specified page protections.

This also adds a kmap_flush_unused() function to clear out the cached
kmap mappings.  Xen needs this to clear out any potential stray RW
mappings of pages which will become part of a pagetable.

[ Zach - vmi.c will need some attention after this patch.  It wasn't
  immediately obvious to me what needs to be done. ]

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Zachary Amsden <zach@vmware.com>
arch/i386/kernel/paravirt.c
arch/i386/mm/highmem.c
include/asm-i386/highmem.h
include/asm-i386/paravirt.h
include/asm-i386/pgtable.h
include/linux/highmem.h
mm/highmem.c