(re)Introduce locking for amaps & anons.
authormpi <mpi@openbsd.org>
Tue, 19 Jan 2021 13:21:36 +0000 (13:21 +0000)
committermpi <mpi@openbsd.org>
Tue, 19 Jan 2021 13:21:36 +0000 (13:21 +0000)
commit19dcab733a71ecac0688127acdc039e90a471eba
tree445a5999760e0817efda06eb1e7615f14f601e50
parent38da627a66fb00dc6bdd3ca46fa825637772ecba
(re)Introduce locking for amaps & anons.

A rwlock is attached to every amap and is shared with all its anon.  The
same lock will be used by multiple amaps if they have anons in common.

This should be enough to get the upper part of the fault handler out of the
KERNEL_LOCK() which seems to bring up to 20% improvements in builds.

This is based/copied/adapted from the most recent work done in NetBSD which
is an evolution of the precendent simple_lock scheme.

Tested by many, thanks!

ok kettenis@, mvs@
sys/uvm/uvm_amap.c
sys/uvm/uvm_amap.h
sys/uvm/uvm_anon.c
sys/uvm/uvm_anon.h
sys/uvm/uvm_fault.c
sys/uvm/uvm_map.c
sys/uvm/uvm_page.c
sys/uvm/uvm_pager.c