Introduce an MI cpu synchronization API, redo the SMP AP startup code,
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 17 Feb 2004 19:38:54 +0000 (19:38 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 17 Feb 2004 19:38:54 +0000 (19:38 +0000)
commit0f7a3396d20e0e3035c6fed2a9c3375ac6c5e8bb
tree5077901505903f9b2df5cece759b0515aef406a3
parentece77bbaa23bf75f3b7bb9d110e2a795e3112878
Introduce an MI cpu synchronization API, redo the SMP AP startup code,
and start cleaning up deprecated IPI and clock code.  Add a MMU/TLB page
table invalidation API (pmap_inval.c) which properly synchronizes page
table changes with other cpus in SMP environments.

    * removed (unused) gd_cpu_lockid
    * remove confusing invltlb() and friends, normalize use of cpu_invltlb()
      and smp_invltlb().
    * redo the SMP AP startup code to make the system work better in
      situations where all APs do not startup.
    * add memory barrier API, cpu_mb1() and cpu_mb2().
    * remove (obsolete, no longer used) old IPI hard and stat clock forwarding
      code.
    * add a cpu synchronization API which is capable of handling multiple
      simultanious requests without deadlocking or livelocking.
    * major changes to the PMAP code to use the new invalidation API.
    * remove (unused) all_procs_ipi() and self_ipi().
    * only use all_but_self_ipi() if it is known that all AP's started up,
      otherwise use a mask.
    * remove (obsolete, no longer usde) BETTER_CLOCK code
    * remove (obsolete, no longer used) Xcpucheckstate IPI code

Testing-by: David Rhodus and others
47 files changed:
sys/amd64/amd64/genassym.c
sys/conf/files.i386
sys/cpu/i386/include/cpu.h
sys/cpu/i386/include/cpufunc.h
sys/i386/apic/apic_vector.s
sys/i386/apic/mpapic.h
sys/i386/i386/bios.c
sys/i386/i386/db_interface.c
sys/i386/i386/genassym.c
sys/i386/i386/globals.s
sys/i386/i386/machdep.c
sys/i386/i386/mp_machdep.c
sys/i386/i386/pmap.c
sys/i386/i386/pmap_inval.c [new file with mode: 0644]
sys/i386/i386/vm_machdep.c
sys/i386/include/cpu.h
sys/i386/include/cpufunc.h
sys/i386/include/globaldata.h
sys/i386/include/mpapic.h
sys/i386/include/pmap_inval.h [new file with mode: 0644]
sys/i386/include/smp.h
sys/i386/include/smptests.h
sys/i386/isa/apic_vector.s
sys/i386/isa/intr_machdep.h
sys/kern/kern_shutdown.c
sys/kern/lwkt_ipiq.c
sys/kern/lwkt_thread.c
sys/platform/pc32/apic/apic_vector.s
sys/platform/pc32/apic/mpapic.h
sys/platform/pc32/i386/bios.c
sys/platform/pc32/i386/db_interface.c
sys/platform/pc32/i386/genassym.c
sys/platform/pc32/i386/globals.s
sys/platform/pc32/i386/machdep.c
sys/platform/pc32/i386/mp_machdep.c
sys/platform/pc32/i386/pmap.c
sys/platform/pc32/i386/pmap_inval.c [new file with mode: 0644]
sys/platform/pc32/i386/vm_machdep.c
sys/platform/pc32/include/globaldata.h
sys/platform/pc32/include/mpapic.h
sys/platform/pc32/include/pmap_inval.h [new file with mode: 0644]
sys/platform/pc32/include/smp.h
sys/platform/pc32/include/smptests.h
sys/platform/pc32/isa/apic_vector.s
sys/platform/pc32/isa/intr_machdep.h
sys/platform/vkernel/i386/genassym.c
sys/sys/thread.h