diff --git a/sys/uvm/pmap/pmap_tlb.c b/sys/uvm/pmap/pmap_tlb.c index 5c2be5e5da15..973b7270bbd6 100644 --- a/sys/uvm/pmap/pmap_tlb.c +++ b/sys/uvm/pmap/pmap_tlb.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_tlb.c,v 1.11 2015/04/18 16:58:31 joerg Exp $ */ +/* $NetBSD: pmap_tlb.c,v 1.12 2015/06/11 05:28:42 matt Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.11 2015/04/18 16:58:31 joerg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_tlb.c,v 1.12 2015/06/11 05:28:42 matt Exp $"); /* * Manages address spaces in a TLB. @@ -635,9 +635,10 @@ pmap_tlb_shootdown_bystanders(pmap_t pm) struct pmap_asid_info * const pai = PMAP_PAI(pm, ti); kcpuset_remove(pm_active, ti->ti_kcpuset); TLBINFO_LOCK(ti); - if (pmap_tlb_intersecting_onproc_p(pm, ti)) { - cpuid_t j = kcpuset_ffs_intersecting(pm->pm_onproc, - ti->ti_kcpuset); + cpuid_t j = kcpuset_ffs_intersecting(pm->pm_onproc, + ti->ti_kcpuset); + // post decrement since ffs returns bit + 1 or 0 if no bit + if (j-- > 0) { if (kernel_p) { ti->ti_tlbinvop = TLBINV_KERNEL_MAP(ti->ti_tlbinvop);