Date: Fri, 17 Mar 2006 04:58:35 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 93431 for review Message-ID: <200603170458.k2H4wZ2h043440@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=93431 Change 93431 by kmacy@kmacy_storage:sun4v_work on 2006/03/17 04:58:21 fix pmap_is_prefaultable increase possible debugging noise Affected files ... .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/pmap.c#29 edit Differences ... ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/pmap.c#29 (text+ko) ==== @@ -703,6 +703,7 @@ vm_size_t len, vm_offset_t src_addr) { vm_offset_t addr, end_addr; + return; end_addr = src_addr + len; @@ -904,7 +905,7 @@ uint64_t tte_data; if (pmap->pm_context) - DPRINTF("pmap_enter_quick(va=%lx, pa=0x%lx prot=%x)\n", va, VM_PAGE_TO_PHYS(m), prot); + DPRINTF("pmap_enter_quick(ctx=0x%lx va=%lx, pa=0x%lx prot=%x)\n", pmap->pm_context, va, VM_PAGE_TO_PHYS(m), prot); mtx_assert(&vm_page_queue_mtx, MA_OWNED); VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); @@ -1024,6 +1025,13 @@ { pv_entry_t pv; +#if 0 + TAILQ_FOREACH(pv, &pmap->pm_pvlist, pv_plist) + if (pv->pv_va == va) + panic("va=0x%lx already in pmap for ctx=0x%lx\n", + va, pmap->pm_context); +#endif + DPRINTF("pmap_insert_entry(va=0x%lx, pa=0x%lx)\n", va, VM_PAGE_TO_PHYS(m)); pv = get_pv_entry(pmap); pv->pv_va = va; pv->pv_pmap = pmap; @@ -1033,6 +1041,10 @@ TAILQ_INSERT_TAIL(&pmap->pm_pvlist, pv, pv_plist); TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list); m->md.pv_list_count++; + + + + } void @@ -1052,7 +1064,8 @@ pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { vm_offset_t tva; - DPRINTF("pmap_invalidate_range(sva=%lx, eva=%lx)\n", sva, eva); + if (pmap != kernel_pmap) + DPRINTF("pmap_invalidate_range(sva=%lx, eva=%lx)\n", sva, eva); /* XXX SUN4V_FIXME - oversimplified logic */ tsb_clear_range(&pmap->pm_tsb, sva, eva); @@ -1095,7 +1108,7 @@ boolean_t pmap_is_prefaultable(pmap_t pmap, vm_offset_t va) { - return (TRUE); + return (tte_hash_lookup(pmap->pm_hash, va) == NULL); } /* @@ -1518,7 +1531,8 @@ pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va) { pv_entry_t pv; - + if (pmap != kernel_pmap) + DPRINTF("pmap_remove_entry(va=0x%lx, pa=0x%lx)\n", va, VM_PAGE_TO_PHYS(m)); PMAP_LOCK_ASSERT(pmap, MA_OWNED); mtx_assert(&vm_page_queue_mtx, MA_OWNED); if (m->md.pv_list_count < pmap->pm_stats.resident_count) { @@ -1554,18 +1568,18 @@ PMAP_LOCK(pmap); sched_pin(); for (pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) { - +#if 0 if (pv->pv_va >= eva || pv->pv_va < sva) { npv = TAILQ_NEXT(pv, pv_plist); continue; } +#endif tte = tte_hash_lookup(pmap->pm_hash, pv->pv_va); tte_data = tte ? *tte : 0; if (tte_data == 0) { - printf("TTE at %p IS ZERO @ VA %016lx\n", - tte, pv->pv_va); - panic("bad tte"); + printf("TTE at %p IS ZERO @ VA %016lx\n", tte, pv->pv_va); + panic("bad tte"); } /* @@ -1621,6 +1635,8 @@ vm_page_t m; + if (pmap != kernel_pmap) + DPRINTF("pmap_remove_tte(va=0x%lx, pa=0x%lx)\n", va, TTE_GET_PA(*tte)); mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); if (*tte & VTD_WIRED)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603170458.k2H4wZ2h043440>