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