kernel - Move CPUMASK_LOCK out of the cpumask_t
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 30 Jun 2014 19:27:59 +0000 (12:27 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 30 Jun 2014 19:27:59 +0000 (12:27 -0700)
commitcc694a4adfe3bad609fd893fc883e5e1f25d3bd6
treecbe3398428d378da3d8ea980dbf8a62a02ef64c8
parent0671e8316020d64af50b817c592acca9aa017400
kernel - Move CPUMASK_LOCK out of the cpumask_t

* Add cpulock_t (a 32-bit integer on all platforms) and implement
  CPULOCK_EXCL as well as space for a counter.

* Break-out CPUMASK_LOCK, add a new field to the pmap (pm_active_lock)
  and do the process vmm (p_vmm_cpulock) and implement the mmu interlock
  there.

  The VMM subsystem uses additional bits in cpulock_t as a mask counter
  for implementing its interlock.

  The PMAP subsystem just uses the CPULOCK_EXCL bit in pm_active_lock for
  its own interlock.

* Max cpus on 64-bit systems is now 64 instead of 63.

* cpumask_t is now just a pure cpu mask and no longer requires all-or-none
  atomic ops, just normal bit-for-bit atomic ops.  This will allow us to
  hopefully extend it past the 64-cpu limit soon.
25 files changed:
sys/cpu/i386/include/param.h
sys/cpu/i386/include/types.h
sys/cpu/x86_64/include/param.h
sys/cpu/x86_64/include/types.h
sys/kern/sys_vmm.c
sys/platform/pc32/i386/genassym.c
sys/platform/pc32/i386/pmap.c
sys/platform/pc32/i386/pmap_inval.c
sys/platform/pc32/i386/swtch.s
sys/platform/pc32/include/pmap.h
sys/platform/pc64/include/pmap.h
sys/platform/pc64/vmm/vmx.c
sys/platform/pc64/x86_64/genassym.c
sys/platform/pc64/x86_64/pmap.c
sys/platform/pc64/x86_64/pmap_inval.c
sys/platform/pc64/x86_64/swtch.s
sys/platform/vkernel/i386/genassym.c
sys/platform/vkernel/include/pmap.h
sys/platform/vkernel/platform/pmap.c
sys/platform/vkernel64/include/pmap.h
sys/platform/vkernel64/platform/pmap.c
sys/platform/vkernel64/platform/pmap_inval.c
sys/platform/vkernel64/x86_64/genassym.c
sys/platform/vkernel64/x86_64/swtch.s
sys/sys/proc.h