summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2013-09-20 04:30:18 +0000
committeralc <alc@FreeBSD.org>2013-09-20 04:30:18 +0000
commit88a4d0f31a9eb87f44806242b097f545ae385c34 (patch)
treeb6ca037877d42dd75bff7cafcabdc22bb90a6901 /sys/i386
parent5e1eb8fc155e3e63149905020980fa61b215f804 (diff)
downloadFreeBSD-src-88a4d0f31a9eb87f44806242b097f545ae385c34.zip
FreeBSD-src-88a4d0f31a9eb87f44806242b097f545ae385c34.tar.gz
The pmap function pmap_clear_reference() is no longer used. Remove it.
pmap_clear_reference() has had exactly one caller in the kernel for several years, more precisely, since FreeBSD 8. Now, that call no longer exists. Approved by: re (kib) Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/pmap.c67
-rw-r--r--sys/i386/xen/pmap.c35
2 files changed, 0 insertions, 102 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index c9f327c..64bf1a3 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -5049,73 +5049,6 @@ small_mappings:
}
/*
- * pmap_clear_reference:
- *
- * Clear the reference bit on the specified physical page.
- */
-void
-pmap_clear_reference(vm_page_t m)
-{
- struct md_page *pvh;
- pv_entry_t next_pv, pv;
- pmap_t pmap;
- pd_entry_t oldpde, *pde;
- pt_entry_t *pte;
- vm_offset_t va;
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_clear_reference: page %p is not managed", m));
- rw_wlock(&pvh_global_lock);
- sched_pin();
- if ((m->flags & PG_FICTITIOUS) != 0)
- goto small_mappings;
- pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
- TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_next, next_pv) {
- va = pv->pv_va;
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- pde = pmap_pde(pmap, va);
- oldpde = *pde;
- if ((oldpde & PG_A) != 0) {
- if (pmap_demote_pde(pmap, pde, va)) {
- /*
- * Remove the mapping to a single page so
- * that a subsequent access may repromote.
- * Since the underlying page table page is
- * fully populated, this removal never frees
- * a page table page.
- */
- va += VM_PAGE_TO_PHYS(m) - (oldpde &
- PG_PS_FRAME);
- pmap_remove_page(pmap, va, NULL);
- }
- }
- PMAP_UNLOCK(pmap);
- }
-small_mappings:
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- pde = pmap_pde(pmap, pv->pv_va);
- KASSERT((*pde & PG_PS) == 0, ("pmap_clear_reference: found"
- " a 4mpage in page %p's pv list", m));
- pte = pmap_pte_quick(pmap, pv->pv_va);
- if ((*pte & PG_A) != 0) {
- /*
- * Regardless of whether a pte is 32 or 64 bits
- * in size, PG_A is among the least significant
- * 32 bits.
- */
- atomic_clear_int((u_int *)pte, PG_A);
- pmap_invalidate_page(pmap, pv->pv_va);
- }
- PMAP_UNLOCK(pmap);
- }
- sched_unpin();
- rw_wunlock(&pvh_global_lock);
-}
-
-/*
* Miscellaneous support routines follow
*/
diff --git a/sys/i386/xen/pmap.c b/sys/i386/xen/pmap.c
index 3abe7ef..9f3e8bb 100644
--- a/sys/i386/xen/pmap.c
+++ b/sys/i386/xen/pmap.c
@@ -4024,41 +4024,6 @@ pmap_clear_modify(vm_page_t m)
}
/*
- * pmap_clear_reference:
- *
- * Clear the reference bit on the specified physical page.
- */
-void
-pmap_clear_reference(vm_page_t m)
-{
- pv_entry_t pv;
- pmap_t pmap;
- pt_entry_t *pte;
-
- KASSERT((m->oflags & VPO_UNMANAGED) == 0,
- ("pmap_clear_reference: page %p is not managed", m));
- rw_wlock(&pvh_global_lock);
- sched_pin();
- TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
- pmap = PV_PMAP(pv);
- PMAP_LOCK(pmap);
- pte = pmap_pte_quick(pmap, pv->pv_va);
- if ((*pte & PG_A) != 0) {
- /*
- * Regardless of whether a pte is 32 or 64 bits
- * in size, PG_A is among the least significant
- * 32 bits.
- */
- PT_SET_VA_MA(pte, *pte & ~PG_A, FALSE);
- pmap_invalidate_page(pmap, pv->pv_va);
- }
- PMAP_UNLOCK(pmap);
- }
- sched_unpin();
- rw_wunlock(&pvh_global_lock);
-}
-
-/*
* Miscellaneous support routines follow
*/
OpenPOWER on IntegriCloud