Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| c1d6b47a | 2021-11-11 09:34:27 | Convert a for loop into LIST_FOREACH to reduce the diff to NetBSD. ok millert mpi | ||
| c1638fe5 | 2021-10-24 15:23:52 | Move pmap_{,k}remove() inside uvm_km_pgremove{,_intrsafe}(). Reduce differences with NetBSD, tested by many as part of a larger diff. ok kettenis@ | ||
| 6894b7cf | 2021-10-24 13:46:14 | Shuffle variables around and use KASSERT() instead of panic(). No functionnal change. Reduce differences with NetBSD, tested by many as part of a larger diff. | ||
| 2c850ee8 | 2021-10-23 14:42:07 | Sprinkle uvm_obj_destroy() over UVM object recycling code. For now, only assert that the tree of pages is empty in uvm_obj_destroy(). This will soon be used to free the per-UVM object lock. While here call uvm_obj_init() when new vnodes are allocated instead of in uvn_attach(). Because vnodes and there associated UVM object are currently never freed, it isn't easy to know where/when to garbage collect the associated lock. So simply check that the reference of a given object is 0 when uvn_attach(). Tested by many as part of a bigger diff. ok kettenis@ | ||
| 05ee8c21 | 2021-10-20 06:35:39 | revert vnode: remove VLOCKSWORK and check locking when vop_islocked != nullop (both kernel and userland bits) GENERIC + VFSLCKDEBUG is broken with it. | ||
| 10dc0785 | 2021-10-19 06:26:08 | vnode: remove VLOCKSWORK and check locking when vop_islocked != nullop This flag is currently used to mark or unmark a vnode to actively check vnode locking semantic (when compiled with VFSLCKDEBUG). Currently, VLOCKSWORK flag isn't properly set for several FS implementation which have full locking support. This commit enable proper checking for them too (cd9660, udf, fuse, msdosfs, tmpfs). Instead of using a particular flag, it directly check if v_op->vop_islocked is nullop or not to activate or not the vnode locking checks. ok mpi@ | ||
| a1a73489 | 2021-10-17 11:39:40 | km_alloc(9) needs to be passed a size that is a multiple of PAGE_SIZE. ok mpi@ | ||
| 3c82a206 | 2021-10-12 18:16:51 | 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@ | ||
| d6b79e51 | 2021-10-12 07:38:22 | Fix the deadlock between uvn_io() and uvn_flush() by restarting the fault. Do not allow a faulting thread to sleep on a contended vnode lock to prevent lock ordering issues with upcoming per-uobj lock. Also reduce the sleep value for VM_PAGER_AGAIN from 1sec to 5nsec to not add visible slowdown when starting a multi-threaded application with threads that fault on the same vnode (chromium, firefox, etc). Tested by anton@, tb@, robert@ and gnezdo@ ok anton@, tb@ Reported-by: syzbot+e63407b35dff08dbee02@syzkaller.appspotmail.com | ||
| 8542cb70 | 2021-10-12 07:37:42 | Revert the fix for the deadlock between uvn_io() and uvn_flush(). This fix (ab)use the vnode lock to serialize access to some fields of the corresponding pages associated with UVM vnode object and this will create new deadlocks with the introduction of a per-uobj lock. ok anton@ | ||
| 2a71da19 | 2021-10-05 15:37:21 | Unref/free amaps before grabbing the KERNEL_LOCK(). This is possible now that amaps & anons are protected by a per-map rwlock. Tested by many as part of a bigger diff. ok kettenis@ | ||
| 94151407 | 2021-09-05 11:44:46 | 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@ | ||
| cd6f2629 | 2021-08-30 16:59:17 | Fix a locking assertion in error path. In amap_copy() make the new amap share the source amap's lock right in the begining and only allocate a new one if no anon have been referenced. Issue reported by Thomas L. <tom.longshine at web dot de> on bugs@. ok tb@ | ||
| d0b698e1 | 2021-06-29 01:46:35 | remove arch ifdefs around drm.h include ok deraadt@ kettenis@ | ||
| 1af74310 | 2021-06-28 11:19:01 | Make anonymous object reference counting independant from the KERNEL_LOCK(). - Use atomic operations for increment/decrement - Rewrite the loop from uao_swap_off() to only keep a reference to the next item in the list. ok jmatthew@ | ||
| 7a179e3a | 2021-06-25 19:27:40 | basic radeondrm / X support for riscv64. Ok kettenis@ - add wscons devices - build radeondrm and add MD uvm bits to support it. | ||
| c8a76b7e | 2021-06-17 16:10:39 | Revert previous: unref of amap outside of the KERNEL_LOCK(). This change introduced or exposed a leak of anons which result in system freezes. anton@ observed a high number of INUSE for anonpl and semarie@ saw multiple processes waiting in the fault handler on "flt_noramX" probably the one related to allocating an anon. | ||
| da3d0110 | 2021-06-16 09:02:21 | 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. | ||
| 57296fa7 | 2021-06-15 16:38:09 | Use a macro to assert that given uobjs correspond to anonymous objects. Reduce the difference with NetBSD. ok kettenis@ | ||
| 57e20f0c | 2021-06-15 16:35:21 | Unref/free amaps before grabbing the KERNEL_LOCK(). This is possible now that amaps & anons are protected by a per-map rwlock. ok kettenis@, jmatthew@ | ||
| c177afe5 | 2021-05-31 13:44:04 | call drmbackoff() on powerpc64 as well ok kettenis@ | ||
| 59444261 | 2021-05-22 08:38:29 | Use atomic operations for reference counting VM maps. This is necessary to do this accounting without the KERNEL_LOCK(). ok mvs@, kettenis@ | ||
| 4b17baa2 | 2021-05-20 08:03:35 | Make use of uao_dropswap_range() in uao_free() instead of re-rolling it. ok kettenis@ | ||
| 4123b6a7 | 2021-05-16 15:10:19 | panic does not require a \n at the end. When one is provided, it looks wrong. | ||
| a4b88e66 | 2021-04-22 11:54:32 | Keep under #ifdef TMPFS functions to grow/shrink uaobj. ok patrick@ | ||
| 388a5417 | 2021-04-21 10:02:05 | Convert remaining uvm_km_zalloc(9) to km_alloc(9). Tested by bluhm@, jj@, kettenis@ and Scott Bennett. ok kettenis@ | ||
| 39c73ac7 | 2021-03-31 08:53:39 | Introduce UAO_USES_SWHASH() and use tabs instead of spaces in #defines. No functionnal change, reduce the difference with NetBSD. ok jmatthew@ | ||
| b9df1565 | 2021-03-26 13:40:05 | Remove parenthesis around return value to reduce the diff with NetBSD. No functional change. ok mlarkin@ | ||
| 52887a38 | 2021-03-20 10:24:21 | Sync some comments in order to reduce the difference with NetBSD. No functionnal change. ok kettenis@ | ||
| 4af3577f | 2021-03-12 14:15:49 | spelling ok mpi@ | ||
| fbaef5a9 | 2021-03-05 05:30:44 | ansi | ||
| c4a864ba | 2021-03-04 09:00:03 | Modify `uvmexp.swpgonly' atomically, required for uvm_fault() w/o KERNEL_LOCK() ok kettenis@ | ||
| 00e7696e | 2021-03-04 08:38:48 | Bring back previous fix for UVM vnode deadlock. tb@ reports that refaulting when there's contention on the vnode makes firefox start very slowly on his machine. To revisit when the fault handler will be unlocked. ok anton@ Original commit message: Fix a deadlock between uvn_io() and uvn_flush(). While faulting on a page backed by a vnode, uvn_io() will end up being called in order to populate newly allocated pages using I/O on the backing vnode. Before performing the I/O, newly allocated pages are flagged as busy by uvn_get(), that is before uvn_io() tries to lock the vnode. Such pages could then end up being flushed by uvn_flush() which already has acquired the vnode lock. Since such pages are flagged as busy, uvn_flush() will wait for them to be flagged as not busy. This will never happens as uvn_io() cannot make progress until the vnode lock is released. Instead, grab the vnode lock before allocating and flagging pages as busy in uvn_get(). This does extend the scope in uvn_get() in which the vnode is locked but resolves the deadlock. ok mpi@ Reported-by: syzbot+e63407b35dff08dbee02@syzkaller.appspotmail.com | ||
| 3426345d | 2021-03-02 10:12:37 | Fix the deadlock between uvn_io() and uvn_flush() by restarting the fault. Do not allow a faulting thread to sleep on a contended vnode lock to prevent lock ordering issues with upcoming per-uobj lock. ok anton@ Reported-by: syzbot+e63407b35dff08dbee02@syzkaller.appspotmail.com | ||
| 4deeff89 | 2021-03-02 10:09:20 | Revert the fix for the deadlock between uvn_io() and uvn_flush(). This fix (ab)use the vnode lock to serialize access to some fields of the corresponding pages associated with UVM vnode object and this will create new deadlocks with the introduction of a per-uobj lock. ok anton@ | ||
| 1c92e3af | 2021-03-01 09:13:33 | If an anon is associated with a page, acquire its lock before any modification. This change should have been part of the previous anon-locking diff and is necessary to run the top part of uvm_fault() unlocked. ok jmatthew@ | ||
| a3afc610 | 2021-03-01 09:09:35 | Move the top part of uvm_fault_lower(), the lookup, in its own function. The name and logic come from NetBSD in order to reduce the difference between the two code bases. No functional change intended. ok tb@ | ||
| edebe3b8 | 2021-02-23 11:22:20 | remove unused uvm_mapent_bias() ok mpi@ | ||
| 4bb42341 | 2021-02-23 10:41:59 | Move `pgo_fault' handler outside of uvm_fault_lower(). Reduce differences with NetBSD and prepare for `uobj' locking. No functionnal change. ok chris@, kettenis@ | ||
| 2ed91a58 | 2021-02-16 09:10:17 | Comments & style cleanup, no functional change intended. - Sync comments with NetBSD including locking details. - Remove superfluous parenthesis and spaces. - Add brackets, even if questionable, to reduce diff with NetBSD - Use for (;;) instead of while(1) - Rename a variable from 'result' into 'error'. - Move uvm_fault() and uvm_fault_upper_lookup() - Add an locking assert in uvm_fault_upper_lookup() ok tb@, mlarkin@ | ||
| 38b0cdf0 | 2021-02-15 12:12:54 | Fix double unlock in uvmfault_anonget(). Reported by and ok jsg@ | ||
| 193f316c | 2021-02-08 10:51:01 | Revert the convertion of per-process thread into a SMR_TAILQ. We did not reach a consensus about using SMR to unlock single_thread_set() so there's no point in keeping this change. | ||
| 19dcab73 | 2021-01-19 13:21:36 | (re)Introduce locking for amaps & anons. A rwlock is attached to every amap and is shared with all its anon. The same lock will be used by multiple amaps if they have anons in common. This should be enough to get the upper part of the fault handler out of the KERNEL_LOCK() which seems to bring up to 20% improvements in builds. This is based/copied/adapted from the most recent work done in NetBSD which is an evolution of the precendent simple_lock scheme. Tested by many, thanks! ok kettenis@, mvs@ | ||
| b004aefe | 2021-01-16 18:32:47 | Move `access_type' to the fault context. Fix a regression where the valye wasn't correctly overwritten for wired mapping, introduced in previous refactoring. ok mvs@ | ||
| ac25e10f | 2021-01-11 18:51:09 | Assert that the KERNEL_LOCK() is held in uao_set_swslot(). ok kettenis@ | ||
| 0b905610 | 2021-01-09 21:00:29 | Enforce range with sysctl_int_bounded in swap_encrypt_ctl OK millert@ | ||
| 69651395 | 2021-01-02 02:39:59 | uvm: uvm_fault_lower(): don't sleep on lbolt We can simulate the current behavior without lbolt by sleeping for 1 second on the &nowake channel. ok mpi@ | ||
| 627a59d1 | 2020-12-28 14:01:23 | Use per-CPU counters for fault and stats counters reached in uvm_fault(). ok kettenis@, dlg@ | ||
| 9dbe817d | 2020-12-15 22:14:42 | Remove the assertion in uvm_km_pgremove(). At least some initialization code on i386 calls it w/o KERNEL_LOCK(). Found the hardway by jungle Boogie and Hrvoje Popovski. | ||
| b8f4b4dc | 2020-12-14 13:29:18 | Grab the KERNEL_LOCK() or ensure it's held when poking at swap data structures. This will allow uvm_fault_upper() to enter swap-related functions without holding the KERNEL_LOCK(). ok jmatthew@ | ||
| ebdaeedf | 2020-12-08 12:26:31 | Use a while loop instead of goto in uvm_fault(). ok jmatthew@, tb@ | ||
| b21c774f | 2020-12-07 16:55:28 | Convert the per-process thread list into a SMR_TAILQ. Currently all iterations are done under KERNEL_LOCK() and therefor use the *_LOCKED() variant. From and ok claudio@ | ||
| 9a2ed694 | 2020-12-02 16:32:00 | Document that the page queue must only be locked if the page is managed. ok kettenis@ | ||
| 03c020ef | 2020-12-01 13:56:22 | Turn uvm_pagealloc() mp-safe by checking uvmexp global with pageqlock held. Use a new flag, UVM_PLA_USERESERVE, to tell uvm_pmr_getpages() that using kernel reserved pages is allowed. Merge duplicated checks waking the pagedaemon to uvm_pmr_getpages(). Add two more pages to the amount reserved for the kernel to compensate the fact that the pagedaemon may now consume an additional page. Document locking of some uvmexp fields. ok kettenis@ | ||
| 63dd4e05 | 2020-11-27 12:45:00 | Set the correct IPL for `pageqlock' now that it is grabbed from interrupt. Reported by AIsha Tammy. ok kettenis@ | ||
| d21d8ab4 | 2020-11-24 13:49:09 | Grab the `pageqlock' before calling uvm_pageclean() as intended. Document which global data structures require this lock and add some asserts where the lock should be held. Some code paths are still incorrect and should be revisited. ok jmatthew@ | ||
| 3053940a | 2020-11-19 17:06:40 | Move logic handling lower faults, case 2, to its own function. No functionnal change. ok kettenis@, jmatthew@, tb@ | ||
| 427225b6 | 2020-11-16 12:30:16 | Remove Case2 goto, use a simple if () instead. ok tb@, jmatthew@ | ||
| cd713f80 | 2020-11-13 14:18:25 | Use a helper to look for existing mapping & return if there's an anon. Separate fault handling code for type 1 and 2 and reduce differences with NetBSD. ok tb@, jmatthew@, kettenis@ | ||
| 6d51fca8 | 2020-11-13 11:16:08 | Move the logic dealing with faults 1A & 1B to its own function. Some minor documentation improvments and style nits but this should not contain any functionnal change. ok tb@ | ||
| 1178d139 | 2020-11-13 11:11:48 | Introduce amap_adjref_anons() an helper to reference count amaps. Reduce code duplication, reduce differences with NetBSD and simplify upcoming locking diff. ok jmatthew@ | ||
| ec3489ee | 2020-11-06 11:52:39 | Remove unused `anon' argument from uvmfault_unlockall(). It won't be used when amap and anon locking will be introduced. This "fixes" passing a unrelated/uninitialized pointer in an error path in case of memory shortage. ok kettenis@ | ||
| d6d19400 | 2020-10-26 19:48:19 | Fix a deadlock between uvn_io() and uvn_flush(). While faulting on a page backed by a vnode, uvn_io() will end up being called in order to populate newly allocated pages using I/O on the backing vnode. Before performing the I/O, newly allocated pages are flagged as busy by uvn_get(), that is before uvn_io() tries to lock the vnode. Such pages could then end up being flushed by uvn_flush() which already has acquired the vnode lock. Since such pages are flagged as busy, uvn_flush() will wait for them to be flagged as not busy. This will never happens as uvn_io() cannot make progress until the vnode lock is released. Instead, grab the vnode lock before allocating and flagging pages as busy in uvn_get(). This does extend the scope in uvn_get() in which the vnode is locked but resolves the deadlock. ok mpi@ Reported-by: syzbot+e63407b35dff08dbee02@syzkaller.appspotmail.com | ||
| 7d3be475 | 2020-10-24 21:07:53 | We will soon have DRM on powerpc64. | ||
| 64fad640 | 2020-10-21 21:24:56 | move the backwards-stack vm_minsaddr check from hppa trap.c to uvm_grow(), within the correct #ifdef of course. ok kettenis | ||
| 9f7b7ef0 | 2020-10-21 09:08:14 | 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 | ||
| 7f5d8661 | 2020-10-21 08:55:40 | Move the top part of uvm_fault() (lookups, checks, etc) in their own function. The name, uvm_fault_check() and logic comes from NetBSD as reuducing diff with their tree is useful to learn from their experience and backport fixes. No functional change intended. ok kettenis@ | ||
| c745e64a | 2020-10-20 08:47:23 | Remove guard, uao_init() is called only once and no other function use one. ok kettenis@ | ||
| b2476e15 | 2020-10-19 17:57:43 | Clear vmspace pointer in struct process before calling uvmspace_free(9). ok patrick@, mpi@ | ||
| 1df98543 | 2020-10-19 08:19:46 | Serialize accesses to "struct vmspace" and document its refcounting. The underlying vm_space lock is used as a substitute to the KERNEL_LOCK() in uvm_grow() to make sure `vm_ssize' is not corrupted. ok anton@, kettenis@ | ||
| e7a54d53 | 2020-10-13 08:47:59 | typo in comment | ||
| 0d27d3d9 | 2020-10-12 08:44:45 | Use KASSERT() instead of if(x) panic() for NULL dereference checks. Improves readability and reduces the difference with NetBSD without compromising debuggability on RAMDISK. While here also use local variables to help with future locking and reference counting. ok semarie@ | ||
| 26d06e40 | 2020-10-09 08:16:28 | Remove unecesary includes. ok deraadt@ | ||
| 38802bc0 | 2020-10-07 12:26:20 | Do not release the KERNEL_LOCK() when mmap(2)ing files. Previous attempt to unlock amap & anon exposed a race in vnode reference counting. So be conservative with the code paths that we're not fully moving out of the KERNEL_LOCK() to allow us to concentrate on one area at a time. The panic reported was: ....panic: vref used where vget required ....db_enter() at db_enter+0x5 ....panic() at panic+0x129 ....vref(ffffff03b20d29e8) at vref+0x5d ....uvn_attach(1010000,ffffff03a5879dc0) at uvn_attach+0x11d ....uvm_mmapfile(7,ffffff03a5879dc0,2,1,13,100000012) at uvm_mmapfile+0x12c ....sys_mmap(c50,ffff8000225f82a0,1) at sys_mmap+0x604 ....syscall() at syscall+0x279 Note that this change has no effect as long as mmap(2) is still executed with ze big lock. ok kettenis@ | ||
| c37ebb0f | 2020-10-04 21:58:53 | Recent changes for PROT_NONE pages to not count against resource limits, failed to note this also guarded against heavy amap allocations in the MAP_SHARED case. Bring back the checks for MAP_SHARED from semarie, ok kettenis https://syzkaller.appspot.com/bug?extid=d80de26a8db6c009d060 | ||
| afd3b31e | 2020-09-29 11:47:41 | Introduce a helper to check if all available swap is in use. This reduces code duplication, reduces the diff with NetBSD and will help to introduce locks around global variables. ok cheloha@ | ||
| e7492365 | 2020-09-25 08:04:48 | Use KASSERT() instead of if(x) panic() for sanity checks. Reduce the diff with NetBSD. ok kettenis@, deraadt@ | ||
| 0390d347 | 2020-09-24 09:51:07 | Remove trailing white spaces. | ||
| 56b7e380 | 2020-09-22 14:31:08 | Spell inline correctly. Reduce differences with NetBSD. ok mvs@, kettenis@ | ||
| f2b61f70 | 2020-09-22 14:29:20 | Kill outdated comment, pmap_enter(9) doesn't sleep. ok kettenis@ | ||
| 9591082e | 2020-09-14 20:31:09 | Since the issues with calling uvm_map_inentry_fix() without holding the kernel lock are fixed now, push the kernel lock down again. ok deraadt@ | ||
| af074ab7 | 2020-09-13 10:05:25 | Include <sys/systm.h> directly instead of relying on uvm_map.h to pull it. | ||
| c28df561 | 2020-09-12 17:08:49 | Add tracepoints in the page fault handler and when entries are added to maps. ok kettenis@ | ||
| e2a097ad | 2020-07-06 19:22:40 | fix spelling | ||
| d82e6535 | 2020-07-06 13:33:05 | Add support for timeconting in userland. This diff exposes parts of clock_gettime(2) and gettimeofday(2) to userland via libc eliberating processes from the need for a context switch everytime they want to count the passage of time. If a timecounter clock can be exposed to userland than it needs to set its tc_user member to a non-zero value. Tested with one or multiple counters per architecture. The timing data is shared through a pointer found in the new ELF auxiliary vector AUX_openbsd_timekeep containing timehands information that is frequently updated by the kernel. Timing differences between the last kernel update and the current time are adjusted in userland by the tc_get_timecount() function inside the MD usertc.c file. This permits a much more responsive environment, quite visible in browsers, office programs and gaming (apparently one is are able to fly in Minecraft now). Tested by robert@, sthen@, naddy@, kmos@, phessler@, and many others! OK from at least kettenis@, cheloha@, naddy@, sthen@ | ||
| 3209772d | 2020-06-24 22:03:40 | kernel: use gettime(9)/getuptime(9) in lieu of time_second(9)/time_uptime(9) time_second(9) and time_uptime(9) are widely used in the kernel to quickly get the system UTC or system uptime as a time_t. However, time_t is 64-bit everywhere, so it is not generally safe to use them on 32-bit platforms: you have a split-read problem if your hardware cannot perform atomic 64-bit reads. This patch replaces time_second(9) with gettime(9), a safer successor interface, throughout the kernel. Similarly, time_uptime(9) is replaced with getuptime(9). There is a performance cost on 32-bit platforms in exchange for eliminating the split-read problem: instead of two register reads you now have a lockless read loop to pull the values from the timehands. This is really not *too* bad in the grand scheme of things, but compared to what we were doing before it is several times slower. There is no performance cost on 64-bit (__LP64__) platforms. With input from visa@, dlg@, and tedu@. Several bugs squashed by visa@. ok kettenis@ | ||
| ede08b28 | 2020-05-23 06:15:09 | Prevent km_alloc() from returning garbage if pagelist is empty. ok bluhm@, visa@ | ||
| 4334c912 | 2020-04-23 07:57:27 | Document uvmexp.nswget without relying on implementation details. Prompted by a question from schwarze@ ok deraadt@, schwarze@, visa@ | ||
| 4ed81bdb | 2020-04-04 22:08:02 | Tweak the code that wakes up uvm_pmalloc sleepers in the page daemin. Although there are open questions about whether we should flag failures with UVM_PMA_FAIL or not, we really should only wake up a sleeper if we unlink the pma. For now only do that if pages were actually freed in the requested region. Prompted by: CID 1453061 Logically dead code which should be fixed by this commit. ok (and together with) beck@ | ||
| 42867869 | 2020-03-25 14:55:14 | Do not test against NULL a variable which is dereference before that. CID 1453116 ok kettenis@ | ||
| 14285caa | 2020-03-24 15:03:59 | Use FALLTHROUGH in uvm_total() like it is done in uvm_loadav(). CID 1453262. | ||
| 003533bf | 2020-03-04 21:15:38 | Do not count pages mapped as PROT_NONE against the RLIMIT_DATA limit. Instead count (and check the limit) when their protection gets flipped from PROT_NONE to something that permits access. This means that mprotect(2) may now fail if changing the protection would exceed RLIMIT_DATA. This helps code (such as Chromium's JavaScript interpreter that reserves large chunks of address space but populates it sparsely. ok deraadt@, otto@, kurt@, millert@, robert@ | ||
| 63cf9471 | 2020-02-18 12:13:39 | Cleanup <sys/kthread.h> and <sys/proc.h> includes. Do not include <sys/kthread.h> where it is not needed and stop including <sys/proc.h> in it. ok visa@, anton@ | ||
| 2d6b9e38 | 2020-01-20 23:21:55 | struct vops is not modified during runtime so use const which moves each into read-only data segment. OK deraadt@ tedu@ | ||
| cded8e25 | 2020-01-16 15:35:22 | Use list for freeing pages in uvn_flush() to optimize freeing chunks of contiguous pages. ok beck@ | ||
| 39ee2284 | 2020-01-04 16:17:29 | Add uvm_anfree_list() to free anons as a list of pages. Use this in the amap code to free pages as a list instead of one at a time to allow for more efficient freeing. Most of the work done at elk lakes, with testing by me and mlarkin and kettenis. Speeds up a test program which zeros a big pile of memory and then exits considerably. ok kettenis@ | ||
| 1e57804e | 2020-01-01 01:50:00 | Add uvm_pmr_remove_1strange_reverse to efficiently free pages in reverse order from uvm. Use it in uvm_pmr_freepageq when the pages appear to be in reverse order. This greatly improves cases of massive page freeing as noticed by mlarkin@ in his ongoing efforts to have the most gigantish buffer cache on the planet. Most of this work done by me with help and polish from kettenis@ at e2k19. Follow on commits to this will make use of this for more efficient freeing of amaps and a few other things. ok kettenis@ deraadt@ | ||
| 2404448f | 2019-12-30 23:58:38 | convert infinite msleep(9) to msleep_nsec(9) ok mpi@ | ||
| a4e118ac | 2019-12-25 11:31:41 | Hook up the shrinker for inteldrm(4). This is a "light" version that only drops graphics buffers that are cached and not in active use. Help from beck@ for pointing out how to hook this up to our pagedaemon. ok jsg@ | ||
| bcf611cd | 2019-12-18 13:33:29 | Set vm_map's pmap in uvm_map_setup(). OK guenther@, kettenis@, mpi@ |