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
|