#include <linux/highmem.h>
 #include <linux/debugfs.h>
 #include <linux/bug.h>
+#include <linux/vmalloc.h>
 #include <linux/module.h>
 #include <linux/gfp.h>
 
    read-only, and can be pinned. */
 static void __xen_pgd_pin(struct mm_struct *mm, pgd_t *pgd)
 {
-       vm_unmap_aliases();
-
        xen_mc_batch();
 
        if (__xen_pgd_walk(mm, pgd, xen_pin_page, USER_LIMIT)) {
        if (PagePinned(virt_to_page(mm->pgd))) {
                SetPagePinned(page);
 
-               vm_unmap_aliases();
                if (!PageHighMem(page)) {
                        make_lowmem_page_readonly(__va(PFN_PHYS((unsigned long)pfn)));
                        if (level == PT_PTE && USE_SPLIT_PTLOCKS)
        x86_init.paging.pagetable_setup_start = xen_pagetable_setup_start;
        x86_init.paging.pagetable_setup_done = xen_pagetable_setup_done;
        pv_mmu_ops = xen_mmu_ops;
+
+       vmap_lazy_unmap = false;
 }
 
 /* Protected by xen_reservation_lock. */
 
        memset((void *) vstart, 0, PAGE_SIZE << order);
 
-       vm_unmap_aliases();
-
        spin_lock_irqsave(&xen_reservation_lock, flags);
 
        /* 1. Zap current PTEs, remembering MFNs. */
 
        memset((void *) vstart, 0, PAGE_SIZE << order);
 
-       vm_unmap_aliases();
-
        spin_lock_irqsave(&xen_reservation_lock, flags);
 
        /* 1. Find start MFN of contiguous extent. */