]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/kernel/process.c
Merge branch 'linux-2.6'
[linux-2.6-omap-h63xx.git] / arch / powerpc / kernel / process.c
index 7c8e3da238107b43fc943f999294cc7f8610671f..8d506d86e2df560562230cdb675804e59122c4c6 100644 (file)
@@ -353,6 +353,12 @@ struct task_struct *__switch_to(struct task_struct *prev,
        account_process_vtime(current);
        calculate_steal_time();
 
+       /*
+        * We can't take a PMU exception inside _switch() since there is a
+        * window where the kernel stack SLB and the kernel stack are out
+        * of sync. Hard disable here.
+        */
+       hard_irq_disable();
        last = _switch(old_thread, new_thread);
 
        local_irq_restore(flags);