Block some interrupts during the call to pmap_zero_page in

vm_page_zero_idle. This fixes some occurences of the problem
reported in PR kern/3216: "panic: pmap_zero_page: CMAP busy"
This commit is contained in:
tegge 1997-06-25 19:49:45 +00:00
parent fef65421d3
commit 0b785f1970
2 changed files with 6 additions and 2 deletions

View File

@ -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.80 1997/05/07 20:19:18 peter Exp $
* $Id: vm_machdep.c,v 1.81 1997/06/22 16:03:40 peter Exp $
*/
#include "npx.h"
@ -921,7 +921,9 @@ vm_page_zero_idle()
--(*vm_page_queues[m->queue].lcnt);
TAILQ_REMOVE(vm_page_queues[m->queue].pl, m, pageq);
splx(s);
(void)splvm();
pmap_zero_page(VM_PAGE_TO_PHYS(m));
splx(s);
(void)splvm();
m->queue = PQ_ZERO + m->pc;
++(*vm_page_queues[m->queue].lcnt);

View File

@ -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.80 1997/05/07 20:19:18 peter Exp $
* $Id: vm_machdep.c,v 1.81 1997/06/22 16:03:40 peter Exp $
*/
#include "npx.h"
@ -921,7 +921,9 @@ vm_page_zero_idle()
--(*vm_page_queues[m->queue].lcnt);
TAILQ_REMOVE(vm_page_queues[m->queue].pl, m, pageq);
splx(s);
(void)splvm();
pmap_zero_page(VM_PAGE_TO_PHYS(m));
splx(s);
(void)splvm();
m->queue = PQ_ZERO + m->pc;
++(*vm_page_queues[m->queue].lcnt);