* [PATCH]blkfront change to support unmodified linux
@ 2005-09-05 5:41 Xiaofeng Ling
2005-09-05 8:55 ` Keir Fraser
0 siblings, 1 reply; 3+ messages in thread
From: Xiaofeng Ling @ 2005-09-05 5:41 UTC (permalink / raw)
To: Ian Pratt, Keir Fraser; +Cc: xen-devel
[-- Attachment #1: Type: text/plain, Size: 1537 bytes --]
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)))
[-- Attachment #2: vbd-blkfront.patch --]
[-- Type: text/x-patch, Size: 1395 bytes --]
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)))
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH]blkfront change to support unmodified linux
2005-09-05 5:41 [PATCH]blkfront change to support unmodified linux Xiaofeng Ling
@ 2005-09-05 8:55 ` Keir Fraser
2005-09-05 9:02 ` Xiaofeng Ling
0 siblings, 1 reply; 3+ messages in thread
From: Keir Fraser @ 2005-09-05 8:55 UTC (permalink / raw)
To: Xiaofeng Ling; +Cc: Ian Pratt, xen-devel
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH]blkfront change to support unmodified linux
2005-09-05 8:55 ` Keir Fraser
@ 2005-09-05 9:02 ` Xiaofeng Ling
0 siblings, 0 replies; 3+ messages in thread
From: Xiaofeng Ling @ 2005-09-05 9:02 UTC (permalink / raw)
To: Keir Fraser; +Cc: Ian Pratt, xen-devel
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?
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-09-05 9:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-05 5:41 [PATCH]blkfront change to support unmodified linux Xiaofeng Ling
2005-09-05 8:55 ` Keir Fraser
2005-09-05 9:02 ` Xiaofeng Ling
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.