git: kernel - Change vm_fault_page[_quick]() semantics + vkernel fixes

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Jan 28 00:21:04 PST 2017


commit dc039ae0ab14477035d270a26fca18407f514707
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Jan 28 00:08:05 2017 -0800

    kernel - Change vm_fault_page[_quick]() semantics + vkernel fixes
    
    * vm_fault_page[_quick]() needs to be left busied for PROT_WRITE so
      modifications made by the caller do not race other operations in the
      kernel.  Modify the API to accomodate the behavior.
    
    * Fix procfs write race with new vm_fault_page() API.
    
    * Fix bugs in ept_swapu32() and ept_swapu64() (vkernel + VMM)
    
    * pmap_fault_page_quick() doesn't understand EPT page tables, have it
      fail for that case too.  This fixes bugs in vkernel + VMM mode.
    
    * Also do some minor normalization of variables names in pmap.c
    
    * vkernel/pmap - Use atomic_swap_long() to modify PTEs instead of a
      simple (non-atomic) assignment.
    
    * vkernel/pmap - Fix numerous bugs in the VMM and non-VMM code for
      pmap_kenter*(), pmap_qenter*(), etc.
    
    * vkernel/pmap - Collapse certain pmap_qremove_*() routines into the
      base pmap_qremove().

Summary of changes:
 sys/kern/kern_umtx.c                     |   5 +-
 sys/platform/pc64/vmm/ept.c              | 127 ++++++++++++++++++++-----------
 sys/platform/pc64/vmm/vmm_utils.c        |  25 +++---
 sys/platform/pc64/x86_64/pmap.c          |  26 +++++--
 sys/platform/vkernel64/platform/copyio.c |  52 ++++++++-----
 sys/platform/vkernel64/platform/pmap.c   | 127 ++++++++++++++-----------------
 sys/vfs/procfs/procfs_mem.c              |  14 +++-
 sys/vm/pmap.h                            |   2 +-
 sys/vm/vm_extern.h                       |   4 +-
 sys/vm/vm_fault.c                        |  54 +++++++++----
 10 files changed, 261 insertions(+), 175 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/dc039ae0ab14477035d270a26fca18407f514707


-- 
DragonFly BSD source repository



More information about the Commits mailing list