On 03/06/2010 04:42 PM, Yinghai Lu wrote: > On 03/06/2010 04:22 PM, Andrew Morton wrote: >> On Fri, 05 Mar 2010 21:44:38 -0800 Yinghai Lu <yinghai@xxxxxxxxxx> wrote: >> >>> On 03/05/2010 12:38 PM, Yinghai Lu wrote: >>>> 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... >>> >>> andrew, >>> >>> please drop Johannes' patch : bootmem: avoid DMA32 zone by default >> >> I'd rather not. That patch is said to fix a runtime problem which is >> present in 2.6.33 and hence we planned on backporting it into 2.6.33.x. > > that patch make my box booting time from 215s to 265s. > > should have better way to fix the problem: > just put the mem_map or the big chunk on high. > instead put everything above 4g. > > some thing like > static void * __init_refok __earlyonly_bootmem_alloc(int node, > unsigned long size, > unsigned long align, > unsigned long goal) > { > return __alloc_bootmem_node_high(NODE_DATA(node), size, align, goal); > } > > void * __init __alloc_bootmem_node_high(pg_data_t *pgdat, unsigned long size, > unsigned long align, unsigned long goal) > { > #ifdef MAX_DMA32_PFN > unsigned long end_pfn; > > if (WARN_ON_ONCE(slab_is_available())) > return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id); > > /* update goal according ...MAX_DMA32_PFN */ > end_pfn = pgdat->node_start_pfn + pgdat->node_spanned_pages; > > if (end_pfn > MAX_DMA32_PFN + (128 >> (20 - PAGE_SHIFT)) && > (goal >> PAGE_SHIFT) < MAX_DMA32_PFN) { > void *ptr; > unsigned long new_goal; > > new_goal = MAX_DMA32_PFN << PAGE_SHIFT; > #ifdef CONFIG_NO_BOOTMEM > ptr = __alloc_memory_core_early(pgdat->node_id, size, align, > new_goal, -1ULL); > #else > ptr = alloc_bootmem_core(pgdat->bdata, size, align, > new_goal, 0); > #endif > if (ptr) > return ptr; > } > #endif > > return __alloc_bootmem_node(pgdat, size, align, goal); > > } Jiri, can you send out your bootlog and .config? Yinghai -- 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>