--- old/usr/src/uts/sfmmu/vm/hat_sfmmu.c	2014-04-04 14:37:22.162407742 -0400
+++ new/usr/src/uts/sfmmu/vm/hat_sfmmu.c	2014-04-04 14:37:22.168776943 -0400
@@ -1976,153 +1976,6 @@
 }
 
 /*
- * Set up any translation structures, for the specified address space,
- * that are needed or preferred when the process is being swapped in.
- */
-/* ARGSUSED */
-void
-hat_swapin(struct hat *hat)
-{
-	ASSERT(hat->sfmmu_xhat_provider == NULL);
-}
-
-/*
- * Free all of the translation resources, for the specified address space,
- * that can be freed while the process is swapped out. Called from as_swapout.
- * Also, free up the ctx that this process was using.
- */
-void
-hat_swapout(struct hat *sfmmup)
-{
-	struct hmehash_bucket *hmebp;
-	struct hme_blk *hmeblkp;
-	struct hme_blk *pr_hblk = NULL;
-	struct hme_blk *nx_hblk;
-	int i;
-	struct hme_blk *list = NULL;
-	hatlock_t *hatlockp;
-	struct tsb_info *tsbinfop;
-	struct free_tsb {
-		struct free_tsb *next;
-		struct tsb_info *tsbinfop;
-	};			/* free list of TSBs */
-	struct free_tsb *freelist, *last, *next;
-
-	ASSERT(sfmmup->sfmmu_xhat_provider == NULL);
-	SFMMU_STAT(sf_swapout);
-
-	/*
-	 * There is no way to go from an as to all its translations in sfmmu.
-	 * Here is one of the times when we take the big hit and traverse
-	 * the hash looking for hme_blks to free up.  Not only do we free up
-	 * this as hme_blks but all those that are free.  We are obviously
-	 * swapping because we need memory so let's free up as much
-	 * as we can.
-	 *
-	 * Note that we don't flush TLB/TSB here -- it's not necessary
-	 * because:
-	 *  1) we free the ctx we're using and throw away the TSB(s);
-	 *  2) processes aren't runnable while being swapped out.
-	 */
-	ASSERT(sfmmup != KHATID);
-	for (i = 0; i <= UHMEHASH_SZ; i++) {
-		hmebp = &uhme_hash[i];
-		SFMMU_HASH_LOCK(hmebp);
-		hmeblkp = hmebp->hmeblkp;
-		pr_hblk = NULL;
-		while (hmeblkp) {
-
-			ASSERT(!hmeblkp->hblk_xhat_bit);
-
-			if ((hmeblkp->hblk_tag.htag_id == sfmmup) &&
-			    !hmeblkp->hblk_shw_bit && !hmeblkp->hblk_lckcnt) {
-				ASSERT(!hmeblkp->hblk_shared);
-				(void) sfmmu_hblk_unload(sfmmup, hmeblkp,
-				    (caddr_t)get_hblk_base(hmeblkp),
-				    get_hblk_endaddr(hmeblkp),
-				    NULL, HAT_UNLOAD);
-			}
-			nx_hblk = hmeblkp->hblk_next;
-			if (!hmeblkp->hblk_vcnt && !hmeblkp->hblk_hmecnt) {
-				ASSERT(!hmeblkp->hblk_lckcnt);
-				sfmmu_hblk_hash_rm(hmebp, hmeblkp, pr_hblk,
-				    &list, 0);
-			} else {
-				pr_hblk = hmeblkp;
-			}
-			hmeblkp = nx_hblk;
-		}
-		SFMMU_HASH_UNLOCK(hmebp);
-	}
-
-	sfmmu_hblks_list_purge(&list, 0);
-
-	/*
-	 * Now free up the ctx so that others can reuse it.
-	 */
-	hatlockp = sfmmu_hat_enter(sfmmup);
-
-	sfmmu_invalidate_ctx(sfmmup);
-
-	/*
-	 * Free TSBs, but not tsbinfos, and set SWAPPED flag.
-	 * If TSBs were never swapped in, just return.
-	 * This implies that we don't support partial swapping
-	 * of TSBs -- either all are swapped out, or none are.
-	 *
-	 * We must hold the HAT lock here to prevent racing with another
-	 * thread trying to unmap TTEs from the TSB or running the post-
-	 * relocator after relocating the TSB's memory.  Unfortunately, we
-	 * can't free memory while holding the HAT lock or we could
-	 * deadlock, so we build a list of TSBs to be freed after marking
-	 * the tsbinfos as swapped out and free them after dropping the
-	 * lock.
-	 */
-	if (SFMMU_FLAGS_ISSET(sfmmup, HAT_SWAPPED)) {
-		sfmmu_hat_exit(hatlockp);
-		return;
-	}
-
-	SFMMU_FLAGS_SET(sfmmup, HAT_SWAPPED);
-	last = freelist = NULL;
-	for (tsbinfop = sfmmup->sfmmu_tsb; tsbinfop != NULL;
-	    tsbinfop = tsbinfop->tsb_next) {
-		ASSERT((tsbinfop->tsb_flags & TSB_SWAPPED) == 0);
-
-		/*
-		 * Cast the TSB into a struct free_tsb and put it on the free
-		 * list.
-		 */
-		if (freelist == NULL) {
-			last = freelist = (struct free_tsb *)tsbinfop->tsb_va;
-		} else {
-			last->next = (struct free_tsb *)tsbinfop->tsb_va;
-			last = last->next;
-		}
-		last->next = NULL;
-		last->tsbinfop = tsbinfop;
-		tsbinfop->tsb_flags |= TSB_SWAPPED;
-		/*
-		 * Zero out the TTE to clear the valid bit.
-		 * Note we can't use a value like 0xbad because we want to
-		 * ensure diagnostic bits are NEVER set on TTEs that might
-		 * be loaded.  The intent is to catch any invalid access
-		 * to the swapped TSB, such as a thread running with a valid
-		 * context without first calling sfmmu_tsb_swapin() to
-		 * allocate TSB memory.
-		 */
-		tsbinfop->tsb_tte.ll = 0;
-	}
-
-	/* Now we can drop the lock and free the TSB memory. */
-	sfmmu_hat_exit(hatlockp);
-	for (; freelist != NULL; freelist = next) {
-		next = freelist->next;
-		sfmmu_tsb_free(freelist->tsbinfop);
-	}
-}
-
-/*
  * Duplicate the translations of an as into another newas
  */
 /* ARGSUSED */
@@ -9996,7 +9849,7 @@
 
 /*
  * Replace the specified TSB with a new TSB.  This function gets called when
- * we grow, shrink or swapin a TSB.  When swapping in a TSB (TSB_SWAPIN), the
+ * we grow, or shrink a TSB.  When swapping in a TSB (TSB_SWAPIN), the
  * TSB_FORCEALLOC flag may be used to force allocation of a minimum-sized TSB
  * (8K).
  *
