freebsd-dev/sys/arm/include
Grzegorz Bernacki 4442f74b81 Port the new PV entry allocator from amd64/i386/mips to armv6/v7.
PV entries are now roughly half the size.
Instead of using a shared UMA zone for 28 byte pv entries
(two 8-byte tailq nodes, a 4 byte pointer, a 4 byte address and 4 byte
flags), we allocate a page at a time per process.
This provides 252 pv entries per process (actually, per pmap address space)
and eliminates one of the 8-byte tailq entries since we now can track
per-process pv entries implicitly.
The pointer to the pmap can be eliminated by doing address arithmetic to
find the metadata on the page headers to find a single pointer shared by
all 252 entries. There is an 8-int bitmap for the freelist of those 252
entries.
When in serious low memory condition, allocation of another pv_chunk is
possible by freeing some pages in pmap_pv_reclaim().

Added pv_entry/pv_chunk related statistics to pmap.
pv_entry/pv_chunk statistics can be accessed via sysctl vm.pmap.

Ported PTE freelist of KVA allocation and maintenance from i386.
Using an idea from Stephan Uphoff, use the empty pte's that correspond
to the unused kva in the pv memory block to thread a freelist through.
This allows us to free pages that used to be used for pv entry chunks
since we can now track holes in the kva memory block.

As both ARM pmap.c and pmap-v6.c use the same header and pv_entry, pmap and
md_page structures are different, it was needed to separate code designed
for ARMv6/7 from the one for other ARMs.

Submitted by:	Zbigniew Bodek <zbb@semihalf.com>
Reviewed by:	alc
Sponsored by:	The FreeBSD Foundation, Semihalf
2013-05-14 09:47:58 +00:00
..
_align.h Get rid of the _NO_NAMESPACE_POLLUTION kludge by creating an 2009-09-08 20:45:40 +00:00
_bus.h
_inttypes.h The NetBSD Foundation has granted permission to remove clauses 3 and 4. 2010-02-16 21:59:17 +00:00
_limits.h Fix types of some values in machine/_limits.h. 2011-01-08 11:13:34 +00:00
_stdint.h Make the wchar_t type machine dependent. 2012-06-24 04:15:58 +00:00
_types.h Make the wchar_t type machine dependent. 2012-06-24 04:15:58 +00:00
armreg.h Add Xilinx Zynq ARM/FPGA SoC support to FreeBSD/arm port. 2013-04-27 23:07:49 +00:00
asm.h Add an END macro to ARM. This is mostly used to tell gas where the bounds 2013-03-16 02:48:49 +00:00
asmacros.h Merging projects/armv6, part 1 2012-08-15 03:03:03 +00:00
at91_gpio.h Add userland access to at91 gpio functionality via ioctl calls. Also, 2013-03-29 19:52:57 +00:00
atags.h Defines for parsing linux ATAGs lists. 2012-06-14 14:38:55 +00:00
atomic.h Don't define rel/acq variants of some atomic operations as the regular 2013-01-15 22:08:03 +00:00
blockio.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
board.h Create a generic way to support multiple boards within an 2012-07-07 05:02:39 +00:00
bootconfig.h
bus_dma.h The NetBSD Foundation has granted permission to remove clauses 3 and 4. 2010-02-16 21:59:17 +00:00
bus.h o Switch to use physical addresses in rman for FDT. 2013-03-18 15:18:55 +00:00
clock.h
counter.h Merge from projects/counters: counter(9). 2013-04-08 19:40:53 +00:00
cpu.h Minor rearrangement of the locore <-> initarm interface. Pass in a 2012-06-03 18:34:32 +00:00
cpuconf.h Replace generic ARM11 option with more specific 2012-12-20 04:32:02 +00:00
cpufunc.h Replace generic ARM11 option with more specific 2012-12-20 04:32:02 +00:00
db_machdep.h
disassem.h Catchup with new prototype for db_printf(). 2010-05-14 00:00:19 +00:00
elf.h Reserve AT_TIMEKEEP auxv entry for providing usermode the pointer to 2012-06-22 06:38:31 +00:00
endian.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
exec.h
fdt.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
fiq.h
float.h Add C11 macros describing subnormal numbers to float.h. 2012-01-23 06:36:41 +00:00
floatingpoint.h
fp.h Merging projects/armv6, part 1 2012-08-15 03:03:03 +00:00
frame.h Fix stack alignment in the kernel to be on an 8 byte boundary as required 2013-03-06 06:19:56 +00:00
gdb_machdep.h
ieee.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
ieeefp.h People porting FreeBSD to new architectures ought not have to 2011-10-21 06:41:46 +00:00
in_cksum.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
intr.h Eliminate the need for an intermediate array of indices into the arrays of 2013-01-19 00:50:12 +00:00
katelib.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
kdb.h Flush D and I caches after setting a breakpoint. 2012-05-30 13:31:08 +00:00
limits.h
machdep.h Add a couple forward declarations, so that board support routines don't have 2013-03-29 18:43:10 +00:00
md_var.h Merging projects/armv6, part 1 2012-08-15 03:03:03 +00:00
memdev.h Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set(). 2011-01-17 22:58:28 +00:00
metadata.h Don't re-use MODINFOMD_BOOTINFO as MODINFOMD_DTBP. It breaks 2011-01-11 22:07:39 +00:00
minidump.h
ofw_machdep.h Initial FDT infrastructure elements for ARM. 2010-06-13 13:12:52 +00:00
param.h Rename VM_NDOMAIN into MAXMEMDOM and move it into machine/param.h in 2013-05-07 22:46:24 +00:00
pcb.h Merging projects/armv6, part 1 2012-08-15 03:03:03 +00:00
pcpu.h Merge from projects/counters: 2013-04-08 19:19:10 +00:00
pl310.h Only work around errata when we are on a part where the erratum applies. 2013-01-06 00:42:09 +00:00
pmap.h Port the new PV entry allocator from amd64/i386/mips to armv6/v7. 2013-05-14 09:47:58 +00:00
pmc_mdep.h Add ARM callchain support for hwpmc. 2012-06-13 06:38:25 +00:00
proc.h * Correct KINFO_PROC_SIZE for ARM EABI. 2013-01-17 09:52:35 +00:00
profile.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
psl.h
pte.h Merging projects/armv6, part 1 2012-08-15 03:03:03 +00:00
ptrace.h
reg.h
reloc.h
resource.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
runq.h
sc_machdep.h Piggyback MIPS changes and add ARM syscons support for devices with 2012-08-25 23:59:31 +00:00
setjmp.h Hide non-assembler bits behind #ifndef __ASSEMBLER__ 2013-04-06 00:47:33 +00:00
sf_buf.h
sigframe.h
signal.h Don't use an empty struct. 2013-03-11 10:56:46 +00:00
smp.h Merging projects/armv6, part 1 2012-08-15 03:03:03 +00:00
stack.h trim trailing whitespace 2012-06-13 05:02:51 +00:00
stdarg.h
swi.h
sysarch.h - Correct mispellings of the word occurrence 2013-04-17 11:40:10 +00:00
trap.h
ucontext.h The NetBSD Foundation has granted permission to remove clauses 3 and 4. 2010-02-16 21:59:17 +00:00
undefined.h
utrap.h
vdso.h Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
vfp.h Export vfp_init() prototype, for use in the MP code. 2013-02-26 20:01:05 +00:00
vm.h Properly implement pmap_[get|set]_memattr 2012-12-19 00:24:31 +00:00
vmparam.h Rename VM_NDOMAIN into MAXMEMDOM and move it into machine/param.h in 2013-05-07 22:46:24 +00:00