git: kernel - VM rework part 8 - Precursor work for terminal pv_entry removal

Matthew Dillon dillon at crater.dragonflybsd.org
Tue May 14 17:46:40 PDT 2019


commit 67e7cb85324fc590b088e24491b7cb82318306d5
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon May 13 20:35:51 2019 -0700

    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.

Summary of changes:
 sys/kern/imgact_elf.c           |  11 +-
 sys/platform/pc64/x86_64/pmap.c |  45 ++++-
 sys/vfs/procfs/procfs_map.c     |   8 +-
 sys/vm/vm_fault.c               |  56 +++---
 sys/vm/vm_map.c                 | 383 ++++++++++++++++++++++++----------------
 sys/vm/vm_map.h                 |  10 +-
 sys/vm/vm_mmap.c                |  14 +-
 sys/vm/vm_object.h              |   2 +-
 sys/vm/vm_page.c                |  18 +-
 test/debug/kmapinfo.c           |  22 +--
 usr.bin/gcore/elfcore.c         |  10 +-
 11 files changed, 357 insertions(+), 222 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/67e7cb85324fc590b088e24491b7cb82318306d5


-- 
DragonFly BSD source repository


More information about the Commits mailing list