Index: linux-2.6/arch/x86/kernel/setup.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/setup.c 2008-05-26 19:07:43.000000000 -0700 +++ linux-2.6/arch/x86/kernel/setup.c 2008-05-26 19:07:59.000000000 -0700 @@ -89,6 +89,8 @@ { int i, highest_cpu = 0; unsigned long size; + extern struct x8664_pda boot_cpu_pda[]; + #ifdef CONFIG_HOTPLUG_CPU prefill_possible_map(); @@ -101,6 +103,14 @@ for_each_possible_cpu(i) { char *ptr; + + /* + * Only do this if the per cpu area is not already setuyp + * Zero based areas are setup immediately! + */ + if (__per_cpu_offset[i] != (unsigned long)&boot_cpu_pda[i]) + continue; + #ifndef CONFIG_NEED_MULTIPLE_NODES ptr = alloc_bootmem_pages(size); #else