vmparam.h (14b841d4a8e6c25d964f5e3bbda379a1541a27ec) vmparam.h (9a52756044676370f20527b85d450d5fc3ac32e5)
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 1990 The Regents of the University of California.
5 * All rights reserved.
6 * Copyright (c) 1994 John S. Dyson
7 * All rights reserved.
8 *

--- 81 unchanged lines hidden (view full) ---

90 * memory, VM_FREEPOOL_DIRECT is defined as an alias for the default
91 * pool, VM_FREEPOOL_DEFAULT.
92 */
93#define VM_NFREEPOOL 1
94#define VM_FREEPOOL_DEFAULT 0
95#define VM_FREEPOOL_DIRECT 0
96
97/*
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 1990 The Regents of the University of California.
5 * All rights reserved.
6 * Copyright (c) 1994 John S. Dyson
7 * All rights reserved.
8 *

--- 81 unchanged lines hidden (view full) ---

90 * memory, VM_FREEPOOL_DIRECT is defined as an alias for the default
91 * pool, VM_FREEPOOL_DEFAULT.
92 */
93#define VM_NFREEPOOL 1
94#define VM_FREEPOOL_DEFAULT 0
95#define VM_FREEPOOL_DIRECT 0
96
97/*
98 * Create two free page lists: VM_FREELIST_DEFAULT is for physical
99 * pages that are above the largest physical address that is
100 * accessible by ISA DMA and VM_FREELIST_LOWMEM is for physical pages
101 * that are below that address.
98 * Create up to three free page lists: VM_FREELIST_DMA32 is for physical pages
99 * that have physical addresses below 4G but are not accessible by ISA DMA,
100 * and VM_FREELIST_ISADMA is for physical pages that are accessible by ISA
101 * DMA.
102 */
102 */
103#define VM_NFREELIST 2
103#define VM_NFREELIST 3
104#define VM_FREELIST_DEFAULT 0
104#define VM_FREELIST_DEFAULT 0
105#define VM_FREELIST_LOWMEM 1
105#define VM_FREELIST_DMA32 1
106#define VM_FREELIST_LOWMEM 2
106
107#define VM_LOWMEM_BOUNDARY (16 << 20) /* 16MB ISA DMA limit */
108
109/*
107
108#define VM_LOWMEM_BOUNDARY (16 << 20) /* 16MB ISA DMA limit */
109
110/*
111 * Always create DMA32 freelist if there is any memory above 4G.
112 * Bounce dma is extremely fragile and simultaneously intensively
113 * used.
114 */
115#define VM_DMA32_NPAGES_THRESHOLD 1
116
117/*
110 * The largest allocation size is 2MB under PAE and 4MB otherwise.
111 */
118 * The largest allocation size is 2MB under PAE and 4MB otherwise.
119 */
112#ifdef PAE
113#define VM_NFREEORDER 10
114#else
115#define VM_NFREEORDER 11
116#endif
120#define VM_NFREEORDER_PAE 10
121#define VM_NFREEORDER_NOPAE 11
122#define VM_NFREEORDER_MAX VM_NFREEORDER_NOPAE
123#define VM_NFREEORDER i386_pmap_VM_NFREEORDER
117
118/*
119 * Enable superpage reservations: 1 level.
120 */
121#ifndef VM_NRESERVLEVEL
122#define VM_NRESERVLEVEL 1
123#endif
124
125/*
126 * Level 0 reservations consist of 512 pages when PAE pagetables are
127 * used, and 1024 pages otherwise.
128 */
129#ifndef VM_LEVEL_0_ORDER
124
125/*
126 * Enable superpage reservations: 1 level.
127 */
128#ifndef VM_NRESERVLEVEL
129#define VM_NRESERVLEVEL 1
130#endif
131
132/*
133 * Level 0 reservations consist of 512 pages when PAE pagetables are
134 * used, and 1024 pages otherwise.
135 */
136#ifndef VM_LEVEL_0_ORDER
130#if defined(PAE) || defined(PAE_TABLES)
131#define VM_LEVEL_0_ORDER 9
137#define VM_LEVEL_0_ORDER_PAE 9
138#define VM_LEVEL_0_ORDER_NOPAE 10
139#define VM_LEVEL_0_ORDER_MAX VM_LEVEL_0_ORDER_NOPAE
140#define VM_LEVEL_0_ORDER i386_pmap_VM_LEVEL_0_ORDER
132#else
141#else
133#define VM_LEVEL_0_ORDER 10
142#define VM_LEVEL_0_ORDER_MAX VM_LEVEL_0_ORDER
134#endif
143#endif
135#endif
136
137/*
138 * Kernel physical load address.
139 */
140#ifndef KERNLOAD
144
145/*
146 * Kernel physical load address.
147 */
148#ifndef KERNLOAD
141#define KERNLOAD (KERNPTDI << PDRSHIFT)
149#define KERNLOAD (8 * 1024 * 1024)
142#endif /* !defined(KERNLOAD) */
143
144/*
145 * Virtual addresses of things. Derived from the page directory and
146 * page table indexes from pmap.h for precision.
147 * Because of the page that is both a PD and PT, it looks a little
148 * messy at times, but hey, we'll do anything to save a page :-)
149 */
150
150#endif /* !defined(KERNLOAD) */
151
152/*
153 * Virtual addresses of things. Derived from the page directory and
154 * page table indexes from pmap.h for precision.
155 * Because of the page that is both a PD and PT, it looks a little
156 * messy at times, but hey, we'll do anything to save a page :-)
157 */
158
151#define VM_MAX_KERNEL_ADDRESS VADDR(PTDPTDI, 0)
159#define VM_MAX_KERNEL_ADDRESS (0xffffffffU - 16 * 1024 * 1024 + 1)
152
153#define VM_MIN_KERNEL_ADDRESS 0
154
155#define KERNBASE KERNLOAD
156
157#define UPT_MAX_ADDRESS VADDR(PTDPTDI, PTDPTDI)
158#define UPT_MIN_ADDRESS VADDR(PTDPTDI, 0)
159
160
161#define VM_MIN_KERNEL_ADDRESS 0
162
163#define KERNBASE KERNLOAD
164
165#define UPT_MAX_ADDRESS VADDR(PTDPTDI, PTDPTDI)
166#define UPT_MIN_ADDRESS VADDR(PTDPTDI, 0)
167
160#define VM_MAXUSER_ADDRESS VADDR(TRPTDI, 0)
168#define VM_MAXUSER_ADDRESS (0xffffffff - 4 * 1024 * 1024 + 1)
161
162#define SHAREDPAGE (VM_MAXUSER_ADDRESS - PAGE_SIZE)
163#define USRSTACK SHAREDPAGE
164
165#define VM_MAX_ADDRESS VADDR(PTDPTDI, 0)
166#define VM_MIN_ADDRESS ((vm_offset_t)0)
167
168#define PMAP_TRM_MIN_ADDRESS VM_MAXUSER_ADDRESS
169#define PMAP_TRM_MAX_ADDRESS 0xffffffff
170
169
170#define SHAREDPAGE (VM_MAXUSER_ADDRESS - PAGE_SIZE)
171#define USRSTACK SHAREDPAGE
172
173#define VM_MAX_ADDRESS VADDR(PTDPTDI, 0)
174#define VM_MIN_ADDRESS ((vm_offset_t)0)
175
176#define PMAP_TRM_MIN_ADDRESS VM_MAXUSER_ADDRESS
177#define PMAP_TRM_MAX_ADDRESS 0xffffffff
178
171#define PMAP_MAP_LOW VADDR(LOWPTDI, 0)
179#define PMAP_MAP_LOW (4 * 1024 * 1024)
172
173/*
174 * KVA layout. The unit of the system allocation is single PDE, which
175 * represents NBPDR bytes, aligned to NBPDR. NBPDR is 4M for non-PAE
180
181/*
182 * KVA layout. The unit of the system allocation is single PDE, which
183 * represents NBPDR bytes, aligned to NBPDR. NBPDR is 4M for non-PAE
176 * page tables, and 2M for PAE. Addresses below are shown for non-PAE.
184 * page tables, and 2M for PAE, so PAE mode requires twice as many PTDs
185 * to create the same memory map as non-PAE.
177 *
178 * 0x00000000 - 0x003fffff Transient identity map of low memory (0-4M),
179 * normally disabled to catch NULL derefs.
180 * 0x00400000 - 0x007fffff Fixed mapping of the low memory (4-8M).
181 * 0x00800000 - 0xffbfffff KERNBASE (VA) == KERNLOAD (PA), kernel
182 * text + data and all kernel maps. Managed
183 * by MI VM.
184 * 0xffc00000 - 0xffdfffff Recursive kernel page table mapping, pointed
185 * to by PTmap. PTD[] recursively points
186 * into PTmap.
187 * 0xffe00000 - 0xffffffff Kernel/User mode shared PDE, contains GDT,
188 * IDT, TSS, LDT, trampoline code and stacks.
189 * Managed by pmap_trm_alloc().
190 */
191
192/*
193 * How many physical pages per kmem arena virtual page.
194 */
195#ifndef VM_KMEM_SIZE_SCALE
186 *
187 * 0x00000000 - 0x003fffff Transient identity map of low memory (0-4M),
188 * normally disabled to catch NULL derefs.
189 * 0x00400000 - 0x007fffff Fixed mapping of the low memory (4-8M).
190 * 0x00800000 - 0xffbfffff KERNBASE (VA) == KERNLOAD (PA), kernel
191 * text + data and all kernel maps. Managed
192 * by MI VM.
193 * 0xffc00000 - 0xffdfffff Recursive kernel page table mapping, pointed
194 * to by PTmap. PTD[] recursively points
195 * into PTmap.
196 * 0xffe00000 - 0xffffffff Kernel/User mode shared PDE, contains GDT,
197 * IDT, TSS, LDT, trampoline code and stacks.
198 * Managed by pmap_trm_alloc().
199 */
200
201/*
202 * How many physical pages per kmem arena virtual page.
203 */
204#ifndef VM_KMEM_SIZE_SCALE
196#define VM_KMEM_SIZE_SCALE (3)
205#define VM_KMEM_SIZE_SCALE (1)
197#endif
198
199/*
200 * Optional floor (in bytes) on the size of the kmem arena.
201 */
202#ifndef VM_KMEM_SIZE_MIN
203#define VM_KMEM_SIZE_MIN (12 * 1024 * 1024)
204#endif

--- 31 unchanged lines hidden ---
206#endif
207
208/*
209 * Optional floor (in bytes) on the size of the kmem arena.
210 */
211#ifndef VM_KMEM_SIZE_MIN
212#define VM_KMEM_SIZE_MIN (12 * 1024 * 1024)
213#endif

--- 31 unchanged lines hidden ---