patch-2.1.116 linux/arch/i386/kernel/smp.c

Next file: linux/arch/i386/kernel/traps.c
Previous file: linux/arch/i386/kernel/signal.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.115/linux/arch/i386/kernel/smp.c linux/arch/i386/kernel/smp.c
@@ -658,6 +658,7 @@
 {
 	unsigned long apic_phys, ioapic_phys;
 
+	memory_start = PAGE_ALIGN(memory_start);
 	if (smp_found_config) {
 		apic_phys = mp_lapic_addr;
 		ioapic_phys = mp_ioapic_addr;
@@ -749,7 +750,11 @@
 	/*
 	 * We don't actually need to load the full TSS,
 	 * basically just the stack pointer and the eip.
+	 *
+	 * Get the scheduler lock, because we're going
+	 * to release it as part of the "reschedule" return.
 	 */
+	spin_lock(&scheduler_lock);
 	asm volatile("lldt %%ax": :"a" (p->ldt));
 	asm volatile("ltr %%ax": :"a" (p->tr));
 	asm volatile(

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov