# HG changeset patch
# User Jimi Xenidis <[EMAIL PROTECTED]>
# Node ID a49fcec03e363fc838760b4f461175b043327286
# Parent  4a5cbd892ace94d6b70ade541febfcd927bc460c
[LINUX][XEN][POWERPC] Still need a few XenPPC specific hacks

Specifically, the Gurest domains do not create page objects for the Foreign 
Mapped area.

Signed-off-by: Jimi Xenidis <[EMAIL PROTECTED]>
---
 drivers/xen/blkback/blkback.c |   10 ++++++++++
 1 files changed, 10 insertions(+)

diff -r 4a5cbd892ace -r a49fcec03e36 drivers/xen/blkback/blkback.c
--- a/drivers/xen/blkback/blkback.c     Sun Oct 08 13:50:43 2006 -0400
+++ b/drivers/xen/blkback/blkback.c     Sun Oct 08 13:52:39 2006 -0400
@@ -398,9 +398,14 @@ static void dispatch_rw_block_io(blkif_t
                }
 
                pending_handle(pending_req, i) = map[i].handle;
+#ifdef CONFIG_PPC_XEN
+               pending_vaddrs[vaddr_pagenr(pending_req, i)] =
+                       (unsigned long)gnttab_map_vaddr(map[i]);
+#else
                set_phys_to_machine(__pa(vaddr(
                        pending_req, i)) >> PAGE_SHIFT,
                        FOREIGN_FRAME(map[i].dev_bus_addr >> PAGE_SHIFT));
+#endif
                seg[i].buf  = map[i].dev_bus_addr | 
                        (req->seg[i].first_sect << 9);
        }
@@ -514,10 +519,15 @@ static int __init blkif_init(void)
 
        mmap_pages            = blkif_reqs * BLKIF_MAX_SEGMENTS_PER_REQUEST;
 
+#ifdef CONFIG_PPC_XEN
+       (void)page;
+       mmap_vstart = foreign_alloc_empty_page_range(mmap_pages);
+#else
        page = balloon_alloc_empty_page_range(mmap_pages);
        if (page == NULL)
                return -ENOMEM;
        mmap_vstart = (unsigned long)pfn_to_kaddr(page_to_pfn(page));
+#endif
 
        pending_reqs          = kmalloc(sizeof(pending_reqs[0]) *
                                        blkif_reqs, GFP_KERNEL);

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel

Reply via email to