MP Implementation 1/2: Get the APIC code working again, sweetly integrate the
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 6 Jul 2003 21:23:56 +0000 (21:23 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 6 Jul 2003 21:23:56 +0000 (21:23 +0000)
commit8a8d5d85f4fb81fc5b1dd42da281ec8c7c569880
tree9d615785643a56877aa963c562f05971dcea3a59
parentf08d63a2dfbb334e57d9ba59f09c9157e0fed79b
MP Implementation 1/2: Get the APIC code working again, sweetly integrate the
MP lock into the LWKT scheduler, replace the old simplelock code with
tokens or spin locks as appropriate.  In particular, the vnode interlock
(and most other interlocks) are now tokens.  Also clean up a few curproc/cred
sequences that are no longer needed.

The APs are left in degenerate state with non IPI interrupts disabled as
additional LWKT work must be done before we can really make use of them,
and FAST interrupts are not managed by the MP lock yet.  The main thing
for this stage was to get the system working with an APIC again.

buildworld tested on UP and 2xCPU/MP (Dell 2550)
148 files changed:
sys/bus/isa/i386/isa_dma.c
sys/conf/files.alpha
sys/conf/files.i386
sys/conf/files.pc98
sys/cpu/i386/include/cpufunc.h
sys/dev/drm/drm_dma.h
sys/dev/drm/drm_os_freebsd.h
sys/dev/raid/aac/aac.c
sys/dev/raid/aac/aacvar.h
sys/dev/serial/sio/sio.c
sys/dev/sound/isa/i386/spkr/spkr.c
sys/i386/apic/apic_ipl.s
sys/i386/apic/apic_vector.s
sys/i386/apic/mpapic.c
sys/i386/i386/autoconf.c
sys/i386/i386/db_interface.c
sys/i386/i386/exception.s
sys/i386/i386/genassym.c
sys/i386/i386/i686_mem.c
sys/i386/i386/identcpu.c
sys/i386/i386/initcpu.c
sys/i386/i386/k6_mem.c
sys/i386/i386/machdep.c
sys/i386/i386/mp_machdep.c
sys/i386/i386/mpapic.c
sys/i386/i386/mpboot.s
sys/i386/i386/mplock.s
sys/i386/i386/perfmon.c
sys/i386/i386/pmap.c
sys/i386/i386/simplelock.s [deleted file]
sys/i386/i386/spinlock.s [new file with mode: 0644]
sys/i386/i386/swtch.s
sys/i386/i386/trap.c
sys/i386/i386/vm86.c
sys/i386/i386/vm86bios.s
sys/i386/include/apic.h
sys/i386/include/cpufunc.h
sys/i386/include/lock.h
sys/i386/include/smp.h
sys/i386/include/smptests.h
sys/i386/isa/apic_ipl.s
sys/i386/isa/apic_vector.s
sys/i386/isa/clock.c
sys/i386/isa/intr_machdep.c
sys/i386/isa/intr_machdep.h
sys/i386/isa/npx.c
sys/kern/imgact_elf.c
sys/kern/init_main.c
sys/kern/kern_exit.c
sys/kern/kern_lock.c
sys/kern/kern_synch.c
sys/kern/lwkt_thread.c
sys/kern/subr_bus.c
sys/kern/subr_prf.c
sys/kern/subr_rman.c
sys/kern/uipc_socket.c
sys/kern/vfs_aio.c
sys/kern/vfs_bio.c
sys/kern/vfs_conf.c
sys/kern/vfs_default.c
sys/kern/vfs_subr.c
sys/kern/vfs_syscalls.c
sys/kern/vfs_vnops.c
sys/netinet/in_pcb.c
sys/netproto/smb/smb_iod.c
sys/netproto/smb/smb_rq.c
sys/netproto/smb/smb_subr.c
sys/netproto/smb/smb_subr.h
sys/opencrypto/crypto.c
sys/platform/pc32/apic/apic_ipl.s
sys/platform/pc32/apic/apic_vector.s
sys/platform/pc32/apic/mpapic.c
sys/platform/pc32/i386/autoconf.c
sys/platform/pc32/i386/db_interface.c
sys/platform/pc32/i386/exception.s
sys/platform/pc32/i386/genassym.c
sys/platform/pc32/i386/i686_mem.c
sys/platform/pc32/i386/identcpu.c
sys/platform/pc32/i386/initcpu.c
sys/platform/pc32/i386/k6_mem.c
sys/platform/pc32/i386/machdep.c
sys/platform/pc32/i386/mp_machdep.c
sys/platform/pc32/i386/mpapic.c
sys/platform/pc32/i386/mpboot.s
sys/platform/pc32/i386/mplock.s
sys/platform/pc32/i386/perfmon.c
sys/platform/pc32/i386/pmap.c
sys/platform/pc32/i386/simplelock.s [deleted file]
sys/platform/pc32/i386/spinlock.s [new file with mode: 0644]
sys/platform/pc32/i386/swtch.s
sys/platform/pc32/i386/trap.c
sys/platform/pc32/i386/vm86.c
sys/platform/pc32/i386/vm86bios.s
sys/platform/pc32/include/apic.h
sys/platform/pc32/include/lock.h
sys/platform/pc32/include/smp.h
sys/platform/pc32/include/smptests.h
sys/platform/pc32/isa/apic_ipl.s
sys/platform/pc32/isa/apic_vector.s
sys/platform/pc32/isa/clock.c
sys/platform/pc32/isa/intr_machdep.c
sys/platform/pc32/isa/intr_machdep.h
sys/platform/pc32/isa/npx.c
sys/platform/vkernel/i386/genassym.c
sys/sys/buf.h
sys/sys/buf2.h
sys/sys/lock.h
sys/sys/mount.h
sys/sys/proc.h
sys/sys/rman.h
sys/sys/signalvar.h
sys/sys/thread.h
sys/sys/thread2.h
sys/sys/vmmeter.h
sys/sys/vnode.h
sys/vfs/deadfs/dead_vnops.c
sys/vfs/gnu/ext2fs/ext2_vfsops.c
sys/vfs/hpfs/hpfs.h
sys/vfs/hpfs/hpfs_hash.c
sys/vfs/hpfs/hpfs_vfsops.c
sys/vfs/hpfs/hpfs_vnops.c
sys/vfs/isofs/cd9660/cd9660_node.c
sys/vfs/mfs/mfs_vfsops.c
sys/vfs/msdosfs/msdosfs_denode.c
sys/vfs/msdosfs/msdosfs_vfsops.c
sys/vfs/msdosfs/msdosfs_vnops.c
sys/vfs/nfs/nfs_nqlease.c
sys/vfs/ntfs/ntfs_ihash.c
sys/vfs/ntfs/ntfs_inode.h
sys/vfs/ntfs/ntfs_subr.c
sys/vfs/ntfs/ntfs_vfsops.c
sys/vfs/nullfs/null_vnops.c
sys/vfs/nwfs/nwfs_node.c
sys/vfs/nwfs/nwfs_vnops.c
sys/vfs/smbfs/smbfs.h
sys/vfs/ufs/ffs_vfsops.c
sys/vfs/ufs/ufs_ihash.c
sys/vfs/ufs/ufs_inode.c
sys/vfs/ufs/ufs_lookup.c
sys/vfs/ufs/ufs_quota.c
sys/vfs/ufs/ufs_readwrite.c
sys/vfs/ufs/ufs_vnops.c
sys/vm/vm_map.c
sys/vm/vm_map.h
sys/vm/vm_object.c
sys/vm/vm_zone.c
sys/vm/vm_zone.h
sys/vm/vnode_pager.c