[PATCH] smpboot magical numbers

From: Hugh Dickins (hugh@veritas.com)
Date: Wed Dec 18 2002 - 14:48:07 EST


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/



This archive was generated by hypermail 2b29 : Mon Dec 23 2002 - 22:00:20 EST