Home | History | Annotate | Download | only in uvm
History log of /src/sys/uvm/uvm_anon.h
RevisionDateAuthorComments
 1.32  20-Mar-2020  ad Go back to freeing struct vm_anon one by one. There may have been an
advantage circa ~2008 but there isn't now.
 1.31  23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.30  06-Aug-2011  rmind branches: 1.30.54; 1.30.60;
- Rework uvm_anfree() into uvm_anon_freelst(), which always drops the lock.
- Free anons in uvm_anon_freelst() without lock held.
- Mechanic sync to unused loaning code.
 1.29  24-Jun-2011  rmind Fix uvmplock regression - a lock against oneself case in amap_swap_off().
Happens since amap is NULL in uvmfault_anonget(), so uvmfault_unlockall()
keeps anon locked, when it should unlock it.
 1.28  12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.27  02-Feb-2011  chuck branches: 1.27.2;
udpate license clauses on my code to match the new-style BSD licenses.
based on diff that rmind@ sent me.

no functional change with this commit.
 1.26  14-Jun-2009  yamt branches: 1.26.4; 1.26.6; 1.26.8;
change the order of members of vm_anon for better packing.
 1.25  02-Jan-2008  ad branches: 1.25.10; 1.25.24;
Merge vmlocking2 to head.
 1.24  21-Feb-2007  thorpej branches: 1.24.4; 1.24.18; 1.24.24; 1.24.26; 1.24.30;
Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
 1.23  11-Dec-2005  christos branches: 1.23.26;
merge ktrace-lwp.
 1.22  17-Sep-2005  yamt make VMSWAP optional again.
 1.21  13-Sep-2005  yamt wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
 1.20  31-Jul-2005  yamt revert "defflag VMSWAP" changes for now.
there seems to be far more people who don't want to edit
their kernel config files than i thought.
 1.19  30-Jul-2005  yamt defflag VMSWAP.
 1.18  11-May-2005  yamt branches: 1.18.2;
allocate anons on-demand, rather than reserving static amount of
them on boot/swapon.
 1.17  05-May-2004  yamt fix a amap_wirerange deadlock problem by re-introducing
PG_RELEASED for anon pages. PR/23171 from Christian Limpach.
for details, see discussion filed in the PR database.

uvm_anon_release: a new function to free anon-owned PG_RELEASED page.
uvm_anfree: we can't wait for the page here because the caller might hold
amap lock. instead, just mark the page as PG_RELEASED.
who unbusy the page should check the PG_RELEASED.
uvm_aio_aiodone: uvm_anon_release() instead of uvm_page_unbusy()
if appropriate.
uvmfault_anonget: check PG_RELEASED.
 1.16  24-Mar-2004  junyoung branches: 1.16.2;
Nuke __P().
 1.15  26-May-2001  chs branches: 1.15.22;
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
 1.14  25-May-2001  chs remove trailing whitespace.
 1.13  27-Dec-2000  chs branches: 1.13.2;
when we fail to allocate anons to represent new swap space,
just return an error rather than panicing.
 1.12  11-Jan-2000  chs branches: 1.12.4;
add support for ``swapctl -d'' (removing swap space).
improve handling of i/o errors in swap space.

reviewed by: Chuck Cranor
 1.11  21-Jun-1999  thorpej branches: 1.11.2;
Protect prototypes, certain macros, and inlines from userland.
 1.10  26-Mar-1999  chs branches: 1.10.4;
add uvmexp.swpgonly and use it to detect out-of-swap conditions.
 1.9  24-Jan-1999  chuck cleanup/reorg:
- break anon related functions out of uvm_amap.c and put them in their own
file (uvm_anon.c). includes break up uvm_anon_init into an amap and an
an anon init function
- ensure that only functions within the amap module access amap structure
fields (add macros to amap api as needed)
 1.8  20-Nov-1998  chuck update outdated an_swslot comments
 1.7  09-Mar-1998  mrg KNF.
 1.6  01-Mar-1998  fvdl Merge with Lite2 + local changes
 1.5  10-Feb-1998  perry add/cleanup multiple inclusion protection.
 1.4  09-Feb-1998  mrg KNF.
 1.3  07-Feb-1998  mrg restore rcsids
 1.2  06-Feb-1998  thorpej RCS ID police.
 1.1  05-Feb-1998  mrg branches: 1.1.1;
Initial revision
 1.1.1.1  05-Feb-1998  mrg initial import of the new virtual memory system, UVM, into -current.

UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code. i provided some help
getting swap and paging working, and other bug fixes/ideas. chuck
silvers <chuq@chuq.com> also provided some other fixes.

this is the UVM kernel code portion.


this will be KNF'd shortly. :-)
 1.10.4.1  01-Jul-1999  thorpej Sync w/ -current.
 1.11.2.2  05-Jan-2001  bouyer Sync with HEAD
 1.11.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.12.4.1  14-Feb-2002  he Pull up revision 1.13 (requested by chs):
Make memory allocation failures during ``swapctl -a'' return an error
instead of causing a panic.
 1.13.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.15.22.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.15.22.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.15.22.2  18-Sep-2004  skrll Sync with HEAD.
 1.15.22.1  03-Aug-2004  skrll Sync with HEAD
 1.16.2.1  10-May-2004  tron Pull up revision 1.17 (requested by yamt in ticket #271):
fix a amap_wirerange deadlock problem by re-introducing
PG_RELEASED for anon pages. PR/23171 from Christian Limpach.
for details, see discussion filed in the PR database.
uvm_anon_release: a new function to free anon-owned PG_RELEASED page.
uvm_anfree: we can't wait for the page here because the caller might hold
amap lock. instead, just mark the page as PG_RELEASED.
who unbusy the page should check the PG_RELEASED.
uvm_aio_aiodone: uvm_anon_release() instead of uvm_page_unbusy()
if appropriate.
uvmfault_anonget: check PG_RELEASED.
 1.18.2.3  21-Jan-2008  yamt sync with head
 1.18.2.2  26-Feb-2007  yamt sync with head.
 1.18.2.1  21-Jun-2006  yamt sync with head.
 1.23.26.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.24.30.1  02-Jan-2008  bouyer Sync with HEAD
 1.24.26.1  04-Dec-2007  ad Pull the vmlocking changes into a new branch.
 1.24.24.1  18-Feb-2008  mjf Sync with HEAD.
 1.24.18.1  09-Jan-2008  matt sync with HEAD
 1.24.4.1  13-Mar-2007  ad Pull in the initial set of changes for the vmlocking branch.
 1.25.24.1  23-Jul-2009  jym Sync with HEAD.
 1.25.10.1  20-Jun-2009  yamt sync with head
 1.26.8.1  08-Feb-2011  bouyer Sync with HEAD
 1.26.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.26.4.2  05-Mar-2011  rmind sync with head
 1.26.4.1  17-Mar-2010  rmind Reorganise UVM locking to protect P->V state and serialise pmap(9)
operations on the same page(s) by always locking their owner. Hence
lock order: "vmpage"-lock -> pmap-lock.

Patch, proposed on tech-kern@, from Andrew Doran.
 1.27.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.30.60.1  29-Feb-2020  ad Sync with head.
 1.30.54.1  08-Apr-2020  martin Merge changes from current as of 20200406

RSS XML Feed