Date: Tue, 19 Nov 2019 19:05:06 +0000 (UTC) From: Alan Cox <alc@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r354860 - head/sys/arm64/arm64 Message-ID: <201911191905.xAJJ561L020107@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: alc Date: Tue Nov 19 19:05:05 2019 New Revision: 354860 URL: https://svnweb.freebsd.org/changeset/base/354860 Log: Achieve two goals at once: (1) Avoid an unnecessary broadcast TLB invalidation in reclaim_pv_chunk(). (2) Prevent an "invalid ASID" assertion failure in reclaim_pv_chunk(). The detailed explanation for this change is provided by r354792. X-MFC with: r354792 Modified: head/sys/arm64/arm64/pmap.c Modified: head/sys/arm64/arm64/pmap.c ============================================================================== --- head/sys/arm64/arm64/pmap.c Tue Nov 19 16:40:46 2019 (r354859) +++ head/sys/arm64/arm64/pmap.c Tue Nov 19 19:05:05 2019 (r354860) @@ -2062,12 +2062,13 @@ reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **l if ((tpte & ATTR_SW_WIRED) != 0) continue; tpte = pmap_load_clear(pte); - pmap_invalidate_page(pmap, va); m = PHYS_TO_VM_PAGE(tpte & ~ATTR_MASK); if (pmap_pte_dirty(tpte)) vm_page_dirty(m); - if ((tpte & ATTR_AF) != 0) + if ((tpte & ATTR_AF) != 0) { + pmap_invalidate_page(pmap, va); vm_page_aflag_set(m, PGA_REFERENCED); + } CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m); TAILQ_REMOVE(&m->md.pv_list, pv, pv_next); m->md.pv_gen++;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201911191905.xAJJ561L020107>