patch-2.4.19 linux-2.4.19/arch/i386/kernel/smp.c
Next file: linux-2.4.19/arch/i386/kernel/smpboot.c
Previous file: linux-2.4.19/arch/i386/kernel/signal.c
Back to the patch index
Back to the overall index
- Lines: 57
- Date:
Fri Aug 2 17:39:42 2002
- Orig file:
linux-2.4.18/arch/i386/kernel/smp.c
- Orig date:
Fri Dec 21 09:41:53 2001
diff -urN linux-2.4.18/arch/i386/kernel/smp.c linux-2.4.19/arch/i386/kernel/smp.c
@@ -103,9 +103,9 @@
*/
/* The 'big kernel lock' */
-spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED;
+spinlock_cacheline_t kernel_flag_cacheline = {SPIN_LOCK_UNLOCKED};
-struct tlb_state cpu_tlbstate[NR_CPUS] = {[0 ... NR_CPUS-1] = { &init_mm, 0 }};
+struct tlb_state cpu_tlbstate[NR_CPUS] __cacheline_aligned = {[0 ... NR_CPUS-1] = { &init_mm, 0, }};
/*
* the following functions deal with sending IPIs between CPUs.
@@ -298,12 +298,15 @@
/*
* We cannot call mmdrop() because we are in interrupt context,
* instead update mm->cpu_vm_mask.
+ *
+ * We need to reload %cr3 since the page tables may be going
+ * away frm under us...
*/
static void inline leave_mm (unsigned long cpu)
{
- if (cpu_tlbstate[cpu].state == TLBSTATE_OK)
- BUG();
+ BUG_ON(cpu_tlbstate[cpu].state == TLBSTATE_OK);
clear_bit(cpu, &cpu_tlbstate[cpu].active_mm->cpu_vm_mask);
+ load_cr3(swapper_pg_dir);
}
/*
@@ -529,7 +532,7 @@
* remote CPUs are nearly ready to execute <<func>> or are or have executed.
*
* You must not call this function with disabled interrupts or from a
- * hardware interrupt handler, you may call it from a bottom half handler.
+ * hardware interrupt handler or from a bottom half handler.
*/
{
struct call_data_struct data;
@@ -545,7 +548,7 @@
if (wait)
atomic_set(&data.finished, 0);
- spin_lock_bh(&call_lock);
+ spin_lock(&call_lock);
call_data = &data;
wmb();
/* Send a message to all other CPUs and wait for them to respond */
@@ -558,7 +561,7 @@
if (wait)
while (atomic_read(&data.finished) != cpus)
barrier();
- spin_unlock_bh(&call_lock);
+ spin_unlock(&call_lock);
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)