Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 May 2006 00:27:45 GMT
From:      Kip Macy <kmacy@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 97651 for review
Message-ID:  <200605230027.k4N0RjCE057495@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=97651

Change 97651 by kmacy@kmacy_storage:sun4v_work on 2006/05/23 00:27:32

	disable shootdown optimization until invalidation bug is fixed

Affected files ...

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

Differences ...

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

@@ -163,19 +163,9 @@
 	((pm) != kernel_pmap && (pm)->pm_stats.resident_count == 0)
 
 /*
- * The threshold (in bytes) above which tsb_foreach() is used in pmap_remove()
- * and pmap_protect() instead of trying each virtual address.
- */
-#define	PMAP_TSB_THRESH	((TSB_SIZE / 2) * PAGE_SIZE)
-
-#define PANIC_IF(exp) if (unlikely(exp)) {panic("%s: %s:%d", #exp, __FILE__, __LINE__);}
-
-/*
  * Kernel MMU interface
  */
 
-#define UNIMPLEMENTED panic("%s not implemented", __FUNCTION__)
-#define IMPLEMENTME printf("don't forget %s not implemented\n", __FUNCTION__)
 #ifdef PMAP_DEBUG
 #define KDPRINTF if (pmap_debug) printf
 #define DPRINTF \
@@ -1177,21 +1167,22 @@
 		      cpumask, (1 << curcpu));
 
 #endif
-
+#if 0
 	if ((active_total = (pmap->pm_tlbactive & ~cpumask)) == 0)
 		goto done;
 
 	if (pmap->pm_context != 0)
 		active_total = active = (pmap->pm_tlbactive & ~cpumask);
 	else 
+#endif
 		active_total = active = PCPU_GET(other_cpus);
 
 	if (active_total == 0)
 		goto done;
  retry:
 	
-	for (cpu_count = 0, i = 0, cpus = active; i < 32 && cpus; i++, cpus >>= 1) {
-		if (!(cpus & 0x1))
+	for (cpu_count = 0, i = 0, cpus = active; i < 32 && cpus; i++, cpus = (cpus>>1)) {
+		if ((cpus & 0x1) == 0)
 			continue;
 
 		cpulist[cpu_count] = (uint16_t)i;
@@ -1350,12 +1341,6 @@
 	tte_hash_delete(kernel_pmap->pm_hash, va);
 }
 
-static void
-pmap_lazyfix(pmap_t pmap)
-{
-	UNIMPLEMENTED;
-}
-
 /*
  * Map a range of physical addresses into kernel virtual address space.
  *
@@ -1525,10 +1510,10 @@
 		} 
 	}
 
-	sched_unpin();
 	if (anychanged)
 		pmap_invalidate_range(pmap, sva, eva, TRUE);
 
+	sched_unpin();
 	vm_page_unlock_queues();
 	PMAP_UNLOCK(pmap);
 }
@@ -1589,7 +1574,6 @@
 	    ("pmap_release: pmap resident count %ld != 0",
 	    pmap->pm_stats.resident_count));
 
-	pmap_lazyfix(pmap);
 	tsb_deinit(&pmap->pm_tsb);
 	tte_hash_destroy(pmap->pm_hash);
 	free_context(pmap->pm_context);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200605230027.k4N0RjCE057495>