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 --- |