Date: Thu, 3 Jan 2008 07:05:07 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 132377 for review Message-ID: <200801030705.m03757Ve030797@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=132377 Change 132377 by imp@imp_paco-paco on 2008/01/03 07:04:33 Remove sva, eva parameters from pmap_remove_pages. Remove unused rouine. Make decl for pmap_init_fpage() dependent on VM_ALLOC_WIRED_TLB_PG_POOL. Affected files ... .. //depot/projects/mips2-jnpr/src/sys/mips/mips/pmap.c#11 edit Differences ... ==== //depot/projects/mips2-jnpr/src/sys/mips/mips/pmap.c#11 (text+ko) ==== @@ -181,7 +181,9 @@ static int init_pte_prot(vm_offset_t va, vm_page_t m, vm_prot_t prot); static void pmap_TLB_invalidate_kernel(vm_offset_t); static void pmap_TLB_update_kernel(vm_offset_t, pt_entry_t); +#ifdef VM_ALLOC_WIRED_TLB_PG_POOL static void pmap_init_fpage(void); +#endif #ifdef SMP static void pmap_invalidate_page_action(void *arg); static void pmap_invalidate_all_action(void *arg); @@ -2121,31 +2123,6 @@ } } -/* - * this routine returns true if a physical page resides - * in the given pmap. - */ -static boolean_t -pmap_page_exists(pmap_t pmap, vm_page_t m) -{ - register pv_entry_t pv; - - if (m->flags & PG_FICTITIOUS) - return FALSE; - - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - /* - * Not found, check current mappings returning immediately if found. - */ - TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { - if (pv->pv_pmap == pmap) { - return TRUE; - } - } - return (FALSE); -} -/* N/C */ - #define PMAP_REMOVE_PAGES_CURPROC_ONLY /* * Remove all pages from specified address space @@ -2156,7 +2133,7 @@ * in the case of running down an entire address space. */ void -pmap_remove_pages(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) +pmap_remove_pages(pmap_t pmap) { pt_entry_t *pte, tpte; pv_entry_t pv, npv; @@ -2171,16 +2148,12 @@ vm_page_lock_queues(); PMAP_LOCK(pmap); - + sched_pin(); + //XXX need to be TAILQ_FOREACH_SAFE? for(pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) { - if (pv->pv_va >= eva || pv->pv_va < sva) { - npv = TAILQ_NEXT(pv, pv_plist); - continue; - } - pte = pmap_pte(pv->pv_pmap, pv->pv_va); if (!pmap_pte_v(pte)) panic("pmap_remove_pages: page on pm_pvlist has no pte\n"); @@ -2221,6 +2194,7 @@ pmap_unuse_pt(pv->pv_pmap, pv->pv_va, pv->pv_ptem); free_pv_entry(pv); } + sched_unpin(); pmap_invalidate_all(pmap); PMAP_UNLOCK(pmap); vm_page_unlock_queues();
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801030705.m03757Ve030797>