Module Name: src Committed By: skrll Date: Fri May 12 06:49:31 UTC 2017
Modified Files: src/sys/arch/mips/mips: pmap_machdep.c Log Message: Sprinkle some KASSERTs To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/arch/mips/mips/pmap_machdep.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/mips/mips/pmap_machdep.c diff -u src/sys/arch/mips/mips/pmap_machdep.c:1.15 src/sys/arch/mips/mips/pmap_machdep.c:1.16 --- src/sys/arch/mips/mips/pmap_machdep.c:1.15 Fri May 12 06:43:42 2017 +++ src/sys/arch/mips/mips/pmap_machdep.c Fri May 12 06:49:31 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_machdep.c,v 1.15 2017/05/12 06:43:42 skrll Exp $ */ +/* $NetBSD: pmap_machdep.c,v 1.16 2017/05/12 06:49:31 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap_machdep.c,v 1.15 2017/05/12 06:43:42 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_machdep.c,v 1.16 2017/05/12 06:49:31 skrll Exp $"); /* * Manages physical address maps. @@ -596,6 +596,8 @@ pmap_zero_page(paddr_t dst_pa) struct vm_page * const dst_pg = PHYS_TO_VM_PAGE(dst_pa); + KASSERT(!VM_PAGEMD_EXECPAGE_P(VM_PAGE_TO_MD(dst_pg))); + const register_t dst_va = pmap_md_map_ephemeral_page(dst_pg, false, VM_PROT_READ|VM_PROT_WRITE, &dst_pte); @@ -625,6 +627,7 @@ pmap_copy_page(paddr_t src_pa, paddr_t d VM_PROT_READ, &src_pte); KASSERT(VM_PAGE_TO_MD(dst_pg)->mdpg_first.pv_pmap == NULL); + KASSERT(!VM_PAGEMD_EXECPAGE_P(VM_PAGE_TO_MD(dst_pg))); const register_t dst_va = pmap_md_map_ephemeral_page(dst_pg, false, VM_PROT_READ|VM_PROT_WRITE, &dst_pte); @@ -698,7 +701,10 @@ pmap_md_map_poolpage(paddr_t pa, size_t pv_entry_t pv = &mdpg->mdpg_first; vaddr_t last_va = trunc_page(pv->pv_va); + KASSERT(len == PAGE_SIZE || last_va == pa); KASSERT(pv->pv_pmap == NULL); + KASSERT(pv->pv_next == NULL); + KASSERT(!VM_PAGEMD_EXECPAGE_P(mdpg)); /* * If this page was last mapped with an address that @@ -727,6 +733,8 @@ pmap_md_unmap_poolpage(vaddr_t va, size_ struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg); KASSERT(VM_PAGEMD_CACHED_P(mdpg)); + KASSERT(!VM_PAGEMD_EXECPAGE_P(mdpg)); + pv_entry_t pv = &mdpg->mdpg_first; /* Note last mapped address for future color check */ @@ -741,6 +749,8 @@ pmap_md_unmap_poolpage(vaddr_t va, size_ pv->pv_va = va; } #endif + KASSERT(pv->pv_pmap == NULL); + KASSERT(pv->pv_next == NULL); return pa; } @@ -911,11 +921,14 @@ pmap_md_vca_add(struct vm_page *pg, vadd if (__predict_true(!mips_cache_badalias(pv->pv_va, va))) { return false; } + KASSERT(pv->pv_pmap != NULL); + bool ret = false; for (pv_entry_t npv = pv; npv && npv->pv_pmap;) { if (npv->pv_va & PV_KENTER) { npv = npv->pv_next; continue; } + ret = true; vaddr_t nva = trunc_page(npv->pv_va); pmap_t npm = npv->pv_pmap; VM_PAGEMD_PVLIST_UNLOCK(mdpg); @@ -925,7 +938,9 @@ pmap_md_vca_add(struct vm_page *pg, vadd npv = pv; } - return true; + KASSERT(ret == true); + + return ret; #else /* !PMAP_NO_PV_UNCACHED */ if (VM_PAGEMD_CACHED_P(mdpg)) { /*