freebsd-dev/sys/arm
Alan Cox 2bf8cb3804 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
..
allwinner aw_thermal: Add nvmem and H5 support 2018-08-06 05:36:00 +00:00
altera/socfpga Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
amlogic/aml8726 Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
annapurna/alpine Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
arm Add support for pmap_enter(..., psind=1) to the armv6 pmap. In other words, 2018-08-08 16:55:01 +00:00
broadcom/bcm2835 Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
cloudabi32 Correct some more places where TO_PTR() should be used. 2017-11-26 14:53:56 +00:00
conf Default to armv5te in LINT on arm. This should fix building LINT there. 2018-08-06 14:40:45 +00:00
freescale Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
include Add support for pmap_enter(..., psind=1) to the armv6 pmap. In other words, 2018-08-08 16:55:01 +00:00
mv Use the cp15 functions to read cp15 registers rather than using assembly 2018-07-28 17:21:34 +00:00
nvidia Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
qemu Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
ralink The RT1310 is an ARM926EJ-S, fix the config to mark it as such. 2018-07-28 10:48:41 +00:00
rockchip Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
samsung/exynos Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00
ti Use the cp15 functions to read cp15 registers rather than using assembly 2018-07-28 17:21:34 +00:00
versatile Revert r327250 as it broke the build for some armv6 kernel and all armv4/5 2017-12-28 07:31:14 +00:00
xilinx Remove IPI_IRQ_START and IPI_IRQ_END from the arm kernel config files. 2018-07-28 06:46:10 +00:00