IABSD.fr/src/sys/uvm

Branch :


Log

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@