summaryrefslogtreecommitdiff
path: root/sys/uvm/uvm_pager.c
AgeCommit message (Collapse)Author
2011-07-03Rip out and burn support for UVM_HIST.Owain Ainsworth
The vm hackers don't use it, don't maintain it and have to look at it all the time. About time this 800 lines of code hit /dev/null. ``never liked it'' tedu@. ariane@ was very happy when i told her i wrote this diff.
2011-04-15for uvm_pager_dropcluster in the PG_RELEASED case we specifically unbusy theOwain Ainsworth
page so that um_anfree will free it for us. uvm_anfree does a pmap_page_protect(, VM_PROT_NONE) just before it frees the page, so we don't need to do it here ourselves. ok ariane@
2011-04-15move uvm_pageratop from uvm_pager.c local to a general uvm functionOwain Ainsworth
(uvm_atopg) and use it in uvm_km_doputpage to replace some handrolled code. Shrinks the kernel a trivial amount. ok beck@ and miod@ (who suggested i name it uvm_atopg not uvm_atop)
2010-07-24Don't sleep while holding the uvm_psel_lck mutex. Should fix "locking againstMark Kettenis
myself" panics that some people have seen over the last year-and-a-half. Cherry picked from a more complex (and therefore scarier) diff from oga@. ok tedu@, oga@
2010-06-27Kill another #ifdef UBC chunk that was annoying me while doing somethingOwain Ainsworth
else. ok thib@
2010-02-12introduce a uvm_km_valloc_try function that won't get a lower level lockTed Unangst
for use by the uvm pseg code. this is the path of least resistance until we sort out how many of these functions we really need. problem found by mikeb ok kettenis oga
2009-07-22Put the PG_RELEASED changes diff back in.Owain Ainsworth
This has has been tested very very thoroughly on all archs we have excepting 88k and 68k. Please see cvs log for the individual commit messages. ok beck@, thib@
2009-06-17date based reversion of uvm to the 4th May.Owain Ainsworth
More backouts in line with previous ones, this appears to bring us back to a stable condition. A machine forced to 64mb of ram cycled 10GB through swap with this diff and is still running as I type this. Other tests by ariane@ and thib@ also seem to show that it's alright. ok deraadt@, thib@, ariane@
2009-06-16Backout all the PG_RELEASED changes.Owain Ainsworth
This is for the same reason as the earlier backouts, to avoid the bug either added or exposed sometime around c2k9. This *should* be the last one. prompted by deraadt@ ok ariane@
2009-05-23More PG_RELEASED cleaning.Owain Ainsworth
similar to the aobj.c changes, this one does vnodes. Vnodes are more complex because they actaully have to sync to backing store. So firstly, convert sync to sleep instead of setting released. Now, for backing store, in the PGO_FREE case, if we set PG_RELEASED *before* an async io, (nothing else will see it, the page is busy), then we can ignore the page after the io is done. We could do something similar for PGO_DEACTIVATE too, but that is another change. On error we just clear the released flag, nothing else sets it for uobj pages other than aiodoned. ok thib@, beck@, ariane@
2009-05-04Instead of keeping two ints in the uvm structure specifically just toOwain Ainsworth
sleep on them (and otherwise ignore them) sleep on the pointer to the {aiodoned,pagedaemon}_proc members, and nuke the two extra words. "no objections" art@, ok beck@.
2009-04-06Instead of doing splbio(); simple_lock(&uvm.aiodoned_lock); just replaceOwain Ainsworth
the simple lock with a real lock - a IPL_BIO mutex. While i'm here, make the sleeping condition one hell of a lot simpler in the aio daemon. some ideas from and ok art@.
2009-03-25Move all of the pseudo-inline functions in uvm into C files.Owain Ainsworth
By pseudo-inline, I mean that if a certain macro was defined, they would be inlined. However, no architecture defines that, and none has for a very very long time. Therefore mainly this just makes the code a damned sight easier to read. Some k&r -> ansi declarations while I'm in there. "just commit it" art@. ok weingart@.
2009-03-20While working on some stuff in uvm I've gotten REALLY sick of readingOwain Ainsworth
K&R function declarations, so switch them all over to ansi-style, in accordance with the prophesy. "go for it" art@
2009-01-27Simplify page-out/page-in map management; fix rare pager deadlock.Ariane van der Steldt
Ok: miod, tedu
2008-11-24garbage collect uvm_errno2vmerror();Thordur I. Bjornsson
ok miod@, art@
2007-11-26In uvm_aio_aiodone(), kill the variable-sized array on stack, and use aMiod Vallat
fixed size array which size should match any buf; if a bogus buf is passed to this function, the kernel will KASSERT instead of potentially running out of stack and having an undefined behaviour. ok deraadt@
2007-06-06now that all partition size/offsets are potentially 64-bit, change theTheo de Raadt
type of all variables to daddr64_t. this includes the APIs for XXsize() and XXdump(), all range checks inside bio drivers, internal variables for disklabel handling, and even uvm's swap offsets. re-read numerous times by otto, miod, krw, thib to look for errors
2007-04-13While splitting flags and pqflags might have been a good idea in theoryArtur Grabowski
to separate locking, on most modern machines this is not enough since operations on short types touch other short types that share the same word in memory. Merge pg_flags and pqflags again and now use atomic operations to change the flags. Also bump wire_count to an int and pg_version might go int as well, just for alignment. tested by many, many. ok miod@
2007-04-04Mechanically rename the "flags" and "version" fields in struct vm_pageArtur Grabowski
to "pg_flags" and "pg_version", so that they are a bit easier to work with. Whoever uses generic names like this for a popular struct obviously doesn't read much code. Most architectures compile and there are no functionality changes. deraadt@ ok ("if something fails to compile, we fix that by hand")
2007-03-25remove KERN_SUCCESS and use 0 instead.Artur Grabowski
eyeballed by miod@ and pedro@
2006-07-31fix uvmhist #2: args are always u_long so fix missing %d and %x and no %ll; ↵Michael Shalayeff
no change for normal code
2006-07-26fix fmts for UVMHIST_LOG() entries making it more useful on 64bit archs; ↵Michael Shalayeff
miod@ ok
2005-07-26 - Make a UVM_OBJ_IS_DEVICE macro.Artur Grabowski
- Use it to skip device mappings while dumping core. - Ignore EFAULT errors while dumping core since they can happen even for valid mappings. Just skip that part of the core file and let it get automagically zero-filled. This fixes the broken X core dumps that people have been seeing and also fixes some other potential problems that could prevent core dumps (mmaps beyond EOF, etc.). tedu@ ok
2005-05-24add a new field to vm_space and use it to track the number of anonTed Unangst
pages a process uses. this is now the userland "data size" value. ok art deraadt tdeval. thanks testers.
2004-02-23sync of pmap_update() calls with NetBSD. pmap_update is defined away onDale Rahn
all architectures but arm, where it is needed.
2003-03-29ubchist is not a fully cooked kadaver and though use the other well formed ↵Michael Shalayeff
pdhist one until ubc gaets back. art@ ok
2002-10-29Since memory deallocation can't fail, remove the error return fromArtur Grabowski
uvm_unmap, uvm_deallocate and a few other functions. Simplifies some code and reduces diff to the UBC branch.
2002-05-24Make sure that b_iodone handlers are called at splbio (and ↵Artur Grabowski
splassert(IPL_BIO) in all known callers, just to make sure).
2002-05-22splassert(IPL_BIO) in the b_iodone handlers.Artur Grabowski
2002-01-02Back out a few more uvm changes, especially wrt swap usage.Miod Vallat
This unbreaks m68k m88k sparc and perhaps others, which eventually froze when hitting swap. Tested by various people on various platforms. ok art@
2001-12-19UBC was a disaster. It worked very good when it worked, but on someArtur Grabowski
machines or some configurations or in some phase of the moon (we actually don't know when or why) files disappeared. Since we've not been able to track down the problem in two weeks intense debugging and we need -current to be stable, back out everything to a state it had before UBC. We apologise for the inconvenience.
2001-12-04Yet another sync to NetBSD uvm.Artur Grabowski
Today we add a pmap argument to pmap_update() and allocate map entries for kernel_map from kmem_map instead of using the static entries. This should get rid of MAX_KMAPENT panics. Also some uvm_loan problems are fixed.
2001-11-30Call buf_cleanout, which handles wakeupsConstantine Sapuntzakis
2001-11-29Correctly handle b_vp with bgetvp and brelvp in {get,put}pages.Artur Grabowski
Prevents panics caused by vnodes being recycled under our feet.
2001-11-28Sync in more uvm from NetBSD. Mostly just cosmetic stuff.Artur Grabowski
Contains also support for page coloring.
2001-11-28Sync in more uvm changes from NetBSD.Artur Grabowski
This time we're getting rid of KERN_* and VM_PAGER_* error codes and use errnos instead.
2001-11-27Merge in the unified buffer cache code as found in NetBSD 2001/03/10. TheArtur Grabowski
code is written mostly by Chuck Silvers <chuq@chuq.com>/<chs@netbsd.org>. Tested for the past few weeks by many developers, should be in a pretty stable state, but will require optimizations and additional cleanups.
2001-11-12Bring in more changes from NetBSD. Mostly pagedaemon improvements.Artur Grabowski
2001-11-10Merge in some parts of the ubc work that has been done in NetBSD that are notArtur Grabowski
UBC, but prerequsites for it. - Create a daemon that processes async I/O (swap and paging in the future) requests that need processing in process context and that were processed in the pagedaemon before. - Convert some ugly ifdef DIAGNOSTIC code to less intrusive KASSERTs. - misc other cleanups.
2001-11-07Another sync of uvm to NetBSD. Just minor fiddling, no major changes.Artur Grabowski
2001-11-07Add an alignment argument to uvm_map that specifies an alignment hintArtur Grabowski
for the virtual address.
2001-11-06Move the last content from vm/ to uvm/Artur Grabowski
The only thing left in vm/ are just dumb wrappers. vm/vm.h includes uvm/uvm_extern.h vm/pmap.h includes uvm/uvm_pmap.h vm/vm_page.h includes uvm/uvm_page.h
2001-11-05Minor sync to NetBSD.Artur Grabowski
2001-09-20occured->occurredMike Pechkin
idea from deraadt@ via NetBSD millert@ ok
2001-09-19merge vm/vm_kern.h into uvm/uvm_extern.h; art@ okMichael Shalayeff
2001-08-11Various random fixes from NetBSD.Artur Grabowski
Including support for zeroing pages in the idle loop (not enabled yet).
2001-08-06Add a new type voff_t (right now it's typedefed as off_t) used for offsetsArtur Grabowski
into objects. Gives the possibilty to mmap beyond the size of vaddr_t. From NetBSD.
2001-07-26Add support for disabling swap devices (swapctl -d).Artur Grabowski
Improve error handling on I/O errors to swap. From NetBSD
2001-07-25Change the pmap_enter interface to merge access_type and the wired booleanArtur Grabowski
and arbitrary flags into one argument. One new flag is PMAP_CANFAIL that tells pmap_enter that it can fail if there are not enough resources to satisfy the request. If this flag is not passed, pmap_enter should panic as it should have done before this change (XXX - many pmaps are still not doing that). Only i386 and alpha implement CANFAIL for now. Includes uvm updates from NetBSD.