[PATCH] smpboot magical numbers

Hugh Dickins (hugh@veritas.com)
Wed, 18 Dec 2002 19:48:07 +0000 (GMT)


Anyone experimenting with different THREAD_SIZE or PAGE_SIZE on i386
runs into magical mystery numbers in do_boot_cpu esp initialization.
Remove those and use the same stack top in startup_32 as thereafter.

Oh, and what's that phys_to_virt(8192)? Goodness! it's actually the
trampoline_base we (hopefully) got from early alloc_bootmem_low_pages.
Yes, could do with a lot more cleanup, but I'll stick here for safety.

Hugh

--- 2.5.52/arch/i386/kernel/smpboot.c Fri Nov 22 23:44:10 2002
+++ linux/arch/i386/kernel/smpboot.c Wed Dec 18 19:11:25 2002
@@ -806,7 +806,8 @@

/* So we see what's up */
printk("Booting processor %d/%d eip %lx\n", cpu, apicid, start_eip);
- stack_start.esp = (void *) (1024 + PAGE_SIZE + (char *)idle->thread_info);
+ /* Stack for startup_32 can be just as for start_secondary onwards */
+ stack_start.esp = (void *) idle->thread.esp;

/*
* This grunge runs the startup process for
@@ -879,7 +880,7 @@
Dprintk("CPU has booted.\n");
} else {
boot_error= 1;
- if (*((volatile unsigned char *)phys_to_virt(8192))
+ if (*((volatile unsigned char *)trampoline_base)
== 0xA5)
/* trampoline started but...? */
printk("Stuck ??\n");
@@ -901,7 +902,7 @@
}

/* mark "stuck" area as not stuck */
- *((volatile unsigned long *)phys_to_virt(8192)) = 0;
+ *((volatile unsigned long *)trampoline_base) = 0;

if(clustered_apic_mode) {
printk("Restoring NMI vector\n");

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/