#
1.30 |
|
04-Sep-2022 |
jsg |
spelling
|
Revision tags: OPENBSD_7_1_BASE
|
#
1.29 |
|
15-Dec-2021 |
mpi |
Use a per-UVM object lock to serialize the lower part of the fault handler.
Like the per-amap lock the `vmobjlock' is principally used to serialized access to objects in the fault handler to allow faults occurring on different CPUs and different objects to be processed in parallel.
The fault handler now acquires the `vmobjlock' of a given UVM object as soon as it finds one. For now a write-lock is always acquired even if some operations could use a read-lock.
Every pager, corresponding to a different kind of UVM object, now expect the UVM object to be locked and some operations, like *_get() return it unlocked. This is enforced by assertions checking for rw_write_held().
The KERNEL_LOCK() is now pushed to the VFS boundary in the vnode pager.
To ensure the correct amap or object lock is held when modifying a page many uvm_page* operations are now asserting for the "owner" lock. However, fields of the "struct vm_page" are still being protected by the global `pageqlock'. To prevent lock ordering issues with the new `vmobjlock' and to reduce differences with NetBSD this lock is now taken and released for each page instead of around the whole loop.
This commit does not remove the KERNEL_LOCK/UNLOCK() dance. Unlocking will follow if there is no fallout.
Ported from NetBSD, tested by many, thanks!
ok kettenis@, kn@
|
#
1.28 |
|
12-Oct-2021 |
kettenis |
Introduce a dummy uvm_obj_destroy() interface. This function will be used in the near future (by mpi@) to improve the locking for uvm objects. Introducing this function now will me allow me to call it in the appropriate place in the drm code.
ok mpi@, jsg@
|
Revision tags: OPENBSD_7_0_BASE
|
#
1.27 |
|
05-Sep-2021 |
mpi |
Introduce dummy pagers for 'special' subsystems using UVM objects.
Some pmaps (x86, hppa) and the buffer cache rely on UVM objects to allocate and manipulate pages. These objects should not be manipulated by uvm_fault() and do not currently require the same locking enforcement.
Use the dummy pagers to explicitly document which UVM functions are meant to manipulate UVM objects (uobj) that do not need the upcoming `vmobjlock' and instead still rely on the KERNEL_LOCK().
Tested by many as part of a larger diff.
ok kettenis@, beck@
|
#
1.26 |
|
16-Jun-2021 |
mpi |
Change the prefix of UVM object functions to match NetBSD's.
For example uvm_objinit() becomes uvm_obj_init(). Reduce differences between the trees and help porting new functions needed for UVM object locking.
No functionnal change.
|
#
1.25 |
|
15-Jun-2021 |
mpi |
Use a macro to assert that given uobjs correspond to anonymous objects.
Reduce the difference with NetBSD.
ok kettenis@
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.24 |
|
21-Oct-2020 |
mpi |
Constify and use C99 initializer for "struct uvm_pagerops".
While here put some KERNEL_ASSERT_LOCKED() in the functions called from the page fault handler. The removal of locking of `uobj' will need to be revisited and these are good indicator that something is missing and that many comments are lying.
ok kettenis
|
Revision tags: OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.23 |
|
29-Nov-2019 |
beck |
Add uvm_objfree function to free all pages in a uvm_obj in one go. Use this in the buffer cache to free all the pages from a buffer, resulting in a considerable speedup when throwing away pages from the buffer cache.
Lots of work done with mlarkin and kettenis
ok kettinis@ deraadt@
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|
#
1.29 |
|
15-Dec-2021 |
mpi |
Use a per-UVM object lock to serialize the lower part of the fault handler.
Like the per-amap lock the `vmobjlock' is principally used to serialized access to objects in the fault handler to allow faults occurring on different CPUs and different objects to be processed in parallel.
The fault handler now acquires the `vmobjlock' of a given UVM object as soon as it finds one. For now a write-lock is always acquired even if some operations could use a read-lock.
Every pager, corresponding to a different kind of UVM object, now expect the UVM object to be locked and some operations, like *_get() return it unlocked. This is enforced by assertions checking for rw_write_held().
The KERNEL_LOCK() is now pushed to the VFS boundary in the vnode pager.
To ensure the correct amap or object lock is held when modifying a page many uvm_page* operations are now asserting for the "owner" lock. However, fields of the "struct vm_page" are still being protected by the global `pageqlock'. To prevent lock ordering issues with the new `vmobjlock' and to reduce differences with NetBSD this lock is now taken and released for each page instead of around the whole loop.
This commit does not remove the KERNEL_LOCK/UNLOCK() dance. Unlocking will follow if there is no fallout.
Ported from NetBSD, tested by many, thanks!
ok kettenis@, kn@
|
#
1.28 |
|
12-Oct-2021 |
kettenis |
Introduce a dummy uvm_obj_destroy() interface. This function will be used in the near future (by mpi@) to improve the locking for uvm objects. Introducing this function now will me allow me to call it in the appropriate place in the drm code.
ok mpi@, jsg@
|
Revision tags: OPENBSD_7_0_BASE
|
#
1.27 |
|
05-Sep-2021 |
mpi |
Introduce dummy pagers for 'special' subsystems using UVM objects.
Some pmaps (x86, hppa) and the buffer cache rely on UVM objects to allocate and manipulate pages. These objects should not be manipulated by uvm_fault() and do not currently require the same locking enforcement.
Use the dummy pagers to explicitly document which UVM functions are meant to manipulate UVM objects (uobj) that do not need the upcoming `vmobjlock' and instead still rely on the KERNEL_LOCK().
Tested by many as part of a larger diff.
ok kettenis@, beck@
|
#
1.26 |
|
16-Jun-2021 |
mpi |
Change the prefix of UVM object functions to match NetBSD's.
For example uvm_objinit() becomes uvm_obj_init(). Reduce differences between the trees and help porting new functions needed for UVM object locking.
No functionnal change.
|
#
1.25 |
|
15-Jun-2021 |
mpi |
Use a macro to assert that given uobjs correspond to anonymous objects.
Reduce the difference with NetBSD.
ok kettenis@
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.24 |
|
21-Oct-2020 |
mpi |
Constify and use C99 initializer for "struct uvm_pagerops".
While here put some KERNEL_ASSERT_LOCKED() in the functions called from the page fault handler. The removal of locking of `uobj' will need to be revisited and these are good indicator that something is missing and that many comments are lying.
ok kettenis
|
Revision tags: OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.23 |
|
29-Nov-2019 |
beck |
Add uvm_objfree function to free all pages in a uvm_obj in one go. Use this in the buffer cache to free all the pages from a buffer, resulting in a considerable speedup when throwing away pages from the buffer cache.
Lots of work done with mlarkin and kettenis
ok kettinis@ deraadt@
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|
#
1.28 |
|
12-Oct-2021 |
kettenis |
Introduce a dummy uvm_obj_destroy() interface. This function will be used in the near future (by mpi@) to improve the locking for uvm objects. Introducing this function now will me allow me to call it in the appropriate place in the drm code.
ok mpi@, jsg@
|
Revision tags: OPENBSD_7_0_BASE
|
#
1.27 |
|
05-Sep-2021 |
mpi |
Introduce dummy pagers for 'special' subsystems using UVM objects.
Some pmaps (x86, hppa) and the buffer cache rely on UVM objects to allocate and manipulate pages. These objects should not be manipulated by uvm_fault() and do not currently require the same locking enforcement.
Use the dummy pagers to explicitly document which UVM functions are meant to manipulate UVM objects (uobj) that do not need the upcoming `vmobjlock' and instead still rely on the KERNEL_LOCK().
Tested by many as part of a larger diff.
ok kettenis@, beck@
|
#
1.26 |
|
16-Jun-2021 |
mpi |
Change the prefix of UVM object functions to match NetBSD's.
For example uvm_objinit() becomes uvm_obj_init(). Reduce differences between the trees and help porting new functions needed for UVM object locking.
No functionnal change.
|
#
1.25 |
|
15-Jun-2021 |
mpi |
Use a macro to assert that given uobjs correspond to anonymous objects.
Reduce the difference with NetBSD.
ok kettenis@
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.24 |
|
21-Oct-2020 |
mpi |
Constify and use C99 initializer for "struct uvm_pagerops".
While here put some KERNEL_ASSERT_LOCKED() in the functions called from the page fault handler. The removal of locking of `uobj' will need to be revisited and these are good indicator that something is missing and that many comments are lying.
ok kettenis
|
Revision tags: OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.23 |
|
29-Nov-2019 |
beck |
Add uvm_objfree function to free all pages in a uvm_obj in one go. Use this in the buffer cache to free all the pages from a buffer, resulting in a considerable speedup when throwing away pages from the buffer cache.
Lots of work done with mlarkin and kettenis
ok kettinis@ deraadt@
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|
#
1.27 |
|
05-Sep-2021 |
mpi |
Introduce dummy pagers for 'special' subsystems using UVM objects.
Some pmaps (x86, hppa) and the buffer cache rely on UVM objects to allocate and manipulate pages. These objects should not be manipulated by uvm_fault() and do not currently require the same locking enforcement.
Use the dummy pagers to explicitly document which UVM functions are meant to manipulate UVM objects (uobj) that do not need the upcoming `vmobjlock' and instead still rely on the KERNEL_LOCK().
Tested by many as part of a larger diff.
ok kettenis@, beck@
|
#
1.26 |
|
16-Jun-2021 |
mpi |
Change the prefix of UVM object functions to match NetBSD's.
For example uvm_objinit() becomes uvm_obj_init(). Reduce differences between the trees and help porting new functions needed for UVM object locking.
No functionnal change.
|
#
1.25 |
|
15-Jun-2021 |
mpi |
Use a macro to assert that given uobjs correspond to anonymous objects.
Reduce the difference with NetBSD.
ok kettenis@
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.24 |
|
21-Oct-2020 |
mpi |
Constify and use C99 initializer for "struct uvm_pagerops".
While here put some KERNEL_ASSERT_LOCKED() in the functions called from the page fault handler. The removal of locking of `uobj' will need to be revisited and these are good indicator that something is missing and that many comments are lying.
ok kettenis
|
Revision tags: OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.23 |
|
29-Nov-2019 |
beck |
Add uvm_objfree function to free all pages in a uvm_obj in one go. Use this in the buffer cache to free all the pages from a buffer, resulting in a considerable speedup when throwing away pages from the buffer cache.
Lots of work done with mlarkin and kettenis
ok kettinis@ deraadt@
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|
#
1.26 |
|
16-Jun-2021 |
mpi |
Change the prefix of UVM object functions to match NetBSD's.
For example uvm_objinit() becomes uvm_obj_init(). Reduce differences between the trees and help porting new functions needed for UVM object locking.
No functionnal change.
|
#
1.25 |
|
15-Jun-2021 |
mpi |
Use a macro to assert that given uobjs correspond to anonymous objects.
Reduce the difference with NetBSD.
ok kettenis@
|
Revision tags: OPENBSD_6_9_BASE
|
#
1.24 |
|
21-Oct-2020 |
mpi |
Constify and use C99 initializer for "struct uvm_pagerops".
While here put some KERNEL_ASSERT_LOCKED() in the functions called from the page fault handler. The removal of locking of `uobj' will need to be revisited and these are good indicator that something is missing and that many comments are lying.
ok kettenis
|
Revision tags: OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.23 |
|
29-Nov-2019 |
beck |
Add uvm_objfree function to free all pages in a uvm_obj in one go. Use this in the buffer cache to free all the pages from a buffer, resulting in a considerable speedup when throwing away pages from the buffer cache.
Lots of work done with mlarkin and kettenis
ok kettinis@ deraadt@
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|
#
1.24 |
|
21-Oct-2020 |
mpi |
Constify and use C99 initializer for "struct uvm_pagerops".
While here put some KERNEL_ASSERT_LOCKED() in the functions called from the page fault handler. The removal of locking of `uobj' will need to be revisited and these are good indicator that something is missing and that many comments are lying.
ok kettenis
|
Revision tags: OPENBSD_6_7_BASE OPENBSD_6_8_BASE
|
#
1.23 |
|
29-Nov-2019 |
beck |
Add uvm_objfree function to free all pages in a uvm_obj in one go. Use this in the buffer cache to free all the pages from a buffer, resulting in a considerable speedup when throwing away pages from the buffer cache.
Lots of work done with mlarkin and kettenis
ok kettinis@ deraadt@
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|
#
1.23 |
|
29-Nov-2019 |
beck |
Add uvm_objfree function to free all pages in a uvm_obj in one go. Use this in the buffer cache to free all the pages from a buffer, resulting in a considerable speedup when throwing away pages from the buffer cache.
Lots of work done with mlarkin and kettenis
ok kettinis@ deraadt@
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|
Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE
|
#
1.22 |
|
16-Sep-2016 |
dlg |
move the vm_page struct from being stored in RB macro trees to RBT functions
vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and uvm_pmr_size. all these have been moved to RBT code.
this should give us a decent chunk of code space back.
|
Revision tags: OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE
|
#
1.21 |
|
11-Jul-2014 |
jsg |
Chuck Cranor rescinded clauses in his license on the 2nd of February 2011 in NetBSD.
http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2 http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2 http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2 http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2 http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2 http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2 http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2 http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2
|
#
1.20 |
|
08-May-2014 |
kettenis |
Fix some potential integer overflows caused by converting a page number into an offset/size/address by shifting by PAGE_SHIFT. Make uvm_objwrire/unwire use voff_t instead of off_t. The former is the right type here even if it is equivalent to the latter.
Inspired by a somewhat similar changes in Bitrig.
ok deraadt@, guenther@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE
|
#
1.19 |
|
30-May-2013 |
tedu |
remove simple_locks from uvm code. ok beck deraadt
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.18 |
|
07-Jul-2011 |
sobrado |
fix typos; while here, improve spacing in comments.
changes to libevent and zlib headers sent to the upstream maintainers.
ok jmc@ (for typos), millert@
|
Revision tags: OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.17 |
|
30-Apr-2010 |
oga |
Right now, if anything internal changes with a uvm object, diverse places in the tree need to be touched to update the object initialisation with respect to that.
So, make a function (uvm_initobj) that takes the refcount, object and pager ops and does this initialisation for us. This should save on maintainance in the future.
looked good to fgs@. Tedu complained about the British spelling but OKed it anyway.
|
Revision tags: OPENBSD_4_7_BASE
|
#
1.16 |
|
25-Nov-2009 |
oga |
re-add uvm_objwire and uvm_objunwire. needed for intel GEM support.
It was backed out as part of the date-based revert after c2k9.
"you can commit that" kettenis@
original diff oked by ariane@, art@.
|
#
1.15 |
|
06-Aug-2009 |
oga |
reintroduce the uvm_tree commit.
Now instead of the global object hashtable, we have a per object tree.
Testing shows no performance difference and a slight code shrink. OTOH when locking is more fine grained this should be faster due to lock contention on uvm.hashlock.
ok thib@, art@.
|
Revision tags: OPENBSD_4_6_BASE
|
#
1.14 |
|
17-Jun-2009 |
oga |
date based reversion of uvm to the 4th May.
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@
|
#
1.13 |
|
16-Jun-2009 |
oga |
Backout all changes to uvm after pmemrange (which will be backed out separately).
a change at or just before the hackathon has either exposed or added a very very nasty memory corruption bug that is giving us hell right now. So in the interest of kernel stability these diffs are being backed out until such a time as that corruption bug has been found and squashed, then the ones that are proven good may slowly return.
a quick hitlist of the main commits this backs out:
mine: uvm_objwire the lock change in uvm_swap.c using trees for uvm objects instead of the hash removing the pgo_releasepg callback.
art@'s: putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since all callers called that just prior anyway.
ok beck@, ariane@.
prompted by deraadt@.
|
#
1.12 |
|
06-Jun-2009 |
oga |
Add uvm_objwire() and uvm_objunwire(), I need this for some of my crazy shitz.
Code mostly from netbsd with some tweaks from me. The loaning case is specifcically if 0ed out right now because we do not do loaning.
ok ariane@, art@.
|
#
1.11 |
|
02-Jun-2009 |
oga |
Instead of the global hash table with the terrible hashfunction and a global lock, switch the uvm object pages to being kept in a per-object RB_TREE. Right now this is approximately the same speed, but cleaner. When biglock usage is reduced this will improve concurrency due to lock contention..
ok beck@ art@. Thanks to jasper for the speed testing.
|
Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE OPENBSD_4_5_BASE
|
#
1.10 |
|
11-Apr-2007 |
art |
Instead of managing pages for intrsafe maps in special objects (aka. kmem_object) just so that we can remove them, just use pmap_extract to get the pages to free and simplify a lot of code to not deal with the list of intrsafe maps, intrsafe objects, etc.
miod@ ok
|
Revision tags: OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
|
#
1.9 |
|
26-Jul-2005 |
art |
- Make a UVM_OBJ_IS_DEVICE macro. - 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
|
Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE OPENBSD_3_7_BASE SMP_SYNC_A SMP_SYNC_B UBC_SYNC_A UBC_SYNC_B
|
#
1.8 |
|
19-Dec-2001 |
art |
UBC was a disaster. It worked very good when it worked, but on some 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.
|
Revision tags: UBC_BASE
|
#
1.7 |
|
28-Nov-2001 |
art |
branches: 1.7.2; Sync in more uvm from NetBSD. Mostly just cosmetic stuff. Contains also support for page coloring.
|
#
1.6 |
|
12-Nov-2001 |
art |
Bring in more changes from NetBSD. Mostly pagedaemon improvements.
|
Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE
|
#
1.5 |
|
29-Jan-2001 |
niklas |
$OpenBSD$
|
Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE
|
#
1.4 |
|
16-Mar-2000 |
art |
Bring in some new UVM code from NetBSD (not current).
- Introduce a new type of map that are interrupt safe and never allow faults in them. mb_map and kmem_map are made intrsafe. - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and later to pmap_enter). - madvise(2) now works. - various cleanups.
|
Revision tags: OPENBSD_2_6_BASE SMP_BASE kame_19991208
|
#
1.3 |
|
23-Aug-1999 |
art |
branches: 1.3.4; sync with NetBSD from 1999.05.24 (there is a reason for this date) Mostly cleanups, but also a few improvements to pagedaemon for better handling of low memory and/or low swap conditions.
|
Revision tags: OPENBSD_2_5_BASE
|
#
1.2 |
|
26-Feb-1999 |
art |
add OpenBSD tags
|
#
1.1 |
|
26-Feb-1999 |
art |
Import of uvm from NetBSD. Some local changes, some code disabled
|