diff options
author | tegge <tegge@FreeBSD.org> | 1998-11-27 01:14:21 +0000 |
---|---|---|
committer | tegge <tegge@FreeBSD.org> | 1998-11-27 01:14:21 +0000 |
commit | 03c8e15ce9ae9d45f6e03a6f9f202f076ce39c5d (patch) | |
tree | c3c6b0b2a7c79e9755ef10d1e6698ebe610407ef | |
parent | 0e6b1a9b50acdada04dfbc36ec9aa2e556336029 (diff) | |
download | FreeBSD-src-03c8e15ce9ae9d45f6e03a6f9f202f076ce39c5d.zip FreeBSD-src-03c8e15ce9ae9d45f6e03a6f9f202f076ce39c5d.tar.gz |
Don't forget to update the pmap associated with aio daemons when adding
new page directory entries for a growing kernel virtual address space.
-rw-r--r-- | sys/amd64/amd64/pmap.c | 9 | ||||
-rw-r--r-- | sys/i386/i386/pmap.c | 9 | ||||
-rw-r--r-- | sys/kern/vfs_aio.c | 4 |
3 files changed, 18 insertions, 4 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 7b684bd..87ffff7 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $Id: pmap.c,v 1.212 1998/11/08 02:26:14 msmith Exp $ + * $Id: pmap.c,v 1.213 1998/11/24 20:25:52 eivind Exp $ */ /* @@ -189,6 +189,9 @@ struct msgbuf *msgbufp=0; */ struct ppro_vmtrr PPro_vmtrr[NPPROVMTRR]; +/* AIO support */ +extern struct vmspace *aiovmspace; + #ifdef SMP extern char prv_CPAGE1[], prv_CPAGE2[], prv_CPAGE3[]; extern pt_entry_t *prv_CMAP1, *prv_CMAP2, *prv_CMAP3; @@ -1568,6 +1571,10 @@ pmap_growkernel(vm_offset_t addr) *pmap_pde(pmap, kernel_vm_end) = newpdir; } } + if (aiovmspace != NULL) { + pmap = &aiovmspace->vm_pmap; + *pmap_pde(pmap, kernel_vm_end) = newpdir; + } *pmap_pde(kernel_pmap, kernel_vm_end) = newpdir; kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1); } diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 7b684bd..87ffff7 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $Id: pmap.c,v 1.212 1998/11/08 02:26:14 msmith Exp $ + * $Id: pmap.c,v 1.213 1998/11/24 20:25:52 eivind Exp $ */ /* @@ -189,6 +189,9 @@ struct msgbuf *msgbufp=0; */ struct ppro_vmtrr PPro_vmtrr[NPPROVMTRR]; +/* AIO support */ +extern struct vmspace *aiovmspace; + #ifdef SMP extern char prv_CPAGE1[], prv_CPAGE2[], prv_CPAGE3[]; extern pt_entry_t *prv_CMAP1, *prv_CMAP2, *prv_CMAP3; @@ -1568,6 +1571,10 @@ pmap_growkernel(vm_offset_t addr) *pmap_pde(pmap, kernel_vm_end) = newpdir; } } + if (aiovmspace != NULL) { + pmap = &aiovmspace->vm_pmap; + *pmap_pde(pmap, kernel_vm_end) = newpdir; + } *pmap_pde(kernel_pmap, kernel_vm_end) = newpdir; kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1); } diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c index ffa6912..582eb96 100644 --- a/sys/kern/vfs_aio.c +++ b/sys/kern/vfs_aio.c @@ -13,7 +13,7 @@ * bad that happens because of using this software isn't the responsibility * of the author. This software is distributed AS-IS. * - * $Id: vfs_aio.c,v 1.33 1998/08/17 17:28:10 bde Exp $ + * $Id: vfs_aio.c,v 1.34 1998/10/25 17:44:52 phk Exp $ */ /* @@ -245,7 +245,7 @@ static vm_zone_t kaio_zone=0, aiop_zone=0, /* * Single AIOD vmspace shared amongst all of them */ -static struct vmspace *aiovmspace = NULL; +struct vmspace *aiovmspace = NULL; /* * Startup initialization |