This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Mach".

The branch, master has been updated
       via  c78fe96446794f71a2db7d7e3d43cb15658590a3 (commit)
      from  ce50aa8ba8549d2cabfe9cfc9d324bd08d7430d6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit c78fe96446794f71a2db7d7e3d43cb15658590a3
Author: Richard Braun <rbr...@sceen.net>
Date:   Fri Sep 16 04:39:02 2016 +0200

    VM: improve pageout deadlock workaround
    
    Commit 5dd4f67522ad0d49a2cecdb9b109251f546d4dd1 makes VM map entry
    allocation done with VM privilege, so that a VM map isn't held locked
    while physical allocations are paused, which may block the default
    pager during page eviction, causing a system-wide deadlock.
    
    First, it turns out that map entries aren't the only buffers allocated,
    and second, their number can't be easily determined, which makes a
    preallocation strategy very hard to implement.
    
    This change generalizes the strategy of VM privilege increase when a
    VM map is locked.
    
    * device/ds_routines.c (io_done_thread): Use integer values instead
    of booleans when setting VM privilege.
    * kern/thread.c (thread_init, thread_wire): Likewise.
    * vm/vm_pageout.c (vm_pageout): Likewise.
    * kern/thread.h (struct thread): Turn member `vm_privilege' into an
    unsigned integer.
    * vm/vm_map.c (vm_map_lock): New function, where VM privilege is
    temporarily increased.
    (vm_map_unlock): New function, where VM privilege is decreased.
    (_vm_map_entry_create): Remove VM privilege workaround from this
    function.
    * vm/vm_map.h (vm_map_lock, vm_map_unlock): Turn into functions.

-----------------------------------------------------------------------

Summary of changes:
 device/ds_routines.c |    2 +-
 kern/thread.c        |    6 ++---
 kern/thread.h        |    5 ++--
 vm/vm_map.c          |   63 ++++++++++++++++++++++++++++++++------------------
 vm/vm_map.h          |    8 ++-----
 vm/vm_pageout.c      |    2 +-
 6 files changed, 49 insertions(+), 37 deletions(-)


hooks/post-receive
-- 
GNU Mach

Reply via email to