PERFORCE change 93431 for review

Kip Macy kmacy at FreeBSD.org
Fri Mar 17 04:58:36 UTC 2006


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

Change 93431 by kmacy at kmacy_storage:sun4v_work on 2006/03/17 04:58:21

	fix pmap_is_prefaultable
	increase possible debugging noise

Affected files ...

.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/pmap.c#29 edit

Differences ...

==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/pmap.c#29 (text+ko) ====

@@ -703,6 +703,7 @@
 	  vm_size_t len, vm_offset_t src_addr)
 {
 	vm_offset_t addr, end_addr;
+
 	return;
 
 	end_addr = src_addr + len;
@@ -904,7 +905,7 @@
 	uint64_t tte_data;
 
 	if (pmap->pm_context)
-		DPRINTF("pmap_enter_quick(va=%lx, pa=0x%lx prot=%x)\n", va, VM_PAGE_TO_PHYS(m), prot);
+		DPRINTF("pmap_enter_quick(ctx=0x%lx va=%lx, pa=0x%lx prot=%x)\n", pmap->pm_context, va, VM_PAGE_TO_PHYS(m), prot);
 	
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
@@ -1024,6 +1025,13 @@
 {
 	pv_entry_t pv;
 
+#if 0
+	TAILQ_FOREACH(pv, &pmap->pm_pvlist, pv_plist) 
+		if (pv->pv_va == va)
+			panic("va=0x%lx already in pmap for ctx=0x%lx\n", 
+			      va, pmap->pm_context);
+#endif
+	DPRINTF("pmap_insert_entry(va=0x%lx, pa=0x%lx)\n", va, VM_PAGE_TO_PHYS(m));
 	pv = get_pv_entry(pmap);
 	pv->pv_va = va;
 	pv->pv_pmap = pmap;
@@ -1033,6 +1041,10 @@
 	TAILQ_INSERT_TAIL(&pmap->pm_pvlist, pv, pv_plist);
 	TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list);
 	m->md.pv_list_count++;
+
+
+		
+
 }
 
 void
@@ -1052,7 +1064,8 @@
 pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
 {
 	vm_offset_t tva;
-	DPRINTF("pmap_invalidate_range(sva=%lx, eva=%lx)\n", sva, eva);
+	if (pmap != kernel_pmap)
+		DPRINTF("pmap_invalidate_range(sva=%lx, eva=%lx)\n", sva, eva);
 	/* XXX SUN4V_FIXME - oversimplified logic */
 
 	tsb_clear_range(&pmap->pm_tsb, sva, eva);
@@ -1095,7 +1108,7 @@
 boolean_t 
 pmap_is_prefaultable(pmap_t pmap, vm_offset_t va)
 {
-	return (TRUE);
+	return (tte_hash_lookup(pmap->pm_hash, va) == NULL);
 }
 
 /*
@@ -1518,7 +1531,8 @@
 pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va)
 {
 	pv_entry_t pv;
-
+	if (pmap != kernel_pmap)
+		DPRINTF("pmap_remove_entry(va=0x%lx, pa=0x%lx)\n", va, VM_PAGE_TO_PHYS(m));
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	if (m->md.pv_list_count < pmap->pm_stats.resident_count) {
@@ -1554,18 +1568,18 @@
 	PMAP_LOCK(pmap);
 	sched_pin();
 	for (pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) {
-
+#if 0
 		if (pv->pv_va >= eva || pv->pv_va < sva) {
 			npv = TAILQ_NEXT(pv, pv_plist);
 			continue;
 		}
+#endif
 		tte = tte_hash_lookup(pmap->pm_hash, pv->pv_va);
 		tte_data = tte ? *tte : 0;
 		
 		if (tte_data == 0) {
-		       printf("TTE at %p  IS ZERO @ VA %016lx\n",
-							tte, pv->pv_va);
-			panic("bad tte");
+		       printf("TTE at %p  IS ZERO @ VA %016lx\n", tte, pv->pv_va);
+		       panic("bad tte");
 		}
 
 		/*
@@ -1621,6 +1635,8 @@
 	
 	vm_page_t m;
 
+	if (pmap != kernel_pmap)
+		DPRINTF("pmap_remove_tte(va=0x%lx, pa=0x%lx)\n", va, TTE_GET_PA(*tte));
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
 	if (*tte & VTD_WIRED)


More information about the p4-projects mailing list