Skip site navigation (1)Skip section navigation (2)
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>