Index: linux-2.6/arch/x86/kernel/head64.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/head64.c 2008-05-26 22:33:36.000000000 -0700 +++ linux-2.6/arch/x86/kernel/head64.c 2008-05-26 22:34:12.000000000 -0700 @@ -161,21 +161,11 @@ early_printk("Kernel alive\n"); - /* - * Boot cpu can get a fully functional per cpu area immediately - * by using the per cpu area provided by the loader. Includes the pda. - */ - __per_cpu_offset[0] = (unsigned long)__per_cpu_load; - pda_init(0); - per_cpu(pda.data_offset, 0) = __per_cpu_offset[0]; - - /* - * Setup embryonic per cpu areas only containing the pdas for the - * other processors that will be bootstrapped later. - */ - for (i = 1; i < NR_CPUS; i++) + for (i = 0; i < NR_CPUS; i++) __per_cpu_offset[i] = (unsigned long)&boot_cpu_pda[i]; + pda_init(0); + copy_bootdata(__va(real_mode_data)); reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS");