svn commit: r279109 - user/nwhitehorn/ppc64-pmap-rework/aim

Nathan Whitehorn nwhitehorn at FreeBSD.org
Sat Feb 21 21:10:12 UTC 2015


Author: nwhitehorn
Date: Sat Feb 21 21:10:10 2015
New Revision: 279109
URL: https://svnweb.freebsd.org/changeset/base/279109

Log:
  Fix locking problems on Apple G5s.

Modified:
  user/nwhitehorn/ppc64-pmap-rework/aim/mmu_oea64.c
  user/nwhitehorn/ppc64-pmap-rework/aim/moea64_native.c

Modified: user/nwhitehorn/ppc64-pmap-rework/aim/mmu_oea64.c
==============================================================================
--- user/nwhitehorn/ppc64-pmap-rework/aim/mmu_oea64.c	Sat Feb 21 20:41:50 2015	(r279108)
+++ user/nwhitehorn/ppc64-pmap-rework/aim/mmu_oea64.c	Sat Feb 21 21:10:10 2015	(r279109)
@@ -482,6 +482,7 @@ moea64_add_ofw_mappings(mmu_t mmup, phan
 {
 	struct ofw_map	translations[sz/(4*sizeof(cell_t))]; /*>= 4 cells per */
 	pcell_t		acells, trans_cells[sz/sizeof(cell_t)];
+	struct pvo_entry *pvo;
 	register_t	msr;
 	vm_offset_t	off;
 	vm_paddr_t	pa_base;
@@ -535,8 +536,11 @@ moea64_add_ofw_mappings(mmu_t mmup, phan
 			    moea64_calc_wimg(pa_base + off, VM_MEMATTR_DEFAULT) 			    == LPTE_M)
 				continue;
 
-			if (moea64_pvo_find_va(kernel_pmap,
-			    translations[i].om_va + off) != NULL)
+			PMAP_LOCK(kernel_pmap);
+			pvo = moea64_pvo_find_va(kernel_pmap,
+			    translations[i].om_va + off);
+			PMAP_UNLOCK(kernel_pmap);
+			if (pvo != NULL)
 				continue;
 
 			moea64_kenter(mmup, translations[i].om_va + off,

Modified: user/nwhitehorn/ppc64-pmap-rework/aim/moea64_native.c
==============================================================================
--- user/nwhitehorn/ppc64-pmap-rework/aim/moea64_native.c	Sat Feb 21 20:41:50 2015	(r279108)
+++ user/nwhitehorn/ppc64-pmap-rework/aim/moea64_native.c	Sat Feb 21 21:10:10 2015	(r279109)
@@ -342,6 +342,7 @@ moea64_pte_unset_native(mmu_t mmu, struc
 	ptelo = be64toh(pt->pte_lo);
 	*((volatile int32_t *)(&pt->pte_hi) + 1) = 0; /* Release lock */
 	critical_exit();
+	rw_runlock(&moea64_eviction_lock);
 
 	/* Keep statistics */
 	moea64_pte_valid--;


More information about the svn-src-user mailing list