Page MenuHomeFreeBSD

D24102.id69733.diff
No OneTemporary

D24102.id69733.diff

Index: sys/powerpc/aim/mmu_oea64.c
===================================================================
--- sys/powerpc/aim/mmu_oea64.c
+++ sys/powerpc/aim/mmu_oea64.c
@@ -65,6 +65,7 @@
#include <sys/systm.h>
#include <sys/vmmeter.h>
#include <sys/smp.h>
+#include <sys/reboot.h>
#include <sys/kdb.h>
@@ -184,10 +185,12 @@
static struct pvo_entry *moea64_bpvo_pool;
static int moea64_bpvo_pool_index = 0;
-static int moea64_bpvo_pool_size = 327680;
+static int moea64_bpvo_pool_size = 0;
SYSCTL_INT(_machdep, OID_AUTO, moea64_allocated_bpvo_entries, CTLFLAG_RD,
&moea64_bpvo_pool_index, 0, "");
+#define BPVO_POOL_SIZE 327680 /* Sensible historical default value */
+#define BPVO_POOL_EXPANSION_FACTOR 3
#define VSID_NBPW (sizeof(u_int32_t) * 8)
#ifdef __powerpc64__
#define NVSIDS (NPMAPS * 16)
@@ -916,6 +919,20 @@
* Initialise the bootstrap pvo pool.
*/
TUNABLE_INT_FETCH("machdep.moea64_bpvo_pool_size", &moea64_bpvo_pool_size);
+ if (moea64_bpvo_pool_size == 0) {
+ if (!hw_direct_map)
+ moea64_bpvo_pool_size = ((ptoa((uintmax_t)physmem) * sizeof(struct vm_page)) /
+ (PAGE_SIZE * PAGE_SIZE)) * BPVO_POOL_EXPANSION_FACTOR;
+ else
+ moea64_bpvo_pool_size = BPVO_POOL_SIZE;
+ }
+
+ if (boothowto & RB_VERBOSE) {
+ printf("mmu_oea64: bpvo pool entries = %d, bpvo pool size = %ju MB\n",
+ moea64_bpvo_pool_size,
+ moea64_bpvo_pool_size*sizeof(struct pvo_entry) / 1048576);
+ }
+
moea64_bpvo_pool = (struct pvo_entry *)moea64_bootstrap_alloc(
moea64_bpvo_pool_size*sizeof(struct pvo_entry), PAGE_SIZE);
moea64_bpvo_pool_index = 0;

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 26, 9:00 AM (11 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15603103
Default Alt Text
D24102.id69733.diff (1 KB)

Event Timeline