|
@@ -1457,8 +1457,10 @@ static int xen_pgd_alloc(struct mm_struct *mm)
|
|
|
page->private = (unsigned long)user_pgd;
|
|
|
|
|
|
if (user_pgd != NULL) {
|
|
|
+#ifdef CONFIG_X86_VSYSCALL_EMULATION
|
|
|
user_pgd[pgd_index(VSYSCALL_ADDR)] =
|
|
|
__pgd(__pa(level3_user_vsyscall) | _PAGE_TABLE);
|
|
|
+#endif
|
|
|
ret = 0;
|
|
|
}
|
|
|
|
|
@@ -2021,7 +2023,7 @@ static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
|
|
|
# ifdef CONFIG_HIGHMEM
|
|
|
case FIX_KMAP_BEGIN ... FIX_KMAP_END:
|
|
|
# endif
|
|
|
-#else
|
|
|
+#elif defined(CONFIG_X86_VSYSCALL_EMULATION)
|
|
|
case VSYSCALL_PAGE:
|
|
|
#endif
|
|
|
case FIX_TEXT_POKE0:
|
|
@@ -2060,7 +2062,7 @@ static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
|
|
|
|
|
|
__native_set_fixmap(idx, pte);
|
|
|
|
|
|
-#ifdef CONFIG_X86_64
|
|
|
+#ifdef CONFIG_X86_VSYSCALL_EMULATION
|
|
|
/* Replicate changes to map the vsyscall page into the user
|
|
|
pagetable vsyscall mapping. */
|
|
|
if (idx == VSYSCALL_PAGE) {
|