PERFORCE change 133991 for review
Rafal Jaworowski
raj at FreeBSD.org
Thu Jan 24 01:28:09 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=133991
Change 133991 by raj at raj_mimi on 2008/01/24 09:27:50
Provide pmap_page_wired_mappings() for the E500 pmap module.
Affected files ...
.. //depot/projects/e500/sys/powerpc/booke/pmap.c#8 edit
Differences ...
==== //depot/projects/e500/sys/powerpc/booke/pmap.c#8 (text+ko) ====
@@ -289,6 +289,7 @@
vm_pindex_t, vm_size_t);
boolean_t mmu_booke_page_exists_quick(mmu_t, pmap_t, vm_page_t);
void mmu_booke_page_init(mmu_t, vm_page_t);
+int mmu_booke_page_wired_mappings(mmu_t, vm_page_t);
void mmu_booke_pinit(mmu_t, pmap_t);
void mmu_booke_pinit0(mmu_t, pmap_t);
void mmu_booke_protect(mmu_t, pmap_t, vm_offset_t, vm_offset_t, vm_prot_t);
@@ -334,6 +335,7 @@
MMUMETHOD(mmu_object_init_pt, mmu_booke_object_init_pt),
MMUMETHOD(mmu_page_exists_quick,mmu_booke_page_exists_quick),
MMUMETHOD(mmu_page_init, mmu_booke_page_init),
+ MMUMETHOD(mmu_page_wired_mappings, mmu_booke_page_wired_mappings),
MMUMETHOD(mmu_pinit, mmu_booke_pinit),
MMUMETHOD(mmu_pinit0, mmu_booke_pinit0),
MMUMETHOD(mmu_protect, mmu_booke_protect),
@@ -2274,6 +2276,33 @@
return (FALSE);
}
+/*
+ * Return the number of managed mappings to the given physical page that are
+ * wired.
+ */
+int
+mmu_booke_page_wired_mappings(mmu_t mmu, vm_page_t m)
+{
+ pv_entry_t pv;
+ pte_t *pte;
+ int count = 0;
+
+ if ((m->flags & PG_FICTITIOUS) != 0)
+ return (count);
+ 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(mmu, pv->pv_pmap, pv->pv_va)) != NULL)
+ if (PTE_ISVALID(pte))
+ if (PTE_ISWIRED(pte))
+ count++;
+ PMAP_UNLOCK(pv->pv_pmap);
+ }
+
+ return (count);
+}
+
int
mmu_booke_dev_direct_mapped(mmu_t mmu, vm_offset_t pa, vm_size_t size)
{
More information about the p4-projects
mailing list