Messages in this thread Patch in this message | | | Subject | [patch 4/4] Xen core patch : /dev/mem calls io_remap_page_range | Date | Wed, 17 Nov 2004 23:56:38 +0000 | From | Ian Pratt <> |
| |
This patch modifies /dev/mem to call io_remap_page_range rather than remap_page_range under CONFIG_XEN. (the two definitions are different under arch xen, unlike most other architectures). This allows the X server and other programs that use /dev/mem for MMIO to work under Xen.
Signed-off-by: ian.pratt@cl.cam.ac.uk
---
diff -Nurp pristine-linux-2.6.9/drivers/char/mem.c linux-2.6.9-xen0/drivers/char/mem.c --- pristine-linux-2.6.9/drivers/char/mem.c 2004-10-18 22:54:19.000000000 +0100 +++ linux-2.6.9-xen0/drivers/char/mem.c 2004-11-17 00:12:37.000000000 +0000 @@ -26,6 +26,7 @@ #include <asm/uaccess.h> #include <asm/io.h> +#include <asm/pgalloc.h> #ifdef CONFIG_IA64 # include <linux/efi.h> @@ -42,7 +43,12 @@ extern void tapechar_init(void); */ static inline int uncached_access(struct file *file, unsigned long addr) { -#if defined(__i386__) +#ifdef CONFIG_XEN + if (file->f_flags & O_SYNC) + return 1; + /* Xen sets correct MTRR type on non-RAM for us. */ + return 0; +#elif defined(__i386__) /* * On the PPro and successors, the MTRRs are used to set * memory types for physical addresses outside main memory, @@ -210,9 +216,15 @@ static int mmap_mem(struct file * file, if (uncached) vma->vm_flags |= VM_IO; +#if defined(CONFIG_XEN) + if (io_remap_page_range(vma, vma->vm_start, offset, + vma->vm_end-vma->vm_start, vma->vm_page_prot)) + return -EAGAIN; +#else if (remap_page_range(vma, vma->vm_start, offset, vma->vm_end-vma->vm_start, vma->vm_page_prot)) return -EAGAIN; +#endif return 0; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |