[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Xen/ia64 XENMEM_exchange bug work around



# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1173296552 25200
# Node ID 210858e4f6d5abbf15ea24251f5306c0f3e32c9b
# Parent  50d5bf02e59e47735d563cf95d792dd14bc30939
[IA64] Xen/ia64 XENMEM_exchange bug work around

xen-unstable.hg c/s 13366:ed73ff8440d8 revealed that
XENMEM_exchange has been broken on Xen/ia64.
This is work around for it until the right fix.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+)

diff -r 50d5bf02e59e -r 210858e4f6d5 
linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c   Wed Mar 07 12:38:28 
2007 -0700
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c   Wed Mar 07 12:42:32 
2007 -0700
@@ -205,6 +205,18 @@ static void contiguous_bitmap_clear(
 #define MAX_CONTIG_ORDER 7
 static unsigned long discontig_frames[1<<MAX_CONTIG_ORDER];
 
+/* Width of DMA addresses. 30 bits is a b44 limitation. */
+#define DEFAULT_DMA_BITS 30
+static unsigned int xen_ia64_dma_bits = DEFAULT_DMA_BITS;
+
+static int __init
+setup_dma_bits(char *str)
+{
+       xen_ia64_dma_bits = simple_strtoul(str, NULL, 0);
+       return 0;
+}
+__setup("xen_ia64_dma_bits=", setup_dma_bits);
+
 /* Ensure multi-page extents are contiguous in machine memory. */
 int
 __xen_create_contiguous_region(unsigned long vstart,
@@ -233,6 +245,15 @@ __xen_create_contiguous_region(unsigned 
                 },
                .nr_exchanged = 0
        };
+
+       /*
+        * XXX xen/ia64 vmm bug work around
+        * the c/s 13366:ed73ff8440d8 of xen-unstable.hg revealed that
+        * XENMEM_exchange has been broken on Xen/ia64.
+        * This is work around for it until the right fix.
+        */
+       if (address_bits < xen_ia64_dma_bits)
+               return -ENOSYS;
 
        if (unlikely(order > MAX_CONTIG_ORDER))
                return -ENOMEM;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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