[patch] smp-2.3.43-B5, x86 SMP fixes

From: Ingo Molnar (mingo@chiara.csoma.elte.hu)
Date: Tue Feb 08 2000 - 07:27:36 EST


SMP pre2-2.3.43 is pretty unstable due to the x86 SMP TLB flush changes.
This patch fixes these bugs and cleans up the TLB changes so that it fits
nicer into the existing x86/SMP framework.

Changes in smp-2.3.43-B5:

  - send IPIs only to CPUs which are affected. This ment that
    send_IPI_single() was replaced by send_IPI_mask() (no slowdown at all
    in smp_send_reschedule()), and that send_IPI_mask() from now on can
    send IPIs to an arbitrary group of CPUs. This change was enabled by
    the mm->cpu_vm_mask & recent TLB-changes and by the transition to
    logical APIC addressing mode. Quad and 8-way systems should see a
    noticeable cross-CPU TLB-flush cost reduction from this.

  - got rid of the cpu_online_mask check - with the above change it's
    unnecessery. (not online CPUs cannot have bits set in any
    mm->cpu_vm_mask.)

  - exported the check for cpu_mask into the global flush functions.
    !cpu_mask is actually the common case, no need to call
    flush_tlb_others() just to discover in 99% of the cases that we have
    to return immediately. (inlining flush_tlb_others() is not good
    either, it's a rather long function and is called from several
    functions.)

  - (small cleanups)

pre2-2.3.43 is now completely stable here.

-- mingo

Changes in smp-2.3.43-B1:

  - reverses parts of the pgtable.h flush_tlb optimization. It's just too
    complex to try to be too smart about flushing TLBs in an IRQ context.
    This bug causes frequent SMP crashes on vanilla 2.3.42 and
    pre2-2.3.43.

  - adds Linus' suggested 'fuzzy parsing' fix to
    IO_APIC_get_PCI_irq_vector() - this should fix some of the SMP + USB
    problems reported. It might also introduce problems on other systems
    so we'll see.

-- 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/



This archive was generated by hypermail 2b29 : Tue Feb 15 2000 - 21:00:12 EST