Home | History | Annotate | only in /src/sys/uvm/pmap
History log of /src/sys/uvm/pmap
RevisionDateAuthorComments
 1.80 06-May-2024  skrll Fix 32bit UVMHIST builds
 1.79 03-May-2024  skrll More debug.
 1.78 18-Apr-2024  skrll Fix types in pmap_page_clear_attributes so that the top bits of
the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no
chance of completing if any of the top bits is set.

Update pmap_page_set_attributes for consistency.

An ATF test run completed for me with this fix.

port-riscv/58006: ATF tests no longer complete on riscv-riscv64
 1.77 23-Mar-2024  skrll Default pmap_stealdebug to false
 1.76 05-Mar-2024  skrll Change the PMAP_STEAL_MEMORY debug output from aprint_debug.

The new printfs are conditional on pmap_stealdebug and the DEBUG compile
option. The former defaults to true, but can be changed at a boot -d ddb
prompt.
 1.75 26-Feb-2023  skrll ci_data.cpu_kcpuset -> ci_kcpuset

NFCI.
 1.74 03-Nov-2022  skrll branches: 1.74.2;
Provide MI PMAP support on AARCH64
 1.73 02-Nov-2022  skrll KNF
 1.72 28-Oct-2022  skrll MI PMAP EFI_RUNTIME support
 1.71 27-Oct-2022  skrll No need to hold the pmap_tlb_miss_lock when calling pmap_segtab_destroy
 1.70 27-Oct-2022  skrll Rename pm_count to pm_refcnt
 1.69 26-Oct-2022  skrll MI PMAP hardware page table walker support.

This is based on code given to me by Matt Thomas a long time ago with
many updates and bugs fixes from me.
 1.68 23-Oct-2022  skrll Correct the pmap_kstart_segtab entry in pmap_kern_segtab
 1.67 15-Sep-2022  skrll whitespace - remove spaces before tabs
 1.66 12-Sep-2022  skrll A simplification and some minor whitespace
 1.65 07-May-2022  rin Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for
global functions in pmap_pvt.h are provided, instead of real support for
PV tracking.

Necessary for powerpc: Only one sub-arch (oea) has PV tracking support.
Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx),
but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by
all of sub-archs.
 1.64 09-Apr-2022  riastradh sys: Use membar_release/acquire around reference drop.

This just goes through my recent reference count membar audit and
changes membar_exit to membar_release and membar_enter to
membar_acquire -- this should make everything cheaper on most CPUs
without hurting correctness, because membar_acquire is generally
cheaper than membar_enter.
 1.63 12-Mar-2022  riastradh sys: Membar audit around reference count releases.

If two threads are using an object that is freed when the reference
count goes to zero, we need to ensure that all memory operations
related to the object happen before freeing the object.

Using an atomic_dec_uint_nv(&refcnt) == 0 ensures that only one
thread takes responsibility for freeing, but it's not enough to
ensure that the other thread's memory operations happen before the
freeing.

Consider:

Thread A Thread B
obj->foo = 42; obj->baz = 73;
mumble(&obj->bar); grumble(&obj->quux);
/* membar_exit(); */ /* membar_exit(); */
atomic_dec -- not last atomic_dec -- last
/* membar_enter(); */
KASSERT(invariant(obj->foo,
obj->bar));
free_stuff(obj);

The memory barriers ensure that

obj->foo = 42;
mumble(&obj->bar);

in thread A happens before

KASSERT(invariant(obj->foo, obj->bar));
free_stuff(obj);

in thread B. Without them, this ordering is not guaranteed.

So in general it is necessary to do

membar_exit();
if (atomic_dec_uint_nv(&obj->refcnt) != 0)
return;
membar_enter();

to release a reference, for the `last one out hit the lights' style
of reference counting. (This is in contrast to the style where one
thread blocks new references and then waits under a lock for existing
ones to drain with a condvar -- no membar needed thanks to mutex(9).)

I searched for atomic_dec to find all these. Obviously we ought to
have a better abstraction for this because there's so much copypasta.
This is a stop-gap measure to fix actual bugs until we have that. It
would be nice if an abstraction could gracefully handle the different
styles of reference counting in use -- some years ago I drafted an
API for this, but making it cover everything got a little out of hand
(particularly with struct vnode::v_usecount) and I ended up setting
it aside to work on psref/localcount instead for better scalability.

I got bored of adding #ifdef __HAVE_ATOMIC_AS_MEMBAR everywhere, so I
only put it on things that look performance-critical on 5sec review.
We should really adopt membar_enter_preatomic/membar_exit_postatomic
or something (except they are applicable only to atomic r/m/w, not to
atomic_load/store_*, making the naming annoying) and get rid of all
the ifdefs.
 1.62 17-Apr-2021  mrg remove KERNHIST_INIT_STATIC(). it stradles the line between usable
early in boot and broken early in boot by requiring a partly static
structure with another structure that must be present by the time
any uses are performed. theoretically platform code could allocate
a chunk while seting up memory and assign it here, giving a dynamic
sizing for the entry list, but the reality is that all users have
a statically allocated entry list as well.

the existing KERNHIST_LINK_STATIC() is used in conjunction with
KERNHIST_INITIALIZER() instead.

this stops a NULL pointer deref when the _LOG() macro is called
before the storage is linked in, which happens with GCC 10 on OCTEON
with UVMHIST enabled, crashing in very early kernel init.
 1.61 19-Mar-2021  skrll branches: 1.61.2;
Support pmap_growkernel and KASAN shadow mapping of the new KVA.

Neither mips nor ppc booke actually use pmap_growkernel (at present).

Thanks to rin@ for testing a similar patch on ppc booke.
 1.60 13-Mar-2021  skrll s/pfi_faultpte/&p/ for consistency with arm / other uses of ptep
 1.59 13-Mar-2021  skrll Don't use %jx for 0 or 1 - just use %jd in UVMHIST_LOG format.
 1.58 20-Dec-2020  skrll Support __HAVE_PMAP_PV_TRACK in sys/uvm/pmap based pmaps (aka common pmap)
 1.57 08-Oct-2020  skrll branches: 1.57.2;
%#jx vs %jx consistency in UVMHIST_LOG
 1.56 24-Sep-2020  skrll Whitespace
 1.55 20-Aug-2020  mrg move pmap segtab history into a new history of only 1000 entries,
but will overflow much slower than the main pmap history.

move various debug info into kernhist. make pte array checker
into an array and use it in pmap_segtab_release() and
pmap_pte_reserve(). move check before MD callback(), incase it
wants to change ptes for some reason (they're passed in, but
this callback is currently always NULL.)

clean up some history logs to reduce the number of lines required.
 1.54 19-Aug-2020  simonb Remove trailing \n from UVMHIST_LOG() format strings.
 1.53 11-Aug-2020  skrll More UVMHIST_LOG. Remove some commented output printfs.
 1.52 11-Aug-2020  skrll Fix a comment
 1.51 07-Aug-2020  skrll Provide a pmap_segtab_deactivate for symmetry with pmap_segtab_activate
and use it in pmap_deactivate

Call pmap_md_xtab_{,de}activate from pmap_segtab_{,de}activate to be used
for PMAP_HWPAGEWALKER and any caches ops that might be required.

Provide empty (for now) pmap_md_xtab_{,de}activate functions on the
platforms that use sys/uvm/pmap
 1.50 18-Jul-2020  skrll Always call pmap_segtab_activate in pmap_activate. pmap_segtab_activate
does the right thing if called with non-curlwp.
 1.49 12-Apr-2020  skrll Use UVMHIST_CALLARGS
 1.48 14-Mar-2020  ad branches: 1.48.2;
pmap_remove_all(): Return a boolean value to indicate the behaviour. If
true, all mappings have been removed, the pmap is totally cleared out, and
UVM can then avoid doing the work to call pmap_remove() for each map entry.
If false, either nothing has been done, or some helpful arch-specific voodoo
has taken place.
 1.47 12-Mar-2020  thorpej pmap_tlb_miss_lock needs to be globally visible.
 1.46 11-Mar-2020  thorpej With DEBUG defined, it's possible to execute a TLB-vs-segmap consistency
check from a (soft) interrupt handler. But if a platform does not otherwise
require the pmap_tlb_miss_lock, then where will be a brief window of
inconsistency that, while harmless, will still fire an assertion in the
consistency check.

Fix this with the following changes:
1- Refactor the pmap_tlb_miss_lock into MI code and rename it from
pmap_tlb_miss_lock_{enter,exit}() to pmap_tlb_miss_lock_{enter,exit}().
MD code can still define the "md" hooks as necessary, and if so, will
override the common implementation.
2- Provde a pmap_bootstrap_common() function to perform common pmap bootstrap
operations, namely initializing the pmap_tlb_miss_lock if it's needed.
If MD code overrides the implementation, it's responsible for initializing
its own lock.
3- Call pmap_bootstrap_common() from the mips, powerpc booke, and riscv
pmap_bootstrap() routines. (This required adding one for riscv.)
4- Switch powerpc booke to the common pmap_tlb_miss_lock.
5- Enable pmap_tlb_miss_lock if DEBUG is defined, even if it's not otherwise
required.

PR port-mips/55062 (Failed assertion in pmap_md_tlb_check_entry())
 1.45 18-Dec-2019  skrll Remove duplicate #includes
 1.44 20-Oct-2019  skrll Define and use VM_PAGEMD_PVLIST_EMPTY_P
 1.43 20-Oct-2019  skrll Remove KASSERT(!VM_PAGEMD_PVLIST_LOCKED_P(mdpg)) - can only assert that it
is owned
 1.42 12-Jul-2019  skrll Provide and use PV_ISKENTER_P. NFCI.
 1.41 19-Jun-2019  skrll Make a comment generic and not MIPS specific
 1.40 30-Oct-2017  pgoyette branches: 1.40.2; 1.40.6;
Remove unneeded casts to (uintptr_t). This is already taken care of in
the xxxHIST_LOG() macros.

No need to pull-up to -8 - the extra cast really won't hurt anything.
 1.39 30-Oct-2017  pgoyette And replace an instance of "%p" conversion with "%#jx"
 1.38 30-Oct-2017  kre Remove a stray '"' (obvious typo) and add a couple of casts that are
probably needed.
 1.37 28-Oct-2017  pgoyette Update the kernhist(9) kernel history code to address issues identified
in PR kern/52639, as well as some general cleaning-up...

(As proposed on tech-kern@ with additional changes and enhancements.)

Details of changes:

* All history arguments are now stored as uintmax_t values[1], both in
the kernel and in the structures used for exporting the history data
to userland via sysctl(9). This avoids problems on some architectures
where passing a 64-bit (or larger) value to printf(3) can cause it to
process the value as multiple arguments. (This can be particularly
problematic when printf()'s format string is not a literal, since in
that case the compiler cannot know how large each argument should be.)

* Update the data structures used for exporting kernel history data to
include a version number as well as the length of history arguments.

* All [2] existing users of kernhist(9) have had their format strings
updated. Each format specifier now includes an explicit length
modifier 'j' to refer to numeric values of the size of uintmax_t.

* All [2] existing users of kernhist(9) have had their format strings
updated to replace uses of "%p" with "%#jx", and the pointer
arguments are now cast to (uintptr_t) before being subsequently cast
to (uintmax_t). This is needed to avoid compiler warnings about
casting "pointer to integer of a different size."

* All [2] existing users of kernhist(9) have had instances of "%s" or
"%c" format strings replaced with numeric formats; several instances
of mis-match between format string and argument list have been fixed.

* vmstat(1) has been modified to handle the new size of arguments in the
history data as exported by sysctl(9).

* vmstat(1) now provides a warning message if the history requested with
the -u option does not exist (previously, this condition was silently
ignored, with only a single blank line being printed).

* vmstat(1) now checks the version and argument length included in the
data exported via sysctl(9) and exits if they do not match the values
with which vmstat was built.

* The kernhist(9) man-page has been updated to note the additional
requirements imposed on the format strings, along with several other
minor changes and enhancements.

[1] It would have been possible to use an explicit length (for example,
uint64_t) for the history arguments. But that would require another
"rototill" of all the users in the future when we add support for an
architecture that supports a larger size. Also, the printf(3) format
specifiers for explicitly-sized values, such as "%"PRIu64, are much
more verbose (and less aesthetically appealing, IMHO) than simply
using "%ju".

[2] I've tried very hard to find "all [the] existing users of kernhist(9)"
but it is possible that I've missed some of them. I would be glad to
update any stragglers that anyone identifies.
 1.36 07-Sep-2017  skrll There's no need to call pmap_tlb_invalidate_addr if pmap_remove_all was
called and PMAP_DEFERRED_ACTIVATE is set.
 1.35 24-Jun-2017  skrll Use pte_set
 1.34 12-May-2017  skrll branches: 1.34.2;
Sprinkle some KASSERTs
 1.33 07-May-2017  skrll Fix a comment
 1.32 28-Apr-2017  skrll Remove unused LNAME macro
 1.31 28-Apr-2017  skrll Fix a UVMHIST_LOG after the "%s" removal
 1.30 22-Apr-2017  skrll branches: 1.30.2;
Improve a comment
 1.29 22-Apr-2017  skrll Trailing whitespace
 1.28 02-Mar-2017  mrg avoid using %s in UVMHIST.
 1.27 23-Dec-2016  skrll branches: 1.27.2;
PHYSMEM -> PHYSSEG to fix build
 1.26 23-Dec-2016  cherry "Make NetBSD great again!"

Introduce uvm_hotplug(9) to the kernel.

Many thanks, in no particular order to:

TNF, for funding the project.

Chuck Silvers - for multiple API reviews and feedback.
Nick Hudson - for testing on multiple architectures and bugfix patches.
Everyone who helped with boot testing.

KeK (http://www.kek.org.in) for hosting the primary developers.
 1.25 01-Dec-2016  mrg extend the pmap_activate/pmap_deactivate UVMHIST logs to include the
pid, lid, and either l_name or p_comm.
 1.24 05-Oct-2016  skrll Move some code before pmap_enter_pv in pmap_enter so that when we are
re-mapping a VA to a new PA the old mapping is removed first. This means
the cache alias code need to do less work and works better with the last
va tracking.
 1.23 30-Sep-2016  skrll Increment resident_count if we're remapping onto new PA as
pmap_remove -> pmap_pte_remote will decrement it
 1.22 16-Sep-2016  matt When removing a page, make sure to clear its execness regardless of whether
the page is clean or dirty. This fixes the problem of execpages leaking
into the freepage lists.
 1.21 20-Aug-2016  mrg put a variable under the #ifdef it's only used in.
 1.20 18-Aug-2016  matt Don't track kenter_pa/kremove PVs unless we are worrying about cache aliasing.
 1.19 05-Aug-2016  jakllsch Only include `static inline pmap_asid_check()` if it might be used.

Should fix HEAD-llvm evbppc autobuild.
 1.18 14-Jul-2016  skrll branches: 1.18.2;
Spell PMAP_TLB_NEED_SHOOTDOWN correctly
 1.17 14-Jul-2016  skrll Trailing whitespace
 1.16 11-Jul-2016  maya Fix build by removing accidential duplicate line.
 1.15 11-Jul-2016  matt Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.14 07-Jul-2016  msaitoh KNF. Remove extra spaces. No functional change.
 1.13 05-Nov-2015  pgoyette Remove unnecessary #include for sys/shm.h - there's nothing here that needs
anything from there.
 1.12 11-Jun-2015  matt Add virtual_start to pmap_limits. This allows MD to steal address space
before pmap_bootstrap.
 1.11 03-Feb-2015  nonaka Disable pmap_md_tlb_check_entry, when MP.
 1.10 26-Jan-2015  nonaka Avoid race condition between PTE update and TLB miss walk.
 1.9 05-Jan-2015  nonaka Use PMAP_TLB_MAX instead of MAXCPUS.
 1.8 25-Dec-2014  nonaka fix build failure when UVMHIST is defined.
 1.7 24-Dec-2014  nonaka fix compile failure.
 1.6 22-Dec-2014  nonaka pmap->pm_active and pmap->pm_onproc must be destroyed.
 1.5 19-Dec-2014  nonaka Initialize pmap->pm_active and pmap->pm_onproc.
Avoid "panic: kernel diagnostic assertion "!pmap_tlb_intersecting_onproc_p(pm, ti)" failed: file "/usr/src/sys/uvm/pmap/pmap_tlb.c", line 762".
 1.4 25-Feb-2014  martin branches: 1.4.6;
Mark a potentially unused variable
 1.3 22-Jul-2013  matt In the non-MP case, just initialize onproc to NULL.
 1.2 17-Jul-2013  matt Make this kcpuset_t instead of the private __cpuset_t
Add improvements for single TLB implementation (PPC, ARM).
 1.1 03-Oct-2012  christos branches: 1.1.2; 1.1.4; 1.1.10;
move from common/pmap/tlb -> uvm/pmap
 1.1.10.1 23-Jul-2013  riastradh sync with HEAD
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 28-Aug-2013  rmind sync with head
 1.1.2.3 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.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 03-Oct-2012  yamt file pmap.c was added on branch yamt-pagecache on 2012-10-30 17:23:03 +0000
 1.4.6.7 28-Aug-2017  skrll Sync with HEAD
 1.4.6.6 05-Feb-2017  skrll Sync with HEAD
 1.4.6.5 05-Dec-2016  skrll Sync with HEAD
 1.4.6.4 05-Oct-2016  skrll Sync with HEAD
 1.4.6.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.6.2 22-Sep-2015  skrll Sync with HEAD
 1.4.6.1 06-Apr-2015  skrll Sync with HEAD
 1.18.2.5 26-Apr-2017  pgoyette Sync with HEAD
 1.18.2.4 20-Mar-2017  pgoyette Sync with HEAD
 1.18.2.3 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.18.2.2 04-Nov-2016  pgoyette Sync with HEAD
 1.18.2.1 06-Aug-2016  pgoyette Sync with HEAD
 1.27.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.30.2.3 19-May-2017  pgoyette Resolve conflicts from previous merge (all resulting from $NetBSD
keywork expansion)
 1.30.2.2 11-May-2017  pgoyette Sync with HEAD
 1.30.2.1 02-May-2017  pgoyette Sync with HEAD - tag prg-localcount2-base1
 1.34.2.1 02-Nov-2017  snj Pull up following revision(s) (requested by pgoyette in ticket #335):
share/man/man9/kernhist.9: 1.5-1.8
sys/arch/acorn26/acorn26/pmap.c: 1.39
sys/arch/arm/arm32/fault.c: 1.105 via patch
sys/arch/arm/arm32/pmap.c: 1.350, 1.359
sys/arch/arm/broadcom/bcm2835_bsc.c: 1.7
sys/arch/arm/omap/if_cpsw.c: 1.20
sys/arch/arm/omap/tiotg.c: 1.7
sys/arch/evbarm/conf/RPI2_INSTALL: 1.3
sys/dev/ic/sl811hs.c: 1.98
sys/dev/usb/ehci.c: 1.256
sys/dev/usb/if_axe.c: 1.83
sys/dev/usb/motg.c: 1.18
sys/dev/usb/ohci.c: 1.274
sys/dev/usb/ucom.c: 1.119
sys/dev/usb/uhci.c: 1.277
sys/dev/usb/uhub.c: 1.137
sys/dev/usb/umass.c: 1.160-1.162
sys/dev/usb/umass_quirks.c: 1.100
sys/dev/usb/umass_scsipi.c: 1.55
sys/dev/usb/usb.c: 1.168
sys/dev/usb/usb_mem.c: 1.70
sys/dev/usb/usb_subr.c: 1.221
sys/dev/usb/usbdi.c: 1.175
sys/dev/usb/usbdi_util.c: 1.67-1.70
sys/dev/usb/usbroothub.c: 1.3
sys/dev/usb/xhci.c: 1.75
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: 1.34
sys/kern/kern_history.c: 1.15
sys/kern/kern_xxx.c: 1.74
sys/kern/vfs_bio.c: 1.275-1.276
sys/miscfs/genfs/genfs_io.c: 1.71
sys/sys/kernhist.h: 1.21
sys/ufs/ffs/ffs_balloc.c: 1.63
sys/ufs/lfs/lfs_vfsops.c: 1.361
sys/ufs/lfs/ulfs_inode.c: 1.21
sys/ufs/lfs/ulfs_vnops.c: 1.52
sys/ufs/ufs/ufs_inode.c: 1.102
sys/ufs/ufs/ufs_vnops.c: 1.239
sys/uvm/pmap/pmap.c: 1.37-1.39
sys/uvm/pmap/pmap_tlb.c: 1.22
sys/uvm/uvm_amap.c: 1.108
sys/uvm/uvm_anon.c: 1.64
sys/uvm/uvm_aobj.c: 1.126
sys/uvm/uvm_bio.c: 1.91
sys/uvm/uvm_device.c: 1.66
sys/uvm/uvm_fault.c: 1.201
sys/uvm/uvm_km.c: 1.144
sys/uvm/uvm_loan.c: 1.85
sys/uvm/uvm_map.c: 1.353
sys/uvm/uvm_page.c: 1.194
sys/uvm/uvm_pager.c: 1.111
sys/uvm/uvm_pdaemon.c: 1.109
sys/uvm/uvm_swap.c: 1.175
sys/uvm/uvm_vnode.c: 1.103
usr.bin/vmstat/vmstat.c: 1.219
Reorder to test for null before null deref in debug code
--
Reorder to test for null before null deref in debug code
--
KNF
--
No need for '\n' in UVMHIST_LOG
--
normalise a BIOHIST log message
--
Update the kernhist(9) kernel history code to address issues identified
in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in
the kernel and in the structures used for exporting the history data
to userland via sysctl(9). This avoids problems on some architectures
where passing a 64-bit (or larger) value to printf(3) can cause it to
process the value as multiple arguments. (This can be particularly
problematic when printf()'s format string is not a literal, since in
that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to
include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings
updated. Each format specifier now includes an explicit length
modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings
updated to replace uses of "%p" with "%#jx", and the pointer
arguments are now cast to (uintptr_t) before being subsequently cast
to (uintmax_t). This is needed to avoid compiler warnings about
casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or
"%c" format strings replaced with numeric formats; several instances
of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the
history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with
the -u option does not exist (previously, this condition was silently
ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the
data exported via sysctl(9) and exits if they do not match the values
with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional
requirements imposed on the format strings, along with several other
minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example,
uint64_t) for the history arguments. But that would require another
"rototill" of all the users in the future when we add support for an
architecture that supports a larger size. Also, the printf(3)
format
specifiers for explicitly-sized values, such as "%"PRIu64, are much
more verbose (and less aesthetically appealing, IMHO) than simply
using "%ju".
[2] I've tried very hard to find "all [the] existing users of
kernhist(9)"
but it is possible that I've missed some of them. I would be glad
to
update any stragglers that anyone identifies.
--
For some reason this single kernel seems to have outgrown its declared
size as a result of the kernhist(9) changes. Bump the size.
XXX The amount of increase may be excessive - anyone with more detailed
XXX knowledge please feel free to further adjust the value
appropriately.
--
Misssed one cast of pointer --> uintptr_t in previous kernhist(9) commit
--
And yet another one. :(
--
Use correct mark-up for NetBSD version.
--
More improvements in grammar and readability.
--
Remove a stray '"' (obvious typo) and add a couple of casts that are
probably needed.
--
And replace an instance of "%p" conversion with "%#jx"
--
Whitespace fix. Give Bl tag table a width. Fix Xr.
 1.40.6.3 21-Apr-2020  martin Sync with HEAD
 1.40.6.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.40.6.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.40.2.2 03-Dec-2017  jdolecek update from HEAD
 1.40.2.1 30-Oct-2017  jdolecek file pmap.c was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.48.2.1 20-Apr-2020  bouyer Sync with HEAD
 1.57.2.2 03-Apr-2021  thorpej Sync with HEAD.
 1.57.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.61.2.1 17-Apr-2021  thorpej Sync with HEAD.
 1.74.2.1 19-Apr-2024  martin Pull up following revision(s) (requested by skrll in ticket #671):

sys/uvm/pmap/pmap.c: revision 1.78
sys/uvm/pmap/pmap.h: revision 1.27

Fix types in pmap_page_clear_attributes so that the top bits of
the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no
chance of completing if any of the top bits is set.

Update pmap_page_set_attributes for consistency.

An ATF test run completed for me with this fix.

port-riscv/58006: ATF tests no longer complete on riscv-riscv64
 1.28 25-Nov-2024  skrll Sprinkle #ifdef _KERNEL
 1.27 18-Apr-2024  skrll branches: 1.27.2;
Fix types in pmap_page_clear_attributes so that the top bits of
the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no
chance of completing if any of the top bits is set.

Update pmap_page_set_attributes for consistency.

An ATF test run completed for me with this fix.

port-riscv/58006: ATF tests no longer complete on riscv-riscv64
 1.26 03-Nov-2022  skrll branches: 1.26.2;
_KERNEL_OPT protection
 1.25 03-Nov-2022  skrll Provide MI PMAP support on AARCH64
 1.24 27-Oct-2022  skrll Rename pm_count to pm_refcnt
 1.23 27-Oct-2022  skrll Fix the crash(1) build for mips platforms
 1.22 26-Oct-2022  skrll MI PMAP hardware page table walker support.

This is based on code given to me by Matt Thomas a long time ago with
many updates and bugs fixes from me.
 1.21 07-May-2022  rin Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for
global functions in pmap_pvt.h are provided, instead of real support for
PV tracking.

Necessary for powerpc: Only one sub-arch (oea) has PV tracking support.
Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx),
but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by
all of sub-archs.
 1.20 19-Mar-2021  skrll Support pmap_growkernel and KASAN shadow mapping of the new KVA.

Neither mips nor ppc booke actually use pmap_growkernel (at present).

Thanks to rin@ for testing a similar patch on ppc booke.
 1.19 21-Dec-2020  skrll Remove variable in function declaration argument
 1.18 20-Dec-2020  skrll Support __HAVE_PMAP_PV_TRACK in sys/uvm/pmap based pmaps (aka common pmap)
 1.17 20-Aug-2020  mrg branches: 1.17.2;
move pmap segtab history into a new history of only 1000 entries,
but will overflow much slower than the main pmap history.

move various debug info into kernhist. make pte array checker
into an array and use it in pmap_segtab_release() and
pmap_pte_reserve(). move check before MD callback(), incase it
wants to change ptes for some reason (they're passed in, but
this callback is currently always NULL.)

clean up some history logs to reduce the number of lines required.
 1.16 07-Aug-2020  skrll Provide a pmap_segtab_deactivate for symmetry with pmap_segtab_activate
and use it in pmap_deactivate

Call pmap_md_xtab_{,de}activate from pmap_segtab_{,de}activate to be used
for PMAP_HWPAGEWALKER and any caches ops that might be required.

Provide empty (for now) pmap_md_xtab_{,de}activate functions on the
platforms that use sys/uvm/pmap
 1.15 08-Jul-2020  skrll Comment updates
 1.14 15-Mar-2020  rin Fix build for ports using uvm/pmap; pmap_remove_all() returns a boolean.
 1.13 11-Mar-2020  thorpej With DEBUG defined, it's possible to execute a TLB-vs-segmap consistency
check from a (soft) interrupt handler. But if a platform does not otherwise
require the pmap_tlb_miss_lock, then where will be a brief window of
inconsistency that, while harmless, will still fire an assertion in the
consistency check.

Fix this with the following changes:
1- Refactor the pmap_tlb_miss_lock into MI code and rename it from
pmap_tlb_miss_lock_{enter,exit}() to pmap_tlb_miss_lock_{enter,exit}().
MD code can still define the "md" hooks as necessary, and if so, will
override the common implementation.
2- Provde a pmap_bootstrap_common() function to perform common pmap bootstrap
operations, namely initializing the pmap_tlb_miss_lock if it's needed.
If MD code overrides the implementation, it's responsible for initializing
its own lock.
3- Call pmap_bootstrap_common() from the mips, powerpc booke, and riscv
pmap_bootstrap() routines. (This required adding one for riscv.)
4- Switch powerpc booke to the common pmap_tlb_miss_lock.
5- Enable pmap_tlb_miss_lock if DEBUG is defined, even if it's not otherwise
required.

PR port-mips/55062 (Failed assertion in pmap_md_tlb_check_entry())
 1.12 01-Jun-2019  maxv Misc changes in RISC-V. Start changing the memory layout, too.
 1.11 20-May-2019  skrll Usee __BIT()
 1.10 20-May-2019  skrll Trailing whitespace
 1.9 24-Jun-2017  skrll branches: 1.9.4; 1.9.8;
Trailing whitespace
 1.8 24-Jun-2017  skrll Multiple inclusion protection define consistency
 1.7 11-Jul-2016  matt Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.6 07-Jul-2016  msaitoh KNF. Remove extra spaces. No functional change.
 1.5 11-Jun-2015  matt Add virtual_start to pmap_limits. This allows MD to steal address space
before pmap_bootstrap.
 1.4 18-Mar-2014  riastradh branches: 1.4.6;
Merge riastradh-drm2 to HEAD.
 1.3 17-Jul-2013  matt Make this kcpuset_t instead of the private __cpuset_t
Add improvements for single TLB implementation (PPC, ARM).
 1.2 02-Jul-2013  matt branches: 1.2.2;
Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt
for non-soft TLB pmaps.
 1.1 03-Oct-2012  christos branches: 1.1.2; 1.1.4;
move from common/pmap/tlb -> uvm/pmap
 1.1.4.1 28-Aug-2013  rmind sync with head
 1.1.2.3 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.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 03-Oct-2012  yamt file pmap.h was added on branch yamt-pagecache on 2012-10-30 17:23:03 +0000
 1.2.2.1 23-Jul-2013  riastradh sync with HEAD
 1.4.6.4 28-Aug-2017  skrll Sync with HEAD
 1.4.6.3 05-Oct-2016  skrll Sync with HEAD
 1.4.6.2 09-Jul-2016  skrll Sync with HEAD
 1.4.6.1 22-Sep-2015  skrll Sync with HEAD
 1.9.8.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.9.8.1 10-Jun-2019  christos Sync with HEAD
 1.9.4.2 03-Dec-2017  jdolecek update from HEAD
 1.9.4.1 24-Jun-2017  jdolecek file pmap.h was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.17.2.2 03-Apr-2021  thorpej Sync with HEAD.
 1.17.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.26.2.1 19-Apr-2024  martin Pull up following revision(s) (requested by skrll in ticket #671):

sys/uvm/pmap/pmap.c: revision 1.78
sys/uvm/pmap/pmap.h: revision 1.27

Fix types in pmap_page_clear_attributes so that the top bits of
the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no
chance of completing if any of the top bits is set.

Update pmap_page_set_attributes for consistency.

An ATF test run completed for me with this fix.

port-riscv/58006: ATF tests no longer complete on riscv-riscv64
 1.27.2.1 02-Aug-2025  perseant Sync with HEAD
 1.2 27-Apr-2023  skrll Correct a type.
 1.1 20-Apr-2023  skrll Provide a shared pmap_devmap implementation and convert all pmap_devmap
arrays to use DEVMAP_ENTRY{,_END}
 1.2 25-Nov-2024  skrll Sprinkle #ifdef _KERNEL
 1.1 20-Apr-2023  skrll branches: 1.1.6;
Provide a shared pmap_devmap implementation and convert all pmap_devmap
arrays to use DEVMAP_ENTRY{,_END}
 1.1.6.1 02-Aug-2025  perseant Sync with HEAD
 1.15 08-May-2022  rin Oops, correct misleading #endif comment.

It seems I need a cup of coffee...
 1.14 08-May-2022  rin Improve wording a bit in a comment for the previous.
 1.13 08-May-2022  rin For PMAP_PV_TRACK_ONLY_STUBS, comment out pmap_pv_{,un}track().

If modules call these functions, the result should be an
inconsistent state.

Such modules require real PV-tracking support, anyway.

The best we can do should be to make two symbols undefined, and
prevent these modules from loaded.
 1.12 07-May-2022  rin Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for
global functions in pmap_pvt.h are provided, instead of real support for
PV tracking.

Necessary for powerpc: Only one sub-arch (oea) has PV tracking support.
Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx),
but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by
all of sub-archs.
 1.11 21-Jul-2021  skrll need <sys/param.h> for COHERENCY_UNIT

Minor KNF along the way.
 1.10 16-Mar-2020  ad branches: 1.10.8;
Use C99-ism to reduce ifdefs. Pointed out by christos@.
 1.9 16-Mar-2020  ad pmap_pv_track(): use PMAP_PAGE_INIT() otherwise the x86 pmap pukes.
 1.8 01-Jan-2020  martin Revert previous (include of sys/param.h) - the headers requiring this
have been fixed.
 1.7 28-Dec-2019  martin Add mising sys/param.h include (for COHERENCY_UNIT, now needed in uvm headers)
 1.6 18-Dec-2019  skrll KNF
 1.5 09-Dec-2019  riastradh Convert pmap_pvt to atomic_load/store.
 1.4 07-Dec-2019  jmcneill sys/atomic.h for membar_*
 1.3 07-Feb-2016  riastradh branches: 1.3.16; 1.3.20;
Use IPL_NONE for pserialized lock. Assert sleepable. (OOPS.)
 1.2 11-Nov-2015  skrll branches: 1.2.2;
Remove #if 0 / #endif includes
 1.1 11-Nov-2015  skrll Split out the pmap_pv_track stuff for use by others.

Discussed with riastradh@
 1.2.2.3 19-Mar-2016  skrll Sync with HEAD
 1.2.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.2.1 11-Nov-2015  skrll file pmap_pvt.c was added on branch nick-nhusb on 2015-12-27 12:10:19 +0000
 1.3.20.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 07-Feb-2016  jdolecek file pmap_pvt.c was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.10.8.1 01-Aug-2021  thorpej Sync with HEAD.
 1.3 16-Feb-2022  riastradh pmap_pvt.h: Fix bogus include.
 1.2 24-Jun-2017  skrll branches: 1.2.4;
Multiple inclusion protection define consistency
 1.1 11-Nov-2015  skrll branches: 1.1.2;
Split out the pmap_pv_track stuff for use by others.

Discussed with riastradh@
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 11-Nov-2015  skrll file pmap_pvt.h was added on branch nick-nhusb on 2015-12-27 12:10:19 +0000
 1.2.4.2 03-Dec-2017  jdolecek update from HEAD
 1.2.4.1 24-Jun-2017  jdolecek file pmap_pvt.h was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.33 23-Jul-2023  skrll KASSERT -> KASSERTMSG
 1.32 01-Jul-2023  skrll Fix build when KERNHIST defined, but not UVMHIST
 1.31 21-Dec-2022  skrll Rename pmap_md_pdetab_destroy to pmap_md_pdetab_fini to match
pmap_md_pdetab_init.

Call pmap_md_pdetab_fini from pmap_segtab_destroy.
 1.30 27-Oct-2022  skrll In pmap_pte_reserve ensure we're atomically swapping out an invalid entry
otherwise concurrent updates might both think they've updated the entry.
 1.29 26-Oct-2022  skrll MI PMAP hardware page table walker support.

This is based on code given to me by Matt Thomas a long time ago with
many updates and bugs fixes from me.
 1.28 25-Sep-2022  skrll Rename pmap_segtab_t *stp to stb for consistency with a future
pmap_pdetab_t *ptb. pmap_pdetab_t *ptp would be far too confusing.

NFC. Same code before and after.
 1.27 13-Mar-2021  skrll Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
 1.26 08-Oct-2020  skrll branches: 1.26.2;
%#jx vs %jx consistency in UVMHIST_LOG
 1.25 24-Sep-2020  skrll Whitespace
 1.24 10-Sep-2020  rin Cast pointer arguments of UVMHIST_CALLARGS() into uintptr_t.

Appease GCC9 -Wpointer-to-int-cast on ILP32 environments.
 1.23 22-Aug-2020  skrll Remove pte_zero_p and simply check against 0.
 1.22 22-Aug-2020  skrll Remove the #if defined(__mips_n64) && PAGE_SIZE == 8192 and make the
check MI - all PTs are PAGE_SIZE aligned
 1.21 22-Aug-2020  skrll Trailing whitespace
 1.20 20-Aug-2020  mrg fix hpcmips and evbppc builds (wrong type in panic()).
 1.19 20-Aug-2020  mrg move pmap segtab history into a new history of only 1000 entries,
but will overflow much slower than the main pmap history.

move various debug info into kernhist. make pte array checker
into an array and use it in pmap_segtab_release() and
pmap_pte_reserve(). move check before MD callback(), incase it
wants to change ptes for some reason (they're passed in, but
this callback is currently always NULL.)

clean up some history logs to reduce the number of lines required.
 1.18 18-Aug-2020  simonb Fix small tyop in a comment.
 1.17 18-Aug-2020  skrll Improve a panic message ever so slightly
 1.16 17-Aug-2020  mrg add pmaphist calls around seg_tab[] manipulation. hopefully will
help find what causes this:

panic: pmap_segtab_alloc: pm_segtab.seg_tab[1010] != 0 (0x980000004eeb6068): from free list
 1.15 07-Aug-2020  skrll Provide a pmap_segtab_deactivate for symmetry with pmap_segtab_activate
and use it in pmap_deactivate

Call pmap_md_xtab_{,de}activate from pmap_segtab_{,de}activate to be used
for PMAP_HWPAGEWALKER and any caches ops that might be required.

Provide empty (for now) pmap_md_xtab_{,de}activate functions on the
platforms that use sys/uvm/pmap
 1.14 24-Feb-2020  rin 0x%p --> %p for non-external codes.
 1.13 18-Dec-2019  skrll branches: 1.13.2;
KNF
 1.12 14-Dec-2019  ad Use pageq.list instead of listq.list.
 1.11 20-Oct-2019  skrll Whitespace
 1.10 23-Sep-2019  skrll Use "segmap" for uvm_wait message in pmap_segtab_alloc
 1.9 18-Sep-2019  skrll s/pte/ptep/ in pmap_pte_process for consistency with other code. NFCI.
 1.8 18-Sep-2019  skrll Whitespace
 1.7 08-Mar-2019  msaitoh s/ the the / the /
 1.6 12-May-2017  skrll branches: 1.6.8; 1.6.12;
KASSERT -> KASSERTMSG
 1.5 12-May-2017  skrll Trailing whitespace
 1.4 23-Nov-2016  mrg branches: 1.4.6;
fix the start index generation in pmap_segtab_release() to
ensure it fits in the actual array. fixes N64 binaries from
triggering later panic. move the panic check itself into a
common function that is called from a couple of new places too.
 1.3 11-Jul-2016  matt branches: 1.3.2;
Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.2 11-Jun-2015  matt Use PMAP_MAP_POOLPAGE instead of POOL_PHYSTOV since we use PMAP_UNMAP_POOLPAGE.
Use PMAP_ALLOC_POOLPAGE instead of pmap_md_alloc_poolpage.
Cleanup some panic messages.
 1.1 03-Oct-2012  christos branches: 1.1.2; 1.1.14; 1.1.16; 1.1.18; 1.1.20;
move from common/pmap/tlb -> uvm/pmap
 1.1.20.1 18-Jan-2017  skrll Sync with netbsd-5
 1.1.18.1 03-Dec-2016  martin Pull up following revision(s) (requested by mrg in ticket #1275):
sys/arch/mips/include/vmparam.h: revision 1.57
sys/uvm/pmap/pmap_segtab.c: revision 1.4
1TB is enough UVA for anyone... plus not all cpus can support more.
fix the start index generation in pmap_segtab_release() to
ensure it fits in the actual array. fixes N64 binaries from
triggering later panic. move the panic check itself into a
common function that is called from a couple of new places too.
 1.1.16.4 28-Aug-2017  skrll Sync with HEAD
 1.1.16.3 05-Dec-2016  skrll Sync with HEAD
 1.1.16.2 05-Oct-2016  skrll Sync with HEAD
 1.1.16.1 22-Sep-2015  skrll Sync with HEAD
 1.1.14.1 03-Dec-2016  martin Pull up following revision(s) (requested by mrg in ticket #1275):
sys/arch/mips/include/vmparam.h: revision 1.57
sys/uvm/pmap/pmap_segtab.c: revision 1.4
1TB is enough UVA for anyone... plus not all cpus can support more.
fix the start index generation in pmap_segtab_release() to
ensure it fits in the actual array. fixes N64 binaries from
triggering later panic. move the panic check itself into a
common function that is called from a couple of new places too.
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 03-Oct-2012  yamt file pmap_segtab.c was added on branch yamt-pagecache on 2012-10-30 17:23:03 +0000
 1.3.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.4.6.1 19-May-2017  pgoyette Resolve conflicts from previous merge (all resulting from $NetBSD
keywork expansion)
 1.6.12.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.6.12.1 10-Jun-2019  christos Sync with HEAD
 1.6.8.2 03-Dec-2017  jdolecek update from HEAD
 1.6.8.1 12-May-2017  jdolecek file pmap_segtab.c was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.13.2.1 29-Feb-2020  ad Sync with head.
 1.26.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.5 13-Apr-2020  skrll Trailing whitespace
 1.4 18-Dec-2019  skrll branches: 1.4.6;
KNF
 1.3 11-Jul-2016  matt branches: 1.3.16; 1.3.20;
Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.2 02-Jul-2013  matt branches: 1.2.8;
Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt
for non-soft TLB pmaps.
 1.1 03-Oct-2012  christos branches: 1.1.2; 1.1.4;
move from common/pmap/tlb -> uvm/pmap
 1.1.4.1 28-Aug-2013  rmind sync with head
 1.1.2.3 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.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 03-Oct-2012  yamt file pmap_synci.c was added on branch yamt-pagecache on 2012-10-30 17:23:03 +0000
 1.2.8.1 05-Oct-2016  skrll Sync with HEAD
 1.3.20.2 21-Apr-2020  martin Sync with HEAD
 1.3.20.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 11-Jul-2016  jdolecek file pmap_synci.c was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.4.6.1 20-Apr-2020  bouyer Sync with HEAD
 1.1 11-Jul-2016  matt branches: 1.1.4; 1.1.18;
Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 11-Jul-2016  jdolecek file pmap_synci.h was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.1.4.2 05-Oct-2016  skrll Sync with HEAD
 1.1.4.1 11-Jul-2016  skrll file pmap_synci.h was added on branch nick-nhusb on 2016-10-05 20:56:12 +0000
 1.63 02-Sep-2025  skrll Don't log anything when !DIAGNOSTIC in pmap_tlb_pai_check as it's a no-op.
 1.62 01-Jan-2024  skrll Appease KASSERTs for zero ASID CPUs (I mean harts)
 1.61 06-Oct-2023  skrll Support CPUs that might not have ASIDs in the common pmap.
 1.60 01-Aug-2023  skrll Improve debug
 1.59 12-Jun-2023  skrll Fix compile for non-MULTIPROCESSOR and PMAP_TLB_MAX > 1 builds
 1.58 12-Jun-2023  skrll Fixup UVMHIST builds
 1.57 22-Apr-2023  skrll KASSERT(kpreempt_disabled()) before accessing curcpu()
 1.56 19-Feb-2023  skrll Spaces to TABs. NFCI.
 1.55 07-Nov-2022  skrll Fix UVMHIST build
 1.54 26-Oct-2022  skrll MI PMAP hardware page table walker support.

This is based on code given to me by Matt Thomas a long time ago with
many updates and bugs fixes from me.
 1.53 20-Oct-2022  skrll Add a KASSERT to check that tlb_asid_t is a large enough type.
 1.52 04-Mar-2022  skrll Rmmove an incorrect KASSERT.
 1.51 02-Jan-2022  christos fix KASSERTMSG issue
 1.50 29-Dec-2021  skrll Remove duplicate KASSERT
 1.49 27-Oct-2021  simonb TAB police.
 1.48 27-Oct-2021  simonb When adjusting the max ASID count, check if ti->ti_asid_max == 0 as
well. This defaults to 0 for the non-PMAP_TLB_NUM_PIDS case, so would
skip the updated test.

Fix for port-pmax/56466 (which affects all MIPS).

ok srkll@
 1.47 08-Oct-2021  skrll Fix a logic botch to actually apply the ASID limit returned by
pmap_md_tlb_asid_max.
 1.46 02-Oct-2021  skrll Pass the pmap in tlb_set_asid for the benefit of aarch64.
 1.45 12-Sep-2021  skrll comment whitespace
 1.44 04-May-2021  skrll Always expose pmap_tlb_update_addr now that all current PMAP_HWPAGEWALKERs
(arm) users provide the required functions.
 1.43 01-May-2021  skrll Revert previous
 1.42 01-May-2021  skrll Expose pmap_tlb_update_addr to the PMAP_HWPAGEWALKER platforms
 1.41 24-Sep-2020  skrll branches: 1.41.6;
Whitespace
 1.40 22-Aug-2020  skrll Whitespace - line continutation alignment
 1.39 19-Aug-2020  skrll KNF. Add some whitespace to the TLBINV_MAP macro and tlb_invalidate_op
enum.
 1.38 19-Aug-2020  skrll Unwrap short line KASSERT
 1.37 19-Aug-2020  skrll Fix inverted logic test in pmap_tlb_shootdown_process for if the victim
is onproc.
 1.36 11-Aug-2020  skrll s/pmaphist/maphist/ for now
 1.35 11-Aug-2020  skrll More UVMHIST_LOG. Remove some commented output printfs.
 1.34 09-Aug-2020  skrll Don't kcpuset_clone every pmap_tlb_shootdown_bystanders. Instead allocate
a kcpuset_t per cpu_info and use that.
 1.33 14-Apr-2020  skrll Fix UVMHIST bulid
 1.32 12-Apr-2020  skrll Use UVMHIST_CALLARGS
 1.31 09-Apr-2020  skrll Make a comment less MIPS specific
 1.30 18-Dec-2019  skrll branches: 1.30.6;
KNF
 1.29 17-Dec-2019  skrll Fix a UVMHIST_LOG format
 1.28 25-Feb-2018  jdolecek branches: 1.28.4;
fix the DIAGNOSTIC function pmap_tlb_asid_count() to not expect
that TLBINFO_ASID_INUSE_P() returns just 0 or 1; the underlying
__BITMAP_ISSET() actually returns the matching bit nowadays, which
caused miscounting

fixes PR kern/53054 by Sevan Janiyan
 1.27 25-Feb-2018  jdolecek adjust KASSERT() triggered in PR port-cobalt/53054 to provide more info
 1.26 21-Feb-2018  jdolecek KERNEL_PID is > 0 on powerpc/ibm4xx, need to mask all bits <0,
KERNEL_PID> to avoid triggering KASSERT() checking allocated asid
is bigger than KERNEL_PID; adjust also TLBINFO_ASID_INITIAL_FREE()
accordingly

discussed with Nick
 1.25 19-Feb-2018  jdolecek convert to use actual __BITMAP_*() macros from <sys/bitops.h>, and make
it possible to override the ASID bitmap length; default to 256 ASIDs as before

XXX NFCI; compile tested only on evbpcc and evbmips, unfortunately didn't
find any combination of port using the MI pmap_tlb.c and working in QEMU
 1.24 19-Feb-2018  jdolecek a bit of DRY - add macro for initial free ASID count
 1.23 19-Feb-2018  jdolecek make it possible to not use the icache evcnts
 1.22 28-Oct-2017  pgoyette branches: 1.22.2;
Update the kernhist(9) kernel history code to address issues identified
in PR kern/52639, as well as some general cleaning-up...

(As proposed on tech-kern@ with additional changes and enhancements.)

Details of changes:

* All history arguments are now stored as uintmax_t values[1], both in
the kernel and in the structures used for exporting the history data
to userland via sysctl(9). This avoids problems on some architectures
where passing a 64-bit (or larger) value to printf(3) can cause it to
process the value as multiple arguments. (This can be particularly
problematic when printf()'s format string is not a literal, since in
that case the compiler cannot know how large each argument should be.)

* Update the data structures used for exporting kernel history data to
include a version number as well as the length of history arguments.

* All [2] existing users of kernhist(9) have had their format strings
updated. Each format specifier now includes an explicit length
modifier 'j' to refer to numeric values of the size of uintmax_t.

* All [2] existing users of kernhist(9) have had their format strings
updated to replace uses of "%p" with "%#jx", and the pointer
arguments are now cast to (uintptr_t) before being subsequently cast
to (uintmax_t). This is needed to avoid compiler warnings about
casting "pointer to integer of a different size."

* All [2] existing users of kernhist(9) have had instances of "%s" or
"%c" format strings replaced with numeric formats; several instances
of mis-match between format string and argument list have been fixed.

* vmstat(1) has been modified to handle the new size of arguments in the
history data as exported by sysctl(9).

* vmstat(1) now provides a warning message if the history requested with
the -u option does not exist (previously, this condition was silently
ignored, with only a single blank line being printed).

* vmstat(1) now checks the version and argument length included in the
data exported via sysctl(9) and exits if they do not match the values
with which vmstat was built.

* The kernhist(9) man-page has been updated to note the additional
requirements imposed on the format strings, along with several other
minor changes and enhancements.

[1] It would have been possible to use an explicit length (for example,
uint64_t) for the history arguments. But that would require another
"rototill" of all the users in the future when we add support for an
architecture that supports a larger size. Also, the printf(3) format
specifiers for explicitly-sized values, such as "%"PRIu64, are much
more verbose (and less aesthetically appealing, IMHO) than simply
using "%ju".

[2] I've tried very hard to find "all [the] existing users of kernhist(9)"
but it is possible that I've missed some of them. I would be glad to
update any stragglers that anyone identifies.
 1.21 26-May-2017  skrll branches: 1.21.2;
Remove incorrect __diagused
 1.20 26-May-2017  skrll Use the define name PMAP_HWPAGEWALKER and not PMAP_TLB_HWPAGEWALKER
 1.19 09-Oct-2016  christos PR/51540: Henning Petersen: replace , with ;
 1.18 23-Jul-2016  matt Lock the tlbinfo if it wasn't when doing a pmap_tlb_pai_check
 1.17 14-Jul-2016  skrll branches: 1.17.2;
Use KERNEL_PID instead of 0
 1.16 14-Jul-2016  skrll Fix some comments.
 1.15 14-Jul-2016  skrll Trailing whitespace
 1.14 12-Jul-2016  skrll Fix typo for build check
 1.13 11-Jul-2016  matt Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.12 11-Jun-2015  matt Don't call kcpuset_intersecting_p and then kcpuset_ffs_intersecting since
that the last will tell use what we need to know.
 1.11 18-Apr-2015  joerg pmap_tlb_intersecting_active_p is not used in some combinations of
platform options as seen by recent ARM changes.
 1.10 29-Oct-2014  skrll branches: 1.10.2;
s/0/KERNEL_PID/ for correctness
 1.9 18-Oct-2014  skrll Minor comment update.
 1.8 03-Apr-2014  matt branches: 1.8.4;
Change cpu_tlb_info definition based on PMAP_TLB_MAX instead of MULTIPROCESSOR
 1.7 03-Apr-2014  matt Compare ASIDs, not pmaps.
 1.6 03-Apr-2014  matt Make this compile on booke again.
 1.5 30-Mar-2014  matt Allow this to handle H/W tlbs. Some ARM allow for a cheap way to flush all
entries using an ASID from the TLB. Add support for taking advantage of it.
Most ARMs don't have an easy way to find out what's in the TLB so make
record_asids can just say all ASIDs are in use. Fix some off by 1 errors.
 1.4 18-Mar-2014  riastradh Merge riastradh-drm2 to HEAD.
 1.3 17-Jul-2013  matt Make this kcpuset_t instead of the private __cpuset_t
Add improvements for single TLB implementation (PPC, ARM).
 1.2 02-Jul-2013  matt branches: 1.2.2;
Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt
for non-soft TLB pmaps.
 1.1 03-Oct-2012  christos branches: 1.1.2; 1.1.4;
move from common/pmap/tlb -> uvm/pmap
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 28-Aug-2013  rmind sync with head
 1.1.2.3 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.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 03-Oct-2012  yamt file pmap_tlb.c was added on branch yamt-pagecache on 2012-10-30 17:23:03 +0000
 1.2.2.1 23-Jul-2013  riastradh sync with HEAD
 1.8.4.1 09-Nov-2014  martin Pull up following revision(s) (requested by skrll in ticket #188):
sys/arch/arm/include/arm32/pmap.h: revision 1.136
sys/arch/arm/include/armreg.h: revision 1.100
sys/arch/arm/cortex/gic.c: revision 1.11
sys/arch/arm/arm32/db_interface.c: revision 1.54
sys/arch/arm/include/armreg.h: revision 1.101
sys/arch/arm/cortex/gic.c: revision 1.12
sys/arch/arm/arm32/arm32_machdep.c: revision 1.107
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.19
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.20
sys/arch/evbarm/conf/BPI: revision 1.5
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.21
sys/arch/arm/arm32/pmap.c: revision 1.306
sys/arch/arm/arm32/db_machdep.c: revision 1.22
sys/arch/arm/arm32/arm32_tlb.c: revision 1.3
sys/arch/arm/arm/undefined.c: revision 1.55
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.22
sys/arch/arm/arm32/pmap.c: revision 1.307
sys/arch/arm/arm32/arm32_tlb.c: revision 1.4
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.23
sys/arch/arm/arm32/arm32_tlb.c: revision 1.5
sys/arch/evbarm/conf/BPI: revision 1.8
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.24
sys/arch/arm/arm32/arm32_tlb.c: revision 1.6
sys/arch/arm/arm32/arm32_tlb.c: revision 1.7
sys/arch/evbarm/conf/CUBIETRUCK: revision 1.5
sys/arch/arm/pic/pic.c: revision 1.23
sys/arch/arm/pic/pic.c: revision 1.24
sys/arch/arm/pic/picvar.h: revision 1.11
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.20
sys/arch/arm/mainbus/cpu_mainbus.c: revision 1.16
sys/arch/arm/arm32/pmap.c: revision 1.298
sys/arch/arm/arm/cpufunc_asm_arm11.S: revision 1.17
sys/arch/arm/arm/cpufunc_asm_pj4b.S: revision 1.5
sys/arch/arm/arm32/pmap.c: revision 1.310
sys/arch/arm/arm32/pmap.c: revision 1.311
sys/arch/arm/arm32/arm32_kvminit.c: revision 1.32
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.19
sys/arch/arm/arm32/arm32_boot.c: revision 1.10
sys/arch/arm/arm/ast.c: revision 1.25
sys/arch/arm/include/armreg.h: revision 1.98
sys/uvm/pmap/pmap_tlb.c: revision 1.10
sys/arch/arm/arm32/arm32_boot.c: revision 1.8
sys/arch/arm/arm32/arm32_boot.c: revision 1.9
sys/arch/arm/arm/arm_machdep.c: revision 1.43
Various ARM MP fixes.
 1.10.2.5 28-Aug-2017  skrll Sync with HEAD
 1.10.2.4 05-Dec-2016  skrll Sync with HEAD
 1.10.2.3 05-Oct-2016  skrll Sync with HEAD
 1.10.2.2 22-Sep-2015  skrll Sync with HEAD
 1.10.2.1 06-Jun-2015  skrll Sync with HEAD
 1.17.2.2 04-Nov-2016  pgoyette Sync with HEAD
 1.17.2.1 26-Jul-2016  pgoyette Sync with HEAD
 1.21.2.1 02-Nov-2017  snj Pull up following revision(s) (requested by pgoyette in ticket #335):
share/man/man9/kernhist.9: 1.5-1.8
sys/arch/acorn26/acorn26/pmap.c: 1.39
sys/arch/arm/arm32/fault.c: 1.105 via patch
sys/arch/arm/arm32/pmap.c: 1.350, 1.359
sys/arch/arm/broadcom/bcm2835_bsc.c: 1.7
sys/arch/arm/omap/if_cpsw.c: 1.20
sys/arch/arm/omap/tiotg.c: 1.7
sys/arch/evbarm/conf/RPI2_INSTALL: 1.3
sys/dev/ic/sl811hs.c: 1.98
sys/dev/usb/ehci.c: 1.256
sys/dev/usb/if_axe.c: 1.83
sys/dev/usb/motg.c: 1.18
sys/dev/usb/ohci.c: 1.274
sys/dev/usb/ucom.c: 1.119
sys/dev/usb/uhci.c: 1.277
sys/dev/usb/uhub.c: 1.137
sys/dev/usb/umass.c: 1.160-1.162
sys/dev/usb/umass_quirks.c: 1.100
sys/dev/usb/umass_scsipi.c: 1.55
sys/dev/usb/usb.c: 1.168
sys/dev/usb/usb_mem.c: 1.70
sys/dev/usb/usb_subr.c: 1.221
sys/dev/usb/usbdi.c: 1.175
sys/dev/usb/usbdi_util.c: 1.67-1.70
sys/dev/usb/usbroothub.c: 1.3
sys/dev/usb/xhci.c: 1.75
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: 1.34
sys/kern/kern_history.c: 1.15
sys/kern/kern_xxx.c: 1.74
sys/kern/vfs_bio.c: 1.275-1.276
sys/miscfs/genfs/genfs_io.c: 1.71
sys/sys/kernhist.h: 1.21
sys/ufs/ffs/ffs_balloc.c: 1.63
sys/ufs/lfs/lfs_vfsops.c: 1.361
sys/ufs/lfs/ulfs_inode.c: 1.21
sys/ufs/lfs/ulfs_vnops.c: 1.52
sys/ufs/ufs/ufs_inode.c: 1.102
sys/ufs/ufs/ufs_vnops.c: 1.239
sys/uvm/pmap/pmap.c: 1.37-1.39
sys/uvm/pmap/pmap_tlb.c: 1.22
sys/uvm/uvm_amap.c: 1.108
sys/uvm/uvm_anon.c: 1.64
sys/uvm/uvm_aobj.c: 1.126
sys/uvm/uvm_bio.c: 1.91
sys/uvm/uvm_device.c: 1.66
sys/uvm/uvm_fault.c: 1.201
sys/uvm/uvm_km.c: 1.144
sys/uvm/uvm_loan.c: 1.85
sys/uvm/uvm_map.c: 1.353
sys/uvm/uvm_page.c: 1.194
sys/uvm/uvm_pager.c: 1.111
sys/uvm/uvm_pdaemon.c: 1.109
sys/uvm/uvm_swap.c: 1.175
sys/uvm/uvm_vnode.c: 1.103
usr.bin/vmstat/vmstat.c: 1.219
Reorder to test for null before null deref in debug code
--
Reorder to test for null before null deref in debug code
--
KNF
--
No need for '\n' in UVMHIST_LOG
--
normalise a BIOHIST log message
--
Update the kernhist(9) kernel history code to address issues identified
in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in
the kernel and in the structures used for exporting the history data
to userland via sysctl(9). This avoids problems on some architectures
where passing a 64-bit (or larger) value to printf(3) can cause it to
process the value as multiple arguments. (This can be particularly
problematic when printf()'s format string is not a literal, since in
that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to
include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings
updated. Each format specifier now includes an explicit length
modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings
updated to replace uses of "%p" with "%#jx", and the pointer
arguments are now cast to (uintptr_t) before being subsequently cast
to (uintmax_t). This is needed to avoid compiler warnings about
casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or
"%c" format strings replaced with numeric formats; several instances
of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the
history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with
the -u option does not exist (previously, this condition was silently
ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the
data exported via sysctl(9) and exits if they do not match the values
with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional
requirements imposed on the format strings, along with several other
minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example,
uint64_t) for the history arguments. But that would require another
"rototill" of all the users in the future when we add support for an
architecture that supports a larger size. Also, the printf(3)
format
specifiers for explicitly-sized values, such as "%"PRIu64, are much
more verbose (and less aesthetically appealing, IMHO) than simply
using "%ju".
[2] I've tried very hard to find "all [the] existing users of
kernhist(9)"
but it is possible that I've missed some of them. I would be glad
to
update any stragglers that anyone identifies.
--
For some reason this single kernel seems to have outgrown its declared
size as a result of the kernhist(9) changes. Bump the size.
XXX The amount of increase may be excessive - anyone with more detailed
XXX knowledge please feel free to further adjust the value
appropriately.
--
Misssed one cast of pointer --> uintptr_t in previous kernhist(9) commit
--
And yet another one. :(
--
Use correct mark-up for NetBSD version.
--
More improvements in grammar and readability.
--
Remove a stray '"' (obvious typo) and add a couple of casts that are
probably needed.
--
And replace an instance of "%p" conversion with "%#jx"
--
Whitespace fix. Give Bl tag table a width. Fix Xr.
 1.22.2.2 03-Dec-2017  jdolecek update from HEAD
 1.22.2.1 28-Oct-2017  jdolecek file pmap_tlb.c was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.28.4.3 21-Apr-2020  martin Sync with HEAD
 1.28.4.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.28.4.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.30.6.1 20-Apr-2020  bouyer Sync with HEAD
 1.41.6.1 13-May-2021  thorpej Sync with HEAD.
 1.17 06-Oct-2023  skrll Support CPUs that might not have ASIDs in the common pmap.
 1.16 26-Oct-2022  skrll MI PMAP hardware page table walker support.

This is based on code given to me by Matt Thomas a long time ago with
many updates and bugs fixes from me.
 1.15 19-Aug-2020  skrll KNF. Add some whitespace to the TLBINV_MAP macro and tlb_invalidate_op
enum.
 1.14 01-Aug-2020  skrll Provide a TLBINFO_OWNED
 1.13 19-Feb-2018  jdolecek convert to use actual __BITMAP_*() macros from <sys/bitops.h>, and make
it possible to override the ASID bitmap length; default to 256 ASIDs as before

XXX NFCI; compile tested only on evbpcc and evbmips, unfortunately didn't
find any combination of port using the MI pmap_tlb.c and working in QEMU
 1.12 19-Feb-2018  jdolecek make it possible to not use the icache evcnts
 1.11 24-Jun-2017  skrll Multiple inclusion protection define consistency
 1.10 26-May-2017  skrll Whitespace
 1.9 11-Jul-2016  matt Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.8 02-Apr-2015  matt include <sys/evcnt.h>
 1.7 05-Jan-2015  nonaka Use PMAP_TLB_MAX instead of MAXCPUS.
 1.6 03-Apr-2014  matt branches: 1.6.4; 1.6.8; 1.6.10;
Change cpu_tlb_info definition based on PMAP_TLB_MAX instead of MULTIPROCESSOR
 1.5 30-Mar-2014  matt Allow this to handle H/W tlbs. Some ARM allow for a cheap way to flush all
entries using an ASID from the TLB. Add support for taking advantage of it.
Most ARMs don't have an easy way to find out what's in the TLB so make
record_asids can just say all ASIDs are in use. Fix some off by 1 errors.
 1.4 18-Mar-2014  riastradh Merge riastradh-drm2 to HEAD.
 1.3 22-Jul-2013  matt branches: 1.3.2;
If not MULTIPROCESSOR, just make cpu_tlb_info(ci) return &pmap_tlb0_info
 1.2 17-Jul-2013  matt Make this kcpuset_t instead of the private __cpuset_t
Add improvements for single TLB implementation (PPC, ARM).
 1.1 02-Jul-2013  matt branches: 1.1.2;
Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt
for non-soft TLB pmaps.
 1.1.2.1 23-Jul-2013  riastradh sync with HEAD
 1.3.2.3 18-May-2014  rmind sync with head
 1.3.2.2 28-Aug-2013  rmind sync with head
 1.3.2.1 22-Jul-2013  rmind file pmap_tlb.h was added on branch rmind-smpnet on 2013-08-28 23:59:38 +0000
 1.6.10.3 28-Aug-2017  skrll Sync with HEAD
 1.6.10.2 05-Oct-2016  skrll Sync with HEAD
 1.6.10.1 06-Apr-2015  skrll Sync with HEAD
 1.6.8.3 03-Dec-2017  jdolecek update from HEAD
 1.6.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.8.1 03-Apr-2014  tls file pmap_tlb.h was added on branch tls-maxphys on 2014-08-20 00:04:45 +0000
 1.6.4.2 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.6.4.1 03-Apr-2014  yamt file pmap_tlb.h was added on branch yamt-pagecache on 2014-05-22 11:41:19 +0000
 1.5 02-Oct-2021  skrll Pass the pmap in tlb_set_asid for the benefit of aarch64.
 1.4 24-Jun-2017  skrll branches: 1.4.4;
Multiple inclusion protection define consistency
 1.3 11-Jul-2016  matt Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.2 21-Sep-2015  matt Update multiple inclusion macro
 1.1 03-Oct-2012  christos branches: 1.1.2; 1.1.16;
move from common/pmap/tlb -> uvm/pmap
 1.1.16.3 28-Aug-2017  skrll Sync with HEAD
 1.1.16.2 05-Oct-2016  skrll Sync with HEAD
 1.1.16.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 03-Oct-2012  yamt file tlb.h was added on branch yamt-pagecache on 2012-10-30 17:23:03 +0000
 1.4.4.2 03-Dec-2017  jdolecek update from HEAD
 1.4.4.1 24-Jun-2017  jdolecek file tlb.h was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.17 20-Dec-2020  skrll Support __HAVE_PMAP_PV_TRACK in sys/uvm/pmap based pmaps (aka common pmap)
 1.16 30-Dec-2019  ad branches: 1.16.8;
pg->phys_addr -> VM_PAGE_TO_PHYS().
 1.15 20-Oct-2019  skrll Define and use VM_PAGEMD_PVLIST_EMPTY_P
 1.14 20-Oct-2019  skrll Whitespace
 1.13 20-Oct-2019  skrll Re-order _P() macros to match bit definitions. NFCI
 1.12 12-Jul-2019  skrll Provide and use PV_ISKENTER_P. NFCI.
 1.11 19-Jun-2019  christos use __nothing
 1.10 19-Jun-2019  skrll Once more short line to unwrap
 1.9 19-Jun-2019  skrll Unwrap short lines. NFCI.
 1.8 19-Apr-2018  christos branches: 1.8.2;
s/static inline/static __inline/g for consistency.
 1.7 24-Jun-2017  skrll branches: 1.7.4; 1.7.6;
Use __BIT(0) for PV_KENTER. NFC.
 1.6 24-Jun-2017  skrll Whitespace - comment alignment.
 1.5 24-Jun-2017  skrll Multiple inclusion protection define consistency
 1.4 07-Jun-2017  skrll Use __BIT(). No functional change.
 1.3 11-Jul-2016  matt Changes so that MIPS can use the common pmap.
Change/augment the virtual cache alias callbacks.
 1.2 04-Mar-2014  matt branches: 1.2.6;
use _KERNEL_OPT around #include
 1.1 03-Oct-2012  christos branches: 1.1.2; 1.1.4;
move from common/pmap/tlb -> uvm/pmap
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 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.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 03-Oct-2012  yamt file vmpagemd.h was added on branch yamt-pagecache on 2012-10-30 17:23:03 +0000
 1.2.6.2 28-Aug-2017  skrll Sync with HEAD
 1.2.6.1 05-Oct-2016  skrll Sync with HEAD
 1.7.6.1 22-Apr-2018  pgoyette Sync with HEAD
 1.7.4.2 03-Dec-2017  jdolecek update from HEAD
 1.7.4.1 24-Jun-2017  jdolecek file vmpagemd.h was added on branch tls-maxphys on 2017-12-03 11:39:23 +0000
 1.8.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.2.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.16.8.1 03-Jan-2021  thorpej Sync w/ HEAD.

RSS XML Feed