Errata 4161: Concurring ptesyncs on both cores might lock up the cores. Most ptesyncs are already under tlbie_lock, so use that in the only other remaining location (the timer interrupt ones we've added ourselves). Index: 2.6.21/arch/powerpc/kernel/time.c =================================================================== --- 2.6.21.orig/arch/powerpc/kernel/time.c +++ 2.6.21/arch/powerpc/kernel/time.c @@ -618,8 +618,11 @@ void timer_interrupt(struct pt_regs * re int cpu = smp_processor_id(); unsigned long ticks; u64 tb_next_jiffy; + extern spinlock_t native_tlbie_lock; + spin_lock(&native_tlbie_lock); asm("ptesync"); + spin_unlock(&native_tlbie_lock); #ifdef CONFIG_PPC32 if (atomic_read(&ppc_n_lost_interrupts) != 0) Index: 2.6.21/arch/powerpc/mm/hash_native_64.c =================================================================== --- 2.6.21.orig/arch/powerpc/mm/hash_native_64.c +++ 2.6.21/arch/powerpc/mm/hash_native_64.c @@ -35,7 +35,7 @@ #define HPTE_LOCK_BIT 3 -static DEFINE_SPINLOCK(native_tlbie_lock); +DEFINE_SPINLOCK(native_tlbie_lock); static inline void __tlbie(unsigned long va, unsigned int psize) { --