svn commit: r207262 - head/sys/i386/xen

Alan Cox alc at FreeBSD.org
Tue Apr 27 05:35:36 UTC 2010


Author: alc
Date: Tue Apr 27 05:35:35 2010
New Revision: 207262
URL: http://svn.freebsd.org/changeset/base/207262

Log:
  MFi386 r207205
    Clearing a page table entry's accessed bit (PG_A) and setting the
    page's PG_REFERENCED flag in pmap_protect() can't really be justified,
    so don't do it.

Modified:
  head/sys/i386/xen/pmap.c

Modified: head/sys/i386/xen/pmap.c
==============================================================================
--- head/sys/i386/xen/pmap.c	Tue Apr 27 05:18:02 2010	(r207261)
+++ head/sys/i386/xen/pmap.c	Tue Apr 27 05:35:35 2010	(r207262)
@@ -2600,22 +2600,16 @@ retry:
 			obits = pbits = *pte;
 			if ((pbits & PG_V) == 0)
 				continue;
-			if (pbits & PG_MANAGED) {
-				m = NULL;
-				if (pbits & PG_A) {
-					m = PHYS_TO_VM_PAGE(xpmap_mtop(pbits) & PG_FRAME);
-					vm_page_flag_set(m, PG_REFERENCED);
-					pbits &= ~PG_A;
-				}
-				if ((pbits & PG_M) != 0) {
-					if (m == NULL)
-						m = PHYS_TO_VM_PAGE(xpmap_mtop(pbits) & PG_FRAME);
+
+			if ((prot & VM_PROT_WRITE) == 0) {
+				if ((pbits & (PG_MANAGED | PG_M | PG_RW)) ==
+				    (PG_MANAGED | PG_M | PG_RW)) {
+					m = PHYS_TO_VM_PAGE(xpmap_mtop(pbits) &
+					    PG_FRAME);
 					vm_page_dirty(m);
 				}
-			}
-
-			if ((prot & VM_PROT_WRITE) == 0)
 				pbits &= ~(PG_RW | PG_M);
+			}
 #ifdef PAE
 			if ((prot & VM_PROT_EXECUTE) == 0)
 				pbits |= pg_nx;


More information about the svn-src-head mailing list