Module Name: src Committed By: ad Date: Tue Mar 17 22:38:14 UTC 2020
Modified Files: src/sys/arch/x86/x86: pmap.c Log Message: - Change some expensive checks DEBUG -> DIAGNOSTIC. - Mark some small functions inline. - Add an assertion. To generate a diff of this commit: cvs rdiff -u -r1.375 -r1.376 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.375 src/sys/arch/x86/x86/pmap.c:1.376 --- src/sys/arch/x86/x86/pmap.c:1.375 Tue Mar 17 22:37:05 2020 +++ src/sys/arch/x86/x86/pmap.c Tue Mar 17 22:38:14 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.375 2020/03/17 22:37:05 ad Exp $ */ +/* $NetBSD: pmap.c,v 1.376 2020/03/17 22:38:14 ad Exp $ */ /* * Copyright (c) 2008, 2010, 2016, 2017, 2019, 2020 The NetBSD Foundation, Inc. @@ -130,7 +130,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.375 2020/03/17 22:37:05 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.376 2020/03/17 22:38:14 ad Exp $"); #include "opt_user_ldt.h" #include "opt_lockdebug.h" @@ -509,7 +509,7 @@ pmap_stats_update_bypte(struct pmap *pma /* * ptp_to_pmap: lookup pmap by ptp */ -static struct pmap * +static inline struct pmap * ptp_to_pmap(struct vm_page *ptp) { struct pmap *pmap; @@ -556,7 +556,7 @@ pv_pte_embedded(struct pmap_page *pp) /* * pv_pte_first, pv_pte_next: PV list iterator. */ -static struct pv_pte * +static inline struct pv_pte * pv_pte_first(struct pmap_page *pp) { @@ -567,7 +567,7 @@ pv_pte_first(struct pmap_page *pp) return pve_to_pvpte(LIST_FIRST(&pp->pp_pvlist)); } -static struct pv_pte * +static inline struct pv_pte * pv_pte_next(struct pmap_page *pp, struct pv_pte *pvpte) { @@ -589,7 +589,7 @@ pmap_is_curpmap(struct pmap *pmap) return ((pmap == pmap_kernel()) || (pmap == curcpu()->ci_pmap)); } -void +inline void pmap_reference(struct pmap *pmap) { @@ -1947,7 +1947,7 @@ static void pmap_check_pv(struct pmap *pmap, struct vm_page *ptp, struct pmap_page *pp, vaddr_t va, bool tracked) { -#ifdef DIAGNOSTIC /* XXX too slow make this DEBUG before April 2020 */ +#ifdef DEBUG struct pv_pte *pvpte; PMAP_CHECK_PP(pp); @@ -4157,6 +4157,7 @@ pmap_pp_remove(struct pmap_page *pp, pad */ ptp = pvpte->pte_ptp; pmap = ptp_to_pmap(ptp); + KASSERT(pmap->pm_obj[0].uo_refs > 0); if (ptp != NULL) { pmap_reference(pmap); } @@ -4188,7 +4189,7 @@ pmap_pp_remove(struct pmap_page *pp, pad KASSERTMSG(ptp == NULL || ptp->wire_count > 1, "va %lx pmap %p ptp %p is empty", va, pmap, ptp); -#ifdef DIAGNOSTIC /* XXX Too expensive make DEBUG before April 2020 */ +#ifdef DEBUG pmap_check_pv(pmap, ptp, pp, pvpte->pte_va, true); rb_tree_t *tree = (ptp != NULL ? &VM_PAGE_TO_PP(ptp)->pp_rb : &pmap_kernel_rb);