diff -r 43d91cbb1bfb -r 84ef495eb414 linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c	Mon Aug 22 23:07:37 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c	Tue Aug 23 17:31:10 2005
@@ -93,6 +93,7 @@
 	struct vm_struct * area;
 	unsigned long offset, last_addr;
 	domid_t domid = DOMID_IO;
+	unsigned long prot;
 
 	/* Don't allow wraparound or zero size */
 	last_addr = phys_addr + size - 1;
@@ -139,13 +140,12 @@
 		return NULL;
 	area->phys_addr = phys_addr;
 	addr = (void __iomem *) area->addr;
+	prot = _PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | flags;
+#if defined(__x86_64__)
+	prot |= _PAGE_USER;
+#endif
 	if (direct_remap_area_pages(&init_mm, (unsigned long) addr, phys_addr,
-				    size, __pgprot(_PAGE_PRESENT | _PAGE_RW |
-						   _PAGE_DIRTY | _PAGE_ACCESSED
-#if defined(__x86_64__)
-                                                   | _PAGE_USER
-#endif
-						   | flags), domid)) {
+				    size, __pgprot(prot), domid)) {
 		vunmap((void __force *) addr);
 		return NULL;
 	}
