lkml.org 
[lkml]   [1999]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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/

\
 
 \ /
  Last update: 2005-03-22 13:52    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site