Messages in this thread | | | Date | Mon, 7 Jun 1999 18:45:42 +0200 (CEST) | From | Ingo Molnar <> | Subject | Re: [patch] fix for SMP stuck on IPI-TLB-flush [Re: 2.2.9-ac2 locks solid] |
| |
On Mon, 7 Jun 1999, Andrea Arcangeli wrote:
> CPU1 CPU2 > spin_lock_irq() -> __cli() > /* irq locally disabled */ > lock_kernel() (kernel_flag > acquired) > flush_tlb_page() > lock_kernel(); > /* spin on the lock with irq > disabled */ > send IPI > /* never execute > smp_invalidate irq */ > /* deadlock */ > > Right now to avoid this scenario we must simply never call lock_kernel() > with irq disabled.
ugh, some time ago i added a 'sti' to lock_kernel() for exactly this reason. The bug got reintroduced when we switched to a spin_lock()-ed kernel lock.
> I changed also a bit also the way we send the tlb flush. I resolved the > locking quite easily since I am delivering an NMI to all other CPUS. The > only necessary enforcement is that all calls to smp_flush_tlb _must_ be > serialized by some kind of lock, currently the big kernel lock.
as i said in the previous mail, _dont_ do this Andrea. At least not in 2.2. This way we might trigger CPU bugs never seen before.
-- mingo
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |