diff -r 37fae02cc335 xen/common/page_alloc.c --- a/xen/common/page_alloc.c Fri Jul 25 15:03:03 2008 +0100 +++ b/xen/common/page_alloc.c Mon Jul 28 16:02:40 2008 +0200 @@ -583,6 +583,13 @@ init_heap_pages(pfn_dom_zone_type(i), mfn_to_page(i), 1); } + /* Reserve only up to 25% of node0's memory for DMA */ + i = pfn_dom_zone_type(NODE_DATA(0)->node_spanned_pages / 4) + + PAGE_SHIFT; + if ( i < dma_bitsize ) dma_bitsize = i; + + ASSERT(dma_bitsize > PAGE_SHIFT + 1); + printk("Domain heap initialised: DMA width %u bits\n", dma_bitsize); } #undef avail_for_domheap diff -r 37fae02cc335 xen/include/asm-ia64/config.h --- a/xen/include/asm-ia64/config.h Fri Jul 25 15:03:03 2008 +0100 +++ b/xen/include/asm-ia64/config.h Mon Jul 28 16:02:40 2008 +0200 @@ -44,7 +44,7 @@ #define CONFIG_IOSAPIC #define supervisor_mode_kernel (0) -#define CONFIG_DMA_BITSIZE 32 +#define CONFIG_DMA_BITSIZE 30 #define PADDR_BITS 48 diff -r 37fae02cc335 xen/include/asm-x86/config.h --- a/xen/include/asm-x86/config.h Fri Jul 25 15:03:03 2008 +0100 +++ b/xen/include/asm-x86/config.h Mon Jul 28 16:02:40 2008 +0200 @@ -97,7 +97,7 @@ /* Primary stack is restricted to 8kB by guard pages. */ #define PRIMARY_STACK_SIZE 8192 -#define CONFIG_DMA_BITSIZE 32 +#define CONFIG_DMA_BITSIZE 30 #define BOOT_TRAMPOLINE 0x8c000 #define bootsym_phys(sym) \