Home | History | Annotate | Download | only in kern
History log of /src/sys/kern/subr_vmem.c
RevisionDateAuthorComments
 1.118  06-Dec-2024  riastradh vmem(9): Sprinkle SET_ERROR dtrace probes.

PR kern/58378: Kernel error code origination lacks dtrace probes
 1.117  06-Dec-2024  riastradh vmem(9): Sort includes, remove sharp edges from macros.

No functional change intended. (And if changing /* nothing */ to
__nothing changed anything, it was already broken!)
 1.116  24-Apr-2024  thorpej vmem_init(): Ensure that the quantum is a power of 2, and that if private
tags are being used, they are added to the arena before the first span is
added.
 1.115  03-Dec-2023  thorpej Add the notion of "private boundary tags" to vmem. This allows vmem to
be used VERY early in boot; such consumers statically allocate the vmem
arena and boundary tags, and then explicitly add those static, private
boundary tags to the arena tag free list using the new function vmem_add_bts().

Vmem arenas that use private boundary tags will NOT consume the statically
allocated bootstrap tags used by the vmem system itself; the assumption is
that the consumer of such an arena knows what they're doing, and is responsible
for all necessary resource management. A macro, VMEM_EST_BTCOUNT(), is
provided to help such consumers size the static boundary tag store based
on the expected number of spans and early allocations. Once the private
tags are exhausted, the arena will dynamically allocate tags as usual.
 1.114  03-Dec-2023  thorpej Split the boundary tag "type" field into "type" and "flags" fields.
Initialize the flags field to 0 before inserting into an arena's free
tag list.

NFC, but makes diff for a future enhancement smaller.
 1.113  03-Dec-2023  thorpej bt_freetrim(): Restructure the loop as a LIST_FOREACH_SAFE() rather
than a while(). No real change in behavior now, but makes upcoming
enhancements easier.
 1.112  03-Dec-2023  thorpej Assert that the vmem_btag_pool has been initialized before we attempt
to allocate from it.
 1.111  02-Dec-2023  thorpej Add a vmem_xalloc_addr() function, which allocates a specific address
from an arena. This is just a convenience wrapper around vmem_xalloc(),
that's just a bit more obvious how to use and performs some additional
sanity checks.
 1.110  02-Dec-2023  thorpej Minor changes to let this build as the "subr_vmem" test program again.
 1.109  09-Apr-2023  riastradh kern: KASSERT(A && B) -> KASSERT(A); KASSERT(B)
 1.108  31-May-2022  andvar fix various typos in comments, documentation and messages.
 1.107  27-Feb-2022  riastradh vmem(9): Assert addresses are quantum-aligned.
 1.106  17-Aug-2021  andvar fix multiplei repetitive typos in comments, messages and documentation. mainly because copy paste code big amount of files are affected.
 1.105  20-Jun-2020  riastradh Nix trailing whitespace.
 1.104  16-Jun-2020  thorpej Add vmem_xfreeall(), which frees all allocated regions in the specified arena.
All outstanding allocations MUST have been performed with vmem_xalloc() or
else the behavior is undefined. (This also implies that the arena must also
not have a quantum cache; note this in the documentation.)
 1.103  21-Apr-2020  ad vmem_list_lock needs to be an adaptive lock. Fixes LOCKDEBUG panic.
 1.102  19-Apr-2020  ad comment
 1.101  19-Apr-2020  ad - Fix uneven performance with "bursty" vmem arenas. Adjust locking so that
the mutex is acquired and released only once in the happy path. Align
tags to cachelines. Size the hash table according to the maximum count of
boundary tags over the interval just gone, not the instantaneous count,
and decay that maximum value by 50%+1 after each rehash. Round up to the
next power of two to eliminate divisions. Do the rehash check unlocked.

- Hash bucket size is sizeof(vmem_hashlist), not size of a pointer to same.
 1.100  21-Dec-2019  ad branches: 1.100.6;
Detangle the pagedaemon from uvm_fpageqlock:

- Have a single lock (uvmpd_lock) to protect pagedaemon state that was
previously covered by uvmpd_pool_drain_lock plus uvm_fpageqlock.
- Don't require any locks be held when calling uvm_kick_pdaemon().
- Use uvm_free().
 1.99  16-Oct-2019  christos Add and use __FPTRCAST, requested by uwe@
 1.98  16-Oct-2019  christos Add void * function pointer casts. There are different ways to "fix" those
warnings:
1. this one: add a void * cast (which I think is the least intrusive)
2. add pragmas to elide the warning
3. add intermediate inline conversion functions
4. change the called function prototypes, adding unused arguments and
converting some of the pointer arguments to void *.
5. make the functions varyadic (which defeats the purpose of checking)
6. pass command line flags to elide the warning
I did try 3 and 4 and I was not pleased with the result (sys_ptrace_common.c)
(3) added too much code and defines, and (4) made the regular use clumsy.
 1.97  08-Feb-2018  dholland branches: 1.97.4;
Typos.
 1.96  31-May-2017  chs assert that vmem_alloc() with VM_SLEEP does not fail.
 1.95  07-Jul-2016  msaitoh KNF. Remove extra spaces. No functional change.
 1.94  29-Feb-2016  chs fix vmem_alloc() to never return an error for VM_SLEEP requests,
thus fixing kmem_alloc() to never return NULL for KM_SLEEP requests.
instead these operations will retry forever, which was the intent.
 1.93  24-Aug-2015  pooka to garnish, dust with _KERNEL_OPT
 1.92  02-Apr-2014  para branches: 1.92.4; 1.92.6;
make condition for ENOMEM consistent with allocation requirement
 1.91  02-Apr-2014  para bt_refill is and must be called with VM_NOSLEEP set, assert this
fix error path if pool_get returns NULL
 1.90  20-Mar-2014  mlelstv Incorrect use of pointer arithmetic.

CID 1193195: Extra sizeof expression
 1.89  11-Mar-2014  pooka kill undesirable #ifndef _RUMPKERNEL
 1.88  17-Feb-2014  para replace vmem(9) custom boundary tag allocation with a pool(9)
 1.87  22-Nov-2013  christos convert vmem, signals, powerhooks from CIRCLEQ -> TAILQ.
 1.86  25-Oct-2013  martin Turn a few __unused into __diagused
 1.85  22-Jul-2013  alnsn Revert the previous commit.
 1.84  18-Jul-2013  alnsn Always terminate qc_name with NUL because pool_init(9) uses
strcmp(3) to compare wchans.
 1.83  06-Mar-2013  yamt branches: 1.83.6; 1.83.8;
update comments
 1.82  09-Feb-2013  christos printflike maintenance.
 1.81  08-Feb-2013  skrll Fix release of vmem_btag_lock (don't release twice in error path)
 1.80  29-Jan-2013  para make vmem(9) ready to be used early during bootstrap to replace extent(9)
pass memory for vmem structs into the initialization function and
do away with the static pool of vmem structs.
remove special bootstrapping of the quantum cache pools of the kmem_va_arena
as memory for pool_caches is allocated via pool_allocator_meta which is
fully operational at this point.
 1.79  26-Jan-2013  para revert previous commit not yet fully functional, sorry
 1.78  26-Jan-2013  para make vmem(9) ready to be used early during bootstrap to replace extent(9).
pass memory for vmem structs into the initialization functions and
do away with the static pools for this.
factor out the vmem internal structures into a private header.
remove special bootstrapping of the kmem_va_arena as all necessary memory
comes from pool_allocator_meta wich is fully operational at this point.
 1.77  04-Jan-2013  para fix a lock order reversal during global boundary tag refill.
thanks to chuq@
xxx: request pullup
 1.76  13-Sep-2012  joerg Don't use const foo const as type, one const is enough.
 1.75  01-Sep-2012  para branches: 1.75.2;
rework boundary-tag reserve calculation, make it more precise.
add comment about the rational behind the sizing of certain vars
used by allocation and bootstrap.
as requested by yamt@
 1.74  30-Jul-2012  njoly Remove final ';' from CONDVAR_DECL macro. The caller already adds its
own.
 1.73  04-Mar-2012  para make accounting for vm_inuse sane
while here don't statically allocated for more caches then required
 1.72  10-Feb-2012  para branches: 1.72.2;
proper sizing of kmem_arena on different ports

PR port-i386/45946: Kernel locks up in VMEM system
 1.71  01-Feb-2012  para allocate uareas and buffers from kernel_map again
add code to drain pools if kmem_arena runs out of space
 1.70  30-Jan-2012  para do the bookkeeping right
 1.69  29-Jan-2012  rmind - vmem_xalloc: remove call to uvm_kick_pdaemon() as it is not right.
- Reduce some #ifdefs. Misc.
 1.68  29-Jan-2012  para move condvar calls under interlock protection
call uvm_kick_pdaemon in case we can sleep and no space in arena
 1.67  28-Jan-2012  rmind - Make subr_vmem.c compile as standalone again.
- Reduce some #ifdefs.
 1.66  27-Jan-2012  para extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged
 1.65  20-Oct-2011  yamt branches: 1.65.2; 1.65.6;
revert a debug printf slipped in with subr_vmem.c rev.1.64.
pointed out by Nicolas Joly.
 1.64  19-Oct-2011  yamt vmem_create: copy the 'name' string rather than just keeping a reference to it.
i think it's what solaris does as at least dtrace relies on this behaviour.
 1.63  15-Oct-2011  rmind Avoid return with expression in void functions.
 1.62  02-Oct-2011  rmind - Replace calc_order() with ilog2(), wrap into SIZE2ORDER().
- Inline some functions, reduce some #ifdefs.
 1.61  02-Sep-2011  dyoung Report vmem(9) errors out-of-band so that we can use vmem(9) to manage
ranges that include the least and the greatest vmem_addr_t. Update
vmem(9) uses throughout the kernel. Slightly expand on the tests in
subr_vmem.c, which still pass. I've been running a kernel with this
patch without any trouble.
 1.60  23-Aug-2011  dyoung Introduce a couple of new constants, VMEM_ADDR_MIN (the least possible
address in a vmem(9) arena, 0) and VMEM_ADDR_MAX (the maximum possible
address, currently 0xFFFFFFFF). Modify several boundary conditions so
that a vmem(9) arena can allocate ranges including VMEM_ADDR_MAX.
Update documentation and tests.

These changes pass the tests in sys/kern/subr_vmem.c. To compile the
and run the test program, run "cd sys/kern/ && gcc -DVMEM_SANITY -o
subr_vmem ./subr_vmem.c && ./subr_vmem".
 1.59  26-Jul-2011  yamt comments. related to PR/44969
 1.58  17-Dec-2010  yamt wrap a long line.
 1.57  18-Mar-2009  cegger branches: 1.57.4;
Ansify function definitions w/o arguments. Generated with sed.
 1.56  18-Feb-2009  yamt vmem_rehash_all: remove a debug printf slipped in with the previous changes.
 1.55  18-Feb-2009  yamt - fix vmem unittest. rename VMEM_DEBUG so that it won't be abused again.
- reimplement vmem sanity checks with less code duplication.
- reimplement ddb vmem-related commands in a more consistent ways.
remove automatic whatis.
 1.54  25-Jan-2009  yamt branches: 1.54.2;
bump VMEM_HASHSIZE_MAX from 8192 to 65536.
 1.53  23-Jan-2009  pooka Change VMEM_HASHSIZE_INIT from 1 to 128. This mainly benefits
quick-running or non-threaded rump jobs, where the rehash algorithm
does not have a chance to run. For other cases it doesn't make
much difference, since the size will grow or decrease when the
rehash algorithm runs for the first time (t=10*hz currently).
 1.52  15-Dec-2008  ad Put vm_lock into its own cache line.
 1.51  10-Dec-2008  christos fix endif comment
 1.50  10-Dec-2008  christos disable VMEM_DEBUG by default.
 1.49  10-Dec-2008  christos vmem_check_sanity is just too expensive for DEBUG. Enable it only for
VMEM_DEBUG.
 1.48  09-Dec-2008  cegger vmem_check_sanity: refactor overlapping check for better readability.
Move use of vmem_check_sanity into locked sections. Pointed out by ad@
 1.47  07-Dec-2008  cegger ddb: make show vmem print exact span type
vmem_check_sanity: print exact span type
vmem_add1: KASSERT span types
 1.46  07-Dec-2008  cegger vmem_check_sanity: fix check to correctly detect even exactly duplicate spans.
 1.45  07-Dec-2008  cegger build fix: make i386 build again
 1.44  07-Dec-2008  cegger Spans may never overlap. Overlapping spans mean memory corruption
when used by kmem(9), for example.
Do sanity checks to detect such spans on DEBUG kernels.
 1.43  07-Dec-2008  cegger ddb: new 'show vmem' and 'show all vmems' commands.
Useful to inspect vmem(9) structures.
 1.42  17-Mar-2008  yamt branches: 1.42.4; 1.42.10; 1.42.12; 1.42.14;
- simplify ASSERT_SLEEPABLE.
- move it from proc.h to systm.h.
- add some more checks.
- make it a little more lkm friendly.
 1.41  24-Jan-2008  ad branches: 1.41.2; 1.41.6;
Mark some callouts/workqueues/kthreads MPSAFE.
 1.40  04-Jan-2008  ad Start detangling lock.h from intr.h. This is likely to cause short term
breakage, but the mess of dependencies has been regularly breaking the
build recently anyhow.
 1.39  22-Dec-2007  yamt vmem_whatis: print "free" btags as well.
 1.38  22-Dec-2007  yamt vmem_alloc: round-up size only when necessary. suggested by Andrew Doran.
 1.37  13-Dec-2007  yamt add ddb "whatis" command. inspired from solaris ::whatis dcmd.
 1.36  05-Dec-2007  ad branches: 1.36.2; 1.36.4;
Match the docs: MUTEX_DRIVER/SPIN are now only for porting code written
for Solaris.
 1.35  07-Nov-2007  ad branches: 1.35.2;
Merge from vmlocking:

- pool_cache changes.
- Debugger/procfs locking fixes.
- Other minor changes.
 1.34  06-Nov-2007  ad Merge scheduler changes from the vmlocking branch. All discussed on
tech-kern:

- Invert priority space so that zero is the lowest priority. Rearrange
number and type of priority levels into bands. Add new bands like
'kernel real time'.
- Ignore the priority level passed to tsleep. Compute priority for
sleep dynamically.
- For SCHED_4BSD, make priority adjustment per-LWP, not per-process.
 1.33  23-Oct-2007  yamt branches: 1.33.2;
vmem_rehash_all: remove no longer unnecessary splvm/splx pairs.
 1.32  12-Jul-2007  rmind branches: 1.32.6; 1.32.8; 1.32.12;
Implementation of per-CPU work-queues support for workqueue(9) interface.
WQ_PERCPU flag for workqueue and additional argument for workqueue_enqueue()
to assign a CPU might be used. Notes:
- For now, the list is used for workqueue_queue, which is non-optimal,
and will be changed with array, where index would be CPU ID.
- The data structures should be changed to be cache-friendly.

Reviewed by: <yamt>, <tech-kern>
 1.31  09-Jul-2007  ad Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.30  17-Jun-2007  yamt periodically resize vmem hash table.
 1.29  26-Mar-2007  hubertf Remove duplicate #include's
From: Slava Semushin <php-coder@altlinux.ru>
 1.28  12-Mar-2007  ad branches: 1.28.2; 1.28.4;
Pass an ipl argument to pool_init/POOL_INIT to be used when initializing
the pool's lock.
 1.27  10-Mar-2007  ad branches: 1.27.2;
qc_init: don't leave pointers to destroyed pools hanging or we will
allocate from them later.
 1.26  22-Feb-2007  thorpej TRUE -> true, FALSE -> false
 1.25  21-Feb-2007  thorpej Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
 1.24  18-Nov-2006  yamt branches: 1.24.4; 1.24.6;
qc_reap, qc_destroy: simplify.
 1.23  18-Nov-2006  yamt vmem_destroy: don't forget to clean up qcache_t.
 1.22  18-Nov-2006  yamt vmem: share qcache_t if itemsperpage is same.
 1.21  12-Nov-2006  yamt protect bt_poolcache by splvm because it's shared among all arenas
including ones which can be used in interrupt context.
PR/35042 from Manuel Bouyer.
 1.20  09-Nov-2006  yamt vmem_xalloc: plug memory leak on error.
 1.19  04-Nov-2006  yamt - define some macros and use them.
- fix an off-by-one in testcode.
 1.18  04-Nov-2006  yamt todo.
 1.17  01-Nov-2006  yamt remove some __unused from function parameters.
 1.16  27-Oct-2006  yamt vmem: use correct function names for ASSERT_SLEEPABLE.
 1.15  23-Oct-2006  yamt qc_init: fix a problem introduced by rev.1.13.
namely, use quantum-size alignment rather than no alignment.
PR/34879 from Peter Postma.
 1.14  22-Oct-2006  yamt remove a todo which has been done.
 1.13  22-Oct-2006  yamt qc_init: when initializing pools, use align==1 (ie. no alignment)
rather than align==0, which is converted to ALIGN(1) by pool_init.
 1.12  17-Oct-2006  yamt vmem_alloc: use __unused rather than a cryptic
"do { if (&strat) {} } while (/* CONSTCOND */ 0);"
 1.11  16-Oct-2006  dogcow another day, another __unused sprinkle.
 1.10  16-Oct-2006  yamt implement vmem_xalloc/xfree.
XXX importing needs some more thoughts.
 1.9  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.8  21-Aug-2006  martin branches: 1.8.2; 1.8.4; 1.8.6;
Use %zu for size_t
 1.7  20-Aug-2006  yamt vmf_to_prf: tweak code to avoid a "may be used uninitialized" warning.
pointed by Kurt Schreiner.
 1.6  20-Aug-2006  yamt implement kva reclamation for kmem_alloc quantum cache.
 1.5  20-Aug-2006  yamt implement vmem quantum cache.
 1.4  16-Aug-2006  yamt - fix integer overflows.
- bump VMEM_MAXORDER.

should fix "idx < VMEM_MAXORDER" assertion failure reported by
Martijn van Buul on current-users@.
 1.3  21-Jul-2006  yamt use ASSERT_SLEEPABLE where appropriate.
 1.2  26-Jun-2006  yamt branches: 1.2.2; 1.2.4;
fix VM_BESTFIT.
 1.1  25-Jun-2006  yamt 1. implement solaris-like vmem. (still primitive, though)
2. implement solaris-like kmem_alloc/free api, using #1.
(note: this implementation is backed by kernel_map, thus can't be
used from interrupt context.)
 1.2.4.2  13-Jul-2006  gdamore Merge from HEAD.
 1.2.4.1  26-Jun-2006  gdamore file subr_vmem.c was added on branch gdamore-uart on 2006-07-13 17:49:51 +0000
 1.2.2.4  03-Sep-2006  yamt sync with head.
 1.2.2.3  11-Aug-2006  yamt sync with head
 1.2.2.2  26-Jun-2006  yamt sync with head.
 1.2.2.1  26-Jun-2006  yamt file subr_vmem.c was added on branch yamt-pdpolicy on 2006-06-26 12:52:57 +0000
 1.8.6.2  10-Dec-2006  yamt sync with head.
 1.8.6.1  22-Oct-2006  yamt sync with head
 1.8.4.2  09-Sep-2006  rpaulo sync with head
 1.8.4.1  21-Aug-2006  rpaulo file subr_vmem.c was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:57:16 +0000
 1.8.2.2  12-Jan-2007  ad Sync with head.
 1.8.2.1  18-Nov-2006  ad Sync with head.
 1.24.6.4  15-Apr-2007  yamt sync with head.
 1.24.6.3  24-Mar-2007  yamt sync with head.
 1.24.6.2  12-Mar-2007  rmind Sync with HEAD.
 1.24.6.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.24.4.10  17-Mar-2008  yamt sync with head.
 1.24.4.9  04-Feb-2008  yamt sync with head.
 1.24.4.8  21-Jan-2008  yamt sync with head
 1.24.4.7  07-Dec-2007  yamt sync with head
 1.24.4.6  15-Nov-2007  yamt sync with head.
 1.24.4.5  27-Oct-2007  yamt sync with head.
 1.24.4.4  03-Sep-2007  yamt sync with head.
 1.24.4.3  26-Feb-2007  yamt sync with head.
 1.24.4.2  30-Dec-2006  yamt sync with head.
 1.24.4.1  18-Nov-2006  yamt file subr_vmem.c was added on branch yamt-lazymbuf on 2006-12-30 20:50:06 +0000
 1.27.2.9  10-Nov-2007  yamt pull subr_vmem.c rev.1.33.
 1.27.2.8  27-Oct-2007  yamt remove #ifdef notyet which is not necessary.
 1.27.2.7  27-Oct-2007  yamt fix priorities for some kernel threads. advised and ok'ed by Andrew Doran.
 1.27.2.6  01-Sep-2007  ad Update for pool_cache API changes.
 1.27.2.5  15-Jul-2007  ad Sync with head.
 1.27.2.4  10-Apr-2007  ad Sync with head.
 1.27.2.3  21-Mar-2007  ad - Replace more simple_locks, and fix up in a few places.
- Use condition variables.
- LOCK_ASSERT -> KASSERT.
 1.27.2.2  13-Mar-2007  ad Pull in the initial set of changes for the vmlocking branch.
 1.27.2.1  13-Mar-2007  ad Sync with head.
 1.28.4.1  29-Mar-2007  reinoud Pullup to -current
 1.28.2.1  11-Jul-2007  mjf Sync with head.
 1.32.12.1  13-Nov-2007  bouyer Sync with HEAD
 1.32.8.4  23-Mar-2008  matt sync with HEAD
 1.32.8.3  09-Jan-2008  matt sync with HEAD
 1.32.8.2  08-Nov-2007  matt sync with -HEAD
 1.32.8.1  06-Nov-2007  matt sync with HEAD
 1.32.6.4  09-Dec-2007  jmcneill Sync with HEAD.
 1.32.6.3  11-Nov-2007  joerg Sync with HEAD.
 1.32.6.2  06-Nov-2007  joerg Sync with HEAD.
 1.32.6.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.33.2.4  18-Feb-2008  mjf Sync with HEAD.
 1.33.2.3  27-Dec-2007  mjf Sync with HEAD.
 1.33.2.2  08-Dec-2007  mjf Sync with HEAD.
 1.33.2.1  19-Nov-2007  mjf Sync with HEAD.
 1.35.2.2  26-Dec-2007  ad Sync with head.
 1.35.2.1  08-Dec-2007  ad Sync with head.
 1.36.4.3  08-Jan-2008  bouyer Sync with HEAD
 1.36.4.2  02-Jan-2008  bouyer Sync with HEAD
 1.36.4.1  13-Dec-2007  bouyer Sync with HEAD
 1.36.2.2  13-Dec-2007  yamt sync with head.
 1.36.2.1  10-Dec-2007  yamt - separate kernel va allocation (kernel_va_arena) from
in-kernel fault handling (kernel_map).
- add vmem bootstrap code. vmem doesn't rely on malloc anymore.
- make kmem_alloc interrupt-safe.
- kill kmem_map. make malloc a wrapper of kmem_alloc.
 1.41.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.41.6.1  03-Apr-2008  mjf Sync with HEAD.
 1.41.2.1  24-Mar-2008  keiichi sync with head.
 1.42.14.1  02-Feb-2009  snj Pull up following revision(s) (requested by ad in ticket #340):
sys/kern/subr_vmem.c: revision 1.52
Put vm_lock into its own cache line.
 1.42.12.3  28-Apr-2009  skrll Sync with HEAD.
 1.42.12.2  03-Mar-2009  skrll Sync with HEAD.
 1.42.12.1  19-Jan-2009  skrll Sync with HEAD.
 1.42.10.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.42.4.1  04-May-2009  yamt sync with head.
 1.54.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.57.4.1  05-Mar-2011  rmind sync with head
 1.65.6.2  06-Mar-2012  mrg sync to -current
 1.65.6.1  18-Feb-2012  mrg merge to -current.
 1.65.2.4  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.65.2.3  23-Jan-2013  yamt sync with head
 1.65.2.2  30-Oct-2012  yamt sync with head
 1.65.2.1  17-Apr-2012  yamt sync with head
 1.72.2.2  08-Feb-2013  riz Pull up following revision(s) (requested by para in ticket #789):
sys/kern/subr_vmem.c: revision 1.81
sys/kern/subr_vmem.c: revision 1.77
fix a lock order reversal during global boundary tag refill.
thanks to chuq@
xxx: request pullup
Fix release of vmem_btag_lock (don't release twice in error path)
 1.72.2.1  03-Apr-2012  riz branches: 1.72.2.1.4;
Pull up following revision(s) (requested by para in ticket #155):
sys/kern/subr_vmem.c: revision 1.73
sys/kern/subr_kmem.c: revision 1.43
sys/rump/librump/rumpkern/vm.c: revision 1.124
make accounting for vm_inuse sane
while here don't statically allocated for more caches then required
adjust rump for static pool_cache count
should have went in with subr_vmem 1.73
don't overallocated once we leave the caches
 1.72.2.1.4.1  08-Feb-2013  riz Pull up following revision(s) (requested by para in ticket #789):
sys/kern/subr_vmem.c: revision 1.81
sys/kern/subr_vmem.c: revision 1.77
fix a lock order reversal during global boundary tag refill.
thanks to chuq@
xxx: request pullup
Fix release of vmem_btag_lock (don't release twice in error path)
 1.75.2.5  03-Dec-2017  jdolecek update from HEAD
 1.75.2.4  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.75.2.3  23-Jun-2013  tls resync from head
 1.75.2.2  25-Feb-2013  tls resync with head
 1.75.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.83.8.1  23-Jul-2013  riastradh sync with HEAD
 1.83.6.1  18-May-2014  rmind sync with head
 1.92.6.4  28-Aug-2017  skrll Sync with HEAD
 1.92.6.3  09-Jul-2016  skrll Sync with HEAD
 1.92.6.2  19-Mar-2016  skrll Sync with HEAD
 1.92.6.1  22-Sep-2015  skrll Sync with HEAD
 1.92.4.1  03-Dec-2017  snj Pull up following revision(s) (requested by mlelstv in ticket #1521):
share/man/man9/kmem.9: revision 1.20 via patch
share/man/man9/vmem.9: revision 1.16
sys/kern/subr_kmem.c: revision 1.62
sys/kern/subr_vmem.c: revision 1.94
fix vmem_alloc() to never return an error for VM_SLEEP requests,
thus fixing kmem_alloc() to never return NULL for KM_SLEEP requests.
instead these operations will retry forever, which was the intent.
 1.97.4.3  21-Apr-2020  martin Sync with HEAD
 1.97.4.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.97.4.1  08-Apr-2020  martin Merge changes from current as of 20200406
 1.100.6.2  25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.100.6.1  20-Apr-2020  bouyer Sync with HEAD

RSS XML Feed