[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.