[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH]blkfront change to support unmodified linux
This patch is to make blkfront can work both in xen-linux and in unmodified guest which is shadow_model_translate enabled. Signed-off-by: Xiaofeng Ling <xiaofeng.ling@xxxxxxxxx> Signed-off-by: Arun Sharma <arun.sharma@xxxxxxxxx> diff -r 287d36b46fa3 linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c @@ -511,7 +511,7 @@ FRONT_RING_INIT(&info->ring, sring, PAGE_SIZE); err = gnttab_grant_foreign_access(info->backend_id, - virt_to_mfn(info->ring.sring), 0); + virt_to_xfn(info->ring.sring), 0); if (err == -ENOSPC) { free_page((unsigned long)info->ring.sring); info->ring.sring = 0; diff -r 287d36b46fa3 linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h @@ -101,7 +101,17 @@ * Change "struct page" to physical address. */#define page_to_pseudophys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT) +#ifndef CONFIG_XEN_SHADOW_TRANSLATE #define page_to_phys(page) (phys_to_machine(page_to_pseudophys(page))) +#else +#define page_to_phys(page) (page_to_pseudophys(page)) +#endif + +#ifndef CONFIG_XEN_SHADOW_TRANSLATE +#define virt_to_xfn(va) (virt_to_mfn(va)) +#else +#define virt_to_xfn(va) (virt_to_phys(va) >> PAGE_SHIFT) +#endif #define bio_to_pseudophys(bio) (page_to_pseudophys(bio_page((bio))) + \ (unsigned long) bio_offset((bio))) diff -r 287d36b46fa3 linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Tue Aug 30 20:36:49 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Fri Sep 2 22:47:27 2005 @@ -511,7 +511,7 @@ FRONT_RING_INIT(&info->ring, sring, PAGE_SIZE); err = gnttab_grant_foreign_access(info->backend_id, - virt_to_mfn(info->ring.sring), 0); + virt_to_xfn(info->ring.sring), 0); if (err == -ENOSPC) { free_page((unsigned long)info->ring.sring); info->ring.sring = 0; diff -r 287d36b46fa3 linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h Tue Aug 30 20:36:49 2005 +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/io.h Fri Sep 2 22:47:27 2005 @@ -101,7 +101,17 @@ * Change "struct page" to physical address. */ #define page_to_pseudophys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT) +#ifndef CONFIG_XEN_SHADOW_TRANSLATE #define page_to_phys(page) (phys_to_machine(page_to_pseudophys(page))) +#else +#define page_to_phys(page) (page_to_pseudophys(page)) +#endif + +#ifndef CONFIG_XEN_SHADOW_TRANSLATE +#define virt_to_xfn(va) (virt_to_mfn(va)) +#else +#define virt_to_xfn(va) (virt_to_phys(va) >> PAGE_SHIFT) +#endif #define bio_to_pseudophys(bio) (page_to_pseudophys(bio_page((bio))) + \ (unsigned long) bio_offset((bio))) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |