freebsd-skq/sys/vm
alc 4cde6a5313 Add support for pmap_enter(..., psind=1) to the armv6 pmap. In other words,
add support for explicitly requesting that pmap_enter() create a 1 MB page
mapping.  (Essentially, this feature allows the machine-independent layer
to create superpage mappings preemptively, and not wait for automatic
promotion to occur.)

Export pmap_ps_enabled() to the machine-independent layer.

Add a flag to pmap_pv_insert_pte1() that specifies whether it should fail
or reclaim a PV entry when one is not available.

Refactor pmap_enter_pte1() into two functions, one by the same name, that
is a general-purpose function for creating pte1 mappings, and another,
pmap_enter_1mpage(), that is used to prefault 1 MB read- and/or execute-
only mappings for execve(2), mmap(2), and shmat(2).

In addition, as an optimization to pmap_enter(..., psind=0), eliminate the
use of pte2_is_managed() from pmap_enter().  Unlike the x86 pmap
implementations, armv6 does not have a managed bit defined within the PTE.
So, pte2_is_managed() is actually a call to PHYS_TO_VM_PAGE(), which is O(n)
in the number of vm_phys_segs[].  All but one call to PHYS_TO_VM_PAGE() in
pmap_enter() can be avoided.

Reviewed by:	kib, markj, mmel
Tested by:	mmel
MFC after:	6 weeks
Differential Revision:	https://reviews.freebsd.org/D16555
2018-08-08 16:55:01 +00:00
..
_vm_radix.h
default_pager.c
device_pager.c
memguard.c
memguard.h
phys_pager.c
pmap.h Add pmap_is_valid_memattr(9). 2018-08-01 18:45:51 +00:00
redzone.c
redzone.h
sg_pager.c
swap_pager.c Defer and aggregate swap_pager_meta_build frees. 2018-08-08 02:30:34 +00:00
swap_pager.h
uma_core.c uma: whack main zone counter update in the slow path, freeing side 2018-07-12 22:35:52 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h
uma.h Back pcpu zone with domain correct pages 2018-07-06 02:06:03 +00:00
vm_domainset.c
vm_domainset.h
vm_extern.h Have preload_delete_name() free pages backing preloaded data. 2018-07-19 20:00:28 +00:00
vm_fault.c Add support for pmap_enter(..., psind=1) to the armv6 pmap. In other words, 2018-08-08 16:55:01 +00:00
vm_glue.c
vm_init.c
vm_kern.c Add the required page accounting to kmem_bootstrap_free(). 2018-08-03 16:35:37 +00:00
vm_kern.h
vm_map.c To date, mlockall(MCL_FUTURE) has had the unfortunate side effect of 2018-07-28 04:06:33 +00:00
vm_map.h inline atomics and allow tied modules to inline locks 2018-07-02 19:48:38 +00:00
vm_meter.c
vm_mmap.c For compat32, emulate the same wraparound check as occurs on the real 2018-07-31 18:00:47 +00:00
vm_object.c Allow vm object coalescing to occur in the midst of a vm object when the 2018-07-31 17:41:48 +00:00
vm_object.h
vm_page.c Create a new macro for static DPCPU data. 2018-07-05 17:13:37 +00:00
vm_page.h inline atomics and allow tied modules to inline locks 2018-07-02 19:48:38 +00:00
vm_pageout.c Test PGA_REFERENCED after calling pmap_ts_referenced(), rather than before, 2018-07-15 19:25:15 +00:00
vm_pageout.h
vm_pagequeue.h
vm_pager.c
vm_pager.h
vm_param.h
vm_phys.c Rename VM_FREELIST_ISADMA to VM_FREELIST_LOWMEM. 2018-07-27 18:34:20 +00:00
vm_phys.h
vm_radix.c
vm_radix.h
vm_reserv.c Use the ticks since the last update to reduce hysteresis in the partpopq and 2018-07-07 01:54:45 +00:00
vm_reserv.h
vm_swapout_dummy.c
vm_swapout.c Swap in WKILLED processes. 2018-08-04 20:45:43 +00:00
vm_unix.c Use __riscv to determine building for RISC-V 2018-07-23 19:49:54 +00:00
vm.h
vnode_pager.c
vnode_pager.h