summaryrefslogtreecommitdiffstats
path: root/arch/i386
diff options
context:
space:
mode:
authorShaohua Li2005-06-25 23:54:49 +0200
committerLinus Torvalds2005-06-26 01:24:28 +0200
commitd92de65cab5980c16d4a1c326c1ef9a591892883 (patch)
tree98f3ae9c33f18a126d7e0f2e800b6b65631180d0 /arch/i386
parent[PATCH] CPU hotplug: fix hpet sectioning (diff)
downloadkernel-qcow2-linux-d92de65cab5980c16d4a1c326c1ef9a591892883.tar.gz
kernel-qcow2-linux-d92de65cab5980c16d4a1c326c1ef9a591892883.tar.xz
kernel-qcow2-linux-d92de65cab5980c16d4a1c326c1ef9a591892883.zip
[PATCH] variable overflow after hundreds round of hotplug CPU
I'm doing the cpu hotplug stress test and found a variable ('ready') is overflow after several hundreds rounds of cpu hotplug. Here is a fix. Signed-off-by: Shaohua Li<shaohua.li@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386')
-rw-r--r--arch/i386/kernel/head.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/i386/kernel/head.S b/arch/i386/kernel/head.S
index e966fc8c44c4..4477bb107098 100644
--- a/arch/i386/kernel/head.S
+++ b/arch/i386/kernel/head.S
@@ -299,7 +299,6 @@ is386: movl $2,%ecx # set MP
movl %eax,%cr0
call check_x87
- incb ready
lgdt cpu_gdt_descr
lidt idt_descr
ljmp $(__KERNEL_CS),$1f
@@ -316,8 +315,9 @@ is386: movl $2,%ecx # set MP
lldt %ax
cld # gcc2 wants the direction flag cleared at all times
#ifdef CONFIG_SMP
- movb ready, %cl
- cmpb $1,%cl
+ movb ready, %cl
+ movb $1, ready
+ cmpb $0,%cl
je 1f # the first CPU calls start_kernel
# all other CPUs call initialize_secondary
call initialize_secondary