aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/mmu.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-11-07 12:17:21 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2008-11-07 12:17:21 -0500
commit0477406961c185ef9a6d9c908b5c70ffe206833e (patch)
tree1a7e6b0c381c92447dda908566a9e25d9c3d3ff7 /arch/x86/xen/mmu.c
parent54e7ff9d6249ba88e393d7fbc8008da9279723be (diff)
parentd05fdf316067cd311d5e7add08da26ded8a58080 (diff)
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: xen: make sure stray alias mappings are gone before pinning vmap: cope with vm_unmap_aliases before vmalloc_init()
Diffstat (limited to 'arch/x86/xen/mmu.c')
-rw-r--r--arch/x86/xen/mmu.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index aba77b2b7d18..89f3b6edc65a 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -850,13 +850,16 @@ static int xen_pin_page(struct mm_struct *mm, struct page *page,
850 read-only, and can be pinned. */ 850 read-only, and can be pinned. */
851static void __xen_pgd_pin(struct mm_struct *mm, pgd_t *pgd) 851static void __xen_pgd_pin(struct mm_struct *mm, pgd_t *pgd)
852{ 852{
853 vm_unmap_aliases();
854
853 xen_mc_batch(); 855 xen_mc_batch();
854 856
855 if (xen_pgd_walk(mm, xen_pin_page, USER_LIMIT)) { 857 if (xen_pgd_walk(mm, xen_pin_page, USER_LIMIT)) {
856 /* re-enable interrupts for kmap_flush_unused */ 858 /* re-enable interrupts for flushing */
857 xen_mc_issue(0); 859 xen_mc_issue(0);
860
858 kmap_flush_unused(); 861 kmap_flush_unused();
859 vm_unmap_aliases(); 862
860 xen_mc_batch(); 863 xen_mc_batch();
861 } 864 }
862 865