History log of /src/sys/uvm/uvm_fault_i.h |
Revision | | Date | Author | Comments |
1.33 |
| 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.32 |
| 16-Dec-2019 |
ad | branches: 1.32.2; - Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
1.31 |
| 08-May-2018 |
christos | branches: 1.31.2; don't store the rssmax in the lwp rusage, it is a per proc property. Instead utilize an unused field in the vmspace struct to store it. Also conditionalize on platforms that have pmap statistics available.
|
1.30 |
| 07-May-2018 |
christos | update maxrss (used to always be 0). Patterned after the OpenBSD changes.
|
1.29 |
| 19-Apr-2018 |
christos | s/static inline/static __inline/g for consistency.
|
1.28 |
| 19-Feb-2012 |
rmind | branches: 1.28.38; Remove VM_MAP_INTRSAFE and related code. Not used since the "kmem changes".
|
1.27 |
| 12-Jun-2011 |
rmind | branches: 1.27.2; 1.27.6; 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.26 |
| 02-Feb-2011 |
chuck | branches: 1.26.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.25 |
| 06-Feb-2010 |
uebayasi | branches: 1.25.4; 1.25.6; 1.25.8; __inline -> inline
|
1.24 |
| 02-Jan-2008 |
ad | branches: 1.24.10; Merge vmlocking2 to head.
|
1.23 |
| 22-Feb-2007 |
thorpej | branches: 1.23.4; 1.23.18; 1.23.24; 1.23.26; 1.23.30; TRUE -> true, FALSE -> false
|
1.22 |
| 21-Feb-2007 |
thorpej | 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.21 |
| 16-Feb-2006 |
perry | branches: 1.21.20; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
1.20 |
| 24-Dec-2005 |
perry | branches: 1.20.2; 1.20.4; 1.20.6; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
1.19 |
| 11-Dec-2005 |
christos | merge ktrace-lwp.
|
1.18 |
| 27-Jun-2005 |
thorpej | branches: 1.18.2; Use ANSI function decls.
|
1.17 |
| 24-Mar-2004 |
junyoung | Nuke __P().
|
1.16 |
| 02-Nov-2002 |
perry | branches: 1.16.6; /*CONSTCOND*/
|
1.15 |
| 15-Sep-2001 |
chs | a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
1.14 |
| 26-Jun-2001 |
thorpej | branches: 1.14.2; 1.14.4; Reduce some complexity in the fault path -- Rather than maintaining an spl-protected "interrupt safe map" list, simply require that callers of uvm_fault() never call us in interrupt context (MD code must make the assertion), and check for interrupt-safe maps in uvmfault_lookup() before we lock the map.
|
1.13 |
| 02-Jun-2001 |
chs | replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
1.12 |
| 25-May-2001 |
chs | remove trailing whitespace.
|
1.11 |
| 26-Jun-2000 |
mrg | branches: 1.11.2; remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
1.10 |
| 11-Jan-2000 |
chs | add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
1.9 |
| 04-Jun-1999 |
thorpej | branches: 1.9.2; Keep interrupt-safe maps on an additional queue. In uvm_fault(), if we're looking up a kernel address, check to see if the address is on this "interrupt-safe" list. If so, return failure immediately. This prevents a locking screw if a page fault is taken on an interrupt-safe map in or out of interrupt context.
|
1.8 |
| 25-Mar-1999 |
mrg | branches: 1.8.4; remove now >1 year old pre-release message.
|
1.7 |
| 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.6 |
| 11-Oct-1998 |
chuck | remove unused share map code from UVM: - simplify uvm_faultinfo in uvm_fault.h (parent map tracking no longer needed) - adjust locking and lookup functions in uvm_fault_i.h to reflect the above - replace ufi.rvaddr with ufi.orig_rvaddr in uvm_fault.c since rvaddr is no longer needed. - no need to worry about share map translations in uvm_fault(). simplify.
|
1.5 |
| 09-Mar-1998 |
mrg | KNF.
|
1.4 |
| 10-Feb-1998 |
perry | add/cleanup multiple inclusion protection.
|
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.8.4.1 |
| 21-Jun-1999 |
thorpej | Sync w/ -current.
|
1.9.2.1 |
| 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.11.2.4 |
| 11-Nov-2002 |
nathanw | Catch up to -current
|
1.11.2.3 |
| 21-Sep-2001 |
nathanw | Catch up to -current.
|
1.11.2.2 |
| 24-Aug-2001 |
nathanw | Catch up with -current.
|
1.11.2.1 |
| 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.14.4.1 |
| 01-Oct-2001 |
fvdl | Catch up with -current.
|
1.14.2.1 |
| 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.16.6.4 |
| 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.16.6.3 |
| 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.16.6.2 |
| 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.16.6.1 |
| 03-Aug-2004 |
skrll | Sync with HEAD
|
1.18.2.2 |
| 21-Jan-2008 |
yamt | sync with head
|
1.18.2.1 |
| 26-Feb-2007 |
yamt | sync with head.
|
1.20.6.1 |
| 22-Apr-2006 |
simonb | Sync with head.
|
1.20.4.1 |
| 09-Sep-2006 |
rpaulo | sync with head
|
1.20.2.1 |
| 18-Feb-2006 |
yamt | sync with head.
|
1.21.20.1 |
| 27-Feb-2007 |
yamt | - sync with head. - move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
|
1.23.30.1 |
| 02-Jan-2008 |
bouyer | Sync with HEAD
|
1.23.26.1 |
| 04-Dec-2007 |
ad | Pull the vmlocking changes into a new branch.
|
1.23.24.1 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.23.18.1 |
| 09-Jan-2008 |
matt | sync with HEAD
|
1.23.4.1 |
| 13-Mar-2007 |
ad | Pull in the initial set of changes for the vmlocking branch.
|
1.24.10.1 |
| 11-Mar-2010 |
yamt | sync with head
|
1.25.8.1 |
| 08-Feb-2011 |
bouyer | Sync with HEAD
|
1.25.6.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.25.4.3 |
| 05-Mar-2011 |
rmind | sync with head
|
1.25.4.2 |
| 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.25.4.1 |
| 16-Mar-2010 |
rmind | Change struct uvm_object::vmobjlock to be dynamically allocated with mutex_obj_alloc(). It allows us to share the locks among UVM objects.
|
1.26.2.1 |
| 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.27.6.1 |
| 24-Feb-2012 |
mrg | sync to -current.
|
1.27.2.1 |
| 17-Apr-2012 |
yamt | sync with head
|
1.28.38.2 |
| 21-May-2018 |
pgoyette | Sync with HEAD
|
1.28.38.1 |
| 22-Apr-2018 |
pgoyette | Sync with HEAD
|
1.31.2.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.32.2.1 |
| 29-Feb-2020 |
ad | Sync with head.
|