CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Apr 18 12:16:23 UTC 2024 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h Log Message: Fix types in pmap_page_clear_attributes so that the top bits of the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no chance of completing if any of the top bits is set. Update pmap_page_set_attributes for consistency. An ATF test run completed for me with this fix. port-riscv/58006: ATF tests no longer complete on riscv-riscv64 To generate a diff of this commit: cvs rdiff -u -r1.77 -r1.78 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.26 -r1.27 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.77 src/sys/uvm/pmap/pmap.c:1.78 --- src/sys/uvm/pmap/pmap.c:1.77 Sat Mar 23 08:31:15 2024 +++ src/sys/uvm/pmap/pmap.c Thu Apr 18 12:16:23 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.77 2024/03/23 08:31:15 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.78 2024/04/18 12:16:23 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.77 2024/03/23 08:31:15 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.78 2024/04/18 12:16:23 skrll Exp $"); /* * Manages physical address maps. @@ -415,21 +415,21 @@ pmap_addr_range_check(pmap_t pmap, vaddr */ bool -pmap_page_clear_attributes(struct vm_page_md *mdpg, u_int clear_attributes) +pmap_page_clear_attributes(struct vm_page_md *mdpg, u_long clear_attributes) { - volatile unsigned long * const attrp = >mdpg_attrs; + volatile u_long * const attrp = >mdpg_attrs; #ifdef MULTIPROCESSOR for (;;) { - u_int old_attr = *attrp; + u_long old_attr = *attrp; if ((old_attr & clear_attributes) == 0) return false; - u_int new_attr = old_attr & ~clear_attributes; + u_long new_attr = old_attr & ~clear_attributes; if (old_attr == atomic_cas_ulong(attrp, old_attr, new_attr)) return true; } #else - unsigned long old_attr = *attrp; + u_long old_attr = *attrp; if ((old_attr & clear_attributes) == 0) return false; *attrp &= ~clear_attributes; @@ -438,7 +438,7 @@ pmap_page_clear_attributes(struct vm_pag } void -pmap_page_set_attributes(struct vm_page_md *mdpg, u_int set_attributes) +pmap_page_set_attributes(struct vm_page_md *mdpg, u_long set_attributes) { #ifdef MULTIPROCESSOR atomic_or_ulong(>mdpg_attrs, set_attributes); Index: src/sys/uvm/pmap/pmap.h diff -u src/sys/uvm/pmap/pmap.h:1.26 src/sys/uvm/pmap/pmap.h:1.27 --- src/sys/uvm/pmap/pmap.h:1.26 Thu Nov 3 18:55:07 2022 +++ src/sys/uvm/pmap/pmap.h Thu Apr 18 12:16:23 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.26 2022/11/03 18:55:07 skrll Exp $ */ +/* $NetBSD: pmap.h,v 1.27 2024/04/18 12:16:23 skrll Exp $ */ /* * Copyright (c) 1992, 1993 @@ -296,8 +296,8 @@ extern pmap_segtab_t pmap_kern_segtab; bool pmap_remove_all(pmap_t); void pmap_set_modified(paddr_t); -bool pmap_page_clear_attributes(struct vm_page_md *, u_int); -void pmap_page_set_attributes(struct vm_page_md *, u_int); +bool pmap_page_clear_attributes(struct vm_page_md *, u_long); +void pmap_page_set_attributes(struct vm_page_md *, u_long); void pmap_pvlist_lock_init(size_t); #ifdef PMAP_VIRTUAL_CACHE_ALIASES void pmap_page_cache(struct vm_page_md *, bool);
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Apr 18 12:16:23 UTC 2024 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h Log Message: Fix types in pmap_page_clear_attributes so that the top bits of the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no chance of completing if any of the top bits is set. Update pmap_page_set_attributes for consistency. An ATF test run completed for me with this fix. port-riscv/58006: ATF tests no longer complete on riscv-riscv64 To generate a diff of this commit: cvs rdiff -u -r1.77 -r1.78 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.26 -r1.27 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Mar 23 08:31:15 UTC 2024 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Default pmap_stealdebug to false To generate a diff of this commit: cvs rdiff -u -r1.76 -r1.77 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.76 src/sys/uvm/pmap/pmap.c:1.77 --- src/sys/uvm/pmap/pmap.c:1.76 Tue Mar 5 13:16:29 2024 +++ src/sys/uvm/pmap/pmap.c Sat Mar 23 08:31:15 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.76 2024/03/05 13:16:29 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.77 2024/03/23 08:31:15 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.76 2024/03/05 13:16:29 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.77 2024/03/23 08:31:15 skrll Exp $"); /* * Manages physical address maps. @@ -367,7 +367,7 @@ kmutex_t pmap_pvlist_mutex __cacheline_a #ifdef DEBUG -bool pmap_stealdebug = true; +bool pmap_stealdebug = false; #define DPRINTF(...) \ do { if (pmap_stealdebug) { printf(__VA_ARGS__); } } while (false)
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Mar 23 08:31:15 UTC 2024 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Default pmap_stealdebug to false To generate a diff of this commit: cvs rdiff -u -r1.76 -r1.77 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Tue Mar 5 13:16:29 UTC 2024 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Change the PMAP_STEAL_MEMORY debug output from aprint_debug. The new printfs are conditional on pmap_stealdebug and the DEBUG compile option. The former defaults to true, but can be changed at a boot -d ddb prompt. To generate a diff of this commit: cvs rdiff -u -r1.75 -r1.76 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.75 src/sys/uvm/pmap/pmap.c:1.76 --- src/sys/uvm/pmap/pmap.c:1.75 Sun Feb 26 07:13:55 2023 +++ src/sys/uvm/pmap/pmap.c Tue Mar 5 13:16:29 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.75 2023/02/26 07:13:55 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.76 2024/03/05 13:16:29 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.75 2023/02/26 07:13:55 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.76 2024/03/05 13:16:29 skrll Exp $"); /* * Manages physical address maps. @@ -366,6 +366,12 @@ kmutex_t pmap_pvlist_mutex __cacheline_a */ #ifdef DEBUG + +bool pmap_stealdebug = true; + +#define DPRINTF(...) \ +do { if (pmap_stealdebug) { printf(__VA_ARGS__); } } while (false) + static inline void pmap_asid_check(pmap_t pm, const char *func) { @@ -378,6 +384,10 @@ pmap_asid_check(pmap_t pm, const char *f panic("%s: inconsistency for active TLB update: %u <-> %u", func, asid, pai->pai_asid); } +#else + +#define DPRINTF(...) __nothing + #endif static void @@ -564,7 +574,7 @@ pmap_steal_memory(vsize_t size, vaddr_t size = round_page(size); npgs = atop(size); - aprint_debug("%s: need %zu pages\n", __func__, npgs); + DPRINTF("%s: need %zu pages\n", __func__, npgs); for (uvm_physseg_t bank = uvm_physseg_get_first(); uvm_physseg_valid_p(bank); @@ -573,19 +583,19 @@ pmap_steal_memory(vsize_t size, vaddr_t if (uvm.page_init_done == true) panic("pmap_steal_memory: called _after_ bootstrap"); - aprint_debug("%s: seg %"PRIxPHYSSEG": %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR"\n", + DPRINTF("%s: seg %"PRIxPHYSSEG": %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR"\n", __func__, bank, uvm_physseg_get_avail_start(bank), uvm_physseg_get_start(bank), uvm_physseg_get_avail_end(bank), uvm_physseg_get_end(bank)); if (uvm_physseg_get_avail_start(bank) != uvm_physseg_get_start(bank) || uvm_physseg_get_avail_start(bank) >= uvm_physseg_get_avail_end(bank)) { - aprint_debug("%s: seg %"PRIxPHYSSEG": bad start\n", __func__, bank); + DPRINTF("%s: seg %"PRIxPHYSSEG": bad start\n", __func__, bank); continue; } if (uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank) < npgs) { - aprint_debug("%s: seg %"PRIxPHYSSEG": too small for %zu pages\n", + DPRINTF("%s: seg %"PRIxPHYSSEG": too small for %zu pages\n", __func__, bank, npgs); continue; } @@ -614,7 +624,7 @@ pmap_steal_memory(vsize_t size, vaddr_t pa = ptoa(uvm_physseg_get_start(bank)); uvm_physseg_unplug(atop(pa), npgs); - aprint_debug("%s: seg %"PRIxPHYSSEG": %zu pages stolen (%#"PRIxPADDR" left)\n", + DPRINTF("%s: seg %"PRIxPHYSSEG": %zu pages stolen (%#"PRIxPADDR" left)\n", __func__, bank, npgs, VM_PHYSMEM_SPACE(bank)); va = pmap_md_map_poolpage(pa, size);
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Tue Mar 5 13:16:29 UTC 2024 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Change the PMAP_STEAL_MEMORY debug output from aprint_debug. The new printfs are conditional on pmap_stealdebug and the DEBUG compile option. The former defaults to true, but can be changed at a boot -d ddb prompt. To generate a diff of this commit: cvs rdiff -u -r1.75 -r1.76 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Jan 1 16:56:30 UTC 2024 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Appease KASSERTs for zero ASID CPUs (I mean harts) To generate a diff of this commit: cvs rdiff -u -r1.61 -r1.62 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Fri Oct 6 08:48:16 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c pmap_tlb.h Log Message: Support CPUs that might not have ASIDs in the common pmap. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/uvm/pmap/pmap_tlb.c cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap_tlb.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Fri Oct 6 08:48:16 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c pmap_tlb.h Log Message: Support CPUs that might not have ASIDs in the common pmap. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/uvm/pmap/pmap_tlb.c cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap_tlb.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.60 src/sys/uvm/pmap/pmap_tlb.c:1.61 --- src/sys/uvm/pmap/pmap_tlb.c:1.60 Tue Aug 1 08:17:26 2023 +++ src/sys/uvm/pmap/pmap_tlb.c Fri Oct 6 08:48:16 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.60 2023/08/01 08:17:26 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.61 2023/10/06 08:48:16 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.60 2023/08/01 08:17:26 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.61 2023/10/06 08:48:16 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -830,6 +830,22 @@ pmap_tlb_asid_alloc(struct pmap_tlb_info KASSERT(ti->ti_asids_free > 0); KASSERT(ti->ti_asid_hint > KERNEL_PID); + if (__predict_false(!tlbinfo_asids_p(ti))) { +#if defined(MULTIPROCESSOR) + /* + * Mark that we are active for all CPUs sharing this TLB. + * The bits in pm_active belonging to this TLB can only + * be changed while this TLBs lock is held. + */ +#if PMAP_TLB_MAX == 1 + kcpuset_copy(pm->pm_active, kcpuset_running); +#else + kcpuset_merge(pm->pm_active, ti->ti_kcpuset); +#endif +#endif + return; + } + /* * If the last ASID allocated was the maximum ASID, then the * hint will be out of range. Reset the hint to first @@ -937,7 +953,7 @@ pmap_tlb_asid_acquire(pmap_t pm, struct /* * If we've run out ASIDs, reinitialize the ASID space. */ - if (__predict_false(tlbinfo_noasids_p(ti))) { + if (__predict_false(tlbinfo_asids_p(ti) && tlbinfo_noasids_p(ti))) { KASSERT(l == curlwp); UVMHIST_LOG(maphist, " asid reinit", 0, 0, 0, 0); pmap_tlb_asid_reinitialize(ti, TLBINV_NOBODY); Index: src/sys/uvm/pmap/pmap_tlb.h diff -u src/sys/uvm/pmap/pmap_tlb.h:1.16 src/sys/uvm/pmap/pmap_tlb.h:1.17 --- src/sys/uvm/pmap/pmap_tlb.h:1.16 Wed Oct 26 07:35:20 2022 +++ src/sys/uvm/pmap/pmap_tlb.h Fri Oct 6 08:48:16 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.h,v 1.16 2022/10/26 07:35:20 skrll Exp $ */ +/* $NetBSD: pmap_tlb.h,v 1.17 2023/10/06 08:48:16 skrll Exp $ */ /* * Copyright (c) 1992, 1993 @@ -86,6 +86,10 @@ # endif #endif +#if !defined(PMAP_TLB_ALWAYS_ASIDS) +#define PMAP_TLB_ALWAYS_ASIDS true +#endif + /* * Per TLB (normally same as CPU) asid info */ @@ -97,7 +101,7 @@ struct pmap_asid_info { #define TLBINFO_LOCK(ti) mutex_spin_enter((ti)->ti_lock) #define TLBINFO_UNLOCK(ti) mutex_spin_exit((ti)->ti_lock) #define TLBINFO_OWNED(ti) mutex_owned((ti)->ti_lock) -#define PMAP_PAI_ASIDVALID_P(pai, ti) ((pai)->pai_asid != 0) +#define PMAP_PAI_ASIDVALID_P(pai, ti) (!tlbinfo_asids_p(ti) || (pai)->pai_asid != 0) #define PMAP_PAI(pmap, ti) (&(pmap)->pm_pai[tlbinfo_index(ti)]) #define PAI_PMAP(pai, ti) \ ((pmap_t)((intptr_t)(pai) \ @@ -188,5 +192,11 @@ void pmap_tlb_asid_check(void); /* for ddb */ void pmap_db_tlb_print(struct pmap *, void (*)(const char *, ...) __printflike(1, 2)); +static inline bool +tlbinfo_asids_p(struct pmap_tlb_info *ti) +{ + return PMAP_TLB_ALWAYS_ASIDS || (ti)->ti_asid_max != 0; +} + #endif /* _KERNEL */ #endif /* _UVM_PMAP_PMAP_TLB_H_ */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Tue Aug 1 08:17:26 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Improve debug To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.59 src/sys/uvm/pmap/pmap_tlb.c:1.60 --- src/sys/uvm/pmap/pmap_tlb.c:1.59 Mon Jun 12 06:47:17 2023 +++ src/sys/uvm/pmap/pmap_tlb.c Tue Aug 1 08:17:26 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.59 2023/06/12 06:47:17 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.60 2023/08/01 08:17:26 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.59 2023/06/12 06:47:17 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.60 2023/08/01 08:17:26 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -568,7 +568,7 @@ pmap_tlb_shootdown_process(void) struct pmap_asid_info * const pai = PMAP_PAI(ti->ti_victim, ti); KASSERT(ti->ti_victim != pmap_kernel()); if (pmap_tlb_intersecting_onproc_p(ti->ti_victim, ti)) { - UVMHIST_LOG(maphist, "pmap_tlb_intersecting_onproc_p", 0, 0, 0, 0); + UVMHIST_LOG(maphist, "... onproc asid %jd", pai->pai_asid, 0, 0, 0); /* * The victim is an active pmap so we will just * invalidate its TLB entries. @@ -578,7 +578,7 @@ pmap_tlb_shootdown_process(void) tlb_invalidate_asids(pai->pai_asid, pai->pai_asid); pmap_tlb_asid_check(); } else if (pai->pai_asid) { - UVMHIST_LOG(maphist, "asid %jd", pai->pai_asid, 0, 0, 0); + UVMHIST_LOG(maphist, "... not active asid %jd", pai->pai_asid, 0, 0, 0); /* * The victim is no longer an active pmap for this TLB. * So simply clear its ASID and when pmap_activate is
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Tue Aug 1 08:17:26 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Improve debug To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Jul 23 07:25:36 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: KASSERT -> KASSERTMSG To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Jul 23 07:25:36 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: KASSERT -> KASSERTMSG To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.32 src/sys/uvm/pmap/pmap_segtab.c:1.33 --- src/sys/uvm/pmap/pmap_segtab.c:1.32 Sat Jul 1 07:10:13 2023 +++ src/sys/uvm/pmap/pmap_segtab.c Sun Jul 23 07:25:36 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.32 2023/07/01 07:10:13 skrll Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.33 2023/07/23 07:25:36 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.32 2023/07/01 07:10:13 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.33 2023/07/23 07:25:36 skrll Exp $"); /* * Manages physical address maps. @@ -282,7 +282,10 @@ pmap_ptpage(struct pmap *pmap, vaddr_t v // UVMHIST_LOG(pmaphist, "pm_pdetab %#jx", ptb, 0, 0, 0); - KASSERT(pmap != pmap_kernel() || !pmap_md_direct_mapped_vaddr_p(va)); + KASSERTMSG(pmap != pmap_kernel() || !pmap_md_direct_mapped_vaddr_p(va), + "pmap_kernel: %s, va %#" PRIxVADDR, + pmap == pmap_kernel() ? "true" : "false", + pmap == pmap_kernel() ? va : 0); #ifdef _LP64 for (size_t segshift = XSEGSHIFT;
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Jul 1 07:10:13 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Fix build when KERNHIST defined, but not UVMHIST To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.31 src/sys/uvm/pmap/pmap_segtab.c:1.32 --- src/sys/uvm/pmap/pmap_segtab.c:1.31 Wed Dec 21 11:39:46 2022 +++ src/sys/uvm/pmap/pmap_segtab.c Sat Jul 1 07:10:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.31 2022/12/21 11:39:46 skrll Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.32 2023/07/01 07:10:13 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.31 2022/12/21 11:39:46 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.32 2023/07/01 07:10:13 skrll Exp $"); /* * Manages physical address maps. @@ -557,7 +557,7 @@ pmap_pdetab_alloc(struct pmap *pmap) UVMHIST_CALLARGS(pmapxtabhist, "pm %#jx", (uintptr_t)pmap, 0, 0, 0); pmap_pdetab_t *ptb; -#ifdef KERNHIST +#ifdef UVMHIST bool found_on_freelist = false; #endif @@ -573,7 +573,7 @@ pmap_pdetab_alloc(struct pmap *pmap) PDETAB_ADD(nget, 1); ptb->pde_next = NULL; -#ifdef KERNHIST +#ifdef UVMHIST found_on_freelist = true; #endif }
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Jul 1 07:10:13 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Fix build when KERNHIST defined, but not UVMHIST To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Jun 12 06:47:17 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fix compile for non-MULTIPROCESSOR and PMAP_TLB_MAX > 1 builds To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Jun 12 06:47:17 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fix compile for non-MULTIPROCESSOR and PMAP_TLB_MAX > 1 builds To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.58 src/sys/uvm/pmap/pmap_tlb.c:1.59 --- src/sys/uvm/pmap/pmap_tlb.c:1.58 Mon Jun 12 06:36:28 2023 +++ src/sys/uvm/pmap/pmap_tlb.c Mon Jun 12 06:47:17 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.58 2023/06/12 06:36:28 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.59 2023/06/12 06:47:17 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.58 2023/06/12 06:36:28 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.59 2023/06/12 06:47:17 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -1114,7 +1114,7 @@ void pmap_db_tlb_print(struct pmap *pm, void (*pr)(const char *, ...) __printflike(1, 2)) { -#if PMAP_TLB_MAX == 1 +#if !defined(MULTIPROCESSOR) || PMAP_TLB_MAX == 1 pr(" asid %5u\n", pm->pm_pai[0].pai_asid); #else for (size_t i = 0; i < (PMAP_TLB_MAX > 1 ? pmap_ntlbs : 1); i++) {
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Jun 12 06:36:28 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fixup UVMHIST builds To generate a diff of this commit: cvs rdiff -u -r1.57 -r1.58 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.57 src/sys/uvm/pmap/pmap_tlb.c:1.58 --- src/sys/uvm/pmap/pmap_tlb.c:1.57 Sat Apr 22 10:22:43 2023 +++ src/sys/uvm/pmap/pmap_tlb.c Mon Jun 12 06:36:28 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.57 2023/04/22 10:22:43 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.58 2023/06/12 06:36:28 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.57 2023/04/22 10:22:43 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.58 2023/06/12 06:36:28 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -557,14 +557,14 @@ pmap_tlb_shootdown_process(void) __func__, ci->ci_cpl, IPL_SCHED); TLBINFO_LOCK(ti); - UVMHIST_LOG(maphist, "ti %#jx", ti, 0, 0, 0); + UVMHIST_LOG(maphist, "ti %#jx", (uintptr_t)ti, 0, 0, 0); switch (ti->ti_tlbinvop) { case TLBINV_ONE: { /* * We only need to invalidate one user ASID. */ - UVMHIST_LOG(maphist, "TLBINV_ONE ti->ti_victim %#jx", ti->ti_victim, 0, 0, 0); + UVMHIST_LOG(maphist, "TLBINV_ONE ti->ti_victim %#jx", (uintptr_t)ti->ti_victim, 0, 0, 0); struct pmap_asid_info * const pai = PMAP_PAI(ti->ti_victim, ti); KASSERT(ti->ti_victim != pmap_kernel()); if (pmap_tlb_intersecting_onproc_p(ti->ti_victim, ti)) { @@ -674,7 +674,7 @@ pmap_tlb_shootdown_bystanders(pmap_t pm) KASSERT(i < pmap_ntlbs); struct pmap_tlb_info * const ti = pmap_tlbs[i]; KASSERT(tlbinfo_index(ti) == i); - UVMHIST_LOG(maphist, "ti %#jx", ti, 0, 0, 0); + UVMHIST_LOG(maphist, "ti %#jx", (uintptr_t)ti, 0, 0, 0); /* * Skip this TLB if there are no active mappings for it. */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Jun 12 06:36:28 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fixup UVMHIST builds To generate a diff of this commit: cvs rdiff -u -r1.57 -r1.58 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Apr 27 06:23:31 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_devmap.c Log Message: Correct a type. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/uvm/pmap/pmap_devmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Apr 27 06:23:31 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_devmap.c Log Message: Correct a type. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/uvm/pmap/pmap_devmap.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/uvm/pmap/pmap_devmap.c diff -u src/sys/uvm/pmap/pmap_devmap.c:1.1 src/sys/uvm/pmap/pmap_devmap.c:1.2 --- src/sys/uvm/pmap/pmap_devmap.c:1.1 Thu Apr 20 08:28:02 2023 +++ src/sys/uvm/pmap/pmap_devmap.c Thu Apr 27 06:23:31 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_devmap.c,v 1.1 2023/04/20 08:28:02 skrll Exp $ */ +/* $NetBSD: pmap_devmap.c,v 1.2 2023/04/27 06:23:31 skrll Exp $ */ /*- * Copyright (c) 2022 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: pmap_devmap.c,v 1.1 2023/04/20 08:28:02 skrll Exp $"); +__RCSID("$NetBSD: pmap_devmap.c,v 1.2 2023/04/27 06:23:31 skrll Exp $"); #include @@ -91,7 +91,7 @@ pmap_devmap_bootstrap(vaddr_t root, cons for (size_t i = 0; table[i].pd_size != 0; i++) { const struct pmap_devmap * const pdp = [i]; const vaddr_t vmax = __type_max_u(vaddr_t); - const vaddr_t pmax = __type_max_u(paddr_t); + const paddr_t pmax = __type_max_u(paddr_t); KASSERT(pdp->pd_size != 0); KASSERTMSG(vmax - pdp->pd_va >= pdp->pd_size - 1,
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Apr 22 10:22:43 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: KASSERT(kpreempt_disabled()) before accessing curcpu() To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Apr 22 10:22:43 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: KASSERT(kpreempt_disabled()) before accessing curcpu() To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.56 src/sys/uvm/pmap/pmap_tlb.c:1.57 --- src/sys/uvm/pmap/pmap_tlb.c:1.56 Sun Feb 19 07:20:44 2023 +++ src/sys/uvm/pmap/pmap_tlb.c Sat Apr 22 10:22:43 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.56 2023/02/19 07:20:44 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.57 2023/04/22 10:22:43 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.56 2023/02/19 07:20:44 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.57 2023/04/22 10:22:43 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -655,7 +655,10 @@ pmap_tlb_shootdown_bystanders(pmap_t pm) UVMHIST_FUNC(__func__); UVMHIST_CALLARGS(maphist, "pm %#jx", (uintptr_t)pm, 0, 0, 0); + KASSERT(kpreempt_disabled()); + const struct cpu_info * const ci = curcpu(); + kcpuset_t *pm_active = ci->ci_shootdowncpus; kcpuset_copy(pm_active, pm->pm_active); kcpuset_remove(pm_active, cpu_tlb_info(curcpu())->ti_kcpuset); @@ -745,6 +748,8 @@ pmap_tlb_shootdown_bystanders(pmap_t pm) int pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags) { + KASSERT(kpreempt_disabled()); + struct pmap_tlb_info * const ti = cpu_tlb_info(curcpu()); struct pmap_asid_info * const pai = PMAP_PAI(pm, ti); int rv = -1; @@ -753,8 +758,6 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t UVMHIST_CALLARGS(maphist, " (pm=%#jx va=%#jx, pte=%#jx flags=%#jx)", (uintptr_t)pm, va, pte_value(pte), flags); - KASSERT(kpreempt_disabled()); - KASSERTMSG(pte_valid_p(pte), "va %#"PRIxVADDR" %#"PRIxPTE, va, pte_value(pte)); @@ -785,6 +788,8 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t void pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va) { + KASSERT(kpreempt_disabled()); + struct pmap_tlb_info * const ti = cpu_tlb_info(curcpu()); struct pmap_asid_info * const pai = PMAP_PAI(pm, ti); @@ -792,8 +797,6 @@ pmap_tlb_invalidate_addr(pmap_t pm, vadd UVMHIST_CALLARGS(maphist, " (pm=%#jx va=%#jx) ti=%#jx asid=%#jx", (uintptr_t)pm, va, (uintptr_t)ti, pai->pai_asid); - KASSERT(kpreempt_disabled()); - TLBINFO_LOCK(ti); if (pm == pmap_kernel() || PMAP_PAI_ASIDVALID_P(pai, ti)) { pmap_tlb_asid_check(); @@ -908,6 +911,8 @@ pmap_tlb_asid_alloc(struct pmap_tlb_info void pmap_tlb_asid_acquire(pmap_t pm, struct lwp *l) { + KASSERT(kpreempt_disabled()); + struct cpu_info * const ci = l->l_cpu; struct pmap_tlb_info * const ti = cpu_tlb_info(ci); struct pmap_asid_info * const pai = PMAP_PAI(pm, ti); @@ -916,8 +921,6 @@ pmap_tlb_asid_acquire(pmap_t pm, struct UVMHIST_CALLARGS(maphist, "(pm=%#jx, l=%#jx, ti=%#jx)", (uintptr_t)pm, (uintptr_t)l, (uintptr_t)ti, 0); - KASSERT(kpreempt_disabled()); - /* * Kernels use a fixed ASID and thus doesn't need to acquire one. */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Feb 19 07:20:44 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Spaces to TABs. NFCI. To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.55 src/sys/uvm/pmap/pmap_tlb.c:1.56 --- src/sys/uvm/pmap/pmap_tlb.c:1.55 Mon Nov 7 07:28:04 2022 +++ src/sys/uvm/pmap/pmap_tlb.c Sun Feb 19 07:20:44 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.55 2022/11/07 07:28:04 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.56 2023/02/19 07:20:44 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.55 2022/11/07 07:28:04 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.56 2023/02/19 07:20:44 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -1114,9 +1114,9 @@ pmap_db_tlb_print(struct pmap *pm, #if PMAP_TLB_MAX == 1 pr(" asid %5u\n", pm->pm_pai[0].pai_asid); #else -for (size_t i = 0; i < (PMAP_TLB_MAX > 1 ? pmap_ntlbs : 1); i++) { -pr(" tlb %zu asid %5u\n", i, pm->pm_pai[i].pai_asid); -} + for (size_t i = 0; i < (PMAP_TLB_MAX > 1 ? pmap_ntlbs : 1); i++) { + pr(" tlb %zu asid %5u\n", i, pm->pm_pai[i].pai_asid); + } #endif } #endif /* DDB */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Feb 19 07:20:44 UTC 2023 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Spaces to TABs. NFCI. To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Nov 7 07:28:04 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fix UVMHIST build To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.54 src/sys/uvm/pmap/pmap_tlb.c:1.55 --- src/sys/uvm/pmap/pmap_tlb.c:1.54 Wed Oct 26 07:35:20 2022 +++ src/sys/uvm/pmap/pmap_tlb.c Mon Nov 7 07:28:04 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.54 2022/10/26 07:35:20 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.55 2022/11/07 07:28:04 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.54 2022/10/26 07:35:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.55 2022/11/07 07:28:04 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -1078,19 +1078,19 @@ void pmap_tlb_asid_check(void) { UVMHIST_FUNC(__func__); - UVMHIST_CALLED(pmaphist); + UVMHIST_CALLED(maphist); #ifdef DEBUG kpreempt_disable(); const tlb_asid_t asid __debugused = tlb_get_asid(); - UVMHIST_LOG(pmaphist, " asid %u vs pmap_cur_asid %u", asid, + UVMHIST_LOG(maphist, " asid %u vs pmap_cur_asid %u", asid, curcpu()->ci_pmap_asid_cur, 0, 0); KDASSERTMSG(asid == curcpu()->ci_pmap_asid_cur, "%s: asid (%#x) != current asid (%#x)", __func__, asid, curcpu()->ci_pmap_asid_cur); kpreempt_enable(); #endif - UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0); + UVMHIST_LOG(maphist, " <-- done", 0, 0, 0, 0); } #ifdef DEBUG
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Nov 7 07:28:04 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fix UVMHIST build To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Nov 3 18:55:07 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.h Log Message: _KERNEL_OPT protection To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap.h diff -u src/sys/uvm/pmap/pmap.h:1.25 src/sys/uvm/pmap/pmap.h:1.26 --- src/sys/uvm/pmap/pmap.h:1.25 Thu Nov 3 09:04:57 2022 +++ src/sys/uvm/pmap/pmap.h Thu Nov 3 18:55:07 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.25 2022/11/03 09:04:57 skrll Exp $ */ +/* $NetBSD: pmap.h,v 1.26 2022/11/03 18:55:07 skrll Exp $ */ /* * Copyright (c) 1992, 1993 @@ -71,7 +71,9 @@ * @(#)pmap.h 8.1 (Berkeley) 6/10/93 */ +#ifdef _KERNEL_OPT #include "opt_efi.h" +#endif #ifndef _UVM_PMAP_PMAP_H_ #define _UVM_PMAP_PMAP_H_
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Nov 3 18:55:07 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.h Log Message: _KERNEL_OPT protection To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Wed Nov 2 08:05:17 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: KNF To generate a diff of this commit: cvs rdiff -u -r1.72 -r1.73 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.72 src/sys/uvm/pmap/pmap.c:1.73 --- src/sys/uvm/pmap/pmap.c:1.72 Fri Oct 28 07:16:34 2022 +++ src/sys/uvm/pmap/pmap.c Wed Nov 2 08:05:17 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.72 2022/10/28 07:16:34 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.73 2022/11/02 08:05:17 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.72 2022/10/28 07:16:34 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.73 2022/11/02 08:05:17 skrll Exp $"); /* * Manages physical address maps. @@ -880,7 +880,7 @@ pmap_page_remove(struct vm_page_md *mdpg } #ifdef PMAP_VIRTUAL_CACHE_ALIASES - pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE|VM_PAGEMD_UNCACHED); + pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE | VM_PAGEMD_UNCACHED); #else pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE); #endif @@ -1166,13 +1166,13 @@ pmap_page_protect(struct vm_page *pg, vm PMAP_COUNT(page_protect); switch (prot) { - case VM_PROT_READ|VM_PROT_WRITE: + case VM_PROT_READ | VM_PROT_WRITE: case VM_PROT_ALL: break; /* copy_on_write */ case VM_PROT_READ: - case VM_PROT_READ|VM_PROT_EXECUTE: + case VM_PROT_READ | VM_PROT_EXECUTE: pv = >mdpg_first; kpreempt_disable(); VM_PAGEMD_PVLIST_READLOCK(mdpg); @@ -1415,7 +1415,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd if (mdpg) { /* Set page referenced/modified status based on flags */ if (flags & VM_PROT_WRITE) { - pmap_page_set_attributes(mdpg, VM_PAGEMD_MODIFIED|VM_PAGEMD_REFERENCED); + pmap_page_set_attributes(mdpg, VM_PAGEMD_MODIFIED | VM_PAGEMD_REFERENCED); } else if (flags & VM_PROT_ALL) { pmap_page_set_attributes(mdpg, VM_PAGEMD_REFERENCED); } @@ -1941,7 +1941,7 @@ pmap_set_modified(paddr_t pa) { struct vm_page * const pg = PHYS_TO_VM_PAGE(pa); struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg); - pmap_page_set_attributes(mdpg, VM_PAGEMD_MODIFIED|VM_PAGEMD_REFERENCED); + pmap_page_set_attributes(mdpg, VM_PAGEMD_MODIFIED | VM_PAGEMD_REFERENCED); } / pv_entry management /
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Wed Nov 2 08:05:17 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: KNF To generate a diff of this commit: cvs rdiff -u -r1.72 -r1.73 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 06:49:51 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: In pmap_pte_reserve ensure we're atomically swapping out an invalid entry otherwise concurrent updates might both think they've updated the entry. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.29 src/sys/uvm/pmap/pmap_segtab.c:1.30 --- src/sys/uvm/pmap/pmap_segtab.c:1.29 Wed Oct 26 07:35:20 2022 +++ src/sys/uvm/pmap/pmap_segtab.c Thu Oct 27 06:49:51 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.29 2022/10/26 07:35:20 skrll Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.30 2022/10/27 06:49:51 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.29 2022/10/26 07:35:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.30 2022/10/27 06:49:51 skrll Exp $"); /* * Manages physical address maps. @@ -1161,8 +1161,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va pd_entry_t npde = pte_pde_ptpage(pa, pmap == pmap_kernel()); #endif #if defined(PMAP_HWPAGEWALKER) && defined(PMAP_MAP_PDETABPAGE) - pd_entry_t opde = *pde_p; - opde = pte_pde_cas(pde_p, opde, npde); + pd_entry_t opde = pte_pde_cas(pde_p, pte_invalid_pde(), npde); if (__predict_false(pte_pde_valid_p(opde))) { pmap_ptpage_free(pmap, ppg, __func__); ppg = pmap_pde_to_ptpage(opde);
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 06:49:51 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: In pmap_pte_reserve ensure we're atomically swapping out an invalid entry otherwise concurrent updates might both think they've updated the entry. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 06:20:41 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: No need to hold the pmap_tlb_miss_lock when calling pmap_segtab_destroy To generate a diff of this commit: cvs rdiff -u -r1.70 -r1.71 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.70 src/sys/uvm/pmap/pmap.c:1.71 --- src/sys/uvm/pmap/pmap.c:1.70 Thu Oct 27 06:19:56 2022 +++ src/sys/uvm/pmap/pmap.c Thu Oct 27 06:20:41 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.70 2022/10/27 06:19:56 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.71 2022/10/27 06:20:41 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.70 2022/10/27 06:19:56 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.71 2022/10/27 06:20:41 skrll Exp $"); /* * Manages physical address maps. @@ -764,8 +764,8 @@ pmap_destroy(pmap_t pmap) kpreempt_disable(); pmap_tlb_miss_lock_enter(); pmap_tlb_asid_release_all(pmap); - pmap_segtab_destroy(pmap, NULL, 0); pmap_tlb_miss_lock_exit(); + pmap_segtab_destroy(pmap, NULL, 0); KASSERT(TAILQ_EMPTY(>pm_ppg_list));
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 06:20:41 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: No need to hold the pmap_tlb_miss_lock when calling pmap_segtab_destroy To generate a diff of this commit: cvs rdiff -u -r1.70 -r1.71 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 06:19:56 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h Log Message: Rename pm_count to pm_refcnt To generate a diff of this commit: cvs rdiff -u -r1.69 -r1.70 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.69 src/sys/uvm/pmap/pmap.c:1.70 --- src/sys/uvm/pmap/pmap.c:1.69 Wed Oct 26 07:35:20 2022 +++ src/sys/uvm/pmap/pmap.c Thu Oct 27 06:19:56 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.69 2022/10/26 07:35:20 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.70 2022/10/27 06:19:56 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.69 2022/10/26 07:35:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.70 2022/10/27 06:19:56 skrll Exp $"); /* * Manages physical address maps. @@ -223,7 +223,7 @@ pmap_segtab_t pmap_kern_segtab PMAP_SEGT struct pmap_kernel kernel_pmap_store = { .kernel_pmap = { - .pm_count = 1, + .pm_refcnt = 1, #ifdef PMAP_HWPAGEWALKER .pm_pdetab = PMAP_INVALID_PDETAB_ADDRESS, #endif @@ -707,7 +707,7 @@ pmap_create(void) KASSERT(pmap->pm_pai[0].pai_link.le_prev == NULL); - pmap->pm_count = 1; + pmap->pm_refcnt = 1; pmap->pm_minaddr = VM_MIN_ADDRESS; pmap->pm_maxaddr = VM_MAXUSER_ADDRESS; @@ -751,7 +751,7 @@ pmap_destroy(pmap_t pmap) UVMHIST_CALLARGS(pmapxtabhist, "(pmap=%#jx)", (uintptr_t)pmap, 0, 0, 0); membar_release(); - if (atomic_dec_uint_nv(>pm_count) > 0) { + if (atomic_dec_uint_nv(>pm_refcnt) > 0) { PMAP_COUNT(dereference); UVMHIST_LOG(pmaphist, " <-- done (deref)", 0, 0, 0, 0); UVMHIST_LOG(pmapxtabhist, " <-- done (deref)", 0, 0, 0, 0); @@ -760,7 +760,7 @@ pmap_destroy(pmap_t pmap) membar_acquire(); PMAP_COUNT(destroy); - KASSERT(pmap->pm_count == 0); + KASSERT(pmap->pm_refcnt == 0); kpreempt_disable(); pmap_tlb_miss_lock_enter(); pmap_tlb_asid_release_all(pmap); @@ -807,7 +807,7 @@ pmap_reference(pmap_t pmap) PMAP_COUNT(reference); if (pmap != NULL) { - atomic_inc_uint(>pm_count); + atomic_inc_uint(>pm_refcnt); } UVMHIST_LOG(pmaphist, " <-- done", 0, 0, 0, 0); Index: src/sys/uvm/pmap/pmap.h diff -u src/sys/uvm/pmap/pmap.h:1.23 src/sys/uvm/pmap/pmap.h:1.24 --- src/sys/uvm/pmap/pmap.h:1.23 Thu Oct 27 05:33:37 2022 +++ src/sys/uvm/pmap/pmap.h Thu Oct 27 06:19:56 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.23 2022/10/27 05:33:37 skrll Exp $ */ +/* $NetBSD: pmap.h,v 1.24 2022/10/27 06:19:56 skrll Exp $ */ /* * Copyright (c) 1992, 1993 @@ -189,7 +189,7 @@ extern kmutex_t pmap_segtab_lock; */ struct pmap { struct uvm_object pm_uobject; -#define pm_count pm_uobject.uo_refs /* pmap reference count */ +#define pm_refcnt pm_uobject.uo_refs /* pmap reference count */ #define pm_pvp_list pm_uobject.memq krwlock_t pm_obj_lock; /* lock for pm_uobject */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 06:19:56 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h Log Message: Rename pm_count to pm_refcnt To generate a diff of this commit: cvs rdiff -u -r1.69 -r1.70 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 05:33:37 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.h Log Message: Fix the crash(1) build for mips platforms To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap.h diff -u src/sys/uvm/pmap/pmap.h:1.22 src/sys/uvm/pmap/pmap.h:1.23 --- src/sys/uvm/pmap/pmap.h:1.22 Wed Oct 26 07:35:20 2022 +++ src/sys/uvm/pmap/pmap.h Thu Oct 27 05:33:37 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.22 2022/10/26 07:35:20 skrll Exp $ */ +/* $NetBSD: pmap.h,v 1.23 2022/10/27 05:33:37 skrll Exp $ */ /* * Copyright (c) 1992, 1993 @@ -225,6 +225,8 @@ struct pmap { struct pmap_asid_info pm_pai[1]; }; + +#ifdef _KERNEL static inline void pmap_lock(struct pmap *pm) { @@ -239,7 +241,6 @@ pmap_unlock(struct pmap *pm) rw_exit(pm->pm_lock); } -#ifdef _KERNEL struct pmap_kernel { struct pmap kernel_pmap; #if defined(MULTIPROCESSOR) && PMAP_TLB_MAX > 1
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 27 05:33:37 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.h Log Message: Fix the crash(1) build for mips platforms To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Oct 23 06:37:15 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Correct the pmap_kstart_segtab entry in pmap_kern_segtab To generate a diff of this commit: cvs rdiff -u -r1.67 -r1.68 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.67 src/sys/uvm/pmap/pmap.c:1.68 --- src/sys/uvm/pmap/pmap.c:1.67 Thu Sep 15 06:44:18 2022 +++ src/sys/uvm/pmap/pmap.c Sun Oct 23 06:37:15 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.67 2022/09/15 06:44:18 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.68 2022/10/23 06:37:15 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.67 2022/09/15 06:44:18 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.68 2022/10/23 06:37:15 skrll Exp $"); /* * Manages physical address maps. @@ -202,7 +202,7 @@ pmap_segtab_t pmap_kstart_segtab PMAP_SE #endif pmap_segtab_t pmap_kern_segtab PMAP_SEGTAB_ALIGN = { /* top level segtab for kernel */ #ifdef _LP64 - .seg_seg[(VM_MIN_KERNEL_ADDRESS & XSEGOFSET) >> SEGSHIFT] = _kstart_segtab, + .seg_seg[(VM_MIN_KERNEL_ADDRESS >> XSEGSHIFT) & (NSEGPG - 1)] = _kstart_segtab, #endif };
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Oct 23 06:37:15 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Correct the pmap_kstart_segtab entry in pmap_kern_segtab To generate a diff of this commit: cvs rdiff -u -r1.67 -r1.68 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 20 06:24:51 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Add a KASSERT to check that tlb_asid_t is a large enough type. To generate a diff of this commit: cvs rdiff -u -r1.52 -r1.53 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.52 src/sys/uvm/pmap/pmap_tlb.c:1.53 --- src/sys/uvm/pmap/pmap_tlb.c:1.52 Fri Mar 4 08:11:48 2022 +++ src/sys/uvm/pmap/pmap_tlb.c Thu Oct 20 06:24:51 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.52 2022/03/04 08:11:48 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.53 2022/10/20 06:24:51 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.52 2022/03/04 08:11:48 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.53 2022/10/20 06:24:51 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -384,6 +384,7 @@ pmap_tlb_info_init(struct pmap_tlb_info ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti->ti_asid_max); } + KASSERT(__type_fit(tlb_asid_t, ti->ti_asid_max + 1)); KASSERT(ti->ti_asid_max < PMAP_TLB_BITMAP_LENGTH); }
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 20 06:24:51 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Add a KASSERT to check that tlb_asid_t is a large enough type. To generate a diff of this commit: cvs rdiff -u -r1.52 -r1.53 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Sep 15 06:44:18 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: whitespace - remove spaces before tabs To generate a diff of this commit: cvs rdiff -u -r1.66 -r1.67 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Sep 15 06:44:18 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: whitespace - remove spaces before tabs To generate a diff of this commit: cvs rdiff -u -r1.66 -r1.67 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.66 src/sys/uvm/pmap/pmap.c:1.67 --- src/sys/uvm/pmap/pmap.c:1.66 Mon Sep 12 07:38:32 2022 +++ src/sys/uvm/pmap/pmap.c Thu Sep 15 06:44:18 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.66 2022/09/12 07:38:32 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.67 2022/09/15 06:44:18 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.66 2022/09/12 07:38:32 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.67 2022/09/15 06:44:18 skrll Exp $"); /* * Manages physical address maps. @@ -253,7 +253,7 @@ u_int pmap_page_colormask; #define PAGE_IS_MANAGED(pa) (pmap_initialized && uvm_pageismanaged(pa)) #define PMAP_IS_ACTIVE(pm) \ - ((pm) == pmap_kernel() || \ + ((pm) == pmap_kernel() || \ (pm) == curlwp->l_proc->p_vmspace->vm_map.pmap) /* Forward function declarations */ @@ -290,7 +290,7 @@ struct pool_allocator pmap_pv_page_alloc #define pmap_tlb_miss_lock_enter() pmap_md_tlb_miss_lock_enter() #define pmap_tlb_miss_lock_exit() pmap_md_tlb_miss_lock_exit() #else -kmutex_t pmap_tlb_miss_lock __cacheline_aligned; +kmutex_t pmap_tlb_miss_lock __cacheline_aligned; static void pmap_tlb_miss_lock_init(void) @@ -1369,7 +1369,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, padd if (resident) { if (pte_to_paddr(opte) != pa) { KASSERT(!is_kernel_pmap_p); - const pt_entry_t rpte = pte_nv_entry(false); + const pt_entry_t rpte = pte_nv_entry(false); pmap_addr_range_check(pmap, va, va + NBPG, __func__); pmap_pte_process(pmap, va, va + NBPG, pmap_pte_remove, @@ -1870,7 +1870,7 @@ pmap_pvlist_check(struct vm_page_md *mdp colors, VM_PAGEMD_UNCACHED_P(mdpg)); #endif } else { - KASSERT(pv->pv_next == NULL); + KASSERT(pv->pv_next == NULL); } #endif /* DEBUG */ }
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Sep 12 07:38:32 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: A simplification and some minor whitespace To generate a diff of this commit: cvs rdiff -u -r1.65 -r1.66 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Sep 12 07:38:32 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: A simplification and some minor whitespace To generate a diff of this commit: cvs rdiff -u -r1.65 -r1.66 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.65 src/sys/uvm/pmap/pmap.c:1.66 --- src/sys/uvm/pmap/pmap.c:1.65 Sat May 7 06:53:16 2022 +++ src/sys/uvm/pmap/pmap.c Mon Sep 12 07:38:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.65 2022/05/07 06:53:16 rin Exp $ */ +/* $NetBSD: pmap.c,v 1.66 2022/09/12 07:38:32 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.65 2022/05/07 06:53:16 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.66 2022/09/12 07:38:32 skrll Exp $"); /* * Manages physical address maps. @@ -984,14 +984,14 @@ pmap_update(struct pmap *pmap) static bool pmap_pte_remove(pmap_t pmap, vaddr_t sva, vaddr_t eva, pt_entry_t *ptep, - uintptr_t flags) +uintptr_t flags) { const pt_entry_t npte = flags; const bool is_kernel_pmap_p = (pmap == pmap_kernel()); UVMHIST_FUNC(__func__); UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jd va=%#jx..%#jx)", - (uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva); + (uintptr_t)pmap, (is_kernel_pmap_p ? 1 : 0), sva, eva); UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)", (uintptr_t)ptep, flags, 0, 0); @@ -1626,7 +1626,7 @@ pmap_unwire(pmap_t pmap, vaddr_t va) pmap, va); pt_entry_t pte = *ptep; KASSERTMSG(pte_valid_p(pte), - "pmap %p va %#"PRIxVADDR" invalid PTE %#"PRIxPTE" @ %p", + "pmap %p va %#" PRIxVADDR " invalid PTE %#" PRIxPTE " @ %p", pmap, va, pte_value(pte), ptep); if (pte_wired_p(pte)) {
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sun May 8 22:03:02 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.c Log Message: Oops, correct misleading #endif comment. It seems I need a cup of coffee... To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap_pvt.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/uvm/pmap/pmap_pvt.c diff -u src/sys/uvm/pmap/pmap_pvt.c:1.14 src/sys/uvm/pmap/pmap_pvt.c:1.15 --- src/sys/uvm/pmap/pmap_pvt.c:1.14 Sun May 8 22:00:06 2022 +++ src/sys/uvm/pmap/pmap_pvt.c Sun May 8 22:03:02 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_pvt.c,v 1.14 2022/05/08 22:00:06 rin Exp $ */ +/* $NetBSD: pmap_pvt.c,v 1.15 2022/05/08 22:03:02 rin Exp $ */ /*- * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: pmap_pvt.c,v 1.14 2022/05/08 22:00:06 rin Exp $"); +__RCSID("$NetBSD: pmap_pvt.c,v 1.15 2022/05/08 22:03:02 rin Exp $"); #include #include @@ -219,4 +219,4 @@ pmap_pv_untrack(paddr_t start, psize_t s } #endif /* notdef */ -#endif /* !PMAP_PV_TRACK_ONLY_STUBS */ +#endif /* PMAP_PV_TRACK_ONLY_STUBS */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sun May 8 22:03:02 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.c Log Message: Oops, correct misleading #endif comment. It seems I need a cup of coffee... To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap_pvt.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sun May 8 22:00:06 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.c Log Message: Improve wording a bit in a comment for the previous. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/uvm/pmap/pmap_pvt.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/uvm/pmap/pmap_pvt.c diff -u src/sys/uvm/pmap/pmap_pvt.c:1.13 src/sys/uvm/pmap/pmap_pvt.c:1.14 --- src/sys/uvm/pmap/pmap_pvt.c:1.13 Sun May 8 21:55:34 2022 +++ src/sys/uvm/pmap/pmap_pvt.c Sun May 8 22:00:06 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_pvt.c,v 1.13 2022/05/08 21:55:34 rin Exp $ */ +/* $NetBSD: pmap_pvt.c,v 1.14 2022/05/08 22:00:06 rin Exp $ */ /*- * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: pmap_pvt.c,v 1.13 2022/05/08 21:55:34 rin Exp $"); +__RCSID("$NetBSD: pmap_pvt.c,v 1.14 2022/05/08 22:00:06 rin Exp $"); #include #include @@ -201,8 +201,8 @@ pmap_pv_tracked(paddr_t pa) * pmap_pv_{,un}track() are intentionally commented out. If modules * call these functions, the result should be an inconsistent state. * - * Such modules require real PV-tracking support. Let us make two - * symbols undefined, and prevent these modules from loaded. + * Such modules require real PV-tracking support. Let us make the + * two symbols undefined, and prevent these modules from loaded. */ void pmap_pv_track(paddr_t start, psize_t size)
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sun May 8 22:00:06 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.c Log Message: Improve wording a bit in a comment for the previous. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/uvm/pmap/pmap_pvt.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sun May 8 21:55:35 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.c Log Message: For PMAP_PV_TRACK_ONLY_STUBS, comment out pmap_pv_{,un}track(). If modules call these functions, the result should be an inconsistent state. Such modules require real PV-tracking support, anyway. The best we can do should be to make two symbols undefined, and prevent these modules from loaded. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/uvm/pmap/pmap_pvt.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/uvm/pmap/pmap_pvt.c diff -u src/sys/uvm/pmap/pmap_pvt.c:1.12 src/sys/uvm/pmap/pmap_pvt.c:1.13 --- src/sys/uvm/pmap/pmap_pvt.c:1.12 Sat May 7 06:53:16 2022 +++ src/sys/uvm/pmap/pmap_pvt.c Sun May 8 21:55:34 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_pvt.c,v 1.12 2022/05/07 06:53:16 rin Exp $ */ +/* $NetBSD: pmap_pvt.c,v 1.13 2022/05/08 21:55:34 rin Exp $ */ /*- * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: pmap_pvt.c,v 1.12 2022/05/07 06:53:16 rin Exp $"); +__RCSID("$NetBSD: pmap_pvt.c,v 1.13 2022/05/08 21:55:34 rin Exp $"); #include #include @@ -189,22 +189,34 @@ pmap_pv_init(void) } -void -pmap_pv_track(paddr_t start, psize_t size) +struct pmap_page * +pmap_pv_tracked(paddr_t pa) { + return NULL; } +#if notdef +/* + * pmap_pv_{,un}track() are intentionally commented out. If modules + * call these functions, the result should be an inconsistent state. + * + * Such modules require real PV-tracking support. Let us make two + * symbols undefined, and prevent these modules from loaded. + */ void -pmap_pv_untrack(paddr_t start, psize_t size) +pmap_pv_track(paddr_t start, psize_t size) { + panic("PV-tracking not supported"); } -struct pmap_page * -pmap_pv_tracked(paddr_t pa) +void +pmap_pv_untrack(paddr_t start, psize_t size) { - return NULL; + panic("PV-tracking not supported"); } -#endif +#endif /* notdef */ + +#endif /* !PMAP_PV_TRACK_ONLY_STUBS */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sun May 8 21:55:35 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.c Log Message: For PMAP_PV_TRACK_ONLY_STUBS, comment out pmap_pv_{,un}track(). If modules call these functions, the result should be an inconsistent state. Such modules require real PV-tracking support, anyway. The best we can do should be to make two symbols undefined, and prevent these modules from loaded. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/uvm/pmap/pmap_pvt.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sat May 7 06:53:16 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h pmap_pvt.c Log Message: Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for global functions in pmap_pvt.h are provided, instead of real support for PV tracking. Necessary for powerpc: Only one sub-arch (oea) has PV tracking support. Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx), but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by all of sub-archs. To generate a diff of this commit: cvs rdiff -u -r1.64 -r1.65 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.20 -r1.21 src/sys/uvm/pmap/pmap.h cvs rdiff -u -r1.11 -r1.12 src/sys/uvm/pmap/pmap_pvt.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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.64 src/sys/uvm/pmap/pmap.c:1.65 --- src/sys/uvm/pmap/pmap.c:1.64 Sat Apr 9 23:38:33 2022 +++ src/sys/uvm/pmap/pmap.c Sat May 7 06:53:16 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.64 2022/04/09 23:38:33 riastradh Exp $ */ +/* $NetBSD: pmap.c,v 1.65 2022/05/07 06:53:16 rin Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.64 2022/04/09 23:38:33 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.65 2022/05/07 06:53:16 rin Exp $"); /* * Manages physical address maps. @@ -120,6 +120,10 @@ __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.6 PMAP_NO_PV_UNCACHED to be defined #endif +#if defined(PMAP_PV_TRACK_ONLY_STUBS) +#undef __HAVE_PMAP_PV_TRACK +#endif + PMAP_COUNTER(remove_kernel_calls, "remove kernel calls"); PMAP_COUNTER(remove_kernel_pages, "kernel pages unmapped"); PMAP_COUNTER(remove_user_calls, "remove user calls"); Index: src/sys/uvm/pmap/pmap.h diff -u src/sys/uvm/pmap/pmap.h:1.20 src/sys/uvm/pmap/pmap.h:1.21 --- src/sys/uvm/pmap/pmap.h:1.20 Fri Mar 19 07:51:33 2021 +++ src/sys/uvm/pmap/pmap.h Sat May 7 06:53:16 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.20 2021/03/19 07:51:33 skrll Exp $ */ +/* $NetBSD: pmap.h,v 1.21 2022/05/07 06:53:16 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -203,7 +203,7 @@ void pmap_pvlist_lock_init(size_t); void pmap_page_cache(struct vm_page_md *, bool); #endif -#ifdef __HAVE_PMAP_PV_TRACK +#if defined(__HAVE_PMAP_PV_TRACK) && !defined(PMAP_PV_TRACK_ONLY_STUBS) void pmap_pv_protect(paddr_t, vm_prot_t); #endif Index: src/sys/uvm/pmap/pmap_pvt.c diff -u src/sys/uvm/pmap/pmap_pvt.c:1.11 src/sys/uvm/pmap/pmap_pvt.c:1.12 --- src/sys/uvm/pmap/pmap_pvt.c:1.11 Wed Jul 21 06:35:45 2021 +++ src/sys/uvm/pmap/pmap_pvt.c Sat May 7 06:53:16 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_pvt.c,v 1.11 2021/07/21 06:35:45 skrll Exp $ */ +/* $NetBSD: pmap_pvt.c,v 1.12 2022/05/07 06:53:16 rin Exp $ */ /*- * Copyright (c) 2014, 2020 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: pmap_pvt.c,v 1.11 2021/07/21 06:35:45 skrll Exp $"); +__RCSID("$NetBSD: pmap_pvt.c,v 1.12 2022/05/07 06:53:16 rin Exp $"); #include #include @@ -40,6 +40,7 @@ __RCSID("$NetBSD: pmap_pvt.c,v 1.11 2021 #include #include +#if !defined(PMAP_PV_TRACK_ONLY_STUBS) /* * unmanaged pv-tracked ranges * @@ -177,3 +178,33 @@ pmap_pv_tracked(paddr_t pa) return >pvt_pages[pgno]; } +#else /* PMAP_PV_TRACK_ONLY_STUBS */ +/* + * Provide empty stubs just for MODULAR kernels. + */ + +void +pmap_pv_init(void) +{ + +} + +void +pmap_pv_track(paddr_t start, psize_t size) +{ + +} + +void +pmap_pv_untrack(paddr_t start, psize_t size) +{ + +} + +struct pmap_page * +pmap_pv_tracked(paddr_t pa) +{ + + return NULL; +} +#endif
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Sat May 7 06:53:16 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h pmap_pvt.c Log Message: Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for global functions in pmap_pvt.h are provided, instead of real support for PV tracking. Necessary for powerpc: Only one sub-arch (oea) has PV tracking support. Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx), but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by all of sub-archs. To generate a diff of this commit: cvs rdiff -u -r1.64 -r1.65 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.20 -r1.21 src/sys/uvm/pmap/pmap.h cvs rdiff -u -r1.11 -r1.12 src/sys/uvm/pmap/pmap_pvt.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Fri Mar 4 08:11:48 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Rmmove an incorrect KASSERT. To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Fri Mar 4 08:11:48 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Rmmove an incorrect KASSERT. To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.51 src/sys/uvm/pmap/pmap_tlb.c:1.52 --- src/sys/uvm/pmap/pmap_tlb.c:1.51 Sun Jan 2 16:03:30 2022 +++ src/sys/uvm/pmap/pmap_tlb.c Fri Mar 4 08:11:48 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.51 2022/01/02 16:03:30 christos Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.52 2022/03/04 08:11:48 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.51 2022/01/02 16:03:30 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.52 2022/03/04 08:11:48 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -547,9 +547,6 @@ pmap_tlb_shootdown_process(void) { struct cpu_info * const ci = curcpu(); struct pmap_tlb_info * const ti = cpu_tlb_info(ci); -#ifdef DIAGNOSTIC - struct pmap * const pm = curlwp->l_proc->p_vmspace->vm_map.pmap; -#endif KASSERT(cpu_intr_p()); KASSERTMSG(ci->ci_cpl >= IPL_SCHED, "%s: cpl (%d) < IPL_SCHED (%d)", @@ -580,7 +577,6 @@ pmap_tlb_shootdown_process(void) * next called for this pmap, it will allocate a new * ASID. */ - KASSERT(!pmap_tlb_intersecting_onproc_p(pm, ti)); pmap_tlb_pai_reset(ti, pai, PAI_PMAP(pai, ti)); } break;
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: riastradh Date: Wed Feb 16 20:14:06 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.h Log Message: pmap_pvt.h: Fix bogus include. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/uvm/pmap/pmap_pvt.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap_pvt.h diff -u src/sys/uvm/pmap/pmap_pvt.h:1.2 src/sys/uvm/pmap/pmap_pvt.h:1.3 --- src/sys/uvm/pmap/pmap_pvt.h:1.2 Sat Jun 24 05:31:03 2017 +++ src/sys/uvm/pmap/pmap_pvt.h Wed Feb 16 20:14:06 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_pvt.h,v 1.2 2017/06/24 05:31:03 skrll Exp $ */ +/* $NetBSD: pmap_pvt.h,v 1.3 2022/02/16 20:14:06 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #ifndef _UVM_PMAP_PMAP_PVT_H_ #define _UVM_PMAP_PMAP_PVT_H_ -#include +#include struct pmap_page;
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: riastradh Date: Wed Feb 16 20:14:06 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_pvt.h Log Message: pmap_pvt.h: Fix bogus include. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/uvm/pmap/pmap_pvt.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: christos Date: Sun Jan 2 16:03:30 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: fix KASSERTMSG issue To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.50 src/sys/uvm/pmap/pmap_tlb.c:1.51 --- src/sys/uvm/pmap/pmap_tlb.c:1.50 Wed Dec 29 07:53:38 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Sun Jan 2 11:03:30 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.50 2021/12/29 12:53:38 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.51 2022/01/02 16:03:30 christos Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.50 2021/12/29 12:53:38 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.51 2022/01/02 16:03:30 christos Exp $"); /* * Manages address spaces in a TLB. @@ -471,9 +471,9 @@ pmap_tlb_asid_reinitialize(struct pmap_t pmap_tlb_asid_check(); #ifdef DIAGNOSTIC const u_int asids_count = pmap_tlb_asid_count(ti); -#endif KASSERTMSG(asids_found == asids_count, "found %u != count %u", asids_found, asids_count); +#endif if (__predict_false(asids_found >= ti->ti_asid_max / 2)) { tlb_invalidate_asids(KERNEL_PID + 1, ti->ti_asid_max); #else /* MULTIPROCESSOR && !PMAP_TLB_NEED_SHOOTDOWN */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: christos Date: Sun Jan 2 16:03:30 UTC 2022 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: fix KASSERTMSG issue To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Wed Dec 29 12:53:38 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Remove duplicate KASSERT To generate a diff of this commit: cvs rdiff -u -r1.49 -r1.50 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.49 src/sys/uvm/pmap/pmap_tlb.c:1.50 --- src/sys/uvm/pmap/pmap_tlb.c:1.49 Wed Oct 27 06:54:15 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Wed Dec 29 12:53:38 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.49 2021/10/27 06:54:15 simonb Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.50 2021/12/29 12:53:38 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.49 2021/10/27 06:54:15 simonb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.50 2021/12/29 12:53:38 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -866,7 +866,6 @@ pmap_tlb_asid_alloc(struct pmap_tlb_info * Mark it as used and insert the pai into the list of active asids. * There is also one less asid free in this TLB. */ - KASSERT(ti->ti_asid_hint > KERNEL_PID); pai->pai_asid = ti->ti_asid_hint++; #ifdef MULTIPROCESSOR if (PMAP_TLB_FLUSH_ASID_ON_RESET) {
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Wed Dec 29 12:53:38 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Remove duplicate KASSERT To generate a diff of this commit: cvs rdiff -u -r1.49 -r1.50 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: simonb Date: Wed Oct 27 06:54:15 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: TAB police. To generate a diff of this commit: cvs rdiff -u -r1.48 -r1.49 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.48 src/sys/uvm/pmap/pmap_tlb.c:1.49 --- src/sys/uvm/pmap/pmap_tlb.c:1.48 Wed Oct 27 05:33:59 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Wed Oct 27 06:54:15 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.48 2021/10/27 05:33:59 simonb Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.49 2021/10/27 06:54:15 simonb Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.48 2021/10/27 05:33:59 simonb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.49 2021/10/27 06:54:15 simonb Exp $"); /* * Manages address spaces in a TLB. @@ -1084,11 +1084,11 @@ pmap_tlb_asid_check(void) void pmap_tlb_check(pmap_t pm, bool (*func)(void *, vaddr_t, tlb_asid_t, pt_entry_t)) { -struct pmap_tlb_info * const ti = cpu_tlb_info(curcpu()); -struct pmap_asid_info * const pai = PMAP_PAI(pm, ti); -TLBINFO_LOCK(ti); -if (pm == pmap_kernel() || pai->pai_asid > KERNEL_PID) + struct pmap_tlb_info * const ti = cpu_tlb_info(curcpu()); + struct pmap_asid_info * const pai = PMAP_PAI(pm, ti); + TLBINFO_LOCK(ti); + if (pm == pmap_kernel() || pai->pai_asid > KERNEL_PID) tlb_walk(pm, func); -TLBINFO_UNLOCK(ti); + TLBINFO_UNLOCK(ti); } #endif /* DEBUG */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: simonb Date: Wed Oct 27 06:54:15 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: TAB police. To generate a diff of this commit: cvs rdiff -u -r1.48 -r1.49 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: simonb Date: Wed Oct 27 05:33:59 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: When adjusting the max ASID count, check if ti->ti_asid_max == 0 as well. This defaults to 0 for the non-PMAP_TLB_NUM_PIDS case, so would skip the updated test. Fix for port-pmax/56466 (which affects all MIPS). ok srkll@ To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: simonb Date: Wed Oct 27 05:33:59 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: When adjusting the max ASID count, check if ti->ti_asid_max == 0 as well. This defaults to 0 for the non-PMAP_TLB_NUM_PIDS case, so would skip the updated test. Fix for port-pmax/56466 (which affects all MIPS). ok srkll@ To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.47 src/sys/uvm/pmap/pmap_tlb.c:1.48 --- src/sys/uvm/pmap/pmap_tlb.c:1.47 Fri Oct 8 07:17:32 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Wed Oct 27 05:33:59 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.47 2021/10/08 07:17:32 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.48 2021/10/27 05:33:59 simonb Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.47 2021/10/08 07:17:32 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.48 2021/10/27 05:33:59 simonb Exp $"); /* * Manages address spaces in a TLB. @@ -379,7 +379,7 @@ pmap_tlb_info_init(struct pmap_tlb_info #endif const tlb_asid_t asid_max = pmap_md_tlb_asid_max(); - if (asid_max < ti->ti_asid_max) { + if (ti->ti_asid_max == 0 || asid_max < ti->ti_asid_max) { ti->ti_asid_max = asid_max; ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti->ti_asid_max); }
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Fri Oct 8 07:17:32 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fix a logic botch to actually apply the ASID limit returned by pmap_md_tlb_asid_max. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.46 src/sys/uvm/pmap/pmap_tlb.c:1.47 --- src/sys/uvm/pmap/pmap_tlb.c:1.46 Sat Oct 2 14:28:05 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Fri Oct 8 07:17:32 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.46 2021/10/02 14:28:05 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.47 2021/10/08 07:17:32 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.46 2021/10/02 14:28:05 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.47 2021/10/08 07:17:32 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -378,8 +378,9 @@ pmap_tlb_info_init(struct pmap_tlb_info kcpuset_set(ti->ti_kcpuset, cpu_index(curcpu())); #endif - if (ti->ti_asid_max == 0) { - ti->ti_asid_max = pmap_md_tlb_asid_max(); + const tlb_asid_t asid_max = pmap_md_tlb_asid_max(); + if (asid_max < ti->ti_asid_max) { + ti->ti_asid_max = asid_max; ti->ti_asids_free = TLBINFO_ASID_INITIAL_FREE(ti->ti_asid_max); }
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Fri Oct 8 07:17:32 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Fix a logic botch to actually apply the ASID limit returned by pmap_md_tlb_asid_max. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Sep 12 09:05:01 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: comment whitespace To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sun Sep 12 09:05:01 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: comment whitespace To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.44 src/sys/uvm/pmap/pmap_tlb.c:1.45 --- src/sys/uvm/pmap/pmap_tlb.c:1.44 Tue May 4 09:05:34 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Sun Sep 12 09:05:01 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.44 2021/05/04 09:05:34 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.45 2021/09/12 09:05:01 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.44 2021/05/04 09:05:34 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.45 2021/09/12 09:05:01 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -73,7 +73,7 @@ __KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v * "current ASID" field, e.g. the ASID field of the COP 0 register EntryHi for * MIPS, or the ASID field of TTBR0 for AA64. The bit number used in these * bitmaps comes from the CPU's cpu_index(). Even though these bitmaps contain - * the bits for all CPUs, the bits that correspond to the bits belonging to + * the bits for all CPUs, the bits that correspond to the bits belonging to * the CPUs sharing a TLB can only be manipulated while holding that TLB's * lock. Atomic ops must be used to update them since multiple CPUs may be * changing different sets of bits at same time but these sets never overlap.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Tue May 4 09:05:34 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Always expose pmap_tlb_update_addr now that all current PMAP_HWPAGEWALKERs (arm) users provide the required functions. To generate a diff of this commit: cvs rdiff -u -r1.43 -r1.44 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.43 src/sys/uvm/pmap/pmap_tlb.c:1.44 --- src/sys/uvm/pmap/pmap_tlb.c:1.43 Sat May 1 14:00:57 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Tue May 4 09:05:34 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.44 2021/05/04 09:05:34 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.44 2021/05/04 09:05:34 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -733,7 +733,6 @@ pmap_tlb_shootdown_bystanders(pmap_t pm) } #endif /* MULTIPROCESSOR && PMAP_TLB_NEED_SHOOTDOWN */ -#ifndef PMAP_HWPAGEWALKER int pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags) { @@ -773,7 +772,6 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t return rv; } -#endif /* !PMAP_HWPAGEWALKER */ void pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va)
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Tue May 4 09:05:34 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Always expose pmap_tlb_update_addr now that all current PMAP_HWPAGEWALKERs (arm) users provide the required functions. To generate a diff of this commit: cvs rdiff -u -r1.43 -r1.44 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat May 1 14:00:57 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Revert previous To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat May 1 14:00:57 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Revert previous To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.42 src/sys/uvm/pmap/pmap_tlb.c:1.43 --- src/sys/uvm/pmap/pmap_tlb.c:1.42 Sat May 1 06:56:41 2021 +++ src/sys/uvm/pmap/pmap_tlb.c Sat May 1 14:00:57 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.43 2021/05/01 14:00:57 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -733,6 +733,7 @@ pmap_tlb_shootdown_bystanders(pmap_t pm) } #endif /* MULTIPROCESSOR && PMAP_TLB_NEED_SHOOTDOWN */ +#ifndef PMAP_HWPAGEWALKER int pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags) { @@ -772,6 +773,7 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t return rv; } +#endif /* !PMAP_HWPAGEWALKER */ void pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va)
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat May 1 06:56:41 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Expose pmap_tlb_update_addr to the PMAP_HWPAGEWALKER platforms To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat May 1 06:56:41 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Expose pmap_tlb_update_addr to the PMAP_HWPAGEWALKER platforms To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.41 src/sys/uvm/pmap/pmap_tlb.c:1.42 --- src/sys/uvm/pmap/pmap_tlb.c:1.41 Thu Sep 24 06:45:58 2020 +++ src/sys/uvm/pmap/pmap_tlb.c Sat May 1 06:56:41 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.42 2021/05/01 06:56:41 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -733,7 +733,6 @@ pmap_tlb_shootdown_bystanders(pmap_t pm) } #endif /* MULTIPROCESSOR && PMAP_TLB_NEED_SHOOTDOWN */ -#ifndef PMAP_HWPAGEWALKER int pmap_tlb_update_addr(pmap_t pm, vaddr_t va, pt_entry_t pte, u_int flags) { @@ -773,7 +772,6 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t return rv; } -#endif /* !PMAP_HWPAGEWALKER */ void pmap_tlb_invalidate_addr(pmap_t pm, vaddr_t va)
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Mar 13 15:29:13 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Don't use %jx for 0 or 1 - just use %jd in UVMHIST_LOG format. To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/uvm/pmap/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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.58 src/sys/uvm/pmap/pmap.c:1.59 --- src/sys/uvm/pmap/pmap.c:1.58 Sun Dec 20 16:38:26 2020 +++ src/sys/uvm/pmap/pmap.c Sat Mar 13 15:29:13 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.58 2020/12/20 16:38:26 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.59 2021/03/13 15:29:13 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.58 2020/12/20 16:38:26 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.59 2021/03/13 15:29:13 skrll Exp $"); /* * Manages physical address maps. @@ -950,7 +950,7 @@ pmap_update(struct pmap *pmap) pmap_tlb_miss_lock_exit(); kpreempt_enable(); - UVMHIST_LOG(pmaphist, " <-- done (kernel=%jx)", + UVMHIST_LOG(pmaphist, " <-- done (kernel=%jd)", (pmap == pmap_kernel() ? 1 : 0), 0, 0, 0); } @@ -969,7 +969,7 @@ pmap_pte_remove(pmap_t pmap, vaddr_t sva const bool is_kernel_pmap_p = (pmap == pmap_kernel()); UVMHIST_FUNC(__func__); - UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jx va=%#jx..%#jx)", + UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jd va=%#jx..%#jx)", (uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva); UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)", (uintptr_t)ptep, flags, 0, 0); @@ -1113,7 +1113,7 @@ pmap_pte_protect(pmap_t pmap, vaddr_t sv const vm_prot_t prot = (flags & VM_PROT_ALL); UVMHIST_FUNC(__func__); - UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jx va=%#jx..%#jx)", + UVMHIST_CALLARGS(pmaphist, "(pmap=%#jx kernel=%jd va=%#jx..%#jx)", (uintptr_t)pmap, (pmap == pmap_kernel() ? 1 : 0), sva, eva); UVMHIST_LOG(pmaphist, "ptep=%#jx, flags(npte)=%#jx)", (uintptr_t)ptep, flags, 0, 0);
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Mar 13 15:29:13 UTC 2021 Modified Files: src/sys/uvm/pmap: pmap.c Log Message: Don't use %jx for 0 or 1 - just use %jd in UVMHIST_LOG format. To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/uvm/pmap/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Dec 21 08:41:38 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.h Log Message: Remove variable in function declaration argument To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap.h diff -u src/sys/uvm/pmap/pmap.h:1.18 src/sys/uvm/pmap/pmap.h:1.19 --- src/sys/uvm/pmap/pmap.h:1.18 Sun Dec 20 16:38:26 2020 +++ src/sys/uvm/pmap/pmap.h Mon Dec 21 08:41:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.18 2020/12/20 16:38:26 skrll Exp $ */ +/* $NetBSD: pmap.h,v 1.19 2020/12/21 08:41:38 skrll Exp $ */ /* * Copyright (c) 1992, 1993 @@ -195,7 +195,7 @@ bool pmap_page_clear_attributes(struct v void pmap_page_set_attributes(struct vm_page_md *, u_int); void pmap_pvlist_lock_init(size_t); #ifdef PMAP_VIRTUAL_CACHE_ALIASES -void pmap_page_cache(struct vm_page_md *, bool cached); +void pmap_page_cache(struct vm_page_md *, bool); #endif #ifdef __HAVE_PMAP_PV_TRACK
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Mon Dec 21 08:41:38 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.h Log Message: Remove variable in function declaration argument To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/pmap/pmap.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 8 14:02:40 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.c pmap_segtab.c Log Message: %#jx vs %jx consistency in UVMHIST_LOG To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.25 -r1.26 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Oct 8 14:02:40 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.c pmap_segtab.c Log Message: %#jx vs %jx consistency in UVMHIST_LOG To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.25 -r1.26 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.56 src/sys/uvm/pmap/pmap.c:1.57 --- src/sys/uvm/pmap/pmap.c:1.56 Thu Sep 24 06:45:58 2020 +++ src/sys/uvm/pmap/pmap.c Thu Oct 8 14:02:40 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.57 2020/10/08 14:02:40 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.57 2020/10/08 14:02:40 skrll Exp $"); /* * Manages physical address maps. @@ -407,13 +407,13 @@ pmap_page_syncicache(struct vm_page *pg) VM_PAGEMD_PVLIST_READLOCK(mdpg); pmap_pvlist_check(mdpg); - UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx", (uintptr_t)pv, + UVMHIST_LOG(pmaphist, "pv %#jx pv_pmap %#jx", (uintptr_t)pv, (uintptr_t)pv->pv_pmap, 0, 0); if (pv->pv_pmap != NULL) { for (; pv != NULL; pv = pv->pv_next) { #ifdef MULTIPROCESSOR - UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx", + UVMHIST_LOG(pmaphist, "pv %#jx pv_pmap %#jx", (uintptr_t)pv, (uintptr_t)pv->pv_pmap, 0, 0); kcpuset_merge(onproc, pv->pv_pmap->pm_onproc); if (kcpuset_match(onproc, kcpuset_running)) { @@ -779,7 +779,7 @@ pmap_page_remove(struct vm_page *pg) npv = pv->pv_next; #ifdef PMAP_VIRTUAL_CACHE_ALIASES if (PV_ISKENTER_P(pv)) { - UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %jx" + UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %#jx" " skip", (uintptr_t)pv, (uintptr_t)pv->pv_pmap, pv->pv_va, 0); @@ -815,8 +815,8 @@ pmap_page_remove(struct vm_page *pg) KASSERTMSG(ptep != NULL, "%#"PRIxVADDR " %#"PRIxVADDR, va, pmap_limits.virtual_end); pt_entry_t pte = *ptep; - UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %jx" - " pte %jx", (uintptr_t)pv, (uintptr_t)pmap, va, + UVMHIST_LOG(pmaphist, " pv %#jx pmap %#jx va %#jx" + " pte %#jx", (uintptr_t)pv, (uintptr_t)pmap, va, pte_value(pte)); if (!pte_valid_p(pte)) continue; @@ -918,7 +918,7 @@ pmap_update(struct pmap *pmap) pmap_tlb_miss_lock_exit(); kpreempt_enable(); - UVMHIST_LOG(pmaphist, " <-- done (kernel=%#jx)", + UVMHIST_LOG(pmaphist, " <-- done (kernel=%jx)", (pmap == pmap_kernel() ? 1 : 0), 0, 0, 0); } Index: src/sys/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.25 src/sys/uvm/pmap/pmap_segtab.c:1.26 --- src/sys/uvm/pmap/pmap_segtab.c:1.25 Thu Sep 24 06:45:58 2020 +++ src/sys/uvm/pmap/pmap_segtab.c Thu Oct 8 14:02:40 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.26 2020/10/08 14:02:40 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.26 2020/10/08 14:02:40 skrll Exp $"); /* * Manages physical address maps. @@ -265,7 +265,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se UVMHIST_FUNC(__func__); UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx stpp=%#jx free=%jd", (uintptr_t)pmap, (uintptr_t)stp_p, free_stp, 0); - UVMHIST_LOG(pmapsegtabhist, " callback=%jx flags=%jx va=%jx vinc=%jx", + UVMHIST_LOG(pmapsegtabhist, " callback=%#jx flags=%jx va=%#jx vinc=%#jx", (uintptr_t)callback, flags, (uintptr_t)va, (uintptr_t)vinc); for (size_t i = (va / vinc) & (PMAP_SEGTABSIZE - 1); i < PMAP_SEGTABSIZE; @@ -574,7 +574,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va *pte_p = pte; #endif KASSERT(pte == stp->seg_tab[(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1)]); - UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx va=%#jx -> tab[%jd]=%jx", + UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx va=%#jx -> tab[%jd]=%#jx", (uintptr_t)pmap, (uintptr_t)va, (va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1), (uintptr_t)pte);
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Sep 24 06:45:58 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.c pmap_segtab.c pmap_tlb.c Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.24 -r1.25 src/sys/uvm/pmap/pmap_segtab.c cvs rdiff -u -r1.40 -r1.41 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Thu Sep 24 06:45:58 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.c pmap_segtab.c pmap_tlb.c Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.24 -r1.25 src/sys/uvm/pmap/pmap_segtab.c cvs rdiff -u -r1.40 -r1.41 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.55 src/sys/uvm/pmap/pmap.c:1.56 --- src/sys/uvm/pmap/pmap.c:1.55 Thu Aug 20 05:54:32 2020 +++ src/sys/uvm/pmap/pmap.c Thu Sep 24 06:45:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $ */ +/* $NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.56 2020/09/24 06:45:58 skrll Exp $"); /* * Manages physical address maps. @@ -408,7 +408,7 @@ pmap_page_syncicache(struct vm_page *pg) pmap_pvlist_check(mdpg); UVMHIST_LOG(pmaphist, "pv %jx pv_pmap %jx", (uintptr_t)pv, - (uintptr_t)pv->pv_pmap, 0, 0); + (uintptr_t)pv->pv_pmap, 0, 0); if (pv->pv_pmap != NULL) { for (; pv != NULL; pv = pv->pv_next) { Index: src/sys/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.24 src/sys/uvm/pmap/pmap_segtab.c:1.25 --- src/sys/uvm/pmap/pmap_segtab.c:1.24 Thu Sep 10 02:12:57 2020 +++ src/sys/uvm/pmap/pmap_segtab.c Thu Sep 24 06:45:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.25 2020/09/24 06:45:58 skrll Exp $"); /* * Manages physical address maps. @@ -192,7 +192,7 @@ pmap_check_ptes(pt_entry_t *pte, const c j, pte_value(pte[j]), 0, 0); #endif panic("%s: pte[%zu] entry at %p not 0 (%#"PRIxPTE")", - caller, i, [i], pte_value(pte[i])); + caller, i, [i], pte_value(pte[i])); } #endif } Index: src/sys/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.40 src/sys/uvm/pmap/pmap_tlb.c:1.41 --- src/sys/uvm/pmap/pmap_tlb.c:1.40 Sat Aug 22 14:51:44 2020 +++ src/sys/uvm/pmap/pmap_tlb.c Thu Sep 24 06:45:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.41 2020/09/24 06:45:58 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -757,8 +757,8 @@ pmap_tlb_update_addr(pmap_t pm, vaddr_t (flags & PMAP_TLB_INSERT) != 0); pmap_tlb_asid_check(); UVMHIST_LOG(maphist, - " %jd <-- tlb_update_addr(%#jx, %#jx, %#jx, ...)", - rv, va, pai->pai_asid, pte_value(pte)); + " %jd <-- tlb_update_addr(%#jx, %#jx, %#jx, ...)", + rv, va, pai->pai_asid, pte_value(pte)); KASSERTMSG((flags & PMAP_TLB_INSERT) == 0 || rv == 1, "pmap %p (asid %u) va %#"PRIxVADDR" pte %#"PRIxPTE" rv %d", pm, pai->pai_asid, va, pte_value(pte), rv);
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Thu Sep 10 02:12:57 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Cast pointer arguments of UVMHIST_CALLARGS() into uintptr_t. Appease GCC9 -Wpointer-to-int-cast on ILP32 environments. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.23 src/sys/uvm/pmap/pmap_segtab.c:1.24 --- src/sys/uvm/pmap/pmap_segtab.c:1.23 Sat Aug 22 15:34:51 2020 +++ src/sys/uvm/pmap/pmap_segtab.c Thu Sep 10 02:12:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.23 2020/08/22 15:34:51 skrll Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.23 2020/08/22 15:34:51 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.24 2020/09/10 02:12:57 rin Exp $"); /* * Manages physical address maps. @@ -246,7 +246,7 @@ pmap_segtab_free(pmap_segtab_t *stp) { UVMHIST_FUNC(__func__); - UVMHIST_CALLARGS(pmapsegtabhist, "stp=%#jx", stp, 0, 0, 0); + UVMHIST_CALLARGS(pmapsegtabhist, "stp=%#jx", (uintptr_t)stp, 0, 0, 0); mutex_spin_enter(_segtab_lock); stp->seg_seg[0] = pmap_segtab_info.free_segtab; @@ -346,7 +346,8 @@ pmap_segtab_alloc(void) stp->seg_seg[0] = NULL; SEGTAB_ADD(nget, 1); found_on_freelist = true; - UVMHIST_CALLARGS(pmapsegtabhist, "freelist stp=%#jx", stp, 0, 0, 0); + UVMHIST_CALLARGS(pmapsegtabhist, "freelist stp=%#jx", + (uintptr_t)stp, 0, 0, 0); } mutex_spin_exit(_segtab_lock); @@ -364,7 +365,8 @@ pmap_segtab_alloc(void) const paddr_t stp_pa = VM_PAGE_TO_PHYS(stp_pg); stp = (pmap_segtab_t *)PMAP_MAP_POOLPAGE(stp_pa); - UVMHIST_CALLARGS(pmapsegtabhist, "new stp=%#jx", stp, 0, 0, 0); + UVMHIST_CALLARGS(pmapsegtabhist, "new stp=%#jx", + (uintptr_t)stp, 0, 0, 0); const size_t n = NBPG / sizeof(*stp); if (n > 1) { /* @@ -574,7 +576,7 @@ pmap_pte_reserve(pmap_t pmap, vaddr_t va KASSERT(pte == stp->seg_tab[(va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1)]); UVMHIST_CALLARGS(pmapsegtabhist, "pm=%#jx va=%#jx -> tab[%jd]=%jx", (uintptr_t)pmap, (uintptr_t)va, - (va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1), pte); + (va >> SEGSHIFT) & (PMAP_SEGTABSIZE - 1), (uintptr_t)pte); pmap_check_ptes(pte, __func__); pte += (va >> PGSHIFT) & (NPTEPG - 1);
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: rin Date: Thu Sep 10 02:12:57 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Cast pointer arguments of UVMHIST_CALLARGS() into uintptr_t. Appease GCC9 -Wpointer-to-int-cast on ILP32 environments. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
re: CVS commit: src/sys/uvm/pmap
> Modified Files: > src/sys/uvm/pmap: pmap_segtab.c > > Log Message: > Remove the #if defined(__mips_n64) && PAGE_SIZE == 8192 and make the > check MI - all PTs are PAGE_SIZE aligned thanks! that is a much better way of doing it. .mrg.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Aug 22 15:32:36 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Remove the #if defined(__mips_n64) && PAGE_SIZE == 8192 and make the check MI - all PTs are PAGE_SIZE aligned To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.21 src/sys/uvm/pmap/pmap_segtab.c:1.22 --- src/sys/uvm/pmap/pmap_segtab.c:1.21 Sat Aug 22 13:59:16 2020 +++ src/sys/uvm/pmap/pmap_segtab.c Sat Aug 22 15:32:36 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.22 2020/08/22 15:32:36 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.22 2020/08/22 15:32:36 skrll Exp $"); /* * Manages physical address maps. @@ -171,6 +171,13 @@ pmap_check_stp(pmap_segtab_t *stp, const static void pmap_check_ptes(pt_entry_t *pte, const char *caller) { + /* + * All pte arrays should be page aligned. + */ + if (((uintptr_t)pte & PAGE_MASK) != 0) { + panic("%s: pte entry at %p not page aligned", caller, pte); + } + #ifdef DEBUG for (size_t i = 0; i < NPTEPG; i++) if (!pte_zero_p(pte[i])) { @@ -283,17 +290,6 @@ pmap_segtab_release(pmap_t pmap, pmap_se continue; pmap_check_ptes(pte, __func__); -#if defined(__mips_n64) && PAGE_SIZE == 8192 - /* - * XXX This is evil. If vinc is 100 we are in - * the last level, and this pte should be page aligned. - */ - if (vinc == 0x100 && ((uintptr_t)pte & PAGE_MASK) != 0) { - panic("%s: pte entry at %p not page aligned", - __func__, pte); - } -#endif - /* * If our caller wants a callback, do so. */
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Aug 22 15:32:36 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Remove the #if defined(__mips_n64) && PAGE_SIZE == 8192 and make the check MI - all PTs are PAGE_SIZE aligned To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Aug 22 14:51:44 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Whitespace - line continutation alignment To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/uvm/pmap/pmap_tlb.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/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.39 src/sys/uvm/pmap/pmap_tlb.c:1.40 --- src/sys/uvm/pmap/pmap_tlb.c:1.39 Wed Aug 19 06:11:49 2020 +++ src/sys/uvm/pmap/pmap_tlb.c Sat Aug 22 14:51:44 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.40 2020/08/22 14:51:44 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -629,7 +629,7 @@ pmap_tlb_shootdown_process(void) (nobody) << 3 * TLBINV_NOBODY) \ | ( (one) << 3 * TLBINV_ONE) \ | ( (alluser) << 3 * TLBINV_ALLUSER) \ - | ((allkernel) << 3 * TLBINV_ALLKERNEL) \ + | ((allkernel) << 3 * TLBINV_ALLKERNEL) \ | ( (all) << 3 * TLBINV_ALL)) >> 3 * (op)) & 7) #define TLBINV_USER_MAP(op) \
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Aug 22 14:51:44 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_tlb.c Log Message: Whitespace - line continutation alignment To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/uvm/pmap/pmap_tlb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Aug 22 13:59:16 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.20 src/sys/uvm/pmap/pmap_segtab.c:1.21 --- src/sys/uvm/pmap/pmap_segtab.c:1.20 Thu Aug 20 23:36:45 2020 +++ src/sys/uvm/pmap/pmap_segtab.c Sat Aug 22 13:59:16 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.21 2020/08/22 13:59:16 skrll Exp $"); /* * Manages physical address maps. @@ -132,7 +132,7 @@ struct pmap_segtab_info { kmutex_t pmap_segtab_lock __cacheline_aligned; /* - * Check that a seg_tab[] array is empty. + * Check that a seg_tab[] array is empty. * * This is used when allocating or freeing a pmap_segtab_t. The stp * should be unused -- meaning, none of the seg_tab[] pointers are @@ -182,7 +182,7 @@ pmap_check_ptes(pt_entry_t *pte, const c if (!pte_zero_p(pte[j])) UVMHIST_LOG(pmapsegtabhist, "pte[%zu] = %#"PRIxPTE, - j, pte_value(pte[j]), 0, 0); + j, pte_value(pte[j]), 0, 0); #endif panic("%s: pte[%zu] entry at %p not 0 (%#"PRIxPTE")", caller, i, [i], pte_value(pte[i])); @@ -281,7 +281,7 @@ pmap_segtab_release(pmap_t pmap, pmap_se pt_entry_t *pte = stp->seg_tab[i]; if (pte == NULL) continue; - pmap_check_ptes(pte, __func__); + pmap_check_ptes(pte, __func__); #if defined(__mips_n64) && PAGE_SIZE == 8192 /*
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Sat Aug 22 13:59:16 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: mrg Date: Thu Aug 20 23:36:45 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: fix hpcmips and evbppc builds (wrong type in panic()). To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: mrg Date: Thu Aug 20 23:36:45 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_segtab.c Log Message: fix hpcmips and evbppc builds (wrong type in panic()). To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.19 src/sys/uvm/pmap/pmap_segtab.c:1.20 --- src/sys/uvm/pmap/pmap_segtab.c:1.19 Thu Aug 20 05:54:32 2020 +++ src/sys/uvm/pmap/pmap_segtab.c Thu Aug 20 23:36:45 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.20 2020/08/20 23:36:45 mrg Exp $"); /* * Manages physical address maps. @@ -184,7 +184,7 @@ pmap_check_ptes(pt_entry_t *pte, const c "pte[%zu] = %#"PRIxPTE, j, pte_value(pte[j]), 0, 0); #endif - panic("%s: pte[%ju] entry at %pu not 0 (%#"PRIxPTE")", + panic("%s: pte[%zu] entry at %p not 0 (%#"PRIxPTE")", caller, i, [i], pte_value(pte[i])); } #endif
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: mrg Date: Thu Aug 20 05:54:32 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h pmap_segtab.c Log Message: move pmap segtab history into a new history of only 1000 entries, but will overflow much slower than the main pmap history. move various debug info into kernhist. make pte array checker into an array and use it in pmap_segtab_release() and pmap_pte_reserve(). move check before MD callback(), incase it wants to change ptes for some reason (they're passed in, but this callback is currently always NULL.) clean up some history logs to reduce the number of lines required. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap.h cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/pmap/pmap_segtab.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/uvm/pmap/pmap.c diff -u src/sys/uvm/pmap/pmap.c:1.54 src/sys/uvm/pmap/pmap.c:1.55 --- src/sys/uvm/pmap/pmap.c:1.54 Wed Aug 19 07:29:01 2020 +++ src/sys/uvm/pmap/pmap.c Thu Aug 20 05:54:32 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.54 2020/08/19 07:29:01 simonb Exp $ */ +/* $NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.54 2020/08/19 07:29:01 simonb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.55 2020/08/20 05:54:32 mrg Exp $"); /* * Manages physical address maps. @@ -217,8 +217,10 @@ struct pmap_limits pmap_limits = { /* VA #ifdef UVMHIST static struct kern_history_ent pmapexechistbuf[1]; static struct kern_history_ent pmaphistbuf[1]; +static struct kern_history_ent pmapsegtabhistbuf[1000]; UVMHIST_DEFINE(pmapexechist); UVMHIST_DEFINE(pmaphist); +UVMHIST_DEFINE(pmapsegtabhist); #endif /* @@ -587,6 +589,7 @@ pmap_init(void) { UVMHIST_INIT_STATIC(pmapexechist, pmapexechistbuf); UVMHIST_INIT_STATIC(pmaphist, pmaphistbuf); + UVMHIST_INIT_STATIC(pmapsegtabhist, pmapsegtabhistbuf); UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist); Index: src/sys/uvm/pmap/pmap.h diff -u src/sys/uvm/pmap/pmap.h:1.16 src/sys/uvm/pmap/pmap.h:1.17 --- src/sys/uvm/pmap/pmap.h:1.16 Fri Aug 7 07:19:45 2020 +++ src/sys/uvm/pmap/pmap.h Thu Aug 20 05:54:32 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.16 2020/08/07 07:19:45 skrll Exp $ */ +/* $NetBSD: pmap.h,v 1.17 2020/08/20 05:54:32 mrg Exp $ */ /* * Copyright (c) 1992, 1993 @@ -78,6 +78,7 @@ #ifdef UVMHIST UVMHIST_DECL(pmapexechist); UVMHIST_DECL(pmaphist); +UVMHIST_DECL(pmapsegtabhist); #endif /* Index: src/sys/uvm/pmap/pmap_segtab.c diff -u src/sys/uvm/pmap/pmap_segtab.c:1.18 src/sys/uvm/pmap/pmap_segtab.c:1.19 --- src/sys/uvm/pmap/pmap_segtab.c:1.18 Tue Aug 18 11:48:21 2020 +++ src/sys/uvm/pmap/pmap_segtab.c Thu Aug 20 05:54:32 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_segtab.c,v 1.18 2020/08/18 11:48:21 simonb Exp $ */ +/* $NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.18 2020/08/18 11:48:21 simonb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_segtab.c,v 1.19 2020/08/20 05:54:32 mrg Exp $"); /* * Manages physical address maps. @@ -131,16 +131,32 @@ struct pmap_segtab_info { kmutex_t pmap_segtab_lock __cacheline_aligned; +/* + * Check that a seg_tab[] array is empty. + * + * This is used when allocating or freeing a pmap_segtab_t. The stp + * should be unused -- meaning, none of the seg_tab[] pointers are + * not NULL, as it transitions from either freshly allocated segtab from + * pmap pool, an unused allocated page segtab alloc from the SMP case, + * where two CPUs attempt to allocate the same underlying segtab, the + * release of a segtab entry to the freelist, or for SMP, where reserve + * also frees a freshly allocated but unused entry. + */ static void pmap_check_stp(pmap_segtab_t *stp, const char *caller, const char *why) { #ifdef DEBUG for (size_t i = 0; i < PMAP_SEGTABSIZE; i++) { - if (stp->seg_tab[i] != 0) { + if (stp->seg_tab[i] != NULL) { +#define DEBUG_NOISY #ifdef DEBUG_NOISY + UVMHIST_FUNC(__func__); + UVMHIST_CALLARGS(pmapsegtabhist, "stp=%#jx", + (uintptr_t)stp, 0, 0, 0); for (size_t j = i; j < PMAP_SEGTABSIZE; j++) -printf("%s: pm_segtab.seg_tab[%zu] = %p\n", -caller, j, stp->seg_tab[j]); +if (stp->seg_tab[j] != NULL) + printf("%s: stp->seg_tab[%zu] = %p\n", + caller, j, stp->seg_tab[j]); #endif panic("%s: pm_segtab.seg_tab[%zu] != 0 (%p): %s", caller, i, stp->seg_tab[i], why); @@ -149,6 +165,31 @@ pmap_check_stp(pmap_segtab_t *stp, const #endif } +/* + * Check that an array of ptes is actually zero. + */ +static void +pmap_check_ptes(pt_entry_t *pte, const char
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: mrg Date: Thu Aug 20 05:54:32 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap.c pmap.h pmap_segtab.c Log Message: move pmap segtab history into a new history of only 1000 entries, but will overflow much slower than the main pmap history. move various debug info into kernhist. make pte array checker into an array and use it in pmap_segtab_release() and pmap_pte_reserve(). move check before MD callback(), incase it wants to change ptes for some reason (they're passed in, but this callback is currently always NULL.) clean up some history logs to reduce the number of lines required. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/uvm/pmap/pmap.c cvs rdiff -u -r1.16 -r1.17 src/sys/uvm/pmap/pmap.h cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/pmap/pmap_segtab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Wed Aug 19 06:11:49 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_tlb.c pmap_tlb.h Log Message: KNF. Add some whitespace to the TLBINV_MAP macro and tlb_invalidate_op enum. To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.39 src/sys/uvm/pmap/pmap_tlb.c cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap_tlb.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/uvm/pmap/pmap_tlb.c diff -u src/sys/uvm/pmap/pmap_tlb.c:1.38 src/sys/uvm/pmap/pmap_tlb.c:1.39 --- src/sys/uvm/pmap/pmap_tlb.c:1.38 Wed Aug 19 06:08:27 2020 +++ src/sys/uvm/pmap/pmap_tlb.c Wed Aug 19 06:11:49 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.38 2020/08/19 06:08:27 skrll Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.38 2020/08/19 06:08:27 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.39 2020/08/19 06:11:49 skrll Exp $"); /* * Manages address spaces in a TLB. @@ -626,11 +626,11 @@ pmap_tlb_shootdown_process(void) * can be loaded in a single instruction. */ #define TLBINV_MAP(op, nobody, one, alluser, allkernel, all) \ - (nobody) << 3*TLBINV_NOBODY) \ - | ( (one) << 3*TLBINV_ONE) \ - | ( (alluser) << 3*TLBINV_ALLUSER) \ - | ((allkernel) << 3*TLBINV_ALLKERNEL) \ - | ( (all) << 3*TLBINV_ALL)) >> 3*(op)) & 7) + (nobody) << 3 * TLBINV_NOBODY) \ + | ( (one) << 3 * TLBINV_ONE) \ + | ( (alluser) << 3 * TLBINV_ALLUSER) \ + | ((allkernel) << 3 * TLBINV_ALLKERNEL) \ + | ( (all) << 3 * TLBINV_ALL)) >> 3 * (op)) & 7) #define TLBINV_USER_MAP(op) \ TLBINV_MAP(op, TLBINV_ONE, TLBINV_ALLUSER, TLBINV_ALLUSER, \ Index: src/sys/uvm/pmap/pmap_tlb.h diff -u src/sys/uvm/pmap/pmap_tlb.h:1.14 src/sys/uvm/pmap/pmap_tlb.h:1.15 --- src/sys/uvm/pmap/pmap_tlb.h:1.14 Sat Aug 1 07:14:05 2020 +++ src/sys/uvm/pmap/pmap_tlb.h Wed Aug 19 06:11:49 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.h,v 1.14 2020/08/01 07:14:05 skrll Exp $ */ +/* $NetBSD: pmap_tlb.h,v 1.15 2020/08/19 06:11:49 skrll Exp $ */ /* * Copyright (c) 1992, 1993 @@ -104,11 +104,11 @@ struct pmap_asid_info { - offsetof(struct pmap, pm_pai[tlbinfo_index(ti)]))) enum tlb_invalidate_op { - TLBINV_NOBODY=0, - TLBINV_ONE=1, - TLBINV_ALLUSER=2, - TLBINV_ALLKERNEL=3, - TLBINV_ALL=4 + TLBINV_NOBODY = 0, + TLBINV_ONE = 1, + TLBINV_ALLUSER = 2, + TLBINV_ALLKERNEL = 3, + TLBINV_ALL = 4 }; struct pmap_tlb_info {
CVS commit: src/sys/uvm/pmap
Module Name:src Committed By: skrll Date: Wed Aug 19 06:11:49 UTC 2020 Modified Files: src/sys/uvm/pmap: pmap_tlb.c pmap_tlb.h Log Message: KNF. Add some whitespace to the TLBINV_MAP macro and tlb_invalidate_op enum. To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.39 src/sys/uvm/pmap/pmap_tlb.c cvs rdiff -u -r1.14 -r1.15 src/sys/uvm/pmap/pmap_tlb.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.