if you don't want to drop | bootmem: avoid DMA32 zone by default today mainline tree actually DO NOT need that patch according to print out ... please apply this one too. [PATCH] x86/bootmem: introduce bootmem_default_goal don't punish the 64bit systems with less 4G RAM. they should use _pa(MAX_DMA_ADDRESS) at first pass instead of failback... Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> --- arch/x86/kernel/setup.c | 13 +++++++++++++ include/linux/bootmem.h | 3 ++- mm/bootmem.c | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) Index: linux-2.6/arch/x86/kernel/setup.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/setup.c +++ linux-2.6/arch/x86/kernel/setup.c @@ -686,6 +686,18 @@ static void __init trim_bios_range(void) sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); } +#ifdef MAX_DMA32_PFN +static void __init set_bootmem_default_goal(void) +{ + if (max_pfn_mapped < MAX_DMA32_PFN) + bootmem_default_goal = __pa(MAX_DMA_ADDRESS); +} +#else +static void __init set_bootmem_default_goal(void) +{ +} +#endif + /* * Determine if we were loaded by an EFI loader. If so, then we have also been * passed the efi memmap, systab, etc., so we should use these data structures @@ -931,6 +943,7 @@ void __init setup_arch(char **cmdline_p) max_low_pfn = max_pfn; } #endif + set_bootmem_default_goal(); /* * NOTE: On x86-32, only from this point on, fixmaps are ready for use. Index: linux-2.6/include/linux/bootmem.h =================================================================== --- linux-2.6.orig/include/linux/bootmem.h +++ linux-2.6/include/linux/bootmem.h @@ -104,7 +104,8 @@ extern void *__alloc_bootmem_low_node(pg unsigned long goal); #ifdef MAX_DMA32_PFN -#define BOOTMEM_DEFAULT_GOAL (MAX_DMA32_PFN << PAGE_SHIFT) +extern unsigned long bootmem_default_goal; +#define BOOTMEM_DEFAULT_GOAL bootmem_default_goal #else #define BOOTMEM_DEFAULT_GOAL __pa(MAX_DMA_ADDRESS) #endif Index: linux-2.6/mm/bootmem.c =================================================================== --- linux-2.6.orig/mm/bootmem.c +++ linux-2.6/mm/bootmem.c @@ -25,6 +25,10 @@ unsigned long max_low_pfn; unsigned long min_low_pfn; unsigned long max_pfn; +#ifdef MAX_DMA32_PFN +unsigned long bootmem_default_goal = (MAX_DMA32_PFN << PAGE_SHIFT); +#endif + #ifdef CONFIG_CRASH_DUMP /* * If we have booted due to a crash, max_pfn will be a very low value. We need -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>