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