Module Name: src Committed By: yamt Date: Sat Feb 5 13:50:09 UTC 2011
Modified Files: src/sys/arch/x86/x86: pmap.c Log Message: assertions To generate a diff of this commit: cvs rdiff -u -r1.115 -r1.116 src/sys/arch/x86/x86/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/x86/x86/pmap.c diff -u src/sys/arch/x86/x86/pmap.c:1.115 src/sys/arch/x86/x86/pmap.c:1.116 --- src/sys/arch/x86/x86/pmap.c:1.115 Tue Feb 1 20:20:19 2011 +++ src/sys/arch/x86/x86/pmap.c Sat Feb 5 13:50:08 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.115 2011/02/01 20:20:19 chuck Exp $ */ +/* $NetBSD: pmap.c,v 1.116 2011/02/05 13:50:08 yamt Exp $ */ /* * Copyright (c) 2007 Manuel Bouyer. @@ -142,7 +142,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.115 2011/02/01 20:20:19 chuck Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.116 2011/02/05 13:50:08 yamt Exp $"); #include "opt_user_ldt.h" #include "opt_lockdebug.h" @@ -1905,6 +1905,7 @@ static inline void pmap_freepage(struct pmap *pmap, struct vm_page *ptp, int level) { + lwp_t *l; int lidx; struct uvm_object *obj; @@ -1920,8 +1921,10 @@ pmap->pm_ptphint[lidx] = TAILQ_FIRST(&obj->memq); ptp->wire_count = 0; uvm_pagerealloc(ptp, NULL, 0); - VM_PAGE_TO_PP(ptp)->pp_link = curlwp->l_md.md_gc_ptp; - curlwp->l_md.md_gc_ptp = ptp; + l = curlwp; + KASSERT((l->l_pflag & LP_INTR) == 0); + VM_PAGE_TO_PP(ptp)->pp_link = l->l_md.md_gc_ptp; + l->l_md.md_gc_ptp = ptp; if (lidx != 0) mutex_exit(&obj->vmobjlock); } @@ -4676,7 +4679,8 @@ * but not from interrupt context. */ if (l->l_md.md_gc_ptp != NULL) { - if (cpu_intr_p() || (l->l_pflag & LP_INTR) != 0) { + KASSERT((l->l_pflag & LP_INTR) == 0); + if (cpu_intr_p()) { return; }