diff options
Diffstat (limited to 'arch/i386/kernel/cpu/common.c')
-rw-r--r-- | arch/i386/kernel/cpu/common.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c index 44f2c5f2dda1..640364d9b661 100644 --- a/arch/i386/kernel/cpu/common.c +++ b/arch/i386/kernel/cpu/common.c | |||
@@ -613,6 +613,12 @@ void __cpuinit cpu_init(void) | |||
613 | set_in_cr4(X86_CR4_TSD); | 613 | set_in_cr4(X86_CR4_TSD); |
614 | } | 614 | } |
615 | 615 | ||
616 | /* The CPU hotplug case */ | ||
617 | if (cpu_gdt_descr->address) { | ||
618 | gdt = (struct desc_struct *)cpu_gdt_descr->address; | ||
619 | memset(gdt, 0, PAGE_SIZE); | ||
620 | goto old_gdt; | ||
621 | } | ||
616 | /* | 622 | /* |
617 | * This is a horrible hack to allocate the GDT. The problem | 623 | * This is a horrible hack to allocate the GDT. The problem |
618 | * is that cpu_init() is called really early for the boot CPU | 624 | * is that cpu_init() is called really early for the boot CPU |
@@ -631,7 +637,7 @@ void __cpuinit cpu_init(void) | |||
631 | local_irq_enable(); | 637 | local_irq_enable(); |
632 | } | 638 | } |
633 | } | 639 | } |
634 | 640 | old_gdt: | |
635 | /* | 641 | /* |
636 | * Initialize the per-CPU GDT with the boot GDT, | 642 | * Initialize the per-CPU GDT with the boot GDT, |
637 | * and set up the GDT descriptor: | 643 | * and set up the GDT descriptor: |