kernel - VM rework part 8 - Precursor work for terminal pv_entry removal
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 14 May 2019 03:35:51 +0000 (20:35 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 15 May 2019 00:46:34 +0000 (17:46 -0700)
commit67e7cb85324fc590b088e24491b7cb82318306d5
tree6cbc4f28cb3c5d0d7385e31d408662ffb2ef145c
parentd29a2431b389400e4efd29073704840d547c9a66
kernel - VM rework part 8 - Precursor work for terminal pv_entry removal

* Adjust structures so the pmap code can iterate backing_ba's with
  just the vm_object spinlock.

  Add a ba.pmap back-pointer.

  Move entry->start and entry->end into the ba (ba.start, ba.end).
  This is replicative of the base entry->ba.start and entry->ba.end,
  but local modifications are locked by individual objects to allow
  pmap ops to just look at backing ba's iterated via the object.

  Remove the entry->map back-pointer.

  Remove the ba.entry_base back-pointer.

* ba.offset is now an absolute offset and not additive.  Adjust all code
  that calculates and uses ba.offset (fortunately it is all concentrated
  in vm_map.c and vm_fault.c).

* Refactor ba.start/offset/end modificatons to be atomic with
  the necessary spin-locks to allow the pmap code to safely iterate
  the vm_map_backing list for a vm_object.

* Test VM system with full synth run.
sys/kern/imgact_elf.c
sys/platform/pc64/x86_64/pmap.c
sys/vfs/procfs/procfs_map.c
sys/vm/vm_fault.c
sys/vm/vm_map.c
sys/vm/vm_map.h
sys/vm/vm_mmap.c
sys/vm/vm_object.h
sys/vm/vm_page.c
test/debug/kmapinfo.c
usr.bin/gcore/elfcore.c