[lkml]   [1999]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    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
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:52    [W:0.019 / U:12.132 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site