Date: Thu, 24 Jan 2008 09:28:08 GMT From: Rafal Jaworowski <raj@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 133991 for review Message-ID: <200801240928.m0O9S8hc015628@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=133991 Change 133991 by raj@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) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801240928.m0O9S8hc015628>