diff options
| -rw-r--r-- | sys/amd64/amd64/machdep.c | 31 | ||||
| -rw-r--r-- | sys/amd64/amd64/vm_machdep.c | 13 | ||||
| -rw-r--r-- | sys/i386/i386/machdep.c | 31 | ||||
| -rw-r--r-- | sys/i386/i386/vm_machdep.c | 13 |
4 files changed, 50 insertions, 38 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 9139c63de269..53c1157dc911 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $Id: machdep.c,v 1.283 1998/01/24 02:00:47 dyson Exp $ + * $Id: machdep.c,v 1.284 1998/01/25 12:01:16 kato Exp $ */ #include "apm.h" @@ -279,6 +279,20 @@ again: (name) = (type *)v; v = (caddr_t)((name)+(num)) #define valloclim(name, type, num, lim) \ (name) = (type *)v; v = (caddr_t)((lim) = ((name)+(num))) + +#ifdef BOUNCE_BUFFERS + /* + * If there is more than 16MB of memory, allocate some bounce buffers + */ + if (Maxmem > 4096) { + if (bouncepages == 0) { + bouncepages = 64; + } + v = (caddr_t)((vm_offset_t)round_page(v)); + valloc(bouncememory, char, bouncepages * PAGE_SIZE); + } +#endif + valloc(callout, struct callout, ncallout); valloc(callwheel, struct callout_tailq, callwheelsize); #ifdef SYSVSHM @@ -307,21 +321,6 @@ again: valloc(swbuf, struct buf, nswbuf); valloc(buf, struct buf, nbuf); -#ifdef BOUNCE_BUFFERS - /* - * If there is more than 16MB of memory, allocate some bounce buffers - */ - if (Maxmem > 4096) { - if (bouncepages == 0) { - bouncepages = 64; - bouncepages += ((Maxmem - 4096) / 2048) * 32; - if (bouncepages > 128) - bouncepages = 128; - } - v = (caddr_t)((vm_offset_t)round_page(v)); - valloc(bouncememory, char, bouncepages * PAGE_SIZE); - } -#endif /* * End of first pass, size has been calculated so allocate memory diff --git a/sys/amd64/amd64/vm_machdep.c b/sys/amd64/amd64/vm_machdep.c index 9d70061919df..5f0d7b3adc03 100644 --- a/sys/amd64/amd64/vm_machdep.c +++ b/sys/amd64/amd64/vm_machdep.c @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $Id: vm_machdep.c,v 1.95 1998/01/19 04:16:16 tegge Exp $ + * $Id: vm_machdep.c,v 1.96 1998/01/22 17:29:32 dyson Exp $ */ #include "npx.h" @@ -535,8 +535,15 @@ vm_bounce_init() for(i=0;i<bouncepages;i++) { vm_offset_t pa; - if( (pa = pmap_kextract((vm_offset_t) bouncememory + i * PAGE_SIZE)) >= SIXTEENMEG) - panic("bounce memory out of range"); + if( (pa = pmap_kextract((vm_offset_t) bouncememory + i * PAGE_SIZE)) >= SIXTEENMEG) { + printf("vm_bounce_init: bounce memory out of range -- bounce disabled\n"); + free(bounceallocarray, M_TEMP); + bounceallocarray = NULL; + free(bouncepa, M_TEMP); + bouncepa = NULL; + bouncepages = 0; + break; + } if( pa == 0) panic("bounce memory not resident"); bouncepa[i] = pa; diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 9139c63de269..53c1157dc911 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $Id: machdep.c,v 1.283 1998/01/24 02:00:47 dyson Exp $ + * $Id: machdep.c,v 1.284 1998/01/25 12:01:16 kato Exp $ */ #include "apm.h" @@ -279,6 +279,20 @@ again: (name) = (type *)v; v = (caddr_t)((name)+(num)) #define valloclim(name, type, num, lim) \ (name) = (type *)v; v = (caddr_t)((lim) = ((name)+(num))) + +#ifdef BOUNCE_BUFFERS + /* + * If there is more than 16MB of memory, allocate some bounce buffers + */ + if (Maxmem > 4096) { + if (bouncepages == 0) { + bouncepages = 64; + } + v = (caddr_t)((vm_offset_t)round_page(v)); + valloc(bouncememory, char, bouncepages * PAGE_SIZE); + } +#endif + valloc(callout, struct callout, ncallout); valloc(callwheel, struct callout_tailq, callwheelsize); #ifdef SYSVSHM @@ -307,21 +321,6 @@ again: valloc(swbuf, struct buf, nswbuf); valloc(buf, struct buf, nbuf); -#ifdef BOUNCE_BUFFERS - /* - * If there is more than 16MB of memory, allocate some bounce buffers - */ - if (Maxmem > 4096) { - if (bouncepages == 0) { - bouncepages = 64; - bouncepages += ((Maxmem - 4096) / 2048) * 32; - if (bouncepages > 128) - bouncepages = 128; - } - v = (caddr_t)((vm_offset_t)round_page(v)); - valloc(bouncememory, char, bouncepages * PAGE_SIZE); - } -#endif /* * End of first pass, size has been calculated so allocate memory diff --git a/sys/i386/i386/vm_machdep.c b/sys/i386/i386/vm_machdep.c index 9d70061919df..5f0d7b3adc03 100644 --- a/sys/i386/i386/vm_machdep.c +++ b/sys/i386/i386/vm_machdep.c @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $Id: vm_machdep.c,v 1.95 1998/01/19 04:16:16 tegge Exp $ + * $Id: vm_machdep.c,v 1.96 1998/01/22 17:29:32 dyson Exp $ */ #include "npx.h" @@ -535,8 +535,15 @@ vm_bounce_init() for(i=0;i<bouncepages;i++) { vm_offset_t pa; - if( (pa = pmap_kextract((vm_offset_t) bouncememory + i * PAGE_SIZE)) >= SIXTEENMEG) - panic("bounce memory out of range"); + if( (pa = pmap_kextract((vm_offset_t) bouncememory + i * PAGE_SIZE)) >= SIXTEENMEG) { + printf("vm_bounce_init: bounce memory out of range -- bounce disabled\n"); + free(bounceallocarray, M_TEMP); + bounceallocarray = NULL; + free(bouncepa, M_TEMP); + bouncepa = NULL; + bouncepages = 0; + break; + } if( pa == 0) panic("bounce memory not resident"); bouncepa[i] = pa; |
