summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorkato <kato@FreeBSD.org>2000-12-16 03:25:08 +0000
committerkato <kato@FreeBSD.org>2000-12-16 03:25:08 +0000
commit336f3a8924117b1567523aa8cbd07b7c7b48605e (patch)
tree742466380053d6e1d45ef40bbffe9d4bfb8eb98e /sys
parentc62e8f41063be37c928407d14a5c173f6440f018 (diff)
downloadFreeBSD-src-336f3a8924117b1567523aa8cbd07b7c7b48605e.zip
FreeBSD-src-336f3a8924117b1567523aa8cbd07b7c7b48605e.tar.gz
Merged from sys/i386/i386/machdep.c revision 1.425.
Diffstat (limited to 'sys')
-rw-r--r--sys/pc98/i386/machdep.c19
-rw-r--r--sys/pc98/pc98/machdep.c19
2 files changed, 30 insertions, 8 deletions
diff --git a/sys/pc98/i386/machdep.c b/sys/pc98/i386/machdep.c
index 8158e79..9b1938b 100644
--- a/sys/pc98/i386/machdep.c
+++ b/sys/pc98/i386/machdep.c
@@ -274,6 +274,7 @@ cpu_startup(dummy)
vm_size_t size = 0;
int firstaddr;
vm_offset_t minaddr;
+ int physmem_est;
if (boothowto & RB_VERBOSE)
bootverbose++;
@@ -343,6 +344,16 @@ again:
valloc(callwheel, struct callout_tailq, callwheelsize);
/*
+ * Discount the physical memory larger than the size of kernel_map
+ * to avoid eating up all of KVA space.
+ */
+ if (kernel_map->first_free == NULL) {
+ printf("Warning: no free entries in kernel_map.\n");
+ physmem_est = physmem;
+ } else
+ physmem_est = min(physmem, kernel_map->max_offset - kernel_map->min_offset);
+
+ /*
* The nominal buffer size (and minimum KVA allocation) is BKVASIZE.
* For the first 64MB of ram nominally allocate sufficient buffers to
* cover 1/4 of our ram. Beyond the first 64MB allocate additional
@@ -354,10 +365,10 @@ again:
int factor = 4 * BKVASIZE / PAGE_SIZE;
nbuf = 50;
- if (physmem > 1024)
- nbuf += min((physmem - 1024) / factor, 16384 / factor);
- if (physmem > 16384)
- nbuf += (physmem - 16384) * 2 / (factor * 5);
+ if (physmem_est > 1024)
+ nbuf += min((physmem_est - 1024) / factor, 16384 / factor);
+ if (physmem_est > 16384)
+ nbuf += (physmem_est - 16384) * 2 / (factor * 5);
}
/*
diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c
index 8158e79..9b1938b 100644
--- a/sys/pc98/pc98/machdep.c
+++ b/sys/pc98/pc98/machdep.c
@@ -274,6 +274,7 @@ cpu_startup(dummy)
vm_size_t size = 0;
int firstaddr;
vm_offset_t minaddr;
+ int physmem_est;
if (boothowto & RB_VERBOSE)
bootverbose++;
@@ -343,6 +344,16 @@ again:
valloc(callwheel, struct callout_tailq, callwheelsize);
/*
+ * Discount the physical memory larger than the size of kernel_map
+ * to avoid eating up all of KVA space.
+ */
+ if (kernel_map->first_free == NULL) {
+ printf("Warning: no free entries in kernel_map.\n");
+ physmem_est = physmem;
+ } else
+ physmem_est = min(physmem, kernel_map->max_offset - kernel_map->min_offset);
+
+ /*
* The nominal buffer size (and minimum KVA allocation) is BKVASIZE.
* For the first 64MB of ram nominally allocate sufficient buffers to
* cover 1/4 of our ram. Beyond the first 64MB allocate additional
@@ -354,10 +365,10 @@ again:
int factor = 4 * BKVASIZE / PAGE_SIZE;
nbuf = 50;
- if (physmem > 1024)
- nbuf += min((physmem - 1024) / factor, 16384 / factor);
- if (physmem > 16384)
- nbuf += (physmem - 16384) * 2 / (factor * 5);
+ if (physmem_est > 1024)
+ nbuf += min((physmem_est - 1024) / factor, 16384 / factor);
+ if (physmem_est > 16384)
+ nbuf += (physmem_est - 16384) * 2 / (factor * 5);
}
/*
OpenPOWER on IntegriCloud