svn commit: r266357 - stable/10/sys/arm/arm

Ian Lepore ian at FreeBSD.org
Sat May 17 21:23:47 UTC 2014


Author: ian
Date: Sat May 17 21:23:46 2014
New Revision: 266357
URL: http://svnweb.freebsd.org/changeset/base/266357

Log:
  MFC 264183:   Add a couple more required TLB flushes.

Modified:
  stable/10/sys/arm/arm/pmap-v6.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/arm/arm/pmap-v6.c
==============================================================================
--- stable/10/sys/arm/arm/pmap-v6.c	Sat May 17 21:19:44 2014	(r266356)
+++ stable/10/sys/arm/arm/pmap-v6.c	Sat May 17 21:23:46 2014	(r266357)
@@ -853,6 +853,8 @@ pmap_free_l2_bucket(pmap_t pmap, struct 
 	if (l1pd == (L1_C_DOM(pmap->pm_domain) | L1_TYPE_C)) {
 		*pl1pd = 0;
 		PTE_SYNC(pl1pd);
+		cpu_tlb_flushD_SE((vm_offset_t)ptep);
+		cpu_cpwait();
 	}
 
 	/*
@@ -2147,6 +2149,8 @@ pmap_grow_l2_bucket(pmap_t pmap, vm_offs
 			    L1_C_PROTO;
 			PTE_SYNC(pl1pd);
 	}
+	cpu_tlb_flushID_SE(va);
+	cpu_cpwait();
 
 	return (l2b);
 }
@@ -2427,6 +2431,7 @@ pmap_kenter_internal(vm_offset_t va, vm_
 		if (opte == 0)
 			l2b->l2b_occupancy++;
 	}
+	cpu_cpwait();
 
 	PDEBUG(1, printf("pmap_kenter: pte = %08x, opte = %08x, npte = %08x\n",
 	    (uint32_t) ptep, opte, *ptep));
@@ -4958,10 +4963,10 @@ pmap_advise(pmap_t pmap, vm_offset_t sva
 					cpu_tlb_flushID_SE(sva);
 				else if (PTE_BEEN_REFD(opte))
 					cpu_tlb_flushD_SE(sva);
-				cpu_cpwait();
 			}
 		}
 	}
+	cpu_cpwait();
 	rw_wunlock(&pvh_global_lock);
 	PMAP_UNLOCK(pmap);
 }


More information about the svn-src-all mailing list