Xiaofeng Ling
2005-Sep-05 05:41 UTC
[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@intel.com>
Signed-off-by: Arun Sharma <arun.sharma@intel.com>
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)))
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Keir Fraser
2005-Sep-05 08:55 UTC
[Xen-devel] Re: [PATCH]blkfront change to support unmodified linux
On 5 Sep 2005, at 06:41, Xiaofeng Ling wrote:> This patch is to make blkfront can work both in xen-linux and in > unmodified guest which is shadow_model_translate enabled.phys == machine from the p.o.v. of a shadow-translated guest, so why not modify virt_to_mfn and friends appropriately? -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Xiaofeng Ling
2005-Sep-05 09:02 UTC
[Xen-devel] Re: [PATCH]blkfront change to support unmodified linux
Keir Fraser wrote:> > On 5 Sep 2005, at 06:41, Xiaofeng Ling wrote: > >> This patch is to make blkfront can work both in xen-linux and in >> unmodified guest which is shadow_model_translate enabled. > > > phys == machine from the p.o.v. of a shadow-translated guest, so why not > modify virt_to_mfn and friends appropriately?Sorry, I don''t catch your meaning. vmx guest is in shadow-translate mode, and gpfn need to translate to mfn in hypervisor. see the macro: #define __gpfn_to_mfn(_d, gpfn) \ ({ \ ASSERT(current->domain == (_d)); \ (shadow_mode_translate(_d)) \ ? get_mfn_from_pfn(gpfn) \ : (gpfn); \ }) #define __gpfn_to_mfn_foreign(_d, gpfn) \ ( (shadow_mode_translate(_d)) \ ? gpfn_to_mfn_foreign(_d, gpfn) \ : (gpfn) ) So I rename virt_to_mfn to virt_to_xfn which means if not in shadow translate mode, it will do translate in guest. for vmx guest, don''t need the translation in guest. What is your suggestion? _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel