PERFORCE change 133992 for review

Rafal Jaworowski raj at FreeBSD.org
Thu Jan 24 01:45:30 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=133992

Change 133992 by raj at raj_mimi on 2008/01/24 09:45:14

	Various cosmetics and cleanups.

Affected files ...

.. //depot/projects/e500/sys/powerpc/booke/pmap.c#9 edit

Differences ...

==== //depot/projects/e500/sys/powerpc/booke/pmap.c#9 (text+ko) ====

@@ -108,7 +108,7 @@
 /* Kernel physical load address. */
 extern uint32_t kernload;
 
-#define        MEM_REGIONS     8
+#define MEM_REGIONS 8
 struct mem_region availmem_regions[MEM_REGIONS];
 int availmem_regions_sz;
 
@@ -143,7 +143,7 @@
  * If user pmap is processed with mmu_booke_remove and the resident count
  * drops to 0, there are no more pages to remove, so we need not continue.
  */
-#define	PMAP_REMOVE_DONE(pmap) \
+#define PMAP_REMOVE_DONE(pmap) \
 	((pmap) != kernel_pmap && (pmap)->pm_stats.resident_count == 0)
 
 extern void load_pid0(tlbtid_t);
@@ -757,7 +757,7 @@
 
 	pte = &ptbl[ptbl_idx];
 
-	if (!PTE_ISVALID(pte))
+	if (pte == NULL || !PTE_ISVALID(pte))
 		return (0);
 
 	/* Get vm_page_t for mapped pte. */
@@ -1334,7 +1334,7 @@
 }
 
 /*
- * Initialize the pmap associated with process 0.
+ * Initialize pmap associated with process 0.
  */
 void
 mmu_booke_pinit0(mmu_t mmu, pmap_t pmap)
@@ -1592,17 +1592,6 @@
 {
 	//debugf("mmu_booke_enter_quick: s\n");
 
-#if 0
-	/* XXX this is the old way - test if the new approach is really ok..? */
-	vm_page_busy(m);
-	vm_page_unlock_queues();
-	VM_OBJECT_UNLOCK(m->object);
-	mmu_booke_enter(pmap, va, m, prot & (VM_PROT_READ | VM_PROT_EXECUTE), FALSE);
-	VM_OBJECT_LOCK(m->object);
-	vm_page_lock_queues();
-	vm_page_wakeup(m);
-#endif
-
 	PMAP_LOCK(pmap);
 	mmu_booke_enter_locked(mmu, pmap, va, m,
 			       prot & (VM_PROT_READ | VM_PROT_EXECUTE), FALSE);
@@ -1811,7 +1800,7 @@
 				}
 
 				/* Referenced pages. */
-				if (PTE_ISREFERENCED(pte)) 
+				if (PTE_ISREFERENCED(pte))
 					vm_page_flag_set(m, PG_REFERENCED);
 
 				/* Flush mapping from TLB0. */
@@ -1824,57 +1813,10 @@
 	vm_page_unlock_queues();
 }
 
-#if 0
 /*
- * Lower the permission for all mappings to a given page.
+ * Clear the write and modified bits in each of the given page's mappings.
  */
 void
-mmu_booke_page_protect(vm_page_t m, vm_prot_t prot)
-{
-	pv_entry_t pv;
-	pte_t *pte;
-
-	if ((prot & VM_PROT_WRITE) != 0)
-		return;
-
-	if ((prot & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0) {
-		mmu_booke_remove_all(m);
-		return;
-	}
-
-	if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0 ||
-	    (m->flags & PG_WRITEABLE) == 0)
-		return;
-
-	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
-	TAILQ_FOREACH(pv, &m->md.pv_list, pv_link) {
-		PMAP_LOCK(pv->pv_pmap);
-		if ((pte = pte_find(pv->pv_pmap, pv->pv_va)) != NULL) {
-			if (PTE_ISVALID(pte)) {
-				m = PHYS_TO_VM_PAGE(PTE_PA(pte));
-
-				/* Handle modified pages. */
-				if (PTE_ISMODIFIED(pte)) {
-					if (mmu_booke_track_modified(pv->pv_pmap, pv->pv_va))
-						vm_page_dirty(m);
-				}
-
-				/* Referenced pages. */
-				if (PTE_ISREFERENCED(pte)) 
-					vm_page_flag_set(m, PG_REFERENCED);
-
-				/* Flush mapping from TLB0. */
-				pte->flags &= ~(PTE_UW | PTE_SW | PTE_MODIFIED | PTE_REFERENCED);
-				tlb0_flush_entry(pv->pv_pmap, pv->pv_va);
-			}
-		}
-		PMAP_UNLOCK(pv->pv_pmap);
-	}
-	vm_page_flag_clear(m, PG_WRITEABLE);
-}
-#endif
-
-void
 mmu_booke_remove_write(mmu_t mmu, vm_page_t m)
 {
 	pv_entry_t pv;
@@ -2101,7 +2043,7 @@
 				return (TRUE);
 			}
 		}
- make_sure_to_unlock:
+make_sure_to_unlock:
 		PMAP_UNLOCK(pv->pv_pmap);
 	}
 	return (FALSE);
@@ -2248,11 +2190,10 @@
 }
 
 /*
- * Returns true if the pmap's pv is one of the first
- * 16 pvs linked to from this page.  This count may
- * be changed upwards or downwards in the future; it
- * is only necessary that true be returned for a small
- * subset of pmaps for proper page aging.
+ * Return true if the pmap's pv is one of the first 16 pvs linked to from this
+ * page.  This count may be changed upwards or downwards in the future; it is
+ * only necessary that true be returned for a small subset of pmaps for proper
+ * page aging.
  */
 boolean_t
 mmu_booke_page_exists_quick(mmu_t mmu, pmap_t pmap, vm_page_t m)
@@ -2294,9 +2235,8 @@
 	TAILQ_FOREACH(pv, &m->md.pv_list, pv_link) {
 		PMAP_LOCK(pv->pv_pmap);
 		if ((pte = pte_find(mmu, pv->pv_pmap, pv->pv_va)) != NULL)
-			if (PTE_ISVALID(pte))
-				if (PTE_ISWIRED(pte))
-					count++;
+			if (PTE_ISVALID(pte) && PTE_ISWIRED(pte))
+				count++;
 		PMAP_UNLOCK(pv->pv_pmap);
 	}
 


More information about the p4-projects mailing list