aboutsummaryrefslogtreecommitdiff
path: root/sys/i386
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/pmap.c9
-rw-r--r--sys/i386/include/vmparam.h8
2 files changed, 16 insertions, 1 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 851372430e0f..68b44e955a11 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -375,6 +375,15 @@ pmap_bootstrap(vm_paddr_t firstaddr)
int i;
/*
+ * Add a physical memory segment (vm_phys_seg) corresponding to the
+ * preallocated kernel page table pages so that vm_page structures
+ * representing these pages will be created. The vm_page structures
+ * are required for promotion of the corresponding kernel virtual
+ * addresses to superpage mappings.
+ */
+ vm_phys_add_seg(KPTphys, KPTphys + ptoa(nkpt));
+
+ /*
* Initialize the first available kernel virtual address. However,
* using "firstaddr" may waste a few pages of the kernel virtual
* address space, because locore may not have mapped every physical
diff --git a/sys/i386/include/vmparam.h b/sys/i386/include/vmparam.h
index 975b30231b62..5dc56692adc8 100644
--- a/sys/i386/include/vmparam.h
+++ b/sys/i386/include/vmparam.h
@@ -64,9 +64,15 @@
#endif
/*
- * The physical address space is densely populated.
+ * Choose between DENSE and SPARSE based on whether lower execution time or
+ * lower kernel address space consumption is desired. Under PAE, kernel
+ * address space is often in short supply.
*/
+#ifdef PAE
+#define VM_PHYSSEG_SPARSE
+#else
#define VM_PHYSSEG_DENSE
+#endif
/*
* The number of PHYSSEG entries must be one greater than the number