History log of /src/sys/uvm/uvm_io.c |
Revision | | Date | Author | Comments |
1.30 |
| 03-May-2024 |
skrll | KNF
|
1.29 |
| 21-Sep-2020 |
chs | the previous fix for PR 55366 in uvm_amap.c 1.124 was incomplete: - amap_adjref_anons() must also ignore AMAP_REFALL when updating the ppref, not just when deciding whether or not to initialize ppref. - UVM_EXTRACT_QREF relies on AMAP_REFALL to work properly, and since we can't use AMAP_REFALL then we can't use QREF either.
|
1.28 |
| 25-May-2016 |
christos | branches: 1.28.22; Introduce security.pax.mprotect.ptrace sysctl which can be used to bypass mprotect settings so that debuggers can write to the text segment of traced processes so that they can insert breakpoints. Turned off by default. Ok: chuq (for now)
|
1.27 |
| 27-Jan-2012 |
para | branches: 1.27.6; 1.27.24; extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
1.26 |
| 23-Apr-2011 |
rmind | branches: 1.26.4; 1.26.8; Replace "malloc" in comments, remove unnecessary header inclusions.
|
1.25 |
| 02-Feb-2011 |
chuck | 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.24 |
| 04-Mar-2007 |
christos | branches: 1.24.64; 1.24.70; 1.24.72; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
1.23 |
| 20-Dec-2005 |
skrll | branches: 1.23.26; Whitespace
|
1.22 |
| 06-Dec-2005 |
chs | Avoid leaking memory if uiomove fails. from openbsd via PR 32251.
|
1.21 |
| 27-Jun-2005 |
thorpej | branches: 1.21.2; Use ANSI function decls.
|
1.20 |
| 01-Apr-2005 |
yamt | merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
1.19 |
| 01-Jan-2005 |
yamt | branches: 1.19.2; 1.19.4; for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
1.18 |
| 23-Apr-2003 |
tls | branches: 1.18.2; Correct use of MAXBSIZE where MAXPHYS was intended. This is a necessary first step towards per-device MAXPHYS, and has the beneficial side effect of allowing clustering to MAXPHYS even on systems that need to run with a reduced MAXBSIZE to get more metadata buffers.
|
1.17 |
| 10-Nov-2001 |
lukem | branches: 1.17.10; add RCSIDs, and in some cases, slightly cleanup #include order
|
1.16 |
| 15-Sep-2001 |
chs | branches: 1.16.2; 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.15 |
| 02-Jun-2001 |
chs | branches: 1.15.2; 1.15.4; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
1.14 |
| 25-May-2001 |
chs | remove trailing whitespace.
|
1.13 |
| 15-Mar-2001 |
chs | eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
1.12 |
| 27-Jun-2000 |
mrg | branches: 1.12.2; remove include of <vm/vm.h>
|
1.11 |
| 26-Jun-2000 |
mrg | 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 |
| 02-Jun-2000 |
pk | Let uvm_map_extract() set the lower bound on the kernel address range itself, in stead of having its callers do that.
|
1.9 |
| 02-Jun-2000 |
pk | Shouldn't pass garbage to uvm_map_extract().
|
1.8 |
| 25-Mar-1999 |
mrg | branches: 1.8.8; 1.8.16; remove now >1 year old pre-release message.
|
1.7 |
| 11-Oct-1998 |
chuck | remove unused share map code from UVM: - update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg has been removed) - replace UVM_ET_ISMAP checks with UVM_ET_ISSUBMAP checks
|
1.6 |
| 13-Aug-1998 |
eeh | Merge paddr_t changes into the main branch.
|
1.5 |
| 05-May-1998 |
kleink | branches: 1.5.2; Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
1.4 |
| 09-Mar-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.5.2.1 |
| 30-Jul-1998 |
eeh | Split vm_offset_t and vm_size_t into paddr_t, psize_t, vaddr_t, and vsize_t.
|
1.8.16.1 |
| 22-Jun-2000 |
minoura | Sync w/ netbsd-1-5-base.
|
1.8.8.2 |
| 27-Mar-2001 |
bouyer | Sync with HEAD.
|
1.8.8.1 |
| 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
1.12.2.4 |
| 14-Nov-2001 |
nathanw | Catch up to -current.
|
1.12.2.3 |
| 21-Sep-2001 |
nathanw | Catch up to -current.
|
1.12.2.2 |
| 21-Jun-2001 |
nathanw | Catch up to -current.
|
1.12.2.1 |
| 09-Apr-2001 |
nathanw | Catch up with -current.
|
1.15.4.1 |
| 01-Oct-2001 |
fvdl | Catch up with -current.
|
1.15.2.1 |
| 10-Jan-2002 |
thorpej | Sync kqueue branch with -current.
|
1.16.2.1 |
| 12-Nov-2001 |
thorpej | Sync the thorpej-mips-cache branch with -current.
|
1.17.10.1 |
| 26-Aug-2003 |
tron | Pull up revision 1.18 (requested by tls in ticket #1434): Correct use of MAXBSIZE where MAXPHYS was intended. This is a necessary first step towards per-device MAXPHYS, and has the beneficial side effect of allowing clustering to MAXPHYS even on systems that need to run with a reduced MAXBSIZE to get more metadata buffers.
|
1.18.2.4 |
| 11-Dec-2005 |
christos | Sync with head.
|
1.18.2.3 |
| 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.18.2.2 |
| 01-Apr-2005 |
skrll | Sync with HEAD.
|
1.18.2.1 |
| 17-Jan-2005 |
skrll | Sync with HEAD.
|
1.19.4.1 |
| 25-Jan-2005 |
yamt | - don't use uvm_object or managed mappings for wired allocations. (eg. malloc(9)) - simplify uvm_km_* apis.
|
1.19.2.1 |
| 29-Apr-2005 |
kent | sync with -current
|
1.21.2.2 |
| 03-Sep-2007 |
yamt | sync with head.
|
1.21.2.1 |
| 21-Jun-2006 |
yamt | sync with head.
|
1.23.26.1 |
| 12-Mar-2007 |
rmind | Sync with HEAD.
|
1.24.72.1 |
| 08-Feb-2011 |
bouyer | Sync with HEAD
|
1.24.70.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.24.64.2 |
| 31-May-2011 |
rmind | sync with head
|
1.24.64.1 |
| 05-Mar-2011 |
rmind | sync with head
|
1.26.8.1 |
| 18-Feb-2012 |
mrg | merge to -current.
|
1.26.4.1 |
| 17-Apr-2012 |
yamt | sync with head
|
1.27.24.1 |
| 29-May-2016 |
skrll | Sync with HEAD
|
1.27.6.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.27.6.1 |
| 12-Sep-2012 |
tls | Initial snapshot of work to eliminate 64K MAXPHYS. Basically works for physio (I/O to raw devices); needs more doing to get it going with the filesystems, but it shouldn't damage data.
All work's been done on amd64 so far. Not hard to add support to other ports. If others want to pitch in, one very helpful thing would be to sort out when and how IDE disks can do 128K or larger transfers, and adjust the various PCI IDE (or at least ahcisata) drivers and wd.c accordingly -- it would make testing much easier. Another very helpful thing would be to implement a smart minphys() for RAIDframe along the lines detailed in the MAXPHYS-NOTES file.
|
1.28.22.1 |
| 04-Oct-2020 |
martin | Pull up following revision(s) (requested by chs in ticket #1095):
sys/uvm/uvm_amap.c: revision 1.124 (via patch) sys/uvm/uvm_amap.c: revision 1.125 (via patch) sys/uvm/uvm_io.c: revision 1.29 (via patch)
Effectively disable the AMAP_REFALL flag because it is unsafe.
This flag tells the amap code that it does not need to allocate ppref as part of adding or removing a reference, but that is only correct if the range of the reference being added or removed is the same as the range of all other references to the amap, and the point of this flag is exactly to try to optimize the case where the range is different and thus this flag would not be correct to use. Fixes PR 55366.
The previous fix for PR 55366 in uvm_amap.c 1.124 was incomplete: - amap_adjref_anons() must also ignore AMAP_REFALL when updating the ppref, not just when deciding whether or not to initialize ppref. - UVM_EXTRACT_QREF relies on AMAP_REFALL to work properly, and since we can't use AMAP_REFALL then we can't use QREF either.
|