diff -Naurp -X /home/jbarnes/dontdiff 230-tlb-global-flush-fix.patch/kernel/sched.c 240-node-history-migration.patch/kernel/sched.c
--- 230-tlb-global-flush-fix.patch/kernel/sched.c	Thu Feb 12 10:23:10 2004
+++ 240-node-history-migration.patch/kernel/sched.c	Thu Feb 12 10:47:17 2004
@@ -25,6 +25,7 @@
 #include <linux/highmem.h>
 #include <linux/smp_lock.h>
 #include <asm/mmu_context.h>
+#include <asm/tlbflush.h>
 #include <linux/interrupt.h>
 #include <linux/completion.h>
 #include <linux/kernel_stat.h>
@@ -1141,6 +1142,14 @@ void migrate_to_cpu(int dest_cpu)
 		task_rq_unlock(rq, &flags);
 		wake_up_process(rq->migration_thread);
 		wait_for_completion(&req.done);
+
+		/*
+		 * we want a new context here. This eliminates TLB
+		 * flushes on the cpus where the process executed prior to
+		 * the migration.
+		 */
+		flush_tlb_mm(current->mm);
+
 		return;
 	}
 out:
