From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaofeng Ling Subject: [PATCH]blkfront change to support unmodified linux Date: Mon, 05 Sep 2005 13:41:11 +0800 Message-ID: <431BDA77.4020205@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020306010209090008050407" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Pratt , Keir Fraser Cc: xen-devel List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------020306010209090008050407 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit 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 Signed-off-by: Arun Sharma 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))) --------------020306010209090008050407 Content-Type: text/x-patch; name="vbd-blkfront.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="vbd-blkfront.patch" 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))) --------------020306010209090008050407 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------020306010209090008050407--