Andi Kleen wrote: >On Wednesday 28 September 2005 23:44, Zachary Amsden wrote: > > >>As suggested by Andi Kleen, don't allocate a GDT page if there is already >>one present. Needed for CPU hotplug. >> >> > >Did I really suggest that? I think I suggested checking the return >value of gfp. Also get_zeroed_page() is slightly cleaner than GFP_ZERO. > > Then I think this looks better all around. -------------- next part -------------- As suggested by Andi Kleen, don't allocate a GDT page if there is already one present. Needed for CPU hotplug. Signed-off-by: Zachary Amsden <zach@xxxxxxxxxx> Index: linux-2.6.14-rc2/arch/i386/kernel/smpboot.c =================================================================== --- linux-2.6.14-rc2.orig/arch/i386/kernel/smpboot.c 2005-09-28 15:49:26.000000000 -0700 +++ linux-2.6.14-rc2/arch/i386/kernel/smpboot.c 2005-09-28 16:00:55.000000000 -0700 @@ -874,6 +874,12 @@ static int __devinit do_boot_cpu(int api unsigned long start_eip; unsigned short nmi_high = 0, nmi_low = 0; + if (!cpu_gdt_descr[cpu].address && + !(cpu_gdt_descr[cpu].address = get_zeroed_page(GFP_KERNEL))) { + printk("Failed to allocate GDT for CPU %d\n", cpu); + return 1; + } + ++cpucount; /* @@ -898,8 +904,6 @@ static int __devinit do_boot_cpu(int api * This grunge runs the startup process for * the targeted processor. */ - cpu_gdt_descr[cpu].address = __get_free_page(GFP_KERNEL|__GFP_ZERO); - atomic_set(&init_deasserted, 0); Dprintk("Setting warm reset code and vector.\n");